// Token: 0x06000420 RID: 1056 RVA: 0x0002CD30 File Offset: 0x0002B130 protected override IntVec3 GetWanderRoot(Pawn pawn) { if (pawn.isXenomorph()) { HiveLike hivelike = pawn.mindState.duty != null && pawn.mindState.duty.focus != null ? pawn.mindState.duty.focus.Thing as HiveLike : null; if (hivelike != null) { return(hivelike.Position); } /* * if (hivelike==null) * { * hivelike = FindClosestHiveLike(pawn); * } */ if (hivelike == null || !hivelike.Spawned) { if (XenomorphUtil.HivelikesPresent(pawn.Map)) { return(XenomorphUtil.ClosestReachableHivelike(pawn).Position); } if (!XenomorphKidnapUtility.hiveslimepresent) { if (XenomorphKidnapUtility.TryFindGoodHiveLoc(pawn, out IntVec3 c)) { return(c); } } else if (!XenomorphUtil.ClosestReachableHiveSlime(pawn).DestroyedOrNull()) { return(XenomorphUtil.ClosestReachableHiveSlime(pawn).Position); } return(pawn.Position); } // Log.Message(string.Format("JobGiver_WanderHiveLike hivelike.Position: {0}", hivelike.Position)); return(hivelike.Position); } else if (pawn.isNeomorph()) { Corpse corpse = (Corpse)GenClosest.ClosestThingReachable(pawn.Position, pawn.Map, ThingRequest.ForGroup(ThingRequestGroup.Corpse), PathEndMode.Touch, TraverseParms.For(pawn, Danger.Deadly), 20f); if (corpse != null) { return(corpse.Position); } return(pawn.Position); } else { return(pawn.Position); } }
// Token: 0x06000880 RID: 2176 RVA: 0x000475D8 File Offset: 0x000459D8 private HiveLike FindClosestHiveLike(Pawn pawn) { return((HiveLike)XenomorphUtil.ClosestReachableHivelike(pawn)); }
// Token: 0x06000956 RID: 2390 RVA: 0x0004D678 File Offset: 0x0004BA78 protected override bool Satisfied(Pawn pawn) { return(XenomorphUtil.ClosestReachableHivelike(pawn).DestroyedOrNull()); }