コード例 #1
0
        // 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);
            }
        }
コード例 #2
0
 // Token: 0x06000880 RID: 2176 RVA: 0x000475D8 File Offset: 0x000459D8
 private HiveLike FindClosestHiveLike(Pawn pawn)
 {
     return((HiveLike)XenomorphUtil.ClosestReachableHivelike(pawn));
 }
コード例 #3
0
 // Token: 0x06000956 RID: 2390 RVA: 0x0004D678 File Offset: 0x0004BA78
 protected override bool Satisfied(Pawn pawn)
 {
     return(XenomorphUtil.ClosestReachableHivelike(pawn).DestroyedOrNull());
 }