From 2593c35e30751a0d1798acc5a56eb60de4b104fd Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Mon, 16 Jan 2023 21:13:40 +0200 Subject: [PATCH] Added 'upon declaring war' trigger --- android/assets/jsons/Civ V - Gods & Kings/Nations.json | 2 +- core/src/com/unciv/logic/civilization/TechManager.kt | 3 +-- .../unciv/logic/civilization/diplomacy/DiplomacyManager.kt | 6 ++++++ core/src/com/unciv/models/ruleset/unique/UniqueType.kt | 1 + docs/Modders/uniques.md | 3 +++ 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/android/assets/jsons/Civ V - Gods & Kings/Nations.json b/android/assets/jsons/Civ V - Gods & Kings/Nations.json index 1394a34674..d47e5b0fb7 100644 --- a/android/assets/jsons/Civ V - Gods & Kings/Nations.json +++ b/android/assets/jsons/Civ V - Gods & Kings/Nations.json @@ -93,7 +93,7 @@ "favouredReligion": "Taoism", "uniqueName": "Art of War", "uniques": ["Great General provides double combat bonus", "[Great General] is earned [50]% faster", - "Gain [1000] [Faith] "], + "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/civilization/TechManager.kt b/core/src/com/unciv/logic/civilization/TechManager.kt index 214079d4bf..73a44e05df 100644 --- a/core/src/com/unciv/logic/civilization/TechManager.kt +++ b/core/src/com/unciv/logic/civilization/TechManager.kt @@ -343,8 +343,7 @@ class TechManager : IsPartOfGameInfoSerialization { UniqueTriggerActivation.triggerCivwideUnique(unique, civInfo) } - val triggerableUniques = civInfo.getTriggeredUniques(UniqueType.TriggerUponResearch) - for (unique in triggerableUniques) + for (unique in civInfo.getTriggeredUniques(UniqueType.TriggerUponResearch)) if (unique.conditionals.any {it.type == UniqueType.TriggerUponResearch && it.params[0] == techName}) UniqueTriggerActivation.triggerCivwideUnique(unique, civInfo) } diff --git a/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt b/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt index 44b6bb8936..2c8007b389 100644 --- a/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt +++ b/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt @@ -14,6 +14,7 @@ import com.unciv.logic.trade.Trade import com.unciv.logic.trade.TradeOffer import com.unciv.logic.trade.TradeType import com.unciv.models.ruleset.tile.ResourceSupplyList +import com.unciv.models.ruleset.unique.UniqueTriggerActivation import com.unciv.models.ruleset.unique.UniqueType import com.unciv.ui.utils.extensions.toPercent import kotlin.math.ceil @@ -739,6 +740,11 @@ class DiplomacyManager() : IsPartOfGameInfoSerialization { otherCivDiplomacy.totalOfScienceDuringRA = 0 } otherCivDiplomacy.removeFlag(DiplomacyFlags.ResearchAgreement) + + + + for (unique in civInfo.getTriggeredUniques(UniqueType.TriggerUponDeclaringWar)) + UniqueTriggerActivation.triggerCivwideUnique(unique, civInfo) } /** Should only be called from makePeace */ diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index af50092e15..84f7a722b0 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -700,6 +700,7 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags: ///////////////////////////////////////// region TRIGGERS ///////////////////////////////////////// TriggerUponResearch("upon discovering [tech]", UniqueTarget.TriggerCondition), + TriggerUponDeclaringWar("upon declaring war", UniqueTarget.TriggerCondition), //endregion diff --git a/docs/Modders/uniques.md b/docs/Modders/uniques.md index a235fd23ff..41fb70354e 100644 --- a/docs/Modders/uniques.md +++ b/docs/Modders/uniques.md @@ -1875,6 +1875,9 @@ Simple unique parameters are explained by mouseover. Complex parameters are expl Applicable to: TriggerCondition +??? example "upon declaring war" + Applicable to: TriggerCondition + *[action]: An action that a unit can perform. Currently, there are only two actions part of this: 'Spread Religion' and 'Remove Foreign religions from your own cities' *[amount]: This indicates a whole number, possibly with a + or - sign, such as `2`, `+13`, or `-3`.