mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-10 15:59:33 +07:00
refactor: unified 'is triggerable' logic
This commit is contained in:
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -30,9 +30,11 @@ class Unique(val text: String, val sourceObjectType: UniqueTarget? = null, val s
|
||||
}
|
||||
val conditionals: List<Unique> = 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)
|
||||
// <for [amount] turns]> in effect makes any unique become a triggerable unique
|
||||
|| conditionals.any { it.type == UniqueType.ConditionalTimedUnique }
|
||||
)
|
||||
|
||||
val allParams = params + conditionals.flatMap { it.params }
|
||||
|
||||
|
@ -667,12 +667,12 @@ object UnitActions {
|
||||
}
|
||||
|
||||
private fun addTriggerUniqueActions(unit: MapUnit, actionList: ArrayList<UnitAction>){
|
||||
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))
|
||||
|
Reference in New Issue
Block a user