From 398b3edb6c563ad2ce9e2be9e1dd312a4778e5b6 Mon Sep 17 00:00:00 2001 From: PLynx Date: Wed, 6 Aug 2025 21:27:23 +0200 Subject: [PATCH] Upon entering war uniques (#13716) * Add upon being declared war upon unique * Add upon entering a war unique * Add parameters to uniques * Appllied yairm210's suggestions --- .../civilization/diplomacy/DeclareWar.kt | 21 ++++++++++++++++++- .../unciv/models/ruleset/unique/UniqueType.kt | 3 +++ docs/Modders/uniques.md | 15 +++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/core/src/com/unciv/logic/civilization/diplomacy/DeclareWar.kt b/core/src/com/unciv/logic/civilization/diplomacy/DeclareWar.kt index 50c3b2ae83..ade7674ed6 100644 --- a/core/src/com/unciv/logic/civilization/diplomacy/DeclareWar.kt +++ b/core/src/com/unciv/logic/civilization/diplomacy/DeclareWar.kt @@ -40,9 +40,28 @@ object DeclareWar { breakTreaties(diplomacyManager) - if (otherCiv.isMajorCiv()) + if (otherCiv.isMajorCiv()) { for (unique in civInfo.getTriggeredUniques(UniqueType.TriggerUponDeclaringWar)) UniqueTriggerActivation.triggerUnique(unique, civInfo) + } + + for (unique in civInfo.getTriggeredUniques(UniqueType.TriggerUponDeclaringWarFiltered)) { + if (otherCiv.matchesFilter(unique.params[0])) + UniqueTriggerActivation.triggerUnique(unique, civInfo) + } + + for (unique in otherCiv.getTriggeredUniques(UniqueType.TriggerUponBeingDeclaredWarUpon)) { + if (civInfo.matchesFilter(unique.params[0])) + UniqueTriggerActivation.triggerUnique(unique, otherCiv) + } + + for (unique in civInfo.getTriggeredUniques(UniqueType.TriggerUponEnteringWar)) + if (otherCiv.matchesFilter(unique.params[0])) + UniqueTriggerActivation.triggerUnique(unique, civInfo) + + for (unique in otherCiv.getTriggeredUniques(UniqueType.TriggerUponEnteringWar)) + if (civInfo.matchesFilter(unique.params[0])) + UniqueTriggerActivation.triggerUnique(unique, otherCiv) } private fun handleCityStateDirectAttack(diplomacyManager: DiplomacyManager) { diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index e98858ca3a..f28eddb125 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -924,6 +924,9 @@ enum class UniqueType( TriggerUponEnteringEraUnfiltered("upon entering a new era", UniqueTarget.TriggerCondition), TriggerUponAdoptingPolicyOrBelief("upon adopting [policy/belief]", UniqueTarget.TriggerCondition), TriggerUponDeclaringWar("upon declaring war with a major Civilization", UniqueTarget.TriggerCondition), + TriggerUponDeclaringWarFiltered("upon declaring war upon [civFilter] Civilizations", UniqueTarget.TriggerCondition), + TriggerUponBeingDeclaredWarUpon("upon being declared war upon by [civFilter] Civilizations", UniqueTarget.TriggerCondition), + TriggerUponEnteringWar("upon entering a war with [civFilter] Civilizations", UniqueTarget.TriggerCondition), TriggerUponDeclaringFriendship("upon declaring friendship", UniqueTarget.TriggerCondition), TriggerUponSigningDefensivePact("upon declaring a defensive pact", UniqueTarget.TriggerCondition), TriggerUponEnteringGoldenAge("upon entering a Golden Age", UniqueTarget.TriggerCondition), diff --git a/docs/Modders/uniques.md b/docs/Modders/uniques.md index 09e940f20b..3cb95eb86b 100644 --- a/docs/Modders/uniques.md +++ b/docs/Modders/uniques.md @@ -3635,6 +3635,21 @@ Simple unique parameters are explained by mouseover. Complex parameters are expl ??? example "<upon declaring war with a major Civilization>" Applicable to: TriggerCondition +??? example "<upon declaring war with a [civFilter] Civilization>" + Example: "<upon declaring war with a [City-States] Civilization>" + + Applicable to: TriggerCondition + +??? example "<upon being declared war upon [civFilter] Civilization>" + Example: "<upon being declared war upon [City-States] Civilization>" + + Applicable to: TriggerCondition + +??? example "<upon entering a war with [civFilter] Civilization>" + Example: "<upon entering a war with [City-States] Civilization>" + + Applicable to: TriggerCondition + ??? example "<upon declaring friendship>" Applicable to: TriggerCondition