using HarmonyLib; using RimWorld; using RimWorld.Planet; using System.Collections.Generic; using System.Linq; using Verse; namespace RJW_Menstruation.Patch { [HarmonyPatch(typeof(WorldPawnGC), "GetCriticalPawnReason")] public static class GetCriticalPawnReason_Patch { readonly public static HashSet cummedPawns = new HashSet(); public static void Postfix(ref string __result, Pawn pawn) { if (!__result.NullOrEmpty()) return; if (cummedPawns.Contains(pawn)) __result = "EggFertOrCumInWomb"; } } [HarmonyPatch(typeof(WorldPawnGC), "AccumulatePawnGCData")] public static class AccumulatePawnGCData_Patch { public static void Prefix() { GetCriticalPawnReason_Patch.cummedPawns.Clear(); // foreach(Pawn p in PawnsFinder.All_AliveOrDead) foreach (Pawn p in PawnsFinder.AllMapsCaravansAndTravelingTransportPods_Alive_OfPlayerFaction.Union(PawnsFinder.AllMapsCaravansAndTravelingTransportPods_Alive_PrisonersOfColony)) { foreach (HediffComp_Menstruation comp in p.GetMenstruationComps()) GetCriticalPawnReason_Patch.cummedPawns.UnionWith(comp.GetCummersAndFertilizers()); } } } }