diff --git a/1.4/Assemblies/RJW_Menstruation.dll b/1.4/Assemblies/RJW_Menstruation.dll index cd6b170..762d712 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_Breast.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs index 5bb48b7..558031d 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 @@ -75,9 +75,6 @@ namespace RJW_Menstruation if (babyHalfAge <= 0) babyHalfAge = 1.2f / 2; // Default to human - if (RJWPregnancySettings.phantasy_pregnancy) - babyHalfAge /= GenDate.DaysPerYear; - return babyHalfAge; } } @@ -140,10 +137,10 @@ namespace RJW_Menstruation { base.CompExposeData(); - Scribe_Values.Look(ref ageOfLastBirth, "ageOfLastBirth", ageOfLastBirth, true); + Scribe_Values.Look(ref ageOfLastBirth, "ageOfLastBirth", -1); Scribe_Values.Look(ref maxBreastIncrement, "maxBreastIncrement", maxBreastIncrement, true); - Scribe_Values.Look(ref breastSizeIncreased, "breastSizeIncreased", breastSizeIncreased, true); - Scribe_Values.Look(ref nippleProgress, "nippleProgress", nippleProgress, true); + Scribe_Values.Look(ref breastSizeIncreased, "breastSizeIncreased", 0.0f); + Scribe_Values.Look(ref nippleProgress, "nippleProgress", 0.0f); Scribe_Values.Look(ref baseAlpha, "baseAlpha", baseAlpha, true); Scribe_Values.Look(ref baseAreola, "baseAreola", baseAreola, true); Scribe_Values.Look(ref baseNipple, "baseNipple", baseNipple, true); @@ -199,19 +196,19 @@ namespace RJW_Menstruation protected long CalculateLastBirth() { - long youngestAge = (long)(BabyHalfAge * GenDate.TicksPerYear) * -2; // So a newborn isn't considered a new mother, either + long youngestAge = -1; if ((Pawn.relations == null)) return youngestAge; - List pregnancies = new List(); - Pawn.health.hediffSet.GetHediffs(ref pregnancies); + List rjwPregnancies = new List(); + Pawn.health.hediffSet.GetHediffs(ref rjwPregnancies); bool hasChild = Pawn.relations.Children. - Where(child => !pregnancies.Any(preg => preg.babies.Contains(child))). // no fetuses + Where(child => !rjwPregnancies.Any(preg => preg.babies.Contains(child))). // no fetuses Where(child => child.GetMother() == Pawn). // not Dad TryMinBy(child => child.ageTracker.AgeBiologicalTicks, out Pawn youngest); - if (hasChild) youngestAge = Pawn.ageTracker.AgeBiologicalTicks - youngest.ageTracker.AgeBiologicalTicks; + if (hasChild) youngestAge = Math.Max(Pawn.ageTracker.AgeBiologicalTicks - youngest.ageTracker.AgeBiologicalTicks, -1); return youngestAge; } @@ -224,7 +221,7 @@ namespace RJW_Menstruation { maxBreastIncrement = Utility.RandGaussianLike(0.088f, 0.202f); } - if (ageOfLastBirth == 0) + if (ageOfLastBirth == 0 || ageOfLastBirth < -1) { ageOfLastBirth = CalculateLastBirth(); } @@ -253,7 +250,7 @@ namespace RJW_Menstruation debugGrowthStatus = "Base size (ageless)"; } // The youngest child is less than halfway into babyhood: Full size - else if (ageOfLastBirth + BabyHalfAge * GenDate.TicksPerYear > Pawn.ageTracker.AgeBiologicalTicks) + else if (ageOfLastBirth > 0 && ageOfLastBirth + BabyHalfAge * GenDate.TicksPerYear > Pawn.ageTracker.AgeBiologicalTicks) { debugGrowthStatus = "Full size due to young child"; if (breastSizeIncreased < MaxBreastIncrement) @@ -299,7 +296,7 @@ namespace RJW_Menstruation float newNippleProgress; if (Pawn.ageTracker.BiologicalTicksPerTick <= 0f) newNippleProgress = 0f; - else if (ageOfLastBirth + BabyHalfAge * GenDate.TicksPerYear > Pawn.ageTracker.AgeBiologicalTicks) + else if (ageOfLastBirth > 0 && ageOfLastBirth + BabyHalfAge * GenDate.TicksPerYear > Pawn.ageTracker.AgeBiologicalTicks) newNippleProgress = 1f; else if (Pawn.IsRJWPregnant() || Pawn.IsBiotechPregnant()) newNippleProgress = nippleTransitions.Evaluate(Pawn.GetFarthestPregnancyProgress());