// Token: 0x060005B9 RID: 1465 RVA: 0x00037BC0 File Offset: 0x00035FC0
        private Pawn FindPawnTarget(Pawn pawn)
        {
            Predicate <Thing> validator = delegate(Thing x)
            {
                Pawn p = (Pawn)x;
                if (pawn.jobs.debugLog)
                {
                    pawn.jobs.DebugLogEvent(string.Format("{0}\nisInfectablePawn: {1}, Alive: {2}", pawn.LabelShortCap, p.isPotentialHost(), !p.Dead));
                }
                return(p.isPotentialHost());
            };
            Pawn pawn2 = (Pawn)XenomorphTargetFinder.BestAttackTarget(pawn, TargetScanFlags.NeedReachable, validator, 0f, HuntingRange, pawn.Position, float.MaxValue, true, true);

            /*
             * while (pawn2==null && HuntingRange<50)
             * {
             *  HuntingRange += 10;
             * //    Log.Message(string.Format("{0}@{1} hunting failed, extending radius to {2}", pawn.Label, pawn.Position, HuntingRange));
             *  pawn2 = (Pawn)AttackTargetFinder.BestAttackTarget(pawn, TargetScanFlags.NeedReachable, validator, 0f, HuntingRange, pawn.Position, float.MaxValue, true, true);
             * //    return pawn2;
             * }
             */
            if (pawn2 == null)
            {
                pawn2 = BestPawnToHuntForPredator(pawn, forceScanWholeMap);
            }
            if (pawn2 != null)
            {
                if (pawn.jobs.debugLog)
                {
                    pawn.jobs.DebugLogEvent(string.Format("{0}@{1} hunting {2}@{3}", pawn.Label, pawn.Position, pawn2.Label, pawn2.Position));
                }
            }
            return(pawn2 ?? null);
        }
Esempio n. 2
0
        // Token: 0x060005B9 RID: 1465 RVA: 0x00037BC0 File Offset: 0x00035FC0
        private Pawn FindPawnTarget(Pawn pawn)
        {
            Predicate <Thing> validator = delegate(Thing x)
            {
                Pawn p = (Pawn)x;
                //    Log.Message(string.Format("{0}\nisInfectablePawn: {1}, Alive: {2}", pawn.LabelShortCap, XenomorphUtil.isInfectablePawn(p), !p.Dead));
                return(XenomorphUtil.isInfectablePawn(p));
            };
            Pawn pawn2 = (Pawn)XenomorphTargetFinder.BestAttackTarget(pawn, TargetScanFlags.NeedReachable, validator, 0f, HuntingRange, pawn.Position, float.MaxValue, true, true);

            /*
             * while (pawn2==null && HuntingRange<50)
             * {
             *  HuntingRange += 10;
             * //    Log.Message(string.Format("{0}@{1} hunting failed, extending radius to {2}", pawn.Label, pawn.Position, HuntingRange));
             *  pawn2 = (Pawn)AttackTargetFinder.BestAttackTarget(pawn, TargetScanFlags.NeedReachable, validator, 0f, HuntingRange, pawn.Position, float.MaxValue, true, true);
             * //    return pawn2;
             * }
             */
            if (pawn2 == null)
            {
                pawn2 = BestPawnToHuntForPredator(pawn, forceScanWholeMap);
            }
#if DEBUG
            bool selected = Find.Selector.SingleSelectedThing == pawn;
            if (selected)
            {
                if (pawn2 != null)
                {
                    Log.Message(string.Format("{0}@{1} hunting {2}@{3}", pawn.Label, pawn.Position, pawn2.Label, pawn2.Position));
                }
            }
#endif
            return(pawn2 ?? null);
        }
 // Token: 0x060005BA RID: 1466 RVA: 0x00037C14 File Offset: 0x00036014
 private Building FindTurretTarget(Pawn pawn)
 {
     return((Building)XenomorphTargetFinder.BestAttackTarget(pawn, TargetScanFlags.NeedLOSToPawns | TargetScanFlags.NeedLOSToNonPawns | TargetScanFlags.NeedReachable | TargetScanFlags.NeedThreat, (Thing t) => t is Building, 0f, 70f, default(IntVec3), float.MaxValue, false, true));
 }
 // Token: 0x060005B9 RID: 1465 RVA: 0x00037BC0 File Offset: 0x00035FC0
 private Pawn FindPawnTarget(Pawn pawn)
 {
     return((Pawn)XenomorphTargetFinder.BestAttackTarget(pawn, TargetScanFlags.NeedLOSToAll & TargetScanFlags.NeedReachable, (Thing x) => x is Pawn p && pawn.CanSee(p) && (p.isXenomorph() || p.isXenoHost()), 0f, 30f, default(IntVec3), float.MaxValue, true, true));
 }
Esempio n. 5
0
 // Token: 0x060005B9 RID: 1465 RVA: 0x00037BC0 File Offset: 0x00035FC0
 private Pawn FindPawnTarget(Pawn pawn)
 {
     return((Pawn)XenomorphTargetFinder.BestAttackTarget(pawn, TargetScanFlags.NeedThreat, (Thing x) => x is Pawn && x.def.race.intelligence >= Intelligence.ToolUser && !((Pawn)x).health.hediffSet.HasHediff(XenomorphDefOf.RRY_FaceHuggerInfection) && !((Pawn)x).health.hediffSet.HasHediff(XenomorphDefOf.RRY_HiddenXenomorphImpregnation) && !((Pawn)x).health.hediffSet.HasHediff(XenomorphDefOf.RRY_XenomorphImpregnation) && ((Pawn)x).kindDef != XenomorphDefOf.RRY_Xenomorph_Drone && ((Pawn)x).kindDef != XenomorphDefOf.RRY_Xenomorph_FaceHugger && ((Pawn)x).kindDef != XenomorphDefOf.RRY_Xenomorph_Queen && ((Pawn)x).kindDef != XenomorphDefOf.RRY_Xenomorph_Runner && ((Pawn)x).kindDef != XenomorphDefOf.RRY_Xenomorph_Warrior, 0f, 9999f, default(IntVec3), float.MaxValue, true, true));
 }