命令百科

trigger · count_triggers

Definition

  • Supported scope:any
  • Supported target:none

Description

Returns true if the specified number of sub-triggers return true
count_triggers = { amount = 2 <trigger> <trigger> <trigger> }

实战 · 配合 · 坑

实战内容由 AI 生成,并已对照 vanilla 命令词表校验 —— 请当作起点而非权威依据。上方的定义节才是游戏自带文档原文。

实战用法

count_triggers 适合需要"满足若干条件中的若干个"这类模糊阈值判断的场景,例如判断某国是否同时满足"人口、工业、政治"等多项条件中的至少两项,而不要求全部成立。相比嵌套多层 or/and,它让代码意图更直观、更易维护。

# 示例:某国满足至少 2 条条件才触发决策
available = {
    count_triggers = {
        amount = 2
        has_war = no
        has_global_flag = special_event_flag
        threat < 0.5
        is_historical_focus_on = yes
    }
}

配合关系

  • [and](/wiki/trigger/and) / [or](/wiki/trigger/or)count_triggers 本身不支持逻辑嵌套语义,常在其子触发器内部用 and/or 构造复合子条件,从而实现"X 项复合条件中满足 N 项"的细粒度控制。
  • [custom_trigger_tooltip](/wiki/trigger/custom_trigger_tooltip)count_triggers 本身在界面上的提示文本较难读懂,建议用 custom_trigger_tooltip 包裹整个块,提供玩家友好的本地化说明。
  • [check_variable](/wiki/trigger/check_variable):当阈值数量 amount 需要依赖变量动态变化时,可在外层用 check_variable 先做变量判断再决定是否进入 count_triggers 逻辑块。
  • [if](/wiki/trigger/if):在复杂条件块中,if 可用于根据不同情境动态决定是否评估整个 count_triggers,避免不必要的性能开销。

常见坑

  1. amount 超出子触发器总数:如果 amount 设置的数值大于实际列出的子触发器数量,该触发器将永远返回 false 且不会报错,排查时非常隐蔽,务必手动核对子条件数量。
  2. 误以为顺序有优先级:新手常认为 count_triggers 会"优先评估前几项",实际上它会评估所有子触发器并统计返回 true 的数量,不存在短路求值,在子触发器数量较多时应注意性能影响。