Esempio n. 1
0
        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;
        }
Esempio n. 2
0
 public static void Postfix(ref bool __result, Pawn p)
 {
     if (!__result || !PeacekeeperUtility.IsPeacekeeper(p))
     {
         return;
     }
     if (PeacekeeperUtility.IsInChargeStation(p))
     {
         __result = false;
     }
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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;
        }