From 73ad76b59cde05bf39d67918d3fa8a64b6160fd5 Mon Sep 17 00:00:00 2001 From: SimonCeder Date: Fri, 22 Jul 2022 14:06:29 +0200 Subject: [PATCH 1/3] avoid potential marriage bug --- .../unciv/logic/civilization/CityStateFunctions.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/core/src/com/unciv/logic/civilization/CityStateFunctions.kt b/core/src/com/unciv/logic/civilization/CityStateFunctions.kt index 5d0d878d5a..88280818cc 100644 --- a/core/src/com/unciv/logic/civilization/CityStateFunctions.kt +++ b/core/src/com/unciv/logic/civilization/CityStateFunctions.kt @@ -10,6 +10,7 @@ import com.unciv.models.ruleset.unique.UniqueType import com.unciv.models.ruleset.unit.BaseUnit import com.unciv.models.stats.Stat import com.unciv.ui.victoryscreen.RankingType +import com.unciv.utils.debug import java.util.* import kotlin.collections.HashMap import kotlin.collections.HashSet @@ -303,11 +304,20 @@ class CityStateFunctions(val civInfo: CivilizationInfo) { civInfo.getCapital()!!.location, civInfo.civName, NotificationIcon.Diplomacy, otherCiv.civName) for (unit in civInfo.getCivUnits()) unit.gift(otherCiv) + + // We want to get rid of the original capital flag for this city state so it can't be liberated in the future. + // We do this step to be extra certain to find the correct one since a CS can rarely capture and lose cities + val originalCapital = civInfo.gameInfo.getCities().firstOrNull { + it.isOriginalCapital && it.foundingCiv == civInfo.civName + } + if (originalCapital != null) { + originalCapital.foundingCiv = "" + originalCapital.isOriginalCapital = false + } + for (city in civInfo.cities) { city.moveToCiv(otherCiv) city.isPuppet = true // Human players get a popup that allows them to annex instead - city.foundingCiv = "" // This is no longer a city-state - city.isOriginalCapital = false // It's now an ordinary city and can be razed in later conquests } civInfo.destroy() } From 5846da6f8a40cc3013498a8a1f86abc886885a62 Mon Sep 17 00:00:00 2001 From: SimonCeder <63475501+SimonCeder@users.noreply.github.com> Date: Fri, 22 Jul 2022 20:14:08 +0200 Subject: [PATCH 2/3] cover more cases --- .../unciv/logic/civilization/CityStateFunctions.kt | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/core/src/com/unciv/logic/civilization/CityStateFunctions.kt b/core/src/com/unciv/logic/civilization/CityStateFunctions.kt index 88280818cc..73f1326405 100644 --- a/core/src/com/unciv/logic/civilization/CityStateFunctions.kt +++ b/core/src/com/unciv/logic/civilization/CityStateFunctions.kt @@ -305,14 +305,12 @@ class CityStateFunctions(val civInfo: CivilizationInfo) { for (unit in civInfo.getCivUnits()) unit.gift(otherCiv) - // We want to get rid of the original capital flag for this city state so it can't be liberated in the future. - // We do this step to be extra certain to find the correct one since a CS can rarely capture and lose cities - val originalCapital = civInfo.gameInfo.getCities().firstOrNull { - it.isOriginalCapital && it.foundingCiv == civInfo.civName - } - if (originalCapital != null) { - originalCapital.foundingCiv = "" - originalCapital.isOriginalCapital = false + // Make sure this CS can never be liberated + civInfo.gameInfo.getCities().filter { + it.foundingCiv == civInfo.civName + }.forEach { + it.foundingCiv = "" + it.isOriginalCapital = false } for (city in civInfo.cities) { From 64e6fd086de48d64850acff81e30db6825143163 Mon Sep 17 00:00:00 2001 From: SimonCeder <63475501+SimonCeder@users.noreply.github.com> Date: Fri, 22 Jul 2022 20:16:30 +0200 Subject: [PATCH 3/3] Update CityStateFunctions.kt --- core/src/com/unciv/logic/civilization/CityStateFunctions.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/com/unciv/logic/civilization/CityStateFunctions.kt b/core/src/com/unciv/logic/civilization/CityStateFunctions.kt index 73f1326405..aa2a6babc6 100644 --- a/core/src/com/unciv/logic/civilization/CityStateFunctions.kt +++ b/core/src/com/unciv/logic/civilization/CityStateFunctions.kt @@ -10,7 +10,6 @@ import com.unciv.models.ruleset.unique.UniqueType import com.unciv.models.ruleset.unit.BaseUnit import com.unciv.models.stats.Stat import com.unciv.ui.victoryscreen.RankingType -import com.unciv.utils.debug import java.util.* import kotlin.collections.HashMap import kotlin.collections.HashSet