命令百科

trigger · has_war

Definition

  • Supported scope:COUNTRY
  • Supported target:THIS, ROOT, PREV, FROM, OWNER, CONTROLLER, OCCUPIED, CAPITAL

Description

is country at war

实战 · 配合 · 坑

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

实战用法

has_war 常用于判断某国是否处于战争状态,从而控制决策、国策或事件的可用性。例如在和平时期限制某些战时决策的触发,或在战争中解锁特定的应急措施。

# 某决策仅在本国未处于战争时可用
available = {
    NOT = { has_war = yes }
}

# 事件 trigger:仅当目标国正在交战时触发
trigger = {
    FROM = {
        has_war = yes
    }
}

配合关系

  • [has_defensive_war](/wiki/trigger/has_defensive_war):配合使用可区分"主动参战"与"被动防御战",精细化判断当前战争性质。
  • [has_civil_war](/wiki/trigger/has_civil_war):与 has_war 并用,可排除内战情况,仅在外部战争时触发逻辑。
  • [declare_war_on](/wiki/effect/declare_war_on):触发宣战前通常用 has_war = no 做前置检查,避免重复宣战导致逻辑混乱。
  • [can_declare_war_on](/wiki/trigger/can_declare_war_on):两者组合用于完整的宣战前置条件验证——先确认己方状态,再确认宣战资格。

常见坑

  1. 忘记指定 scopehas_war 只在 COUNTRY scope 下有效,直接写在 STATE scope 的 limit 块中会报错或静默失效,需要用 OWNER = { has_war = yes } 等方式转换 scope。
  2. 误以为内战不计入战争:内战同样会使 has_war 返回 yes,若想排除内战场景需额外配合 NOT = { has_civil_war = yes } 进行过滤。