diff --git a/core/src/com/unciv/logic/city/CityInfo.kt b/core/src/com/unciv/logic/city/CityInfo.kt index 6ea9807b82..0dfcb019fb 100644 --- a/core/src/com/unciv/logic/city/CityInfo.kt +++ b/core/src/com/unciv/logic/city/CityInfo.kt @@ -41,16 +41,18 @@ class CityInfo { this.location = cityLocation setTransients() - // Since cities can be captures between civilizations, - // we need to check which other cities exist globally and name accordingly - val allExistingCityNames = civInfo.gameInfo.civilizations.flatMap { it.cities }.map { it.name }.toHashSet() - val probablyName = civInfo.getNation().cities.firstOrNull { !allExistingCityNames.contains(it) } - if(probablyName!=null) name=probablyName - else { - val newName = civInfo.getNation().cities.map { "New $it" }.firstOrNull{ !allExistingCityNames.contains(it) } - if(newName!=null) name=newName - else name = civInfo.getNation().cities.map { "Newer $it" }.first{ !allExistingCityNames.contains(it) } - } + val nationCities = civInfo.getNation().cities + val cityNameIndex = civInfo.citiesCreated % nationCities.size + val cityName = nationCities[cityNameIndex] + + val cityNameRounds = civInfo.citiesCreated / nationCities.size + val cityNamePrefix = if(cityNameRounds==0) "" + else if(cityNameRounds==2) "New " + else "Newer " + + name = cityNamePrefix + cityName + + civInfo.citiesCreated++ civInfo.cities = civInfo.cities.toMutableList().apply { add(this@CityInfo) } civInfo.addNotification("[$name] has been founded!", cityLocation, Color.PURPLE) diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index 1670338621..97582d35b4 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -58,6 +58,7 @@ class CivilizationInfo { // we won't get concurrent modification exceptions. // This is basically a way to ensure our lists are immutable. var cities = listOf() + var citiesCreated = 0 var exploredTiles = HashSet() constructor() @@ -303,6 +304,9 @@ class CivilizationInfo { if(policies.adoptedPolicies.size>0 && policies.numberOfAdoptedPolicies == 0) policies.numberOfAdoptedPolicies = policies.adoptedPolicies.count { !it.endsWith("Complete") } + if(citiesCreated==0 && cities.any()) + citiesCreated = cities.filter { it.name in getNation().cities }.count() + tech.civInfo = this tech.setTransients() diplomacy.values.forEach { it.civInfo=this}