Disable breast growth for ageless pawns to prevent them from getting stuck at max size post-birth.

This commit is contained in:
lutepickle 2023-01-03 19:11:20 -08:00
parent 1a1bc2e385
commit 8d507a5e69
3 changed files with 14 additions and 5 deletions

Binary file not shown.

View file

@ -246,8 +246,14 @@ namespace RJW_Menstruation
protected void CalculateBreastSize()
{
// Scenario A: the youngest child is less than halfway into babyhood: Full size
if (ageOfLastBirth + BabyHalfAge * GenDate.TicksPerYear > Pawn.ageTracker.AgeBiologicalTicks)
// Ageless pawns can't depend on the chrono age, so just disable their growth entirely
if (Pawn.ageTracker.BiologicalTicksPerTick <= 0f && breastSizeIncreased > 0)
{
ShrinkBreasts();
debugGrowthStatus = "Base size (ageless)";
}
// The youngest child is less than halfway into babyhood: Full size
else if (ageOfLastBirth + BabyHalfAge * GenDate.TicksPerYear > Pawn.ageTracker.AgeBiologicalTicks)
{
debugGrowthStatus = "Full size due to young child";
if (breastSizeIncreased < MaxBreastIncrement)
@ -256,7 +262,7 @@ namespace RJW_Menstruation
breastSizeIncreased = MaxBreastIncrement;
}
}
// Scenario B: Pregnant, grow in the second half of first trimester
// Pregnant, grow in the second half of first trimester
else if (Pawn.IsRJWPregnant() || Pawn.IsBiotechPregnant())
{
float pregnancySize = Mathf.InverseLerp(breastGrowthStart, breastGrowthEnd, Pawn.GetFarthestPregnancyProgress()) * MaxBreastIncrement;
@ -279,7 +285,7 @@ namespace RJW_Menstruation
}
else debugGrowthStatus = "Pregnant and full size";
}
// Scenario C: Not (or very early) pregnant and youngest child nonexistent or more than halfway into babyhood, time to shrink
// Not (or very early) pregnant and youngest child nonexistent or more than halfway into babyhood, time to shrink
else if (breastSizeIncreased > 0)
{
debugGrowthStatus = "Shrinking due to no pregnancy nor young child";
@ -291,7 +297,9 @@ namespace RJW_Menstruation
protected void CalculateNipples()
{
float newNippleProgress;
if (ageOfLastBirth + BabyHalfAge * GenDate.TicksPerYear > Pawn.ageTracker.AgeBiologicalTicks)
if (Pawn.ageTracker.BiologicalTicksPerTick <= 0f)
newNippleProgress = 0f;
else if (ageOfLastBirth + BabyHalfAge * GenDate.TicksPerYear > Pawn.ageTracker.AgeBiologicalTicks)
newNippleProgress = 1f;
else if (Pawn.IsRJWPregnant() || Pawn.IsBiotechPregnant())
newNippleProgress = nippleTransitions.Evaluate(Pawn.GetFarthestPregnancyProgress());

View file

@ -5,6 +5,7 @@ Version 1.0.8.5
- Some males will release small amounts of semen into a womb during vaginal sex before their actual ejaculation.
- Babies born from multiple pregnancy will properly produce the prompt to name them.
- Hopefully improve compatibility with xenotype inhertiance-altering mods for multiple pregnancy.
- Pawns that have stopped aging will no longer have larger breasts during and after pregnancy.
- Experimental "periodic ovulator" cycle type, currently not used. See Patches/Hediffs_Private_Parts_Animal.xml.
Version 1.0.8.4