static bool Prefix(ref Trigger_KidnapVictimPresent __instance, ref bool __result, ref Lord lord, ref TriggerSignal signal) { if (signal.type == TriggerSignalType.Tick && Find.TickManager.TicksGame % 120 < RefcellRespeedConfig.currentTimeMultiplier) { if (__instance.data == null || !(__instance.data is TriggerData_PawnCycleInd)) { BackCompatibility.TriggerDataPawnCycleIndNull(__instance); } if (Find.TickManager.TicksGame - lord.lastPawnHarmTick > 300) { TriggerData_PawnCycleInd data = __instance.Data; ++data.pawnCycleInd; if (data.pawnCycleInd >= lord.ownedPawns.Count) { data.pawnCycleInd = 0; } if (lord.ownedPawns.Any <Pawn>()) { Pawn ownedPawn = lord.ownedPawns[data.pawnCycleInd]; if (ownedPawn.Spawned && !ownedPawn.Downed && (ownedPawn.MentalStateDef == null && KidnapAIUtility.TryFindGoodKidnapVictim(ownedPawn, 8f, out Pawn _)) && !GenAI.InDangerousCombat(ownedPawn)) { __result = true; return(false); } } } } __result = false; return(false); }
static bool Prefix(ref Trigger_WoundedGuestPresent __instance, ref bool __result, ref Lord lord, ref TriggerSignal signal) { if (signal.type == TriggerSignalType.Tick && Find.TickManager.TicksGame % 800 < RefcellRespeedConfig.currentTimeMultiplier) { TriggerData_PawnCycleInd data = __instance.Data; ++data.pawnCycleInd; if (data.pawnCycleInd >= lord.ownedPawns.Count) { data.pawnCycleInd = 0; } if (lord.ownedPawns.Any <Pawn>()) { Pawn ownedPawn = lord.ownedPawns[data.pawnCycleInd]; if (ownedPawn.Spawned && !ownedPawn.Downed && (!ownedPawn.InMentalState && KidnapAIUtility.ReachableWoundedGuest(ownedPawn) != null)) { __result = true; return(false); } } } __result = false; return(false); }