Exemple #1
0
 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);
 }
Exemple #2
0
 public static void TriggerDataPawnCycleIndNull(Trigger_KidnapVictimPresent trigger)
 {
     trigger.data = new TriggerData_PawnCycleInd();
 }