diff --git a/1.4/Assemblies/RJW_Menstruation.dll b/1.4/Assemblies/RJW_Menstruation.dll index ce5f760..0e76721 100644 Binary files a/1.4/Assemblies/RJW_Menstruation.dll and b/1.4/Assemblies/RJW_Menstruation.dll differ diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/DrugOutcomeDoers.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/DrugOutcomeDoers.cs index 0cbbf40..2b51556 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/DrugOutcomeDoers.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/DrugOutcomeDoers.cs @@ -89,7 +89,7 @@ namespace RJW_Menstruation else m.moodPowerFactor = 0.3f; } - if (pawn.WantsToGetPregnant()) pawn.needs.mood.thoughts.memories.TryGainMemoryFast(VariousDefOf.HateTookContraceptivePill); + if (pawn.HasQuirk(QuirkUtility.Quirks.Breeder)) pawn.needs.mood.thoughts.memories.TryGainMemoryFast(VariousDefOf.HateTookContraceptivePill); else pawn.needs.mood.thoughts.memories.TryGainMemoryFast(VariousDefOf.TookContraceptivePill); } } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs index 5bb48b7..46022d1 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs @@ -69,7 +69,7 @@ namespace RJW_Menstruation get { if (babyHalfAge > 0f) return babyHalfAge; - List ages = Pawn.RaceProps.lifeStageAges; + List ages = Pawn.def.race.lifeStageAges; if (ages?.Count > 1) babyHalfAge = ages[1].minAge / 2; diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_InducedOvulator.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_InducedOvulator.cs index a32969c..0bea073 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_InducedOvulator.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_InducedOvulator.cs @@ -15,14 +15,6 @@ namespace RJW_Menstruation public class HediffComp_InducedOvulator : HediffComp_Menstruation { - protected bool hadOvulatoryStage = false; // Regardless of whether an egg was actually produced - - protected override void InitializeExtraValues() - { - base.InitializeExtraValues(); - hadOvulatoryStage |= IsEggExist; - } - public override string GetCurStageDesc { get @@ -43,7 +35,7 @@ namespace RJW_Menstruation protected override float RaceCyclesPerYear() { // Don't bother with breeding season, since so much time is planned to be spent pregnant. - float pregnanciesPerYear = GenDate.DaysPerYear / Mathf.Max(1, Pawn.RaceProps.gestationPeriodDays); + float pregnanciesPerYear = GenDate.DaysPerYear / Mathf.Max(1, Pawn.def.race.gestationPeriodDays); return 2 * pregnanciesPerYear / Configurations.ImplantationChanceDefault; } @@ -54,31 +46,12 @@ namespace RJW_Menstruation return Mathf.CeilToInt((Pawn.relations?.ChildrenCount ?? 0) / Configurations.ImplantationChanceDefault); } - public override void CompExposeData() - { - base.CompExposeData(); - Scribe_Values.Look(ref hadOvulatoryStage, "hadOvulatoryStage", false); - } - protected override void GoOvulatoryStage() { estrusflag = false; - hadOvulatoryStage = false; GoNextStage(Stage.Luteal); } - protected override void OvulatoryAction() - { - base.OvulatoryAction(); - hadOvulatoryStage = true; - } - - protected override void LutealAction() - { - base.LutealAction(); - if (curStage != Stage.Luteal) hadOvulatoryStage = false; - } - protected override void AfterCumIn(Pawn cummer) { base.AfterCumIn(cummer); @@ -97,7 +70,7 @@ namespace RJW_Menstruation case Stage.Ovulatory: return true; case Stage.Luteal: - return hadOvulatoryStage && curStageTicks < EggLifespanTicks; + return IsEggExist && curStageTicks < EggLifespanTicks; default: return false; } @@ -115,7 +88,7 @@ namespace RJW_Menstruation case Stage.Ovulatory: return true; case Stage.Luteal: - return hadOvulatoryStage && curStageTicks < EggLifespanTicks; + return IsEggExist && curStageTicks < EggLifespanTicks; default: return false; } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs index 2745e80..80bae88 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs @@ -66,7 +66,7 @@ namespace RJW_Menstruation const float minmakefilthvalue = 1.0f; const int maxImplantDelayHours = 30 * GenDate.HoursPerDay; const int minImplantAgeHours = 3 * GenDate.HoursPerDay; - const float fluidLeakThreshold = 3.5f; + const float fluidLeakThreshold = 2.5f; const float pulloutSuccessRate = 0.8f; const float fetishPulloutSuccessModifier = 0.25f; @@ -104,7 +104,6 @@ namespace RJW_Menstruation public static readonly Dictionary StageTexture = new Dictionary() { { Stage.Follicular, TextureCache.FollicularTexture }, - { Stage.Ovulatory, TextureCache.OvulatoryTexture }, { Stage.Luteal, TextureCache.LutealTexture }, { Stage.Bleeding, TextureCache.BleedingTexture }, { Stage.Pregnant, TextureCache.PregnantTexture }, @@ -123,8 +122,6 @@ namespace RJW_Menstruation protected string customwombtex = null; protected string customvagtex = null; protected bool estrusflag = false; - protected float ovulationChanceCache = -1.0f; // Dirtied every simulation - protected float implantationChanceCache = -1.0f; protected int opcache = -1; protected float antisperm = 0.0f; protected float? originvagsize = null; @@ -198,7 +195,7 @@ namespace RJW_Menstruation float avglittersize; try { - avglittersize = Mathf.Max(Rand.ByCurveAverage(Pawn.RaceProps.litterSizeCurve), 1.0f); + avglittersize = Mathf.Max(Rand.ByCurveAverage(Pawn.def.race.litterSizeCurve), 1.0f); } catch { @@ -210,7 +207,7 @@ namespace RJW_Menstruation opcache = (int)(RaceCyclesPerYear() * avglittersize * yearsBeforeMenopause * - (Pawn.RaceProps.lifeExpectancy / ThingDefOf.Human.race.lifeExpectancy)); + (Pawn.def.race.lifeExpectancy / ThingDefOf.Human.race.lifeExpectancy)); if (opcache == 0) opcache = 1; return opcache; } @@ -296,71 +293,58 @@ namespace RJW_Menstruation // I hate doing this, but it's the least bad option public bool calculatingOvulationChance = false; - protected float CalcuatedOvulationChance() - { - float ovulationChance = 1.0f; - if (EggHealth <= 0.0f) return 0.0f; - if (EggHealth < 1.0f / 3.0f) ovulationChance = 0.8f; - if (ModsConfig.BiotechActive && xxx.is_human(Pawn)) - { - if (Pawn.SterileGenes()) return 0.0f; - // Replicate how rjw.PawnCapacityWorker_Fertility.CalculateCapacityLevel does it, but without the age factor - if (!Pawn.RaceHasFertility()) return 0.0f; - if (AndroidsCompatibility.IsAndroid(Pawn) && parent.def != Genital_Helper.archotech_vagina) return 0.0f; - foreach (var part in StatDefOf.Fertility.parts) - { - if(part is StatPart_FertilityByGenderAge fertilityByAge) - { - float factor = 1.0f; - fertilityByAge.TransformValue(StatRequest.For(Pawn), ref factor); - if (factor <= 0.0f) return 0.0f; // Too young or too old - } - else part.TransformValue(StatRequest.For(Pawn), ref ovulationChance); - } - if (Pawn.HasQuirk(QuirkUtility.Quirks.Breeder)) ovulationChance *= 10.0f; - try - { - calculatingOvulationChance = true; - ovulationChance *= PawnCapacityUtility.CalculateCapacityLevel(Pawn.health.hediffSet, xxx.reproduction); - } - finally { calculatingOvulationChance = false; } - } - return ovulationChance; - } - - protected float CalcuatedImplantChance() - { - float factor = 1.0f; - if (ModsConfig.BiotechActive && xxx.is_human(Pawn)) - { - // Implant factor will be based solely on pawn age, plus any rollover from ovulation chance - StatPart_FertilityByGenderAge fertilityStatPart = StatDefOf.Fertility.GetStatPart(); - fertilityStatPart?.TransformValue(StatRequest.For(Pawn), ref factor); - float ovulationOverflow = OvulationChance; - if (ovulationOverflow > 1.0f) factor *= ovulationOverflow; - return Props.baseImplantationChanceFactor * FertilityModifier * factor; - } - else - { - return Pawn.health.capacities.GetLevel(xxx.reproduction) * Props.baseImplantationChanceFactor * FertilityModifier * factor; - } - } - public float OvulationChance { get { - if (ovulationChanceCache < 0.0f) ovulationChanceCache = CalcuatedOvulationChance(); - return ovulationChanceCache; + float ovulationChance = 1.0f; + if (EggHealth <= 0.0f) return 0.0f; + if (EggHealth < 1.0f / 3.0f) ovulationChance = 0.8f; + if (ModsConfig.BiotechActive && xxx.is_human(Pawn)) + { + if (Pawn.SterileGenes()) return 0.0f; + // Replicate how rjw.PawnCapacityWorker_Fertility.CalculateCapacityLevel does it, but without the age factor + if (!Pawn.RaceHasFertility()) return 0.0f; + if (AndroidsCompatibility.IsAndroid(Pawn) && parent.def != Genital_Helper.archotech_vagina) return 0.0f; + foreach (var part in StatDefOf.Fertility.parts) + { + if(part is StatPart_FertilityByGenderAge fertilityByAge) + { + float factor = 1.0f; + fertilityByAge.TransformValue(StatRequest.For(Pawn), ref factor); + if (factor <= 0.0f) return 0.0f; // Too young or too old + } + else part.TransformValue(StatRequest.For(Pawn), ref ovulationChance); + } + if (Pawn.HasQuirk(QuirkUtility.Quirks.Breeder)) ovulationChance *= 10.0f; + try + { + calculatingOvulationChance = true; + ovulationChance *= PawnCapacityUtility.CalculateCapacityLevel(Pawn.health.hediffSet, xxx.reproduction); + } + finally { calculatingOvulationChance = false; } + } + return ovulationChance; } } - public float ImplantChance { get { - if (implantationChanceCache < 0.0f) implantationChanceCache = CalcuatedImplantChance(); - return implantationChanceCache; + float factor = 1.0f; + if (ModsConfig.BiotechActive && xxx.is_human(Pawn)) + { + // Implant factor will be based solely on pawn age, plus any rollover from ovulation chance + StatPart_FertilityByGenderAge fertilityStatPart = StatDefOf.Fertility.GetStatPart(); + fertilityStatPart?.TransformValue(StatRequest.For(Pawn), ref factor); + float ovulationOverflow = OvulationChance; + if (ovulationOverflow > 1.0f) factor *= ovulationOverflow; + return Props.baseImplantationChanceFactor * FertilityModifier * factor; + } + else + { + return Pawn.health.capacities.GetLevel(xxx.reproduction) * Props.baseImplantationChanceFactor * FertilityModifier * factor; + } } } @@ -570,7 +554,7 @@ namespace RJW_Menstruation { try { - Color c = Pawn.RaceProps.BloodDef.graphicData.color; + Color c = Pawn.def.race.BloodDef.graphicData.color; return c; } catch @@ -1232,7 +1216,7 @@ namespace RJW_Menstruation float avglittersize; try { - avglittersize = Mathf.Max(Rand.ByCurveAverage(Pawn.RaceProps.litterSizeCurve), 1.0f); + avglittersize = Mathf.Max(Rand.ByCurveAverage(Pawn.def.race.litterSizeCurve), 1.0f); } catch (NullReferenceException) { @@ -1275,8 +1259,6 @@ namespace RJW_Menstruation protected virtual void BeforeSimulator() { - ovulationChanceCache = -1.0f; - implantationChanceCache = -1.0f; CumOut(); } @@ -1497,7 +1479,7 @@ namespace RJW_Menstruation { // ~1.5 per hour times acceleration float bledAmount = 0.03f * Configurations.BleedingAmount * Configurations.CycleAcceleration * Rand.Range(0.5f, 1.5f) * TickInterval / GenDate.TicksPerHour; - CumIn(Pawn, bledAmount, Translations.Menstrual_Blood, -5.0f, Pawn.RaceProps?.BloodDef ?? ThingDefOf.Filth_Blood); + CumIn(Pawn, bledAmount, Translations.Menstrual_Blood, -5.0f, Pawn.def.race?.BloodDef ?? ThingDefOf.Filth_Blood); Cum blood = GetNotCum(Translations.Menstrual_Blood); if (blood != null) blood.Color = BloodColor; } @@ -1619,7 +1601,7 @@ namespace RJW_Menstruation float eggnum; try { - eggnum = Math.Max(Rand.ByCurve(Pawn.RaceProps.litterSizeCurve), 1f); + eggnum = Math.Max(Rand.ByCurve(Pawn.def.race.litterSizeCurve), 1f); } catch (NullReferenceException) { @@ -1798,7 +1780,7 @@ namespace RJW_Menstruation if (IsDangerDay) { - if (Pawn.WantsToGetPregnant()) + if (Pawn.HasQuirk(QuirkUtility.Quirks.Breeder) || Pawn.HasQuirk(QuirkUtility.Quirks.ImpregnationFetish)) { Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetish, cummer); } @@ -1821,7 +1803,7 @@ namespace RJW_Menstruation } else { - if (Pawn.WantsToGetPregnant()) + if (Pawn.HasQuirk(QuirkUtility.Quirks.Breeder) || Pawn.HasQuirk(QuirkUtility.Quirks.ImpregnationFetish)) { Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetishSafe, cummer); } @@ -1985,7 +1967,7 @@ namespace RJW_Menstruation public class Egg : IExposable { public bool fertilized; - public int lifeSpanTicks; // Actual ticks scaled by cycleAcceleration + public int lifeSpanTicks; public Pawn fertilizer; public int ageTicks; public int ticksSinceFertilization = 0; @@ -2012,25 +1994,23 @@ namespace RJW_Menstruation { int lifespanhrs = -1; int position = -1; + int fertstage = -1; Scribe_Values.Look(ref lifespanhrs, "lifespanhrs", lifespanhrs, true); Scribe_Values.Look(ref position, "position", position, true); + Scribe_Values.Look(ref fertstage, "fertstage", fertstage, true); if (lifespanhrs >= 0) lifeSpanTicks = lifespanhrs * GenDate.TicksPerHour; if (position >= 0) ageTicks = position * GenDate.TicksPerHour; + if (fertstage >= 0) ticksSinceFertilization = fertstage * GenDate.TicksPerHour; } Scribe_References.Look(ref fertilizer, "fertilizer", true); Scribe_Values.Look(ref fertilized, "fertilized", false); Scribe_Values.Look(ref lifeSpanTicks, "lifeSpanTicks", lifeSpanTicks, true); Scribe_Values.Look(ref ageTicks, "ageTicks", ageTicks, true); Scribe_Values.Look(ref ticksSinceFertilization, "ticksSinceFertilization", 0); - if (ticksSinceFertilization == 0 && Scribe.mode == LoadSaveMode.LoadingVars) - { - // A bit awkward to do this twice, but it prevents ticksSinceFertilization from getting overwritten on a fertstage load - int fertstage = -1; - Scribe_Values.Look(ref fertstage, "fertstage", fertstage, true); - if (fertstage >= 0) ticksSinceFertilization = fertstage * GenDate.TicksPerHour; - } } } + + } public class HediffComp_Anus : HediffComp diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs index ab09dd3..f352a1b 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs @@ -349,7 +349,7 @@ namespace RJW_Menstruation else if (hediff is Hediff_BasePregnancy rjw_preg) return (rjw_preg.p_end_tick - rjw_preg.p_start_tick) / GenDate.TicksPerHour; // TODO: Biotech pregnancy - else return hediff.pawn.RaceProps.gestationPeriodDays * GenDate.HoursPerDay; + else return hediff.pawn.def.race.gestationPeriodDays * GenDate.HoursPerDay; } public static float RandomVariabilityPercent(int recursion = 0) @@ -401,22 +401,6 @@ namespace RJW_Menstruation return false; } - public static bool WantsToGetPregnant(this Pawn pawn) - { - if (pawn.HasQuirk(QuirkUtility.Quirks.Breeder) || - pawn.HasQuirk(QuirkUtility.Quirks.ImpregnationFetish)) - return true; - - Ideo ideo = pawn.Ideo; - if (ideo == null || VariousDefOf.Pregnancy_Elevated == null) return false; - if (ideo.HasPrecept(VariousDefOf.Pregnancy_Elevated) || - ideo.HasPrecept(VariousDefOf.Pregnancy_Holy) || - ideo.HasPrecept(VariousDefOf.Pregnancy_Required)) - return true; - - return false; - } - public static float DamagePants(this Pawn pawn, float fluidAmount) { if (pawn.apparel == null) return 0; diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Hediff_MultiplePregnancy.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Hediff_MultiplePregnancy.cs index f9ab88e..b47d614 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Hediff_MultiplePregnancy.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Hediff_MultiplePregnancy.cs @@ -23,11 +23,11 @@ namespace RJW_Menstruation { if (is_discovered || !xxx.is_human(pawn) || - pawn.HasQuirk(QuirkUtility.Quirks.Breeder) || (pawn.Ideo?.HasPrecept(VariousDefOf.Pregnancy_Required) ?? false) || + pawn.HasQuirk(QuirkUtility.Quirks.Breeder) || (pawn.relations?.DirectRelations?.Find(x => x.def.Equals(PawnRelationDefOf.Spouse) || x.def.Equals(PawnRelationDefOf.Fiance))) != null) return; - if (pawn.WantsToGetPregnant() || pawn.relations?.DirectRelations?.Find(x => x.def.Equals(PawnRelationDefOf.Lover)) != null) + if (pawn.HasQuirk(QuirkUtility.Quirks.ImpregnationFetish) || pawn.relations?.DirectRelations?.Find(x => x.def.Equals(PawnRelationDefOf.Lover)) != null) { pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.UnwantedPregnancyMild); } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/GC_Patch.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/GC_Patch.cs index 37eda3e..79e7be5 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/GC_Patch.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/GC_Patch.cs @@ -16,7 +16,7 @@ namespace RJW_Menstruation.Patch { if (!__result.NullOrEmpty()) return; if (cummedPawns.Contains(pawn)) - __result = "EggFertOrCumInWomb"; + __result = "Has cum or fertilized egg in a womb"; } } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/TextureCache.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/TextureCache.cs index 4c9c591..b1c3853 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/TextureCache.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/TextureCache.cs @@ -15,13 +15,13 @@ namespace RJW_Menstruation return milktexturecache; } } - // Ovulation, sex drive - public static Texture2D OvulatoryTexture + // Sex drive + public static Texture2D SexDriveTexture { get { - if (ovulatorytexturecache == null) ovulatorytexturecache = SolidColorMaterials.NewSolidColorTexture(0.686f, 0.062f, 0.698f, 1.0f); - return ovulatorytexturecache; + if (sexdrivetexturecache == null) sexdrivetexturecache = SolidColorMaterials.NewSolidColorTexture(0.686f, 0.062f, 0.698f, 1.0f); + return sexdrivetexturecache; } } // Bleeding, vulnerability @@ -93,7 +93,7 @@ namespace RJW_Menstruation public static readonly Texture2D GatherCum_Pussy = ContentFinder.Get("UI/Icon/ToPussy"); private static Texture2D milktexturecache = SolidColorMaterials.NewSolidColorTexture(0.992f, 1.0f, 0.960f, 1.0f); - private static Texture2D ovulatorytexturecache = SolidColorMaterials.NewSolidColorTexture(0.686f, 0.062f, 0.698f, 1.0f); + private static Texture2D sexdrivetexturecache = SolidColorMaterials.NewSolidColorTexture(0.686f, 0.062f, 0.698f, 1.0f); private static Texture2D bleedingtexturecache = SolidColorMaterials.NewSolidColorTexture(0.415f, 0.0f, 0.003f, 1.0f); private static Texture2D pregnanttexturecache = SolidColorMaterials.NewSolidColorTexture(0.082f, 0.453f, 0.6f, 1.0f); private static Texture2D recovertexturecache = SolidColorMaterials.NewSolidColorTexture(0.6f, 0.83f, 0.35f, 1.0f); @@ -101,5 +101,10 @@ namespace RJW_Menstruation private static Texture2D animaltexturecache = SolidColorMaterials.NewSolidColorTexture(0.411f, 0.521f, 0.878f, 1.0f); private static Texture2D lutealtexturecache = SolidColorMaterials.NewSolidColorTexture(0.843f, 0.474f, 0.6f, 1.0f); private static Texture2D whoredtexturecache = SolidColorMaterials.NewSolidColorTexture(0.7f, 0.7f, 0.0f, 1.0f); + + + + + } } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/UI/Dialog_WombStatus.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/UI/Dialog_WombStatus.cs index 2c8b4c8..9b726b2 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/UI/Dialog_WombStatus.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/UI/Dialog_WombStatus.cs @@ -433,7 +433,7 @@ namespace RJW_Menstruation float statvalue; const float height = 24f; statvalue = pawn.GetStatValue(xxx.sex_drive_stat); - FillableBarLabeled(lineRect, " " + xxx.sex_drive_stat.LabelCap.CapitalizeFirst() + " " + statvalue.ToStringPercent(), statvalue / 2, TextureCache.OvulatoryTexture, Texture2D.blackTexture, xxx.sex_drive_stat.description); + FillableBarLabeled(lineRect, " " + xxx.sex_drive_stat.LabelCap.CapitalizeFirst() + " " + statvalue.ToStringPercent(), statvalue / 2, TextureCache.SexDriveTexture, Texture2D.blackTexture, xxx.sex_drive_stat.description); lineRect.y += height; statvalue = pawn.GetStatValue(xxx.vulnerability_stat); diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Utility.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Utility.cs index db91411..815d8ab 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Utility.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Utility.cs @@ -53,7 +53,7 @@ namespace RJW_Menstruation if (pawn.kindDef?.race == pawn.def) return pawn.kindDef; return VariousDefOf.AllKinds.Find(kind => kind.race == pawn.def && kind.defName.Contains("Colonist")) ?? VariousDefOf.AllKinds.Find(kind => kind.race == pawn.def) ?? - pawn.RaceProps?.AnyPawnKind ?? + pawn.def.race?.AnyPawnKind ?? pawn.kindDef; } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs index 6c5e143..7f368cc 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs @@ -167,10 +167,5 @@ namespace RJW_Menstruation 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"); - - // Defs from Sexperience Ideology - public static readonly PreceptDef Pregnancy_Elevated = DefDatabase.GetNamedSilentFail("Pregnancy_Elevated"); - public static readonly PreceptDef Pregnancy_Holy = DefDatabase.GetNamedSilentFail("Pregnancy_Holy"); - public static readonly PreceptDef Pregnancy_Required = DefDatabase.GetNamedSilentFail("Pregnancy_Required"); } } diff --git a/changelogs.txt b/changelogs.txt index 97ae1c8..f427a5b 100644 --- a/changelogs.txt +++ b/changelogs.txt @@ -2,7 +2,6 @@ Version 1.0.9.0 - Fix errors when opening the womb dialog of some low fertility pawns. - Updated Traditional Chinese translation by Hydrogen. - New options to update wombs more or less often, defaulting to every hour. - - When using the sexperience-ideology mod, pawns with pro-pregnancy precepts will have thoughts more agreeable with potential pregnancies. - More generous egg allocation for newly spawned periodic ovulators. - Menstruation-related genes will now stay on females during initial pawn setup.