实战用法
has_global_flag 常用于追踪全局剧情节点,例如判断某个世界事件是否已经触发过,从而控制后续事件的 available 或 trigger 条件,避免重复触发。也可配合 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_flag 的 value < 字段配合可实现多阶段进度门控。
[date](/wiki/trigger/date):当需要同时约束"旗帜已设置"与"游戏日期"时,与 date trigger 并列写在 AND 块中,避免仅靠旗帜的 date > 字段难以表达的复杂日期区间逻辑。
常见坑
- 误把
flag 字段写成简写形式:新手常写成 has_global_flag = test_flag 后,又在同一处想加 days > 子条件,却忘记切换成花括号块语法({ flag = ... days > ... }),导致解析报错或子条件静默失效。
- 以为清除旗帜会让
days > 条件重置:clr_global_flag 后再 set_global_flag 会重新记录设置时间,但若只是修改 value 而不重设旗帜,days 计时仍从最初设置时刻算起,容易造成时间判断与预期不符。