protected override Job TryGiveJob(Pawn pawn) { IntVec3 c; Job result; if (!RCellFinder.TryFindBestExitSpot(pawn, out c, TraverseMode.ByPawn)) { result = null; } else { Pawn pawn2 = KidnapAIUtility.ReachableWoundedGuest(pawn); if (pawn2 == null) { result = null; } else { result = new Job(JobDefOf.Kidnap) { targetA = pawn2, targetB = c, count = 1 }; } } return(result); }
protected override Job TryGiveJob(Pawn pawn) { if (!RCellFinder.TryFindBestExitSpot(pawn, out IntVec3 spot)) { return(null); } Pawn pawn2 = KidnapAIUtility.ReachableWoundedGuest(pawn); if (pawn2 == null) { return(null); } Job job = new Job(JobDefOf.Kidnap); job.targetA = pawn2; job.targetB = spot; job.count = 1; return(job); }
public override bool ActivateOn(Lord lord, TriggerSignal signal) { if (signal.type == TriggerSignalType.Tick && Find.TickManager.TicksGame % 800 == 0) { TriggerData_PawnCycleInd data = this.Data; data.pawnCycleInd++; if (data.pawnCycleInd >= lord.ownedPawns.Count) { data.pawnCycleInd = 0; } if (lord.ownedPawns.Any <Pawn>()) { Pawn pawn = lord.ownedPawns[data.pawnCycleInd]; if (pawn.Spawned && !pawn.Downed && !pawn.InMentalState && KidnapAIUtility.ReachableWoundedGuest(pawn) != null) { return(true); } } } return(false); }
protected override Job TryGiveJob(Pawn pawn) { IntVec3 c = default(IntVec3); if (!RCellFinder.TryFindBestExitSpot(pawn, out c, TraverseMode.ByPawn)) { return(null); } Pawn pawn2 = KidnapAIUtility.ReachableWoundedGuest(pawn); if (pawn2 == null) { return(null); } Job job = new Job(JobDefOf.Kidnap); job.targetA = pawn2; job.targetB = c; job.count = 1; return(job); }