protected override bool TryComputeArmyMissionParameter() { if (!base.AIDataArmyGUID.IsValid) { base.Completion = AICommanderMission.AICommanderMissionCompletion.Fail; return(false); } AIData_Army aidata = this.aiDataRepository.GetAIData <AIData_Army>(base.AIDataArmyGUID); if (aidata == null || aidata.Army == null) { base.Completion = AICommanderMission.AICommanderMissionCompletion.Fail; return(false); } if (aidata.Army.IsLocked || aidata.Army.IsInEncounter) { return(false); } if (this.AICommanderRegroupArmies.MissionHasAllUnits(this)) { RequestGarrisonMessage requestGarrisonMessage = null; if (this.AICommanderRegroupArmies != null && this.AICommanderRegroupArmies.RequestUnitListMessageID != 0UL) { requestGarrisonMessage = (base.Commander.AIPlayer.Blackboard.GetMessage(this.AICommanderRegroupArmies.RequestUnitListMessageID) as RequestGarrisonMessage); } if (requestGarrisonMessage == null) { RequestGarrisonCampMessage requestGarrisonCampMessage = null; if (this.AICommanderRegroupArmies != null && this.AICommanderRegroupArmies.RequestUnitListMessageID != 0UL) { requestGarrisonCampMessage = (base.Commander.AIPlayer.Blackboard.GetMessage(this.AICommanderRegroupArmies.RequestUnitListMessageID) as RequestGarrisonCampMessage); } if (requestGarrisonCampMessage == null) { base.Completion = AICommanderMission.AICommanderMissionCompletion.Success; return(false); } IGameEntity gameEntity; if (!this.gameEntityRepositoryService.TryGetValue(requestGarrisonCampMessage.CampGuid, out gameEntity)) { base.Completion = AICommanderMission.AICommanderMissionCompletion.Fail; return(false); } Camp camp = gameEntity as Camp; if (camp == null) { base.Completion = AICommanderMission.AICommanderMissionCompletion.Fail; return(false); } if (!this.AICommanderRegroupArmies.FinalPosition.IsValid) { this.AICommanderRegroupArmies.FinalPosition = camp.GetValidDistrictToTarget(aidata.Army).WorldPosition; requestGarrisonCampMessage.FinalPosition = this.AICommanderRegroupArmies.FinalPosition; } Army armyAtPosition = this.worldPositionningService.GetArmyAtPosition(this.AICommanderRegroupArmies.FinalPosition); if (armyAtPosition != null && armyAtPosition.GUID != base.AIDataArmyGUID) { this.AICommanderRegroupArmies.FinalPosition = camp.GetValidDistrictToTarget(aidata.Army).WorldPosition; requestGarrisonCampMessage.FinalPosition = this.AICommanderRegroupArmies.FinalPosition; } bool flag = false; for (int i = 0; i < camp.Districts.Count; i++) { if (camp.Districts[i].Type != DistrictType.Exploitation && camp.Districts[i].Type != DistrictType.Improvement && this.worldPositionningService.GetDistance(this.AICommanderRegroupArmies.FinalPosition, camp.Districts[i].WorldPosition) <= 1) { flag = true; break; } } if (!flag) { this.AICommanderRegroupArmies.FinalPosition = camp.GetValidDistrictToTarget(aidata.Army).WorldPosition; requestGarrisonCampMessage.FinalPosition = this.AICommanderRegroupArmies.FinalPosition; } if (aidata.Army.WorldPosition == this.AICommanderRegroupArmies.FinalPosition) { base.Completion = AICommanderMission.AICommanderMissionCompletion.Success; return(false); } } else { IGameEntity gameEntity2; if (!this.gameEntityRepositoryService.TryGetValue(requestGarrisonMessage.CityGuid, out gameEntity2)) { base.Completion = AICommanderMission.AICommanderMissionCompletion.Fail; return(false); } City city = gameEntity2 as City; if (city == null) { base.Completion = AICommanderMission.AICommanderMissionCompletion.Fail; return(false); } if (city.IsInEncounter) { return(false); } if (city.BesiegingEmpire != null) { base.Completion = AICommanderMission.AICommanderMissionCompletion.Fail; return(false); } if (!this.AICommanderRegroupArmies.FinalPosition.IsValid) { this.AICommanderRegroupArmies.FinalPosition = city.GetValidDistrictToTarget(aidata.Army).WorldPosition; requestGarrisonMessage.FinalPosition = this.AICommanderRegroupArmies.FinalPosition; } Army armyAtPosition2 = this.worldPositionningService.GetArmyAtPosition(this.AICommanderRegroupArmies.FinalPosition); if (armyAtPosition2 != null && armyAtPosition2.GUID != base.AIDataArmyGUID) { this.AICommanderRegroupArmies.FinalPosition = city.GetValidDistrictToTarget(aidata.Army).WorldPosition; requestGarrisonMessage.FinalPosition = this.AICommanderRegroupArmies.FinalPosition; } bool flag2 = false; for (int j = 0; j < city.Districts.Count; j++) { if (city.Districts[j].Type != DistrictType.Exploitation && city.Districts[j].Type != DistrictType.Improvement && this.worldPositionningService.GetDistance(this.AICommanderRegroupArmies.FinalPosition, city.Districts[j].WorldPosition) <= 1) { flag2 = true; break; } } if (!flag2) { this.AICommanderRegroupArmies.FinalPosition = city.GetValidDistrictToTarget(aidata.Army).WorldPosition; requestGarrisonMessage.FinalPosition = this.AICommanderRegroupArmies.FinalPosition; } if (aidata.Army.WorldPosition == this.AICommanderRegroupArmies.FinalPosition) { base.Completion = AICommanderMission.AICommanderMissionCompletion.Success; return(false); } } } if (this.targetTransferArmy != null) { if (this.targetTransferArmy.Army == null) { this.targetTransferArmy = null; } else { if (!this.targetTransferArmy.Army.IsInEncounter && !this.targetTransferArmy.Army.IsLocked) { return(false); } this.targetTransferArmy = null; } } foreach (AICommanderMission aicommanderMission in this.AICommanderRegroupArmies.Missions) { AICommanderMission_RegroupArmyAt aicommanderMission_RegroupArmyAt = (AICommanderMission_RegroupArmyAt)aicommanderMission; if (aicommanderMission_RegroupArmyAt != this && aicommanderMission_RegroupArmyAt.targetTransferArmy == aidata) { if (!aidata.Army.IsLocked && !aidata.Army.IsInEncounter) { return(false); } aicommanderMission_RegroupArmyAt.targetTransferArmy = null; } } if (this.AICommanderRegroupArmies != null && this.AICommanderRegroupArmies.AIPlayer != null && this.AICommanderRegroupArmies.AIPlayer.AIEntities != null) { AIEntity_Empire aientity_Empire = this.AICommanderRegroupArmies.AIPlayer.AIEntities.Find((AIEntity match) => match is AIEntity_Empire) as AIEntity_Empire; if (aientity_Empire != null) { AICommanderMission_PrivateersHarass aicommanderMission_PrivateersHarass = aientity_Empire.GetCommanderMissionBasedOnItsArmyRequestArmy(this.AICommanderRegroupArmies.RequestUnitListMessageID) as AICommanderMission_PrivateersHarass; if (aicommanderMission_PrivateersHarass != null && aicommanderMission_PrivateersHarass.TargetCity != null && !aidata.Army.IsPrivateers && base.TryCreateArmyMission("ConvertToPrivateers", new List <object> { aicommanderMission_PrivateersHarass.TargetCity })) { base.State = TickableState.NeedTick; RequestUnitListMessage requestUnitListMessage = base.Commander.AIPlayer.Blackboard.GetMessage(this.AICommanderRegroupArmies.RequestUnitListMessageID) as RequestUnitListMessage; if (requestUnitListMessage != null) { requestUnitListMessage.ExecutionState = RequestUnitListMessage.RequestUnitListState.Regrouping; } return(true); } } } WorldPosition worldPosition; if (this.IsMaster) { if (this.IsArmyBesiegingACity(base.AIDataArmyGUID) && !aidata.Army.IsPrivateers) { return(false); } if (this.CanTransferToNearMission()) { return(false); } AICommanderMission_RegroupArmyAt aicommanderMission_RegroupArmyAt2 = null; int num = int.MaxValue; foreach (AICommanderMission aicommanderMission2 in this.AICommanderRegroupArmies.Missions) { AICommanderMission_RegroupArmyAt aicommanderMission_RegroupArmyAt3 = (AICommanderMission_RegroupArmyAt)aicommanderMission2; if (aicommanderMission_RegroupArmyAt3 != this) { WorldPosition unitsToRegroupPosition = aicommanderMission_RegroupArmyAt3.GetUnitsToRegroupPosition(); if (unitsToRegroupPosition.IsValid) { int distance = this.worldPositionningService.GetDistance(aidata.Army.WorldPosition, unitsToRegroupPosition); if (distance < num) { num = distance; aicommanderMission_RegroupArmyAt2 = aicommanderMission_RegroupArmyAt3; } } } } if (aicommanderMission_RegroupArmyAt2 == null) { if (!this.AICommanderRegroupArmies.FinalPosition.IsValid) { base.Completion = AICommanderMission.AICommanderMissionCompletion.Success; return(false); } worldPosition = this.AICommanderRegroupArmies.FinalPosition; } else { worldPosition = aicommanderMission_RegroupArmyAt2.GetUnitsToRegroupPosition(); } } else { if (this.CanTransferToNearMission()) { return(false); } AICommanderMission_RegroupArmyAt masterMission = this.AICommanderRegroupArmies.MasterMission; if (masterMission == null) { return(false); } worldPosition = masterMission.GetUnitsToRegroupPosition(); } base.State = TickableState.NoTick; if (aidata.Army.GetPropertyValue(SimulationProperties.Movement) > 0f) { int num2 = Math.Min(4, Math.Max(1, (this.worldPositionningService.GetDistance(worldPosition, aidata.Army.WorldPosition) - 1) / 2)); PathfindingContext pathfindingContext = aidata.Army.GenerateContext(); pathfindingContext.Greedy = true; PathfindingResult pathfindingResult = this.pathfindingService.FindPath(pathfindingContext, aidata.Army.WorldPosition, worldPosition, PathfindingManager.RequestMode.Default, null, PathfindingFlags.IgnoreFogOfWar, null); if (pathfindingResult != null) { int num3 = 0; WorldPosition worldPosition2 = WorldPosition.Invalid; foreach (WorldPosition worldPosition3 in pathfindingResult.GetCompletePath()) { if (worldPosition3 != pathfindingResult.Start) { num3++; if ((num3 <= num2 || !worldPosition2.IsValid) && worldPosition3 != worldPosition && this.pathfindingService.IsTileStopable(worldPosition3, aidata.Army, (PathfindingFlags)0, null)) { worldPosition2 = worldPosition3; } if (num3 >= num2 && worldPosition2.IsValid && base.TryCreateArmyMission("ReachPosition", new List <object> { worldPosition2 })) { base.State = TickableState.NeedTick; this.SetRequestMessageExecutionState(RequestUnitListMessage.RequestUnitListState.Regrouping); return(true); } } } } if (base.Commander.Empire.SimulationObject.Tags.Contains(FactionTrait.FactionTraitMimics1)) { DepartmentOfTheInterior agency = base.Commander.Empire.GetAgency <DepartmentOfTheInterior>(); if (agency.NonInfectedCities.Count > 0 && base.TryCreateArmyMission("ReachPositionMykara", new List <object> { agency.NonInfectedCities[0].WorldPosition })) { base.State = TickableState.NeedTick; this.SetRequestMessageExecutionState(RequestUnitListMessage.RequestUnitListState.Regrouping); return(true); } } } return(false); }
ushort[] ICadasterService.Connect(City city, PathfindingMovementCapacity movementCapacity, bool proxied) { if (city == null) { throw new ArgumentNullException("city"); } if ((movementCapacity & PathfindingMovementCapacity.Water) == PathfindingMovementCapacity.Water) { StaticString type = new StaticString("DistrictImprovement"); StaticString y = new StaticString("DistrictImprovementDocks"); WorldPosition start = WorldPosition.Invalid; for (int i = 0; i < city.Districts.Count; i++) { District district = city.Districts[i]; if (district.Type == DistrictType.Improvement && district.GetDescriptorNameFromType(type) == y) { start = district.WorldPosition; break; } } if (!start.IsValid) { return(null); } DepartmentOfForeignAffairs agency = city.Empire.GetAgency <DepartmentOfForeignAffairs>(); this.OceanPathfindingWorldContext.RegionIndexList.Clear(); this.OceanPathfindingWorldContext.RegionIndexList.Add((int)this.WorldPositionningService.GetRegionIndex(city.WorldPosition)); for (int j = 0; j < city.Region.Borders.Length; j++) { Region region = this.WorldPositionningService.GetRegion(city.Region.Borders[j].NeighbourRegionIndex); if (region.Owner == null || !(region.Owner is MajorEmpire) || region.Owner.Index == city.Empire.Index || agency.GetDiplomaticRelation(region.Owner).HasActiveAbility(DiplomaticAbilityDefinition.TradeRoute)) { this.OceanPathfindingWorldContext.RegionIndexList.Add(city.Region.Borders[j].NeighbourRegionIndex); } } Diagnostics.Assert(city.CadastralMap != null); Diagnostics.Assert((city.CadastralMap.ConnectedMovementCapacity & PathfindingMovementCapacity.Water) == PathfindingMovementCapacity.Water); List <ushort> list = new List <ushort>(); List <Region> list2 = new List <Region>(); List <Region> list3 = new List <Region>(); list3.Add(city.Region); int k = 0; int l = 2; while (l > 0) { l--; list2.AddRange(list3); list3.Clear(); while (k < list2.Count) { Region region2 = list2[k]; for (int m = 0; m < region2.Borders.Length; m++) { short regionIndex = (short)region2.Borders[m].NeighbourRegionIndex; Region region3 = this.WorldPositionningService.GetRegion((int)regionIndex); if (region3 != null && !list2.Contains(region3)) { if (region3.City != null) { Diagnostics.Assert(region3.City.CadastralMap != null); if ((region3.City.CadastralMap.ConnectedMovementCapacity & PathfindingMovementCapacity.Water) == PathfindingMovementCapacity.Water) { for (int n = 0; n < region3.City.Districts.Count; n++) { District district2 = region3.City.Districts[n]; if (district2.Type == DistrictType.Improvement && district2.GetDescriptorNameFromType(type) == y) { PathfindingFlags pathfindingFlags = PathfindingFlags.IgnoreAll; pathfindingFlags &= ~PathfindingFlags.IgnoreMovementCapacities; pathfindingFlags &= ~PathfindingFlags.IgnorePOI; PathfindingContext pathfindingContext = new PathfindingContext(GameEntityGUID.Zero, city.Empire, PathfindingMovementCapacity.Water); pathfindingContext.RefreshProperties(1f, 1f, false, false, 1f, 1f); bool flag = false; if (!this.OceanPathfindingWorldContext.RegionIndexList.Contains(region2.Borders[m].NeighbourRegionIndex)) { flag = true; this.OceanPathfindingWorldContext.RegionIndexList.Add(region2.Borders[m].NeighbourRegionIndex); } PathfindingResult pathfindingResult = this.PathfindingService.FindPath(pathfindingContext, start, district2.WorldPosition, PathfindingManager.RequestMode.Default, this.OceanPathfindingWorldContext, pathfindingFlags, null); if (flag) { this.OceanPathfindingWorldContext.RegionIndexList.Remove(region2.Borders[m].NeighbourRegionIndex); } if (pathfindingResult == null) { pathfindingResult = this.PathfindingService.FindPath(pathfindingContext, start, district2.WorldPosition, PathfindingManager.RequestMode.Default, null, pathfindingFlags, null); } if (pathfindingResult != null) { ushort item = this.Reserve(new Road { FromRegion = (short)city.Region.Index, ToRegion = (short)region3.Index, WorldPositions = pathfindingResult.GetCompletePath().ToArray <WorldPosition>(), PathfindingMovementCapacity = PathfindingMovementCapacity.Water }); list.Add(item); } } } } } if (region3.IsOcean) { list3.AddOnce(region3); } else { list2.Insert(k, region3); k++; } } } k++; } } this.OceanPathfindingWorldContext.RegionIndexList.Clear(); return(list.ToArray()); } else { if (city.Region.Borders != null) { List <ushort> list4 = new List <ushort>(); for (int num = 0; num < city.Region.Borders.Length; num++) { short regionIndex2 = (short)city.Region.Borders[num].NeighbourRegionIndex; Region region4 = this.WorldPositionningService.GetRegion((int)regionIndex2); if (region4 != null && region4.City != null) { if (proxied) { if ((movementCapacity & PathfindingMovementCapacity.Ground) != PathfindingMovementCapacity.Ground) { goto IL_75D; } Diagnostics.Assert(region4.City.CadastralMap != null); if ((region4.City.CadastralMap.ConnectedMovementCapacity & PathfindingMovementCapacity.Ground) != PathfindingMovementCapacity.Ground) { goto IL_75D; } } bool flag2 = false; if (region4.City.CadastralMap.Roads != null) { for (int num2 = 0; num2 < region4.City.CadastralMap.Roads.Count; num2++) { ushort num3 = region4.City.CadastralMap.Roads[num2]; Road road = this.roads[(int)num3]; if (road != null && (city.Region.Index == (int)road.FromRegion || city.Region.Index == (int)road.ToRegion) && (road.PathfindingMovementCapacity & movementCapacity) != PathfindingMovementCapacity.None) { if (this.RoadModified != null) { this.RoadModified(this, new RoadEventArgs(num3, road)); } flag2 = true; list4.Add(num3); } } } if (!flag2) { PathfindingFlags pathfindingFlags2 = PathfindingFlags.IgnoreAll; pathfindingFlags2 &= ~PathfindingFlags.IgnoreMovementCapacities; pathfindingFlags2 &= ~PathfindingFlags.IgnorePOI; pathfindingFlags2 &= ~PathfindingFlags.IgnoreRoad; PathfindingContext pathfindingContext2 = new PathfindingContext(GameEntityGUID.Zero, city.Empire, movementCapacity); pathfindingContext2.RefreshProperties(1f, 1f, false, false, 1f, 1f); pathfindingContext2.RemoveMovementCapacity(PathfindingMovementCapacity.FrozenWater); Diagnostics.Assert(this.pathfindingWorldContext != null && this.pathfindingWorldContext.RegionIndexList != null && this.pathfindingWorldContext.RegionIndexList.Count == 2); this.pathfindingWorldContext.RegionIndexList[0] = (int)this.WorldPositionningService.GetRegionIndex(city.WorldPosition); this.pathfindingWorldContext.RegionIndexList[1] = (int)this.WorldPositionningService.GetRegionIndex(region4.City.WorldPosition); PathfindingResult pathfindingResult2 = this.PathfindingService.FindPath(pathfindingContext2, city.WorldPosition, region4.City.WorldPosition, PathfindingManager.RequestMode.Default, this.pathfindingWorldContext, pathfindingFlags2, null); if (pathfindingResult2 == null) { pathfindingFlags2 |= PathfindingFlags.IgnorePOI; pathfindingResult2 = this.PathfindingService.FindPath(pathfindingContext2, city.WorldPosition, region4.City.WorldPosition, PathfindingManager.RequestMode.Default, this.pathfindingWorldContext, pathfindingFlags2, null); } if (pathfindingResult2 != null) { ushort item2 = this.Reserve(new Road { FromRegion = (short)city.Region.Index, ToRegion = (short)region4.Index, WorldPositions = pathfindingResult2.GetCompletePath().ToList <WorldPosition>().ToArray(), PathfindingMovementCapacity = movementCapacity }); list4.Add(item2); } } } IL_75D :; } return(list4.ToArray()); } return(null); } }
private bool BuildWorldPath() { this.TemporaryWorldPath.Clear(); if (this.LastHighlightedWorldPosition == WorldPosition.Invalid) { return(false); } if (base.IsTransferable(WorldCursor.HighlightedWorldPosition)) { return(false); } if ((!base.PathfindingService.IsTileStopable(this.LastHighlightedWorldPosition, base.PathfindingContext, (PathfindingFlags)0, null) || !base.PathfindingService.IsTilePassable(this.LastHighlightedWorldPosition, base.PathfindingContext, (PathfindingFlags)0, null) || this.OtherEmpireCreepingNodeAtPosition(this.Army.Empire, this.LastHighlightedWorldPosition)) && base.PathfindingService.IsTransitionPassable(this.GarrisonPosition, this.LastHighlightedWorldPosition, base.PathfindingContext, PathfindingFlags.IgnoreArmies | PathfindingFlags.IgnoreOtherEmpireDistrict | PathfindingFlags.IgnoreDiplomacy | PathfindingFlags.IgnorePOI | PathfindingFlags.IgnoreSieges | PathfindingFlags.IgnoreKaijuGarrisons, null)) { return(true); } PathfindingFlags pathfindingFlags = PathfindingFlags.IgnoreArmies; District district = base.WorldPositionningService.GetDistrict(this.GarrisonPosition); if (district != null && (district.Type == DistrictType.Center || district.Type == DistrictType.Extension) && district.City != null && district.City.BesiegingEmpireIndex != -1) { pathfindingFlags &= ~PathfindingFlags.IgnoreArmies; } Army army = null; if (this.LastHighlightedWorldPosition != WorldPosition.Invalid) { army = base.WorldPositionningService.GetArmyAtPosition(this.LastHighlightedWorldPosition); } bool flag = base.VisibilityService.IsWorldPositionDetectedFor(this.LastHighlightedWorldPosition, this.Army.Empire) || (army != null && !army.IsCamouflaged); bool flag2 = base.WorldPositionningService.GetDistance(this.GarrisonPosition, this.LastHighlightedWorldPosition) <= this.Army.LineOfSightVisionRange; if (flag && flag2) { pathfindingFlags &= ~PathfindingFlags.IgnoreArmies; } PathfindingResult pathfindingResult = base.PathfindingService.FindPath(base.PathfindingContext, this.GarrisonPosition, this.LastHighlightedWorldPosition, PathfindingManager.RequestMode.Default, null, pathfindingFlags, null); if (base.WorldPositionningService != null && pathfindingResult != null && this.LastHighlightedWorldPosition != WorldPosition.Invalid) { if (!base.PathfindingService.IsTileStopable(this.LastHighlightedWorldPosition, base.PathfindingContext, (PathfindingFlags)0, null)) { WorldPosition lastHighlightedWorldPosition = this.LastHighlightedWorldPosition; WorldPosition position = pathfindingResult.GetCompletePath().Last <WorldPosition>(); bool flag3 = base.WorldPositionningService.IsWaterTile(lastHighlightedWorldPosition); bool flag4 = base.WorldPositionningService.IsWaterTile(position); if (flag3 != flag4) { World world = (base.GameService.Game as global::Game).World; List <WorldPosition> neighbours = lastHighlightedWorldPosition.GetNeighbours(world.WorldParameters); List <WorldPosition> list = new List <WorldPosition>(); for (int i = 0; i < neighbours.Count; i++) { if (base.WorldPositionningService.IsWaterTile(neighbours[i]) == flag3 && !base.WorldPositionningService.HasRidge(neighbours[i]) && base.PathfindingService.IsTileStopable(neighbours[i], base.PathfindingContext, (PathfindingFlags)0, null)) { list.Add(neighbours[i]); } } if (list.Count > 0) { PathfindingResult pathfindingResult2 = null; float num = float.MaxValue; for (int j = 0; j < list.Count; j++) { PathfindingResult pathfindingResult3 = base.PathfindingService.FindPath(base.PathfindingContext, this.GarrisonPosition, list[j], PathfindingManager.RequestMode.Default, null, pathfindingFlags, null); if (pathfindingResult3 != null && pathfindingResult3.GetCost() < num) { num = pathfindingResult3.GetCost(); pathfindingResult2 = pathfindingResult3; } } if (pathfindingResult2 != null) { pathfindingResult = pathfindingResult2; } } } } else if (this.OtherEmpireCreepingNodeAtPosition(this.Army.Empire, this.LastHighlightedWorldPosition)) { List <WorldPosition> list2 = pathfindingResult.GetCompletePath().ToList <WorldPosition>(); if (list2.Count > 0) { list2.RemoveAt(list2.Count - 1); PathfindingResult pathfindingResult4 = base.PathfindingService.FindPath(base.PathfindingContext, this.GarrisonPosition, list2.Last <WorldPosition>(), PathfindingManager.RequestMode.Default, null, pathfindingFlags, null); if (pathfindingResult4 != null) { pathfindingResult = pathfindingResult4; this.TemporaryWorldPath.Build(pathfindingResult, this.WorldArmy.Army.GetPropertyValue(SimulationProperties.MovementRatio), int.MaxValue, false); return(true); } } } } if (pathfindingResult == null) { return(base.PathfindingService.IsTransitionPassable(this.GarrisonPosition, this.LastHighlightedWorldPosition, base.PathfindingContext, PathfindingFlags.IgnoreArmies | PathfindingFlags.IgnoreOtherEmpireDistrict | PathfindingFlags.IgnoreDiplomacy | PathfindingFlags.IgnorePOI | PathfindingFlags.IgnoreSieges | PathfindingFlags.IgnoreKaijuGarrisons, null)); } Army army2 = this.WorldArmy.Army; this.TemporaryWorldPath.Build(pathfindingResult, army2.GetPropertyValue(SimulationProperties.MovementRatio), int.MaxValue, false); return(true); }