コード例 #1
0
        // Token: 0x06000524 RID: 1316 RVA: 0x0003381C File Offset: 0x00031C1C
        protected override Job TryGiveJob(Pawn pawn)
        {
            Predicate <Thing> validator = delegate(Thing t)
            {
                Pawn  pawn3   = (Pawn)t;
                float eggDist = 9999f;
                Thing egg     = XenomorphUtil.ClosestReachableEgg(pawn3);
                if (egg != null)
                {
                    eggDist = XenomorphUtil.DistanceBetween(pawn3.Position, egg.Position);
                }
                else
                {
                    return(false);
                }
                if (eggDist == 9999f || eggDist <= 5)
                {
                    return(false);
                }
                return(pawn3.Downed && pawn3.Faction != pawn.Faction && XenomorphUtil.isInfectablePawn(pawn3) && 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), this.radius, validator, null, 0, -1, false, RegionType.Set_Passable, false);

            if (pawn2 == null)
            {
                return(null);
            }
            Thing thing = GenClosest.ClosestThingReachable(pawn.Position, pawn.Map, ThingRequest.ForDef(XenomorphDefOf.RRY_EggXenomorphFertilized), PathEndMode.OnCell, TraverseParms.For(TraverseMode.NoPassClosedDoors, Danger.Deadly, false), 9999f, null, null, 0, -1, false, RegionType.Set_Passable, false);

            if (thing == null)
            {
                return(null);

                thing = GenClosest.ClosestThingReachable(pawn.Position, pawn.Map, ThingRequest.ForDef(XenomorphDefOf.RRY_EggXenomorphFertilized), PathEndMode.OnCell, TraverseParms.For(TraverseMode.NoPassClosedDoors, Danger.Deadly, false), 9999f, null, null, 0, -1, false, RegionType.Set_Passable, false);
                if (thing == null)
                {
                    return(null);
                }
            }
            return(new Job(XenomorphDefOf.RRY_Job_XenomorphKidnap, pawn2, thing)
            {
                count = 1
            });
        }