命令百科

trigger · has_war_with

Definition

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

Description

is countries at war

实战 · 配合 · 坑

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

实战用法

has_war_with 常用于判断两国是否处于交战状态,从而决定某事件选项、决策或国策是否可用——例如限制外交选项在战争期间不可点击,或在战争结束后触发和平事件。也常用于 AI 策略逻辑中,判断盟友是否正在与特定国家交战以决定是否参战。

# 示例:只有与德国处于战争状态时,该决策才可用
available = {
    has_war_with = GER
}

配合关系

  • [has_defensive_war_with](/wiki/trigger/has_defensive_war_with):配合使用可进一步区分当前战争是防御性质还是主动发起,用于为守方提供特殊加成或触发专属事件。
  • [any_enemy_country](/wiki/trigger/any_enemy_country):当需要判断"是否与任意满足某条件的国家交战"时,any_enemy_country 搭配内部条件比多次写 has_war_with 更灵活简洁。
  • [declare_war_on](/wiki/effect/declare_war_on):常见于先用 has_war_withlimit 排除已经开战的情况,避免重复宣战导致脚本报错或逻辑混乱。
  • [exists](/wiki/trigger/exists):战争判断前最好先确认目标国家仍然存在,否则对已被消灭的国家执行判断可能产生意外结果。

常见坑

  1. scope 与目标混淆has_war_with 的 scope 是 COUNTRY,必须在国家 scope 下调用。新手有时在 state scope 或 unit leader scope 中直接写该 trigger,导致解析错误或静默失效,需要先用 OWNER 等切换到国家 scope。
  2. 双向关系误解:该 trigger 判断的是双方是否处于同一场战争,并非单向宣战方向。因此不需要在双方 scope 下各写一次——只要 A has_war_with B 为真,B has_war_with A 同样为真,重复编写会造成逻辑冗余。