internal override void OnEmpireEliminated(global::Empire empire, bool authorized) { if (empire.Index == base.Index) { ELCPUtilities.EliminatedEmpireIndices.Add(base.Index); this.ELCPIsEliminated = true; if (this.ConvertedVillages.Count > 0) { this.UnconvertAndPacifyAllConvertedVillages(); } } base.OnEmpireEliminated(empire, authorized); }
public bool IsContinentColonizedByEmpire(global::Empire empire, int continentID) { int[] regionList = this.world.Continents[continentID].RegionList; for (int i = 0; i < regionList.Length; i++) { Region region = this.world.Regions[i]; if (region.City != null && region.City.Empire.Index == empire.Index) { return(true); } } return(false); }
public void RefreshContent(global::Empire empire, UnitDesign design, GameObject client, AgeTransform anchor, bool allowDoubleClick) { this.Reset(); IGuiPanelHelper guiPanelHelper = Services.GetService <global::IGuiService>().GuiPanelHelper; Diagnostics.Assert(guiPanelHelper != null, "Unable to access GuiPanelHelper"); this.UnitDesign = design; if (this.tooltip != null) { this.tooltip.Anchor = anchor; this.tooltip.Class = this.UnitDesign.TooltipClass; this.tooltip.ClientData = new ConstructibleTooltipData(empire, null, this.UnitDesign); this.tooltip.Content = this.UnitDesign.Name; } this.UnitName.Text = GuiUnitDesign.GetTruncatedTitle(this.UnitDesign, this.UnitName); if (this.PrivateerGroup != null) { this.PrivateerGroup.Visible = this.IsMercenary(empire, this.UnitDesign); } GuiElement guiElement; if (guiPanelHelper.TryGetGuiElement(this.UnitDesign.UnitBodyDefinition.Name, out guiElement)) { Texture2D image; if (guiPanelHelper.TryGetTextureFromIcon(guiElement, global::GuiPanel.IconSize.Small, out image)) { this.UnitPortrait.Image = image; } } else { this.UnitPortrait.Image = null; } this.UnitToggle.State = false; this.UnitToggle.OnSwitchMethod = "OnUnitDesignToggle"; this.UnitToggle.OnSwitchObject = client; if (this.DoubleClickButton != null) { if (allowDoubleClick) { this.DoubleClickButton.AgeTransform.Visible = true; this.DoubleClickButton.OnDoubleClickMethod = "OnDoubleClickDesignCB"; this.DoubleClickButton.OnDoubleClickObject = client; } else { this.DoubleClickButton.AgeTransform.Visible = false; } } this.LifeGauge.AgeTransform.Alpha = 0f; }
public override void Bind(global::Empire empire) { if (empire == null) { throw new ArgumentNullException("empire"); } base.Bind(empire); this.CityListPanel.Bind(empire, base.gameObject); this.VillageListPanel.Bind(empire, base.gameObject); this.OceanicRegionListPanel.Bind(empire, base.gameObject); this.InfectedCitiesListPanel.Bind(empire, base.gameObject); this.KaijuListPanel.Bind(empire, base.gameObject); base.NeedRefresh = true; }
private static float UtilityFunc_EmpireResearch(SeasonEffect aiEvaluableElement, InterpreterContext context, float aiParameterValue, AIHeuristicAnalyser.Context debugContext) { global::Empire empire = context.Get("Empire") as global::Empire; Diagnostics.Assert(empire != null); if (empire.SimulationObject.Tags.Contains("AffinityReplicants")) { return(0f); } float num = Mathf.Max(1f, empire.GetPropertyValue(SimulationProperties.NetEmpireResearch)); float utility = aiParameterValue / num; return(AILayer_Altar.Normalize(debugContext, 0f, 1.7f, utility)); }
public override void Bind(global::Empire empire) { base.Bind(empire); this.departmentOfScience = base.Empire.GetAgency <DepartmentOfScience>(); this.departmentOfCreepingNodes = base.Empire.GetAgency <DepartmentOfCreepingNodes>(); this.departmentOfIndustry = base.Empire.GetAgency <DepartmentOfIndustry>(); this.departmentOfTheTreasury = base.Empire.GetAgency <DepartmentOfTheTreasury>(); this.departmentOfTheInterior = base.Empire.GetAgency <DepartmentOfTheInterior>(); this.departmentOfForeignAffairs = base.Empire.GetAgency <DepartmentOfForeignAffairs>(); if (this.departmentOfCreepingNodes != null) { this.departmentOfCreepingNodes.CollectionChanged += this.ConstructionQueue_CollectionChanged; } }
private void UpdatePacificationStatusOfRegion(global::Empire empire, Region region, AIRegionData regionData) { regionData.VillageTotalCount = 0; regionData.VillagePacifiedOrConvertedByMeCount = 0; regionData.VillageConvertedByOtherCount = 0; regionData.VillageNotPacified = 0; regionData.VillageDestroyed = 0; regionData.VillagePacifiedAndBuilt = 0; if (region.MinorEmpire != null) { BarbarianCouncil agency = region.MinorEmpire.GetAgency <BarbarianCouncil>(); if (agency != null) { regionData.VillageTotalCount = agency.Villages.Count; for (int i = 0; i < agency.Villages.Count; i++) { Village village = agency.Villages[i]; if (village.HasBeenConverted) { if (village.Converter.Index != empire.Index) { regionData.VillageConvertedByOtherCount++; regionData.VillageNotPacified++; } else { regionData.VillagePacifiedOrConvertedByMeCount++; regionData.VillagePacifiedAndBuilt++; } } else if (village.HasBeenPacified) { regionData.VillagePacifiedOrConvertedByMeCount++; if (village.PointOfInterest.PointOfInterestImprovement == null) { regionData.VillageDestroyed++; } else { regionData.VillagePacifiedAndBuilt++; } } else { regionData.VillageNotPacified++; } } } } }
private void SelectEmpire(global::Empire empireToSelect) { if (empireToSelect != null) { for (int i = 0; i < this.otherEmpires.Length; i++) { if (this.otherEmpires[i].Index == empireToSelect.Index) { this.SelectEmpireDropListIndex(i); return; } } } }
public static void ComputeCostAndTurn(Amplitude.Unity.Gui.IGuiService guiService, ConstructibleElement constructible, DepartmentOfTheTreasury departmentOfTheTreasury, SimulationObjectWrapper context, out string costString, out int turn) { PanelFeatureCost.costByResource.Clear(); if (constructible.Costs != null) { if (constructible is TechnologyDefinition && context.SimulationObject.Tags.Contains(FactionTrait.FactionTraitReplicants1) && (constructible as TechnologyDefinition).TechnologyFlags != DepartmentOfScience.ConstructibleElement.TechnologyFlag.OrbUnlock && (constructible as TechnologyDefinition).TechnologyFlags != DepartmentOfScience.ConstructibleElement.TechnologyFlag.KaijuUnlock) { costString = string.Empty; turn = -1; global::Empire empire = context as global::Empire; if (empire == null) { Diagnostics.LogError("Empire is null."); return; } DepartmentOfScience agency = empire.GetAgency <DepartmentOfScience>(); if (agency == null) { Diagnostics.LogError("Department of science is null"); return; } float buyOutTechnologyCost = agency.GetBuyOutTechnologyCost(constructible); if (buyOutTechnologyCost != 3.40282347E+38f) { costString = GuiFormater.FormatInstantCost(empire, buyOutTechnologyCost, DepartmentOfTheTreasury.Resources.EmpireMoney, true, 0); return; } costString = "-"; return; } else { for (int i = 0; i < constructible.Costs.Length; i++) { if (constructible.Costs[i] is PopulationConstructionCost) { PopulationConstructionCost populationConstructionCost = constructible.Costs[i] as PopulationConstructionCost; PanelFeatureCost.AppendCost(SimulationProperties.Population, populationConstructionCost.PopulationValue, true); } else { float productionCostWithBonus = DepartmentOfTheTreasury.GetProductionCostWithBonus(context, constructible, constructible.Costs[i], true); PanelFeatureCost.AppendCost(constructible.Costs[i].ResourceName, productionCostWithBonus, constructible.Costs[i].Instant || constructible.Costs[i].InstantOnCompletion); } } } } PanelFeatureCost.GetCostAndTurn(guiService, departmentOfTheTreasury, context, out costString, out turn); }
public bool CheckAgainstQuestInitiatorFilter(QuestBehaviour questBehavior, global::Empire empire, QuestInitiatorFilter questInitiatorFilter) { Diagnostics.Assert(questBehavior.Initiator is MajorEmpire); MajorEmpire majorEmpire = empire as MajorEmpire; MajorEmpire majorEmpire2 = questBehavior.Initiator as MajorEmpire; switch (questInitiatorFilter) { case QuestInitiatorFilter.AllEmpires: return(true); case QuestInitiatorFilter.Allies: { if (majorEmpire == null) { return(false); } bool bits = majorEmpire.Bits != 0; int bits2 = majorEmpire2.Bits; if (((bits ? 1 : 0) & bits2) != 0) { return(true); } break; } case QuestInitiatorFilter.Empire: if (empire.Index == questBehavior.Initiator.Index) { return(true); } break; case QuestInitiatorFilter.Enemies: if (empire.Index != questBehavior.Initiator.Index) { return(true); } break; case QuestInitiatorFilter.OtherEmpires: if (empire.Index != questBehavior.Initiator.Index) { return(true); } break; } return(false); }
private static float UtilityFunc_WorldNavy(SeasonEffect aiEvaluableElement, InterpreterContext context, float aiParameterValue, AIHeuristicAnalyser.Context debugContext) { IDownloadableContentService service = Services.GetService <IDownloadableContentService>(); if (!service.IsShared(DownloadableContent16.ReadOnlyName)) { return(0f); } global::Empire empire = context.Get("Empire") as global::Empire; Diagnostics.Assert(empire != null); float num = AILayer_Altar.ComputeMyNavyImportance(empire); return(aiParameterValue * (num - 1f)); }
public void ComputeRegionCandidateToColonization(global::Empire empire, ref List <int> listOfRegionToPacify) { List <AIRegionData> list = this.regionDataByEmpires[empire.Index].ToList <AIRegionData>(); list.RemoveAll((AIRegionData match) => match.ColonizationPreference == 0f); if (list.Count == 0) { return; } list.Sort((AIRegionData left, AIRegionData right) => - 1 * left.ColonizationPreference.CompareTo(right.ColonizationPreference)); for (int i = 0; i < list.Count; i++) { listOfRegionToPacify.Add(list[i].RegionIndex); } }
private void OnScreenMiddleClickCB(GameObject obj) { if (this.diplomaticRelationsViewport == null) { return; } global::Empire empire = null; global::Empire empire2 = null; this.diplomaticRelationsViewport.GetCurrentHighlightedEmpire(ref empire, ref empire2); if (empire != null) { this.OnInspect(empire); } }
protected override State Execute(QuestBehaviour questBehaviour, params object[] parameters) { global::Empire empire = this.game.Empires[this.TargetEmpireIndex]; if (!questBehaviour.Initiator.SimulationObject.Tags.Contains(global::Empire.TagEmpireEliminated)) { OrderPacifyMinorFaction orderPacifyMinorFaction = new OrderPacifyMinorFaction(questBehaviour.Initiator.Index, empire.Index, true); this.playerControllerRepositoryService.ActivePlayerController.PostOrder(orderPacifyMinorFaction); Diagnostics.Log("Posting order: {0}.", new object[] { orderPacifyMinorFaction.ToString() }); } return(State.Success); }
public WorldPositionScore[] GetWorldPositionColonizationScore(global::Empire empire, WorldPosition[] listOfPositionCandidate) { List <WorldPositionScore> list = new List <WorldPositionScore>(); for (int i = 0; i < listOfPositionCandidate.Length; i++) { if (this.WorldPositionningService.IsExtensionConstructible(listOfPositionCandidate[i], false)) { if (this.WorldPositionningService.IsConstructible(listOfPositionCandidate[i], 0)) { list.Add(this.ComputeColonizationScoreAtPosition(empire, listOfPositionCandidate[i])); } } } return(list.ToArray()); }
public float GetPriceWithSalesTaxes(TradableTransactionType transactionType, global::Empire empire, float quantity) { float num = Tradable.GetUnitPrice(this.TradableCategoryDefinition, this.Value); num *= quantity; num = Tradable.ApplySalesTaxes(num, transactionType, empire); if (this is TradableUnit && transactionType == TradableTransactionType.Buyout && empire is MajorEmpire && empire.GetPropertyValue(SimulationProperties.MarketplaceMercCostMultiplier) > 0f) { num *= empire.GetPropertyValue(SimulationProperties.MarketplaceMercCostMultiplier); } else if (ELCPUtilities.UseELCPStockpileRulseset && this is TradableBooster && empire is MajorEmpire && empire.GetPropertyValue(SimulationProperties.MarketplaceStockpileCostMultiplier) > 0f) { num *= empire.GetPropertyValue(SimulationProperties.MarketplaceStockpileCostMultiplier); } return(this.GetPriceWithSeasonEffectModifier(num, empire)); }
public static bool IsAbleToColonize(global::Empire empire) { ReadOnlyCollection <UnitBodyDefinition> availableUnitBodyDefinitions = ((IUnitDesignDatabase)empire.GetAgency <DepartmentOfDefense>()).AvailableUnitBodyDefinitions; for (int i = 0; i < availableUnitBodyDefinitions.Count; i++) { if (!availableUnitBodyDefinitions[i].Tags.Contains("Hidden") && (availableUnitBodyDefinitions[i].CheckUnitAbility(UnitAbility.ReadonlyColonize, -1) || availableUnitBodyDefinitions[i].CheckUnitAbility(UnitAbility.ReadonlyResettle, -1)) && DepartmentOfTheTreasury.CheckConstructiblePrerequisites(empire, availableUnitBodyDefinitions[i], new string[] { "Prerequisites" })) { return(true); } } return(false); }
private static float UtilityFunc_WorldSpy(SeasonEffect aiEvaluableElement, InterpreterContext context, float aiParameterValue, AIHeuristicAnalyser.Context debugContext) { global::Empire empire = context.Get("Empire") as global::Empire; Diagnostics.Assert(empire != null); float num = 0f; DepartmentOfEducation agency = empire.GetAgency <DepartmentOfEducation>(); for (int i = 0; i < agency.Heroes.Count; i++) { num += agency.Heroes[i].GetPropertyValue("NetInfiltrationPoint"); } float num2 = num * 0.05f; return(aiParameterValue * num2); }
private WorldPositionScore ComputeColonizationScoreAtPosition(global::Empire empire, WorldPosition element) { if (!element.IsValid) { return(null); } bool flag = false; WorldPositionScore worldPositionScore = new WorldPositionScore(this.GetWorldPositionScore(empire.Index, element)); int regionIndex = (int)this.WorldPositionningService.GetRegionIndex(element); foreach (WorldPosition worldPosition in WorldPosition.ParseTilesAtRange(element, 1, this.WorldPositionningService.World.WorldParameters)) { if (worldPosition.IsValid) { if (this.WorldPositionningService.IsExploitable(worldPosition, 0)) { if ((int)this.WorldPositionningService.GetRegionIndex(worldPosition) == regionIndex) { flag |= this.WorldPositionningService.IsOceanTile(worldPosition); worldPositionScore.Add(this.GetWorldPositionScore(empire.Index, worldPosition), 1f); } } } } foreach (WorldPosition worldPosition2 in WorldPosition.ParseTilesAtRange(element, 1, this.WorldPositionningService.World.WorldParameters)) { if (worldPosition2.IsValid) { if (this.WorldPositionningService.IsExploitable(worldPosition2, 0)) { if ((int)this.WorldPositionningService.GetRegionIndex(worldPosition2) == regionIndex) { worldPositionScore.Add(this.ComputeExpansionScoreAtPosition(empire, null, element, worldPosition2), this.secondRangePercent); worldPositionScore.NewDistrictNeighbourgNumber++; if (!this.WorldPositionningService.IsWaterTile(worldPosition2)) { worldPositionScore.NewDistrictNotWaterNeighbourNumber++; } } } } } this.ComputeCountByOrientation(element, ref worldPositionScore.CountByOrientation); worldPositionScore.HasCostalTile = flag; return(worldPositionScore); }
private void OnEmpireSymetricDiscovery(global::Empire initiatorEmpire, global::Empire discoveredEmpire, WorldPosition initiatorEmpirePosition, WorldPosition discoveredEmpirePosition) { if (initiatorEmpire == null || discoveredEmpire == null) { throw new ArgumentNullException(); } Diagnostics.Assert(this.pendingDiscoveryNotifications != null); OrderNotifyEmpireDiscovery orderNotifyEmpireDiscovery = this.pendingDiscoveryNotifications.Find((OrderNotifyEmpireDiscovery match) => (match.InitiatorEmpireIndex == initiatorEmpire.Index && match.DiscoveredEmpireIndex == discoveredEmpire.Index) || (match.InitiatorEmpireIndex == discoveredEmpire.Index && match.DiscoveredEmpireIndex == initiatorEmpire.Index)); if (orderNotifyEmpireDiscovery == null) { orderNotifyEmpireDiscovery = new OrderNotifyEmpireDiscovery(initiatorEmpire.Index, discoveredEmpire.Index); this.pendingDiscoveryNotifications.Add(orderNotifyEmpireDiscovery); } orderNotifyEmpireDiscovery.InitiatorEmpirePosition = initiatorEmpirePosition; orderNotifyEmpireDiscovery.DiscoveredEmpirePosition = discoveredEmpirePosition; }
private void UpdateBorderStatusOfRegion(global::Empire empire, Region region, AIRegionData regionData) { DepartmentOfForeignAffairs agency = empire.GetAgency <DepartmentOfForeignAffairs>(); regionData.BorderWithEnnemy = 0; regionData.BorderWithAllied = 0; regionData.BorderWithMe = 0; regionData.BorderWithNeutral = 0; regionData.OverallBorderSize = 0; for (int i = 0; i < regionData.BorderByEmpireIndex.Length; i++) { regionData.BorderByEmpireIndex[i] = 0; } for (int j = 0; j < region.Borders.Length; j++) { int num = region.Borders[j].WorldPositions.Length; regionData.OverallBorderSize += num; Region region2 = this.worldPositionService.GetRegion(region.Borders[j].NeighbourRegionIndex); global::Empire owner = region2.Owner; if (owner != null && owner is MajorEmpire) { regionData.BorderByEmpireIndex[owner.Index] += num; if (owner == empire) { regionData.BorderWithMe += num; } else if (agency != null) { DiplomaticRelation diplomaticRelation = agency.GetDiplomaticRelation(owner); if (diplomaticRelation.State.Name == DiplomaticRelationState.Names.ColdWar || diplomaticRelation.State.Name == DiplomaticRelationState.Names.War) { regionData.BorderWithEnnemy += num; } else { regionData.BorderWithAllied += num; } } } else { regionData.BorderWithNeutral += num; } } }
public WorldPositionScore[] GetWorldPositionExpansionScore(global::Empire empire, City city) { List <WorldPositionScore> list = new List <WorldPositionScore>(); city.SimulationObject.AddChild(this.districtProxyByEmpires[empire.Index]); for (int i = 0; i < city.Districts.Count; i++) { if (this.WorldPositionningService.IsExtensionConstructible(city.Districts[i].WorldPosition, false)) { if (city.Districts[i].Type == DistrictType.Exploitation) { list.Add(this.ComputeExpansionScoreAtPosition(empire, city, city.WorldPosition, city.Districts[i].WorldPosition)); } } } this.cityProxyByEmpires[empire.Index].AddChild(this.districtProxyByEmpires[empire.Index]); return(list.ToArray()); }
public WorldPositionScore[] GetWorldPositionCreepingNodeImprovementScore(global::Empire empire, City city, List <AILayer_CreepingNode.EvaluableCreepingNode> listOfCreepingNodeCandidate) { List <WorldPositionScore> list = new List <WorldPositionScore>(); city.SimulationObject.AddChild(this.districtProxyByEmpires[empire.Index]); for (int i = 0; i < listOfCreepingNodeCandidate.Count; i++) { PointOfInterest pointOfInterest = listOfCreepingNodeCandidate[i].pointOfInterest; CreepingNodeImprovementDefinition nodeDefinition = listOfCreepingNodeCandidate[i].nodeDefinition; if (pointOfInterest != null && nodeDefinition != null) { list.Add(this.ComputeCreepingNodeImprovementScoreAtPosition(empire, city, pointOfInterest, nodeDefinition)); } } city.SimulationObject.RemoveChild(this.districtProxyByEmpires[empire.Index]); this.cityProxyByEmpires[empire.Index].AddChild(this.districtProxyByEmpires[empire.Index]); return(list.ToArray()); }
private void UpdateDistanceToMyEmpireOfRegion(global::Empire empire, Region region, AIRegionData regionData) { regionData.MinimalDistanceToMyCities = 2.14748365E+09f; if (region.City != null && region.City.Empire == empire) { regionData.MinimalDistanceToMyCities = 0f; } DepartmentOfTheInterior agency = empire.GetAgency <DepartmentOfTheInterior>(); for (int i = 0; i < agency.Cities.Count; i++) { float num = (float)this.worldPositionningService.GetDistance(region.Barycenter, agency.Cities[i].WorldPosition); if (regionData.MinimalDistanceToMyCities > num) { regionData.MinimalDistanceToMyCities = num; } } }
public override void Bind(global::Empire empire) { base.Bind(empire); this.departmentOfScience = base.Empire.GetAgency <DepartmentOfScience>(); this.departmentOfIndustry = base.Empire.GetAgency <DepartmentOfIndustry>(); this.departmentOfTheInterior = base.Empire.GetAgency <DepartmentOfTheInterior>(); Diagnostics.Assert(this.departmentOfScience != null); Diagnostics.Assert(this.departmentOfIndustry != null); Diagnostics.Assert(this.departmentOfTheInterior != null); this.InitializeGuiElements(); this.departmentOfScience.TechnologyUnlocked += this.DepartmentOfScience_TechnologyUnlocked; this.departmentOfScience.ResearchQueueChanged += this.DepartmentOfScience_ResearchQueueChanged; if (base.PlayerController != null) { base.PlayerController.GameInterface.StateChange += this.GameInterface_StateChange; } base.NeedRefresh = true; }
public int GetRemainingRegionToExploreInContinent(global::Empire empire, int continentIndex, float explorationRatio) { if (empire == null) { throw new ArgumentNullException("empire"); } int num = 0; foreach (AIRegionData airegionData in this.regionDataByEmpires[empire.Index]) { Region region = this.world.Regions[airegionData.RegionIndex]; if (region.ContinentID == continentIndex && airegionData.ExplorationRatio > explorationRatio) { num++; } } return(this.world.Continents[continentIndex].RegionList.Length - num); }
private static float UtilityFunc_EmpireCityDefense(SeasonEffect aiEvaluableElement, InterpreterContext context, float aiParameterValue, AIHeuristicAnalyser.Context debugContext) { global::Empire empire = context.Get("Empire") as global::Empire; Diagnostics.Assert(empire != null); DepartmentOfTheInterior agency = empire.GetAgency <DepartmentOfTheInterior>(); Diagnostics.Assert(agency != null); float num = Mathf.Max(1f, AILayer_Altar.GetCityPropertySumValue(empire, SimulationProperties.CityDefensePoint)) / (float)agency.Cities.Count; if (float.IsNaN(num)) { return(0f); } float utility = aiParameterValue / num; return(AILayer_Altar.Normalize(debugContext, 0f, 3f, utility)); }
public bool IsVisibleFor(global::Empire empire) { IGameService service = Services.GetService <IGameService>(); if (service != null) { IVisibilityService service2 = service.Game.Services.GetService <IVisibilityService>(); if (service != null) { if (this.isVisibleInFogOfWar) { return(service2.IsWorldPositionExploredFor(this.WorldPosition, empire) || service2.IsWorldPositionVisibleFor(this.WorldPosition, empire)); } return(service2.IsWorldPositionVisibleFor(this.WorldPosition, empire)); } } return(false); }
public int GetRemainingFreeRegionInContinent(global::Empire empire, int continentIndex) { if (empire == null) { throw new ArgumentNullException("empire"); } int num = 0; foreach (AIRegionData airegionData in this.regionDataByEmpires[empire.Index]) { Region region = this.world.Regions[airegionData.RegionIndex]; if (region.ContinentID == continentIndex && this.IsRegionColonizedBySomeone(region)) { num++; } } return(this.world.Continents[continentIndex].RegionList.Length - num); }
private bool OtherEmpireCreepingNodeAtPosition(global::Empire empire, WorldPosition worldPosition) { if (!worldPosition.IsValid) { return(false); } PointOfInterest pointOfInterest = base.WorldPositionningService.GetPointOfInterest(worldPosition); if (pointOfInterest == null || pointOfInterest.CreepingNodeGUID == GameEntityGUID.Zero) { return(false); } CreepingNode creepingNode = null; base.GameEntityRepositoryService.TryGetValue <CreepingNode>(pointOfInterest.CreepingNodeGUID, out creepingNode); if (creepingNode != null && empire != null && creepingNode.Empire != null && pointOfInterest.Empire.Index != empire.Index && creepingNode.DismantlingArmy == null) { if (!ELCPUtilities.UseELCPPeacefulCreepingNodes) { return(true); } if (pointOfInterest.CreepingNodeGUID != GameEntityGUID.Zero && pointOfInterest.Empire != empire) { if (pointOfInterest.Empire == null) { return(true); } if (!(pointOfInterest.Empire is MajorEmpire)) { return(true); } DepartmentOfForeignAffairs agency = empire.GetAgency <DepartmentOfForeignAffairs>(); if (agency == null) { return(true); } if (!agency.IsFriend(pointOfInterest.Empire)) { return(true); } } } return(false); }