命令百科

trigger · has_country_flag

Definition

  • Supported scope:COUNTRY
  • Supported target:any

Description

has country flag been set.Check flag val date set and days since set.
Example: has_country_flag = test_flag
has_country_flag = { 
	flag = <name> (mandatory)
	value < <int> (optional)
	date > <date> (optional)
	days > <int> (optional)
}

实战 · 配合 · 坑

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

实战用法

has_country_flag 常用于追踪玩家或 AI 已完成某个关键决策/事件分支的状态,例如防止同一事件链重复触发、记录外交协议达成等。在 focus/decision 的 available 块中判断前置条件是否满足,或在事件 trigger 中检查某段历史是否已经发生,是它最典型的用途。

# 只有在之前通过事件设置过 signed_pact_flag 的情况下,该决策才可用
available = {
    has_country_flag = {
        flag = signed_pact_flag
        days > 30        # 该 flag 设置至少 30 天后才开放
    }
}

配合关系

  • [clr_country_flag](/wiki/effect/clr_country_flag):设置 flag 完成其使命后,用此命令清除,防止"一次性"逻辑被重复触发,两者构成"写入→检查→清除"完整闭环。
  • [country_event](/wiki/effect/country_event):在确认 flag 存在后,触发对应的后续事件,常用于事件链的跳转控制。
  • [has_completed_focus](/wiki/trigger/has_completed_focus):与 has_country_flag 搭配双重校验,既确认国策已完成,又验证事件链内部状态,避免仅靠国策判断带来的漏洞。
  • [has_decision](/wiki/trigger/has_decision):与 flag 联合使用,区分"正在执行决策中"和"决策已完成并留下 flag"两种不同阶段的逻辑分支。

常见坑

  1. 忘记 flag = 关键字:简写形式 has_country_flag = my_flag 与块形式 { flag = my_flag ... } 不能混用附加字段——一旦需要加 days >value <,必须使用块形式,否则解析报错或字段被静默忽略。
  2. Flag 作用域写错has_country_flag 只在 COUNTRY scope 下有效;如果当前 scope 是 STATE 或 CHARACTER,需要先用 ROOT/FROM 等跳回国家 scope,否则 flag 永远读取不到,条件静默返回 false 且不报错,极难排查。