38 lines
1.3 KiB
C#
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 = "Has cum or fertilized egg in a womb";
|
|
}
|
|
}
|
|
|
|
[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());
|
|
}
|
|
}
|
|
}
|
|
}
|