View Issue Details
ID | Project | Category | Date Submitted | Last Update | |
---|---|---|---|---|---|
0025671 | AI War 2 | Gameplay Issue | Oct 17, 2021 7:44 pm | Oct 27, 2021 7:30 am | |
Reporter | tom.prince | Assigned To | tom.prince | ||
Status | resolved | Resolution | fixed | ||
Product Version | Beta 3.712 Loading Hotfix | ||||
Fixed in Version | Beta 3.740 Code Panopticon | ||||
Summary | 0025671: Spire cities should by default bolster some fleet. | ||||
Description | I realize that there are plans to add a UI to control which fleet a city bolsters. However, I think cities should - bolster a fleet by default - probably always bolster *some* fleet. Right now, cities after the first don't bolster anything until you get a mark 3 city, and similarly for cities between the first mark 3 and first mark 4 city. And cities built after than never bolster anything. I've attached a patch that makes cities that aren't bolstering any fleet bolster some city, and one that changes the logic to do so in a round-robin fashion. | ||||
Tags | No tags attached. | ||||
|
spire-city-bolster.patch (2,099 bytes)
# HG changeset patch # User Tom Prince <[email protected]> # Date 1634465351 21600 # Sun Oct 17 04:09:11 2021 -0600 # Node ID b10390d384495bf4ad9b900950f99d49ea2a55d9 # Parent f8871c8d6e9764134087effbfd04b50cf0b74644 Make spire cities automaticly bolster *some* fleet. diff --git CodeExternal/AIWarExternalDeepProcessingCode/src/DeepInfo/DLC1/FallenSpireFactionDeepInfo.cs CodeExternal/AIWarExternalDeepProcessingCode/src/DeepInfo/DLC1/FallenSpireFactionDeepInfo.cs --- CodeExternal/AIWarExternalDeepProcessingCode/src/DeepInfo/DLC1/FallenSpireFactionDeepInfo.cs +++ CodeExternal/AIWarExternalDeepProcessingCode/src/DeepInfo/DLC1/FallenSpireFactionDeepInfo.cs @@ -1958,12 +1958,17 @@ namespace Arcen.AIW2.External } #endregion + Fleet defaultFleetToBolster = null; + #region Missing Centerpieces //look for any missing centerpieces, and fix them World_AIW2.Instance.DoForCityFedMobileFleets( null, FleetStatus.AnyStatus, delegate ( Fleet cityFedFleet ) { if ( cityFedFleet.FleetQualifier == "FallSpi" ) { + if (defaultFleetToBolster == null) { + defaultFleetToBolster = cityFedFleet; + } GameEntity_Squad mobileFlagship = cityFedFleet.Centerpiece.GetSquad(); if ( mobileFlagship == null ) //missing flagship! @@ -1994,6 +1999,10 @@ namespace Arcen.AIW2.External //what fleet is this city bolstering? Might be null, that's okay Fleet fleetForMobile = fleetForCity.GetFleetBolsteredByThisCity(); + if (fleetForMobile == null) { + city.FleetMembership.Fleet.CityBolstersFleetID = defaultFleetToBolster.FleetID; + fleetForMobile = defaultFleetToBolster; + } #region First Remove Any Old Bolstered fleet lines //now look at all the other spire cities and make sure we're not boosting any of those spire-city-bolster-round-robin.patch (2,789 bytes)
# HG changeset patch # User Tom Prince <[email protected]> # Date 1634513488 21600 # Sun Oct 17 17:31:28 2021 -0600 # Node ID a1ffd9b663a4e5469704a11d3f3266fe5c0d1eac # Parent b10390d384495bf4ad9b900950f99d49ea2a55d9 Bolster spire fleets in a round-robin fashion by default. diff --git CodeExternal/AIWarExternalDeepProcessingCode/src/DeepInfo/DLC1/FallenSpireFactionDeepInfo.cs CodeExternal/AIWarExternalDeepProcessingCode/src/DeepInfo/DLC1/FallenSpireFactionDeepInfo.cs --- CodeExternal/AIWarExternalDeepProcessingCode/src/DeepInfo/DLC1/FallenSpireFactionDeepInfo.cs +++ CodeExternal/AIWarExternalDeepProcessingCode/src/DeepInfo/DLC1/FallenSpireFactionDeepInfo.cs @@ -1926,9 +1926,11 @@ namespace Arcen.AIW2.External #region RecalculateSpireCityMobileFleetContents_MainThreadSimOnly private readonly Dictionary<string, int> spireShipsToAdd = new Dictionary<string, int>( 100 ); + private readonly Dictionary<int, int> spireCitiesPerFleet = new Dictionary<int, int>( 100 ); public void RecalculateSpireCityMobileFleetContents_MainThreadSimOnly( Faction faction, ArcenHostOnlySimContext Context ) { spireShipsToAdd.Clear(); + spireCitiesPerFleet.Clear(); List<GameEntityTypeData> spireCityBuildings = GameEntityTypeDataTable.Instance.GetAllRowsWithTagOrNull( "SpireFeedsFleet" ); int maxMarkLevelOfAnyCity = 0; @@ -1941,6 +1943,14 @@ namespace Arcen.AIW2.External return DelReturn.Continue; if ( fleetForCity.MaxMarkLevelOfAnyInFleet > maxMarkLevelOfAnyCity ) maxMarkLevelOfAnyCity = fleetForCity.MaxMarkLevelOfAnyInFleet; + Fleet fleetForMobile = fleetForCity.GetFleetBolsteredByThisCity(); + if ( fleetForMobile != null ) { + if (!spireCitiesPerFleet.ContainsKey(fleetForMobile.FleetID)) { + spireCitiesPerFleet[fleetForMobile.FleetID] = 1; + } else { + spireCitiesPerFleet[fleetForMobile.FleetID] += 1; + } + } return DelReturn.Continue; } ); #endregion @@ -1966,7 +1976,7 @@ namespace Arcen.AIW2.External { if ( cityFedFleet.FleetQualifier == "FallSpi" ) { - if (defaultFleetToBolster == null) { + if (defaultFleetToBolster == null || spireCitiesPerFleet[defaultFleetToBolster.FleetID] > spireCitiesPerFleet[cityFedFleet.FleetID]) { defaultFleetToBolster = cityFedFleet; } GameEntity_Squad mobileFlagship = cityFedFleet.Centerpiece.GetSquad(); |
|
spire-city-bolster-v2.patch (2,132 bytes)
# HG changeset patch # User Tom Prince <[email protected]> # Date 1634465351 21600 # Sun Oct 17 04:09:11 2021 -0600 # Node ID 267e29f9ae39cbcca3009d35bd4cfac9cb5e7f2e # Parent 06e73af7fea0cdb1d243946fab8e7c2f461d04c8 Make spire cities automaticly bolster *some* fleet. diff --git CodeExternal/AIWarExternalDeepProcessingCode/src/DeepInfo/DLC1/FallenSpireFactionDeepInfo.cs CodeExternal/AIWarExternalDeepProcessingCode/src/DeepInfo/DLC1/FallenSpireFactionDeepInfo.cs --- CodeExternal/AIWarExternalDeepProcessingCode/src/DeepInfo/DLC1/FallenSpireFactionDeepInfo.cs +++ CodeExternal/AIWarExternalDeepProcessingCode/src/DeepInfo/DLC1/FallenSpireFactionDeepInfo.cs @@ -1958,12 +1958,17 @@ namespace Arcen.AIW2.External } #endregion + Fleet defaultFleetToBolster = null; + #region Missing Centerpieces //look for any missing centerpieces, and fix them World_AIW2.Instance.DoForCityFedMobileFleets( null, FleetStatus.AnyStatus, delegate ( Fleet cityFedFleet ) { if ( cityFedFleet.FleetQualifier == "FallSpi" ) { + if (defaultFleetToBolster == null) { + defaultFleetToBolster = cityFedFleet; + } GameEntity_Squad mobileFlagship = cityFedFleet.Centerpiece.GetSquad(); if ( mobileFlagship == null ) //missing flagship! @@ -1994,6 +1999,10 @@ namespace Arcen.AIW2.External //what fleet is this city bolstering? Might be null, that's okay Fleet fleetForMobile = fleetForCity.GetFleetBolsteredByThisCity(); + if (fleetForMobile == null && defaultFleetToBolster != null) { + city.FleetMembership.Fleet.CityBolstersFleetID = defaultFleetToBolster.FleetID; + fleetForMobile = defaultFleetToBolster; + } #region First Remove Any Old Bolstered fleet lines //now look at all the other spire cities and make sure we're not boosting any of those spire-city-bolster-round-robin-v2.patch (2,971 bytes)
# HG changeset patch # User Tom Prince <[email protected]> # Date 1634513488 21600 # Sun Oct 17 17:31:28 2021 -0600 # Node ID d1d04539171d5372aee98d4ba50978dfc2c4e701 # Parent 267e29f9ae39cbcca3009d35bd4cfac9cb5e7f2e Bolster spire fleets in a round-robin fashion by default. diff --git CodeExternal/AIWarExternalDeepProcessingCode/src/DeepInfo/DLC1/FallenSpireFactionDeepInfo.cs CodeExternal/AIWarExternalDeepProcessingCode/src/DeepInfo/DLC1/FallenSpireFactionDeepInfo.cs --- CodeExternal/AIWarExternalDeepProcessingCode/src/DeepInfo/DLC1/FallenSpireFactionDeepInfo.cs +++ CodeExternal/AIWarExternalDeepProcessingCode/src/DeepInfo/DLC1/FallenSpireFactionDeepInfo.cs @@ -1926,9 +1926,11 @@ namespace Arcen.AIW2.External #region RecalculateSpireCityMobileFleetContents_MainThreadSimOnly private readonly Dictionary<string, int> spireShipsToAdd = new Dictionary<string, int>( 100 ); + private readonly Dictionary<int, int> spireCitiesPerFleet = new Dictionary<int, int>( 100 ); public void RecalculateSpireCityMobileFleetContents_MainThreadSimOnly( Faction faction, ArcenHostOnlySimContext Context ) { spireShipsToAdd.Clear(); + spireCitiesPerFleet.Clear(); List<GameEntityTypeData> spireCityBuildings = GameEntityTypeDataTable.Instance.GetAllRowsWithTagOrNull( "SpireFeedsFleet" ); int maxMarkLevelOfAnyCity = 0; @@ -1941,6 +1943,14 @@ namespace Arcen.AIW2.External return DelReturn.Continue; if ( fleetForCity.MaxMarkLevelOfAnyInFleet > maxMarkLevelOfAnyCity ) maxMarkLevelOfAnyCity = fleetForCity.MaxMarkLevelOfAnyInFleet; + Fleet fleetForMobile = fleetForCity.GetFleetBolsteredByThisCity(); + if ( fleetForMobile != null ) { + if (!spireCitiesPerFleet.ContainsKey(fleetForMobile.FleetID)) { + spireCitiesPerFleet[fleetForMobile.FleetID] = 1; + } else { + spireCitiesPerFleet[fleetForMobile.FleetID] += 1; + } + } return DelReturn.Continue; } ); #endregion @@ -1966,7 +1976,10 @@ namespace Arcen.AIW2.External { if ( cityFedFleet.FleetQualifier == "FallSpi" ) { - if (defaultFleetToBolster == null) { + if (!spireCitiesPerFleet.ContainsKey(cityFedFleet.FleetID)) { + spireCitiesPerFleet[cityFedFleet.FleetID] = 0; + } + if (defaultFleetToBolster == null || spireCitiesPerFleet[defaultFleetToBolster.FleetID] > spireCitiesPerFleet[cityFedFleet.FleetID]) { defaultFleetToBolster = cityFedFleet; } GameEntity_Squad mobileFlagship = cityFedFleet.Centerpiece.GetSquad(); |
|
I ended up making cities bolster the nearest fleet. |
Date Modified | Username | Field | Change |
---|---|---|---|
Oct 17, 2021 7:44 pm | tom.prince | New Issue | |
Oct 17, 2021 7:44 pm | tom.prince | File Added: spire-city-bolster.patch | |
Oct 17, 2021 7:44 pm | tom.prince | File Added: spire-city-bolster-round-robin.patch | |
Oct 18, 2021 1:49 am | tom.prince | Note Added: 0062981 | |
Oct 18, 2021 1:49 am | tom.prince | File Added: spire-city-bolster-v2.patch | |
Oct 18, 2021 1:49 am | tom.prince | File Added: spire-city-bolster-round-robin-v2.patch | |
Oct 27, 2021 7:30 am | tom.prince | Assigned To | => tom.prince |
Oct 27, 2021 7:30 am | tom.prince | Status | new => resolved |
Oct 27, 2021 7:30 am | tom.prince | Resolution | open => fixed |
Oct 27, 2021 7:30 am | tom.prince | Fixed in Version | => Beta 3.740 Code Panopticon |
Oct 27, 2021 7:30 am | tom.prince | Note Added: 0063006 |