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 d86fbcd..2f43120 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 @@ -306,7 +306,7 @@ namespace RJW_Menstruation if (factor <= 0.0f) return 0.0f; // Too young or too old } else part.TransformValue(StatRequest.For(Pawn), ref ovulationChance); - } + } if (Pawn.Has(Quirk.Breeder)) ovulationChance *= 10.0f; try { @@ -1595,7 +1595,6 @@ namespace RJW_Menstruation { estrusflag = false; float eggnum; - int ovulated; try { eggnum = Math.Max(Rand.ByCurve(Pawn.def.race.litterSizeCurve), 1f); @@ -1610,13 +1609,19 @@ namespace RJW_Menstruation eggnum = 1f; } eggnum *= ovulationFactor; - ovulated = (int)eggnum + eggstack; + int toOvulate = (int)eggnum + eggstack; float ovulationChance = OvulationChance; - for (int i = 0; i < ovulated; i++) + int ovulated = 0; + for (int i = 0; i < toOvulate; i++) if (i < eggstack || Rand.Chance(ovulationChance)) // eggstack comes from drugs and are guaranteed ovulated + { eggs.Add(new Egg((int)(EggLifespanHours / CycleFactor))); + ++ovulated; + } ovarypower -= ovulated; + if (Configurations.Debug && ovulated != toOvulate) + Log.Message($"{Pawn} ovulated {ovulated}/{toOvulate} eggs ({ovulationChance.ToStringPercent()} chance)"); eggstack = 0; if (EggHealth <= 0)