diff --git a/1.4/Assemblies/RJW_Menstruation.dll b/1.4/Assemblies/RJW_Menstruation.dll index 8897ef0..26ec0a6 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/HediffComps/HediffComp_PregeneratedBabies.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_PregeneratedBabies.cs index 4ce241f..0a919c4 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_PregeneratedBabies.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_PregeneratedBabies.cs @@ -202,7 +202,7 @@ namespace RJW_Menstruation if (comp?.HasBaby ?? false) { OutcomeChance thisOutcome = outcome; - Precept_Ritual precept_Ritual = (Precept_Ritual)comp.Pawn.Ideo.GetPrecept(RimWorld.PreceptDefOf.ChildBirth); + Precept_Ritual precept_Ritual = (Precept_Ritual)comp.Pawn.Ideo.GetPrecept(PreceptDefOf.ChildBirth); float birthQuality = PregnancyUtility.GetBirthQualityFor(mother); do { diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/RJW_Menstruation.csproj b/1.4/source/RJW_Menstruation/RJW_Menstruation/RJW_Menstruation.csproj index 2577bb6..33cf9ec 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/RJW_Menstruation.csproj +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/RJW_Menstruation.csproj @@ -109,6 +109,10 @@ ..\..\..\..\..\..\..\..\workshop\content\294100\2830943477\1.4\Assemblies\AnimalGenetics.dll False + + ..\..\..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll + False + ..\..\..\..\..\rjw\1.4\Assemblies\RJW.dll False @@ -169,9 +173,6 @@ - - 1.4.3901 - 2.2.2 runtime 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 fbb0115..437478c 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 @@ -716,6 +716,7 @@ namespace RJW_Menstruation BeforeSimulator(); + if (ShouldBeInfertile()) GoNextStage(Stage.Infertile); switch (curStage) { case Stage.Follicular: @@ -748,7 +749,6 @@ namespace RJW_Menstruation GoNextStage(Stage.Follicular); break; } - AfterSimulator(); } catch (Exception ex) @@ -1222,7 +1222,7 @@ namespace RJW_Menstruation float avglittersize = AverageLitterSize(); float fertStartAge = Pawn.RaceProps.lifeStageAges?.Find(stage => stage.def.reproductive)?.minAge ?? 0.0f; - float fertEndAge = Pawn.RaceProps.lifeExpectancy * (Pawn.IsAnimal() ? 0.96f : 0.58f); // RJW default fertility_endage for animal and humanlike + float fertEndAge = Pawn.RaceProps.lifeExpectancy * (Pawn.IsAnimal() ? RJWPregnancySettings.fertility_endage_female_animal : RJWPregnancySettings.fertility_endage_female_humanlike); if (fertEndAge < fertStartAge) fertEndAge = fertStartAge; float raceCyclesPerYear = RaceCyclesPerYear(); @@ -1263,11 +1263,6 @@ namespace RJW_Menstruation protected virtual void AfterSimulator() { - if (ShouldBeInfertile()) - { - eggs.Clear(); - GoNextStage(Stage.Infertile); - } if (EggHealth < 1f) { if (sexNeed == null) sexNeed = Pawn.needs.TryGetNeed(VariousDefOf.SexNeed); @@ -1732,7 +1727,11 @@ namespace RJW_Menstruation { if (curStageTicks >= currentIntervalTicks) { - if (!IsBreedingSeason()) + if (ShouldBeInfertile()) + { + GoNextStage(Stage.Infertile); + } + else if (!IsBreedingSeason()) { GoNextStage(Stage.Anestrus); } @@ -1854,20 +1853,18 @@ namespace RJW_Menstruation protected int PeriodRandomizer(Stage stage) { - float CycleSkew(float factor) => 1 + (cycleSpeed - 1) * factor; - float variabilityFactor = (EggHealth < 1.0f) ? 6.0f : 1.0f; // Most cycle lengthening or shortening occurs in the follicular phase, so weight towards that switch (stage) { case Stage.Follicular: - return (int)(Utility.VariationRange(Props.follicularIntervalDays * GenDate.TicksPerDay, cycleVariability * 1.5f * variabilityFactor) / CycleSkew(1.5f)); + return (int)(Utility.VariationRange(Props.follicularIntervalDays * GenDate.TicksPerDay, cycleVariability * 1.5f * variabilityFactor) / (1 + (cycleSpeed - 1) * 1.5f)); case Stage.Ovulatory: return Props.ovulationIntervalHours * GenDate.TicksPerHour; // No variability for now case Stage.Luteal: - return (int)(Utility.VariationRange(Props.lutealIntervalDays * GenDate.TicksPerDay, cycleVariability * 0.5f * variabilityFactor) / CycleSkew(0.5f)); + return (int)(Utility.VariationRange(Props.lutealIntervalDays * GenDate.TicksPerDay, cycleVariability * 0.5f * variabilityFactor) / (1 + (cycleSpeed - 1) * 0.5f)); case Stage.Bleeding: - return (int)(Utility.VariationRange(Props.bleedingIntervalDays * GenDate.TicksPerDay, cycleVariability * 0.5f * variabilityFactor) / CycleSkew(0.5f)); + return (int)(Utility.VariationRange(Props.bleedingIntervalDays * GenDate.TicksPerDay, cycleVariability * 0.5f * variabilityFactor) / (1 + (cycleSpeed - 1) * 0.5f)); case Stage.Recover: return (int)Utility.VariationRange(Props.recoveryIntervalDays * GenDate.TicksPerDay, 0.05f); case Stage.Pregnant: