mirror of
https://gitgud.io/lutepickle/rjw_menstruation.git
synced 2024-08-14 22:46:52 +00:00
Compare commits
5 commits
9eff6cc2cd
...
bf37fcb3f2
Author | SHA1 | Date | |
---|---|---|---|
|
bf37fcb3f2 | ||
|
e3647caf2a | ||
|
9d66be1e49 | ||
|
5fbed7073a | ||
|
2facc09926 |
4 changed files with 17 additions and 15 deletions
Binary file not shown.
|
@ -202,7 +202,7 @@ namespace RJW_Menstruation
|
||||||
if (comp?.HasBaby ?? false)
|
if (comp?.HasBaby ?? false)
|
||||||
{
|
{
|
||||||
OutcomeChance thisOutcome = outcome;
|
OutcomeChance thisOutcome = outcome;
|
||||||
Precept_Ritual precept_Ritual = (Precept_Ritual)comp.Pawn.Ideo.GetPrecept(PreceptDefOf.ChildBirth);
|
Precept_Ritual precept_Ritual = (Precept_Ritual)comp.Pawn.Ideo.GetPrecept(RimWorld.PreceptDefOf.ChildBirth);
|
||||||
float birthQuality = PregnancyUtility.GetBirthQualityFor(mother);
|
float birthQuality = PregnancyUtility.GetBirthQualityFor(mother);
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
|
|
@ -109,10 +109,6 @@
|
||||||
<HintPath>..\..\..\..\..\..\..\..\workshop\content\294100\2830943477\1.4\Assemblies\AnimalGenetics.dll</HintPath>
|
<HintPath>..\..\..\..\..\..\..\..\workshop\content\294100\2830943477\1.4\Assemblies\AnimalGenetics.dll</HintPath>
|
||||||
<Private>False</Private>
|
<Private>False</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Assembly-CSharp">
|
|
||||||
<HintPath>..\..\..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="RJW">
|
<Reference Include="RJW">
|
||||||
<HintPath>..\..\..\..\..\rjw\1.4\Assemblies\RJW.dll</HintPath>
|
<HintPath>..\..\..\..\..\rjw\1.4\Assemblies\RJW.dll</HintPath>
|
||||||
<Private>False</Private>
|
<Private>False</Private>
|
||||||
|
@ -173,6 +169,9 @@
|
||||||
</BootstrapperPackage>
|
</BootstrapperPackage>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Krafs.Rimworld.Ref">
|
||||||
|
<Version>1.4.3901</Version>
|
||||||
|
</PackageReference>
|
||||||
<PackageReference Include="Lib.Harmony">
|
<PackageReference Include="Lib.Harmony">
|
||||||
<Version>2.2.2</Version>
|
<Version>2.2.2</Version>
|
||||||
<ExcludeAssets>runtime</ExcludeAssets>
|
<ExcludeAssets>runtime</ExcludeAssets>
|
||||||
|
|
|
@ -716,7 +716,6 @@ namespace RJW_Menstruation
|
||||||
|
|
||||||
BeforeSimulator();
|
BeforeSimulator();
|
||||||
|
|
||||||
if (ShouldBeInfertile()) GoNextStage(Stage.Infertile);
|
|
||||||
switch (curStage)
|
switch (curStage)
|
||||||
{
|
{
|
||||||
case Stage.Follicular:
|
case Stage.Follicular:
|
||||||
|
@ -749,6 +748,7 @@ namespace RJW_Menstruation
|
||||||
GoNextStage(Stage.Follicular);
|
GoNextStage(Stage.Follicular);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
AfterSimulator();
|
AfterSimulator();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -1222,7 +1222,7 @@ namespace RJW_Menstruation
|
||||||
float avglittersize = AverageLitterSize();
|
float avglittersize = AverageLitterSize();
|
||||||
|
|
||||||
float fertStartAge = Pawn.RaceProps.lifeStageAges?.Find(stage => stage.def.reproductive)?.minAge ?? 0.0f;
|
float fertStartAge = Pawn.RaceProps.lifeStageAges?.Find(stage => stage.def.reproductive)?.minAge ?? 0.0f;
|
||||||
float fertEndAge = Pawn.RaceProps.lifeExpectancy * (Pawn.IsAnimal() ? RJWPregnancySettings.fertility_endage_female_animal : RJWPregnancySettings.fertility_endage_female_humanlike);
|
float fertEndAge = Pawn.RaceProps.lifeExpectancy * (Pawn.IsAnimal() ? 0.96f : 0.58f); // RJW default fertility_endage for animal and humanlike
|
||||||
if (fertEndAge < fertStartAge) fertEndAge = fertStartAge;
|
if (fertEndAge < fertStartAge) fertEndAge = fertStartAge;
|
||||||
|
|
||||||
float raceCyclesPerYear = RaceCyclesPerYear();
|
float raceCyclesPerYear = RaceCyclesPerYear();
|
||||||
|
@ -1263,6 +1263,11 @@ namespace RJW_Menstruation
|
||||||
|
|
||||||
protected virtual void AfterSimulator()
|
protected virtual void AfterSimulator()
|
||||||
{
|
{
|
||||||
|
if (ShouldBeInfertile())
|
||||||
|
{
|
||||||
|
eggs.Clear();
|
||||||
|
GoNextStage(Stage.Infertile);
|
||||||
|
}
|
||||||
if (EggHealth < 1f)
|
if (EggHealth < 1f)
|
||||||
{
|
{
|
||||||
if (sexNeed == null) sexNeed = Pawn.needs.TryGetNeed(VariousDefOf.SexNeed);
|
if (sexNeed == null) sexNeed = Pawn.needs.TryGetNeed(VariousDefOf.SexNeed);
|
||||||
|
@ -1727,11 +1732,7 @@ namespace RJW_Menstruation
|
||||||
{
|
{
|
||||||
if (curStageTicks >= currentIntervalTicks)
|
if (curStageTicks >= currentIntervalTicks)
|
||||||
{
|
{
|
||||||
if (ShouldBeInfertile())
|
if (!IsBreedingSeason())
|
||||||
{
|
|
||||||
GoNextStage(Stage.Infertile);
|
|
||||||
}
|
|
||||||
else if (!IsBreedingSeason())
|
|
||||||
{
|
{
|
||||||
GoNextStage(Stage.Anestrus);
|
GoNextStage(Stage.Anestrus);
|
||||||
}
|
}
|
||||||
|
@ -1853,18 +1854,20 @@ namespace RJW_Menstruation
|
||||||
|
|
||||||
protected int PeriodRandomizer(Stage stage)
|
protected int PeriodRandomizer(Stage stage)
|
||||||
{
|
{
|
||||||
|
float CycleSkew(float factor) => 1 + (cycleSpeed - 1) * factor;
|
||||||
|
|
||||||
float variabilityFactor = (EggHealth < 1.0f) ? 6.0f : 1.0f;
|
float variabilityFactor = (EggHealth < 1.0f) ? 6.0f : 1.0f;
|
||||||
// Most cycle lengthening or shortening occurs in the follicular phase, so weight towards that
|
// Most cycle lengthening or shortening occurs in the follicular phase, so weight towards that
|
||||||
switch (stage)
|
switch (stage)
|
||||||
{
|
{
|
||||||
case Stage.Follicular:
|
case Stage.Follicular:
|
||||||
return (int)(Utility.VariationRange(Props.follicularIntervalDays * GenDate.TicksPerDay, cycleVariability * 1.5f * variabilityFactor) / (1 + (cycleSpeed - 1) * 1.5f));
|
return (int)(Utility.VariationRange(Props.follicularIntervalDays * GenDate.TicksPerDay, cycleVariability * 1.5f * variabilityFactor) / CycleSkew(1.5f));
|
||||||
case Stage.Ovulatory:
|
case Stage.Ovulatory:
|
||||||
return Props.ovulationIntervalHours * GenDate.TicksPerHour; // No variability for now
|
return Props.ovulationIntervalHours * GenDate.TicksPerHour; // No variability for now
|
||||||
case Stage.Luteal:
|
case Stage.Luteal:
|
||||||
return (int)(Utility.VariationRange(Props.lutealIntervalDays * GenDate.TicksPerDay, cycleVariability * 0.5f * variabilityFactor) / (1 + (cycleSpeed - 1) * 0.5f));
|
return (int)(Utility.VariationRange(Props.lutealIntervalDays * GenDate.TicksPerDay, cycleVariability * 0.5f * variabilityFactor) / CycleSkew(0.5f));
|
||||||
case Stage.Bleeding:
|
case Stage.Bleeding:
|
||||||
return (int)(Utility.VariationRange(Props.bleedingIntervalDays * GenDate.TicksPerDay, cycleVariability * 0.5f * variabilityFactor) / (1 + (cycleSpeed - 1) * 0.5f));
|
return (int)(Utility.VariationRange(Props.bleedingIntervalDays * GenDate.TicksPerDay, cycleVariability * 0.5f * variabilityFactor) / CycleSkew(0.5f));
|
||||||
case Stage.Recover:
|
case Stage.Recover:
|
||||||
return (int)Utility.VariationRange(Props.recoveryIntervalDays * GenDate.TicksPerDay, 0.05f);
|
return (int)Utility.VariationRange(Props.recoveryIntervalDays * GenDate.TicksPerDay, 0.05f);
|
||||||
case Stage.Pregnant:
|
case Stage.Pregnant:
|
||||||
|
|
Loading…
Reference in a new issue