命令百科

trigger · has_rule

Definition

  • Supported scope:any
  • Supported target:none

Description

Checks if a rule set for a country.
Example: has_rule = can_puppet

实战 · 配合 · 坑

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

实战用法

has_rule 常用于在 mod 中根据游戏规则设置来动态调整 AI 行为或事件可用性,例如只有当规则允许傀儡化时才显示相关决议或事件选项。也适合用在 allowed / available 块中,确保某些功能在不同游戏规则配置下能正确开启或隐藏。

# 仅当规则允许傀儡时,该决议才可用
available = {
    has_rule = can_puppet
    is_subject = no
}

配合关系

  • [has_game_rule](/wiki/trigger/has_game_rule)has_rule 检查的是针对具体国家生效的规则,而 has_game_rule 检查的是全局游戏规则选项,两者常并列使用以覆盖不同层级的规则判断。
  • [custom_trigger_tooltip](/wiki/trigger/custom_trigger_tooltip):当 has_rule 的原始提示文本不够直观时,包裹在此内可自定义向玩家显示的条件说明,提升 UI 可读性。
  • [not](/wiki/trigger/not):常与 has_rule 搭配取反,用来表达"当某规则被禁止时"的分支逻辑,例如限制无法被傀儡的国家走特定科技路线。
  • [or](/wiki/trigger/or):多个规则条件只需满足其一时,将数条 has_rule 嵌套在 or 块中,避免写重复的平行条件块。

常见坑

  1. 误用规则键名has_rule 的值必须是游戏内已定义的规则标识符(如 can_puppet),新手常把它与 has_game_rule 的选项值混淆,或自行填写不存在的字符串,导致条件永远为假且不报错,排查困难。
  2. 忽略 scope 语境:该 trigger 虽支持 any scope,但实际上它检查的是当前 scope 所指向的国家的规则状态;在 every_state 或省份 scope 内调用时,若未先通过 OWNER 等方式切换回国家 scope,会得到非预期的判断结果。