public override State CheckCondition(QuestBehaviour questBehaviour, GameEvent gameEvent, params object[] parameters) { if (this.Location != WorldPosition.Invalid) { IGameService service = Services.GetService <IGameService>(); Diagnostics.Assert(service != null); if (service.Game as global::Game == null) { return(State.Failure); } IWorldPositionningService service2 = service.Game.Services.GetService <IWorldPositionningService>(); global::Empire empire; if (gameEvent != null) { empire = (gameEvent.Empire as global::Empire); } else { empire = questBehaviour.Initiator; } DepartmentOfDefense agency = empire.GetAgency <DepartmentOfDefense>(); if (this.CheckAllArmies) { for (int i = 0; i < agency.Armies.Count; i++) { WorldPosition worldPosition = agency.Armies[i].WorldPosition; int distance = service2.GetDistance(this.Location, worldPosition); int regionIndex = (int)service2.GetRegionIndex(worldPosition); bool flag = service2.IsWaterTile(worldPosition) || service2.IsOceanTile(worldPosition); if (distance == -1) { return(State.Failure); } if (distance <= this.Distance && (this.RegionIndex == -1 || regionIndex == this.RegionIndex) && (!this.ExcludeWaterTile || !flag)) { return(State.Success); } } } else { Army army = agency.GetArmy(this.ArmyGuid); if (army == null) { return(State.Failure); } int distance2 = service2.GetDistance(this.Location, army.WorldPosition); int regionIndex2 = (int)service2.GetRegionIndex(army.WorldPosition); bool flag2 = service2.IsWaterTile(army.WorldPosition) || service2.IsOceanTile(army.WorldPosition); if (distance2 == -1) { return(State.Failure); } if (distance2 <= this.Distance && (this.RegionIndex == -1 || regionIndex2 == this.RegionIndex) && (!this.ExcludeWaterTile || !flag2)) { return(State.Success); } } } return(State.Failure); }