From 7c52e25a1df56cb547ff9e4aea9529ebf051b2c2 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Mon, 16 Jan 2023 22:39:52 +0200 Subject: [PATCH] Added trigger conditional for capturing city --- android/assets/jsons/Civ V - Gods & Kings/Nations.json | 3 ++- core/src/com/unciv/logic/battle/Battle.kt | 7 ++++++- core/src/com/unciv/models/ruleset/unique/UniqueType.kt | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/android/assets/jsons/Civ V - Gods & Kings/Nations.json b/android/assets/jsons/Civ V - Gods & Kings/Nations.json index b9fb2c6db0..af70e66bd0 100644 --- a/android/assets/jsons/Civ V - Gods & Kings/Nations.json +++ b/android/assets/jsons/Civ V - Gods & Kings/Nations.json @@ -92,7 +92,8 @@ "favouredReligion": "Taoism", "uniqueName": "Art of War", - "uniques": ["Great General provides double combat bonus", "[Great General] is earned [50]% faster"], + "uniques": ["Great General provides double combat bonus", "[Great General] is earned [50]% faster", + "Gain [1000] [Faith] "], "cities": ["Beijing","Shanghai","Guangzhou","Nanjing","Xian","Chengdu","Hangzhou","Tianjin","Macau","Shandong", "Kaifeng","Ningbo","Baoding","Yangzhou","Harbin","Chongqing","Luoyang","Kunming","Taipei","Shenyang", "Taiyuan","Tainan","Dalian","Lijiang","Wuxi","Suzhou","Maoming","Shaoguan","Yangjiang","Heyuan","Huangshi", diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index 7cb323e925..d157ff6107 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -22,6 +22,7 @@ import com.unciv.models.UnitActionType import com.unciv.models.helpers.UnitMovementMemoryType import com.unciv.models.ruleset.unique.StateForConditionals import com.unciv.models.ruleset.unique.Unique +import com.unciv.models.ruleset.unique.UniqueTriggerActivation import com.unciv.models.ruleset.unique.UniqueType import com.unciv.models.stats.Stat import com.unciv.models.stats.Stats @@ -523,7 +524,6 @@ object Battle { private fun conquerCity(city: CityInfo, attacker: MapUnitCombatant) { val attackerCiv = attacker.getCivInfo() - attackerCiv.addNotification("We have conquered the city of [${city.name}]!", city.location, NotificationCategory.War, NotificationIcon.War) city.hasJustBeenConquered = true @@ -559,6 +559,11 @@ object Battle { if (attackerCiv.isCurrentPlayer()) UncivGame.Current.settings.addCompletedTutorialTask("Conquer a city") + + for (unique in attackerCiv.getTriggeredUniques(UniqueType.TriggerUponConqueringCity, + StateForConditionals(attackerCiv, city, attacker.unit, attackedTile = city.getCenterTile() ) + )) + UniqueTriggerActivation.triggerCivwideUnique(unique, attackerCiv) } fun getMapCombatantOfTile(tile: TileInfo): ICombatant? { diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index d8de0fb8e9..e32a21b438 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -704,6 +704,8 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags: TriggerUponAdoptingPolicy("upon adopting [policy]", UniqueTarget.TriggerCondition), TriggerUponDeclaringWar("upon declaring war", UniqueTarget.TriggerCondition), TriggerUponEnteringGoldenAge("upon entering a Golden Age", UniqueTarget.TriggerCondition), + TriggerUponConqueringCity("upon conquering a city", UniqueTarget.TriggerCondition), + //endregion ///////////////////////////////////////////// region META /////////////////////////////////////////////