命令百科

trigger · has_global_flag

Definition

  • Supported scope:any
  • Supported target:any

Description

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

实战 · 配合 · 坑

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

实战用法

has_global_flag 常用于追踪全局剧情节点,例如判断某个世界事件是否已经触发过,从而控制后续事件的 availabletrigger 条件,避免重复触发。也可配合 value 字段实现"计数器"式的阶段判断,比如追踪某个全局战争阶段进展到哪一步。

# 某个决策的 available 块:仅在全球核战争事件触发后方可使用
available = {
    has_global_flag = {
        flag = global_nuclear_war_started
        days > 30
    }
}

配合关系

  • [set_global_flag](/wiki/effect/set_global_flag):最直接的搭档,先用 set_global_flag 设置标记,再用 has_global_flag 检查是否存在,构成"写-读"闭环。
  • [clr_global_flag](/wiki/effect/clr_global_flag):在阶段性逻辑完成后清除旗帜,配合 has_global_flag 可实现"仅在某阶段窗口内有效"的条件判断。
  • [modify_global_flag](/wiki/effect/modify_global_flag):用于修改旗帜的 value 计数,与 has_global_flagvalue < 字段配合可实现多阶段进度门控。
  • [date](/wiki/trigger/date):当需要同时约束"旗帜已设置"与"游戏日期"时,与 date trigger 并列写在 AND 块中,避免仅靠旗帜的 date > 字段难以表达的复杂日期区间逻辑。

常见坑

  1. 误把 flag 字段写成简写形式:新手常写成 has_global_flag = test_flag 后,又在同一处想加 days > 子条件,却忘记切换成花括号块语法({ flag = ... days > ... }),导致解析报错或子条件静默失效。
  2. 以为清除旗帜会让 days > 条件重置clr_global_flag 后再 set_global_flag 会重新记录设置时间,但若只是修改 value 而不重设旗帜,days 计时仍从最初设置时刻算起,容易造成时间判断与预期不符。