diff --git a/core/src/com/unciv/logic/GameStarter.kt b/core/src/com/unciv/logic/GameStarter.kt index 6c02e61228..8e08394cb7 100644 --- a/core/src/com/unciv/logic/GameStarter.kt +++ b/core/src/com/unciv/logic/GameStarter.kt @@ -430,7 +430,7 @@ object GameStarter { //We may need the starting location for some uniques, which is why we're doing it now val startingTriggers = (ruleset.globalUniques.uniqueObjects + civ.nation.uniqueObjects) for (unique in startingTriggers.filter { !it.hasTriggerConditional() }) - if(unique.isTriggerable) + if (unique.isTriggerable) UniqueTriggerActivation.triggerCivwideUnique(unique, civ, tile = startingLocation) } } diff --git a/core/src/com/unciv/models/ruleset/unique/Unique.kt b/core/src/com/unciv/models/ruleset/unique/Unique.kt index 5412e170ba..70c4a1ceb6 100644 --- a/core/src/com/unciv/models/ruleset/unique/Unique.kt +++ b/core/src/com/unciv/models/ruleset/unique/Unique.kt @@ -30,9 +30,11 @@ class Unique(val text: String, val sourceObjectType: UniqueTarget? = null, val s } val conditionals: List = text.getConditionals() - val isTriggerable = type != null && type.targetTypes.contains(UniqueTarget.Triggerable) + val isTriggerable = type != null && ( + type.targetTypes.contains(UniqueTarget.Triggerable) + || type.targetTypes.contains(UniqueTarget.UnitTriggerable) // in effect makes any unique become a triggerable unique - || conditionals.any { it.type == UniqueType.ConditionalTimedUnique } + ) val allParams = params + conditionals.flatMap { it.params } diff --git a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt index 0780cc82a0..00fbfc987c 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt @@ -667,12 +667,12 @@ object UnitActions { } private fun addTriggerUniqueActions(unit: MapUnit, actionList: ArrayList){ - val triggerableTypes = setOf(UniqueTarget.Triggerable, UniqueTarget.UnitTriggerable) for (unique in unit.getUniques()) { + // not a unit action if (unique.conditionals.none { it.type?.targetTypes?.contains(UniqueTarget.UnitActionModifier) == true }) continue + // extends an existing unit action if (unique.conditionals.any { it.type == UniqueType.UnitActionExtraLimitedTimes }) continue - if (unique.type?.targetTypes?.any { it in triggerableTypes }!=true - && unique.conditionals.none { it.type == UniqueType.ConditionalTimedUnique }) continue + if (!unique.isTriggerable) continue if (usagesLeft(unit, unique)==0) continue val baseTitle = if (unique.isOfType(UniqueType.OneTimeEnterGoldenAgeTurns))