diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index f8a889edcb..cbafaee3c7 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -1376,9 +1376,15 @@ class CivilizationInfo : IsPartOfGameInfoSerialization { } fun moveCapitalToNextLargest() { - moveCapitalTo(cities - .filterNot { it.isCapital() } - .maxByOrNull { it.population.population}) + val availableCities = cities.filterNot { it.isCapital() } + if (availableCities.none()) return + var newCapital = availableCities.filterNot { it.isPuppet }.maxByOrNull { it.population.population } + + if (newCapital == null) { // No non-puppets, take largest puppet and annex + newCapital = availableCities.maxByOrNull { it.population.population }!! + newCapital.annexCity() + } + moveCapitalTo(newCapital) } //////////////////////// City State wrapper functions ////////////////////////