From 33cba2eea97ff301c1fe5375ae6617b1fa28965b Mon Sep 17 00:00:00 2001 From: SimonCeder <63475501+SimonCeder@users.noreply.github.com> Date: Sun, 22 Aug 2021 08:12:29 +0200 Subject: [PATCH] can now raze non-original capitals at capture (#4903) * can now raze non-original capitals at capture * clearer code, equal for AI, get gold and reduce pop when liberating * fix conflict?? * fix conflict???? * restore whitespace * restore whitespace Co-authored-by: Yair Morgenstern --- core/src/com/unciv/logic/battle/Battle.kt | 2 +- core/src/com/unciv/logic/city/CityInfo.kt | 4 ++-- core/src/com/unciv/logic/city/CityInfoConquestFunctions.kt | 5 +++++ core/src/com/unciv/ui/worldscreen/AlertPopup.kt | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index c38c17b19d..d2bb1bfe2c 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -429,7 +429,7 @@ object Battle { UncivGame.Current.settings.addCompletedTutorialTask("Conquer a city") } else { city.puppetCity(attackerCiv) - if (city.population.population < 4 && city.canBeDestroyed()) { + if (city.population.population < 4 && city.canBeDestroyed(justCaptured = true)) { city.annexCity() city.isBeingRazed = true } diff --git a/core/src/com/unciv/logic/city/CityInfo.kt b/core/src/com/unciv/logic/city/CityInfo.kt index 3359fe9e98..704694c05a 100644 --- a/core/src/com/unciv/logic/city/CityInfo.kt +++ b/core/src/com/unciv/logic/city/CityInfo.kt @@ -663,8 +663,8 @@ class CityInfo { return religion.religionThisIsTheHolyCityOf != null } - fun canBeDestroyed(): Boolean { - return !isOriginalCapital && !isCapital() && !isHolyCity() + fun canBeDestroyed(justCaptured: Boolean = false): Boolean { + return !isOriginalCapital && !isHolyCity() && (!isCapital() || justCaptured) } diff --git a/core/src/com/unciv/logic/city/CityInfoConquestFunctions.kt b/core/src/com/unciv/logic/city/CityInfoConquestFunctions.kt index 7f251553ae..c8c6e6a8f1 100644 --- a/core/src/com/unciv/logic/city/CityInfoConquestFunctions.kt +++ b/core/src/com/unciv/logic/city/CityInfoConquestFunctions.kt @@ -100,6 +100,7 @@ class CityInfoConquestFunctions(val city: CityInfo){ } fun liberateCity(conqueringCiv: CivilizationInfo) { + val goldPlundered = getGoldForCapturingCity(conqueringCiv) city.apply { if (foundingCiv == "") { // this should never happen but just in case... puppetCity(conqueringCiv) @@ -107,6 +108,9 @@ class CityInfoConquestFunctions(val city: CityInfo){ return } + conqueringCiv.addGold(goldPlundered) + conqueringCiv.addNotification("Received [$goldPlundered] Gold for capturing [$name]", getCenterTile().position, NotificationIcon.Gold) + val oldCiv = civInfo val foundingCiv = civInfo.gameInfo.civilizations.first { it.civName == foundingCiv } @@ -120,6 +124,7 @@ class CityInfoConquestFunctions(val city: CityInfo){ Battle.destroyIfDefeated(oldCiv, conqueringCiv) health = getMaxHealth() / 2 // I think that cities recover to half health when conquered? + if (population.population > 1) population.addPopulation(-1 - population.population / 4) // so from 2-4 population, remove 1, from 5-8, remove 2, etc. reassignPopulation() if (foundingCiv.cities.size == 1) cityConstructions.addBuilding(capitalCityIndicator()) // Resurrection! diff --git a/core/src/com/unciv/ui/worldscreen/AlertPopup.kt b/core/src/com/unciv/ui/worldscreen/AlertPopup.kt index aaab7f9d0a..2e348cabdd 100644 --- a/core/src/com/unciv/ui/worldscreen/AlertPopup.kt +++ b/core/src/com/unciv/ui/worldscreen/AlertPopup.kt @@ -142,7 +142,7 @@ class AlertPopup(val worldScreen: WorldScreen, val popupAlert: PopupAlert): Popu close() } add("Raze".toTextButton().apply { - if (!city.canBeDestroyed()) disable() + if (!city.canBeDestroyed(justCaptured = true)) disable() else { onClick(function = razeAction) keyPressDispatcher['r'] = razeAction