From 8361d68452b935e0a3402d2514400e294786dc58 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Sun, 26 Feb 2023 23:41:09 +0200 Subject: [PATCH] Added 'upon ending turn in tile' unit trigger --- .../com/unciv/logic/map/mapunit/UnitTurnManager.kt | 6 ++++++ .../src/com/unciv/models/ruleset/unique/UniqueType.kt | 1 + docs/Modders/uniques.md | 11 ++++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/core/src/com/unciv/logic/map/mapunit/UnitTurnManager.kt b/core/src/com/unciv/logic/map/mapunit/UnitTurnManager.kt index 31e76f4113..12ab5443a7 100644 --- a/core/src/com/unciv/logic/map/mapunit/UnitTurnManager.kt +++ b/core/src/com/unciv/logic/map/mapunit/UnitTurnManager.kt @@ -6,6 +6,7 @@ import com.unciv.logic.civilization.LocationAction import com.unciv.logic.civilization.NotificationCategory import com.unciv.logic.civilization.NotificationIcon import com.unciv.logic.map.tile.RoadStatus +import com.unciv.models.ruleset.unique.UniqueTriggerActivation import com.unciv.models.ruleset.unique.UniqueType class UnitTurnManager(val unit: MapUnit) { @@ -56,6 +57,11 @@ class UnitTurnManager(val unit: MapUnit) { doTerrainDamage() unit.addMovementMemory() + + for (unique in unit.getTriggeredUniques(UniqueType.TriggerUponEndingTurnInTile)) + if (unique.conditionals.any { it.type == UniqueType.TriggerUponEndingTurnInTile + && unit.getTile().matchesFilter(it.params[0]) }) + UniqueTriggerActivation.triggerUnitwideUnique(unique, unit) } diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index 38eac7a139..6da20bb270 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -736,6 +736,7 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags: TriggerUponDefeat("upon being defeated", UniqueTarget.UnitTriggerCondition), TriggerUponPromotion("upon being promoted", UniqueTarget.UnitTriggerCondition), TriggerUponLosingHealth("upon losing at least [amount] HP in a single attack", UniqueTarget.UnitTriggerCondition), + TriggerUponEndingTurnInTile("upon ending a turn in a [tileFilter] tile", UniqueTarget.UnitTriggerCondition), //endregion diff --git a/docs/Modders/uniques.md b/docs/Modders/uniques.md index 99a19f6c78..0802e0f095 100644 --- a/docs/Modders/uniques.md +++ b/docs/Modders/uniques.md @@ -92,9 +92,6 @@ Simple unique parameters are explained by mouseover. Complex parameters are expl Applicable to: Triggerable -??? example "Will not be displayed in Civilopedia" - Applicable to: Triggerable, UnitTriggerable, Global, Nation, Era, Tech, Policy, FounderBelief, FollowerBelief, Building, Wonder, Unit, UnitType, Promotion, Terrain, Improvement, Resource, Ruins, Speed, Tutorial, CityState, ModOptions, Conditional, TriggerCondition, UnitTriggerCondition - ## UnitTriggerable uniques ??? example "Heal this unit by [amount] HP" Example: "Heal this unit by [3] HP" @@ -841,6 +838,9 @@ Simple unique parameters are explained by mouseover. Complex parameters are expl Applicable to: Nation +??? example "Will not be displayed in Civilopedia" + Applicable to: Nation, Tech, Policy, Building, Unit, Promotion, Terrain, Improvement, Resource, Ruins + ## Era uniques ??? example "Starting in this era disables religion" Applicable to: Era @@ -1962,6 +1962,11 @@ Simple unique parameters are explained by mouseover. Complex parameters are expl Applicable to: UnitTriggerCondition +??? example "<upon ending a turn in a [tileFilter] tile>" + Example: "<upon ending a turn in a [Farm] tile>" + + Applicable to: UnitTriggerCondition + *[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`.