Fix blocking menstruation genes during pawn generation (e.g. colony setup)

This commit is contained in:
lutepickle 2023-04-09 08:48:51 -07:00
parent 80a987b0bd
commit 334ef9d52a
5 changed files with 13 additions and 7 deletions

Binary file not shown.

View file

@ -1610,7 +1610,6 @@ namespace RJW_Menstruation
eggs.Add(new Egg((int)(EggLifespanHours / CycleFactor))); eggs.Add(new Egg((int)(EggLifespanHours / CycleFactor)));
++ovulated; ++ovulated;
} }
ovarypower -= ovulated; ovarypower -= ovulated;
eggstack = 0; eggstack = 0;
if (Configurations.Debug && ovulated != toOvulate) if (Configurations.Debug && ovulated != toOvulate)

View file

@ -192,21 +192,27 @@ namespace RJW_Menstruation
} }
} }
[HarmonyPatch(typeof(Pawn_GeneTracker), "AddGene", new Type[] {typeof(Gene), typeof(bool)})] [HarmonyPatch(typeof(Pawn_GeneTracker), "AddGene", new Type[] { typeof(Gene), typeof(bool) })]
public class AddGene_Patch public class AddGene_Patch
{ {
public static bool Prefix(ref Gene __result, Gene gene, Pawn ___pawn) public static bool Prefix(ref Gene __result, Gene gene, Pawn ___pawn)
{ {
if(VariousDefOf.WombGenes.Contains(gene.def) && !___pawn.GetMenstruationComps().Any()) if (!VariousDefOf.WombGenes.Contains(gene.def)) return true;
bool keepGene;
if (PawnGenerator.IsBeingGenerated(___pawn))
{ {
__result = null; // During pawn generation, the vagina hediff doesn't exist yet
return false; // So use gender to decide instead
// Not the most accurate, but close enough
keepGene = ___pawn.gender == Gender.Female;
} }
else return true; else keepGene = ___pawn.GetMenstruationComps().Any();
if (!keepGene) __result = null;
return keepGene;
} }
} }
[HarmonyPatch(typeof(Pawn_GeneTracker), "Notify_GenesChanged")] [HarmonyPatch(typeof(Pawn_GeneTracker), "Notify_GenesChanged")]
public class Notify_GenesChanged_Patch public class Notify_GenesChanged_Patch
{ {
public static void Postfix(Pawn_GeneTracker __instance) public static void Postfix(Pawn_GeneTracker __instance)

View file

@ -1,4 +1,5 @@
Version 1.0.9.0 Version 1.0.9.0
- Menstruation-related genes will now stay on females during initial pawn setup.
Version 1.0.8.9 Version 1.0.8.9
- Fix bug that sent pawns into menopause very early. Please use the recalculate ovary power dev action to restore lost eggs. - Fix bug that sent pawns into menopause very early. Please use the recalculate ovary power dev action to restore lost eggs.