rjw_menstruation/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/GC_Patch.cs

38 lines
1.3 KiB
C#

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<Pawn> cummedPawns = new HashSet<Pawn>();
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());
}
}
}
}