public static void Postfix(ref Job __result, Pawn pawn, float ___radius) { if (__result != null) { return; } Predicate <Thing> validator = delegate(Thing t) { Pawn pawn3 = (Pawn)t; return(pawn3.Downed && pawn3.Faction == pawn.Faction && !pawn3.InBed() && pawn.CanReserve(pawn3, 1, -1, null, false) && !pawn3.IsForbidden(pawn) && !GenAI.EnemyIsNear(pawn3, 25f)); }; Pawn pawn2 = (Pawn)GenClosest.ClosestThingReachable(pawn.Position, pawn.Map, ThingRequest.ForGroup(ThingRequestGroup.Pawn), PathEndMode.OnCell, TraverseParms.For(pawn, Danger.Deadly, TraverseMode.ByPawn, false), ___radius, validator, null, 0, -1, false, RegionType.Set_Passable, false); if (pawn2 == null) { return; } if (!PeacekeeperUtility.IsPeacekeeper(pawn2) || PeacekeeperUtility.IsInChargeStation(pawn2)) { return; } var building_Bed = PeacekeeperUtility.GetEmptyChargeStation(pawn2); if (building_Bed == null || !pawn2.CanReserve(building_Bed, 1, -1, null, false) || building_Bed.IsForbidden(pawn)) { return; } Job job = JobMaker.MakeJob(RSDefOf.RSRescueToChargeStation, pawn2, building_Bed); job.count = 1; __result = job; }
public static void Postfix(ref bool __result, Pawn p) { if (!__result || !PeacekeeperUtility.IsPeacekeeper(p)) { return; } if (PeacekeeperUtility.IsInChargeStation(p)) { __result = false; } }
public static void Postfix(ref bool __result, Pawn pawn, Thing t, bool forced = false) { Pawn pawn2 = t as Pawn; if (!PeacekeeperUtility.IsPeacekeeper(pawn2)) { return; } if (!pawn2.Downed || pawn2.Faction != Faction.OfPlayer || PeacekeeperUtility.IsInChargeStation(pawn2) || !pawn.CanReserve(pawn2) || GenAI.EnemyIsNear(pawn2, 40f)) { __result = false; return; } var chargeStation = PeacekeeperUtility.GetEmptyChargeStation(pawn2); __result = chargeStation != null && pawn2.CanReserve(chargeStation, 1, -1, null, false); }
public static void Postfix(ref Job __result, Pawn pawn, Thing t, bool forced = false) { Pawn pawn2 = t as Pawn; if (!PeacekeeperUtility.IsPeacekeeper(pawn2) || PeacekeeperUtility.IsInChargeStation(pawn2) || !pawn.CanReserve(t)) { return; } Thing t2 = PeacekeeperUtility.GetEmptyChargeStation(pawn2); if (t2 == null) { return; } Job job = JobMaker.MakeJob(RSDefOf.RSRescueToChargeStation, pawn2, t2); job.count = 1; __result = job; }