// 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); }
// 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)); }
// 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)); }