Resolved #11289 - Free buildings granted properly when era-free cities also granted

This commit is contained in:
Yair Morgenstern 2024-03-13 23:11:39 +02:00
parent 2294b7a6b3
commit 1542b92e63
3 changed files with 8 additions and 8 deletions

View File

@ -512,7 +512,9 @@ class CityConstructions : IsPartOfGameInfoSerialization {
addBuilding(building)
}
fun addBuilding(building: Building) {
fun addBuilding(building: Building,
/** False when creating initial buildings in city - so we don't "waste" a free building on a building we're going to get anyway, from settler buildings */
tryAddFreeBuildings: Boolean = true) {
val buildingName = building.name
val civ = city.civ
@ -547,7 +549,8 @@ class CityConstructions : IsPartOfGameInfoSerialization {
}
else city.reassignPopulationDeferred()
city.civ.civConstructions.tryAddFreeBuildings()
if (tryAddFreeBuildings)
city.civ.civConstructions.tryAddFreeBuildings()
}
fun triggerNewBuildingUniques(building: Building) {

View File

@ -203,14 +203,14 @@ class CityFounder {
private fun addStartingBuildings(city: City, civInfo: Civilization, startingEra: String) {
val ruleset = civInfo.gameInfo.ruleset
if (civInfo.cities.size == 1) city.cityConstructions.addBuilding(city.capitalCityIndicator())
if (civInfo.cities.size == 1) city.cityConstructions.addBuilding(city.capitalCityIndicator(), tryAddFreeBuildings = false)
// Add buildings and pop we get from starting in this era
for (buildingName in ruleset.eras[startingEra]!!.settlerBuildings) {
val building = ruleset.buildings[buildingName] ?: continue
val uniqueBuilding = civInfo.getEquivalentBuilding(building)
if (uniqueBuilding.isBuildable(city.cityConstructions))
city.cityConstructions.addBuilding(uniqueBuilding)
city.cityConstructions.addBuilding(uniqueBuilding, tryAddFreeBuildings = false)
}
civInfo.civConstructions.tryAddFreeBuildings()

View File

@ -870,13 +870,10 @@ class Civilization : IsPartOfGameInfoSerialization {
it.hasUnique(UniqueType.MovesToNewCapital)
}.toSet()
// Remove the buildings from old capital
oldCapital.cityConstructions.removeBuildings(buildingsToMove)
// Add the buildings to new capital
buildingsToMove.forEach {
city.cityConstructions.addBuilding(it)
}
for (building in buildingsToMove) city.cityConstructions.addBuilding(building)
}
}
oldCapital?.cityConstructions?.removeBuilding(oldCapital.capitalCityIndicator())