OutpostGenerator.Building_OrbitalRelay.FindHostileInPerimeter C# (CSharp) Method

FindHostileInPerimeter() public method

public FindHostileInPerimeter ( ) : IntVec3
return IntVec3
        public IntVec3 FindHostileInPerimeter()
        {
            foreach (Pawn pawn in Find.MapPawns.AllPawns)
            {
                if ((pawn.Position.IsValid == false)
                    || (pawn.Downed))
                {
                    continue;
                }
                if ((pawn.Faction != null)
                    && (pawn.Faction == Faction.OfPlayer)
                    && (Find.TickManager.TicksGame < graceTimeInTicks))
                {
                    continue;
                }
                if ((pawn.Faction != null)
                    && (pawn.Faction.HostileTo(OG_Util.FactionOfMiningCo)))
                {
                    if (IsInNoMansLand(pawn.Position))
                    {
                        return pawn.Position;
                    }
                }
            }

            return IntVec3.Invalid;
        }
        private bool IsInNoMansLand(IntVec3 position)

Usage Example

Exemplo n.º 1
0
 public override void LordToilTick()
 {
     base.LordToilTick();
     if (this.lord.ticksInToil > GenTicks.TickRareInterval)
     {
         Building_OrbitalRelay orbitalRelay = OG_Util.FindOrbitalRelay(OG_Util.FactionOfMiningCo);
         if (orbitalRelay != null)
         {
             IntVec3 hostilePosition = orbitalRelay.FindHostileInPerimeter();
             if ((hostilePosition == IntVec3.Invalid) ||
                 (IntVec3Utility.ManhattanDistanceFlat(hostilePosition, this.FlagLoc) > 60))    // If an hostile is still in the perimeter, a new lord will be generated.
             {
                 this.lord.ReceiveMemo("ThreatIsFinished");
             }
         }
     }
 }