diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Utility.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Utility.cs index 0020d86..7da77a7 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Utility.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Utility.cs @@ -276,7 +276,10 @@ namespace RJW_Menstruation float res = 0; if (VariousDefOf.Hediff_Heavy_Lactating_Permanent != null) { - if (pawn.health.hediffSet.HasHediff(VariousDefOf.Hediff_Heavy_Lactating_Permanent)) milkcomp = pawn.AllComps.FirstOrDefault(x => x.GetType().ToString().ToLower().Contains("hypermilkable")); + if (pawn.health.hediffSet.HasHediff(VariousDefOf.Hediff_Heavy_Lactating_Permanent) + || pawn.health.hediffSet.HasHediff(VariousDefOf.Hediff_Lactating_Permanent) + || pawn.health.hediffSet.HasHediff(VariousDefOf.Hediff_Lactating_Natural) + || pawn.health.hediffSet.HasHediff(VariousDefOf.Hediff_Lactating_Drug)) milkcomp = pawn.AllComps.FirstOrDefault(x => x.GetType().ToString().ToLower().Contains("milkablehuman")); else milkcomp = pawn.AllComps.FirstOrDefault(x => x.GetType().ToString().ToLower().Contains("milkable")); } else diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs index 16903b2..a3fdf4c 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs @@ -158,7 +158,7 @@ namespace RJW_Menstruation public static readonly HediffDef Hediff_Lactating_Natural = DefDatabase.GetNamedSilentFail("Lactating_Natural"); public static readonly HediffDef Hediff_Lactating_Permanent = DefDatabase.GetNamedSilentFail("Lactating_Permanent"); public static readonly HediffDef Hediff_Heavy_Lactating_Permanent = DefDatabase.GetNamedSilentFail("Heavy_Lactating_Permanent"); - public static readonly JobDef Job_LactateSelf_MC = DefDatabase.GetNamedSilentFail("LactateSelf_MC"); + public static readonly JobDef Job_LactateSelf_MC = DefDatabase.GetNamedSilentFail("MilkSelf"); // Defs from Sexperience Ideology public static readonly PreceptDef Pregnancy_Elevated = DefDatabase.GetNamedSilentFail("Pregnancy_Elevated"); diff --git a/1.5/Assemblies/RJW_Menstruation.dll b/1.5/Assemblies/RJW_Menstruation.dll index 10ddb96..d1e6a52 100644 Binary files a/1.5/Assemblies/RJW_Menstruation.dll and b/1.5/Assemblies/RJW_Menstruation.dll differ diff --git a/1.5/source/RJW_Menstruation/RJW_Menstruation/Compatibility/HARCompatibility.cs b/1.5/source/RJW_Menstruation/RJW_Menstruation/Compatibility/HARCompatibility.cs index 1100c71..cf14a3a 100644 --- a/1.5/source/RJW_Menstruation/RJW_Menstruation/Compatibility/HARCompatibility.cs +++ b/1.5/source/RJW_Menstruation/RJW_Menstruation/Compatibility/HARCompatibility.cs @@ -16,19 +16,8 @@ namespace RJW_Menstruation public static void CopyHARProperties(Pawn baby, Pawn original) { - AlienPartGenerator.AlienComp babyHARComp = baby?.TryGetComp(); - AlienPartGenerator.AlienComp originalHARComp = original?.TryGetComp(); - if (babyHARComp == null || originalHARComp == null) return; - - babyHARComp.addonVariants = new List(originalHARComp.addonVariants); - foreach (KeyValuePair> channel in originalHARComp.ColorChannels) - { - babyHARComp.OverwriteColorChannel(channel.Key, channel.Value.first, channel.Value.second); - } - babyHARComp.headVariant = originalHARComp.headVariant; - babyHARComp.bodyVariant = originalHARComp.bodyVariant; - babyHARComp.headMaskVariant = originalHARComp.headMaskVariant; - babyHARComp.bodyMaskVariant = originalHARComp.bodyMaskVariant; + if (!baby.HasComp() || !original.HasComp()) return; + AlienPartGenerator.AlienComp.CopyAlienData(original, baby); } } } diff --git a/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs b/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs index d70909d..86b1330 100644 --- a/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs +++ b/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs @@ -1517,7 +1517,7 @@ namespace RJW_Menstruation { // ~1.5 per hour times acceleration float bledAmount = Utility.VariationRange(0.03f * Configurations.BleedingAmount * Configurations.CycleAcceleration * HoursBetweenSimulations, 0.5f); - CumIn(Pawn, bledAmount, Translations.Menstrual_Blood, -5.0f, Pawn.RaceProps?.BloodDef ?? ThingDefOf.Filth_Blood); + CumIn(Pawn, bledAmount, Translations.Menstrual_Blood, -5.0f, Utility.BloodDef(Pawn)); Cum blood = GetNotCum(Translations.Menstrual_Blood); if (blood != null) blood.Color = BloodColor; } diff --git a/1.5/source/RJW_Menstruation/RJW_Menstruation/Utility.cs b/1.5/source/RJW_Menstruation/RJW_Menstruation/Utility.cs index 87401eb..3202a92 100644 --- a/1.5/source/RJW_Menstruation/RJW_Menstruation/Utility.cs +++ b/1.5/source/RJW_Menstruation/RJW_Menstruation/Utility.cs @@ -457,6 +457,7 @@ namespace RJW_Menstruation return Color.white; } } + public static ThingDef BloodDef(Pawn pawn) { if (pawn == null) return ThingDefOf.Filth_Blood; diff --git a/1.5/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs b/1.5/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs index 2f386f8..997db3c 100644 --- a/1.5/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs +++ b/1.5/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs @@ -1,5 +1,6 @@ using RimWorld; using rjw; +using System; using System.Collections.Generic; using System.Linq; using Verse; @@ -74,26 +75,27 @@ namespace RJW_Menstruation return allkinds; } } + private static HashSet GetCompHashSet(Type type) + { + HashSet set = new HashSet(); + foreach (HediffDef hediffDef in DefDatabase.AllDefsListForReading) + { + if (hediffDef.comps.NullOrEmpty()) continue; + foreach (HediffCompProperties comp in hediffDef.comps) + if (comp.compClass == type || (comp.compClass?.IsSubclassOf(type) ?? false)) + { + set.Add(hediffDef); + break; + } + } + return set; + } public static HashSet AllVaginas { get { if (allvaginas != null) return allvaginas; - allvaginas = new HashSet(); - - foreach(HediffDef hediffDef in DefDatabase.AllDefsListForReading) - { - if (hediffDef.comps.NullOrEmpty()) continue; - foreach (HediffCompProperties comp in hediffDef.comps) - { - if (comp.compClass == typeof(HediffComp_Menstruation) || (comp.compClass?.IsSubclassOf(typeof(HediffComp_Menstruation)) ?? false)) - { - allvaginas.Add(hediffDef); - break; - } - } - } - + allvaginas = GetCompHashSet(typeof(HediffComp_Menstruation)); return allvaginas; } } @@ -102,21 +104,7 @@ namespace RJW_Menstruation get { if (allanuses != null) return allanuses; - allanuses = new HashSet(); - - foreach (HediffDef hediffDef in DefDatabase.AllDefsListForReading) - { - if (hediffDef.comps.NullOrEmpty()) continue; - foreach (HediffCompProperties comp in hediffDef.comps) - { - if (comp.compClass == typeof(HediffComp_Anus) || (comp.compClass?.IsSubclassOf(typeof(HediffComp_Anus)) ?? false)) - { - allanuses.Add(hediffDef); - break; - } - } - } - + allanuses = GetCompHashSet(typeof(HediffComp_Anus)); return allanuses; } } @@ -125,21 +113,7 @@ namespace RJW_Menstruation get { if (allbreasts != null) return allbreasts; - allbreasts = new HashSet(); - - foreach(HediffDef hediffDef in DefDatabase.AllDefsListForReading) - { - if (hediffDef.comps.NullOrEmpty()) continue; - foreach(HediffCompProperties comp in hediffDef.comps) - { - if (comp.compClass == typeof(HediffComp_Breast) || (comp.compClass?.IsSubclassOf(typeof(HediffComp_Breast)) ?? false)) - { - allbreasts.Add(hediffDef); - break; - } - } - } - + allbreasts = GetCompHashSet(typeof(HediffComp_Breast)); return allbreasts; } }