实战用法
has_unit_leader_flag 主要用于检查某个将领/角色是否被打上了特定的自定义标记,常见于事件链中判断角色是否已经历过某个特殊情节(如受伤、晋升仪式、秘密任务等),从而决定后续分支走向。由于官方已将其标记为过时,新 mod 应优先使用 has_character_flag,但维护旧 mod 时仍会频繁遇到它。
# 检查将领是否被标记为"经历过前线受伤事件"
character_event = {
id = my_mod.10
trigger = {
is_corps_commander = yes
has_unit_leader_flag = frontline_wounded
}
# ...后续事件内容
}
# 带天数条件的写法:标记设置超过 30 天后才触发
trigger = {
has_unit_leader_flag = {
flag = secret_mission_assigned
days > 30
}
}
配合关系
[set_unit_leader_flag](/wiki/effect/set_unit_leader_flag):设置标记的对应效果命令,通常在事件或 on_action 中先用它打上标记,再用本 trigger 检查该标记是否存在,形成"写入→检测"的完整逻辑闭环。
[clr_unit_leader_flag](/wiki/effect/clr_unit_leader_flag):清除标记,与本 trigger 配合实现"一次性触发"机制——检测到标记后执行逻辑,随即清除,防止重复触发。
[has_character_flag](/wiki/trigger/has_character_flag):本 trigger 的官方推荐替代品,行为完全相同,新写的条件块应直接换用此命令以保持前向兼容。
[is_corps_commander](/wiki/trigger/is_corps_commander) / [is_field_marshal](/wiki/trigger/is_field_marshal):将领标记通常只对特定职位的角色有意义,先过滤角色类型再检查标记,可避免对非目标角色产生误判。
常见坑
- 在非 CHARACTER scope 中使用:本 trigger 只能作用于 CHARACTER scope,若在 COUNTRY 或 STATE 等 scope 下直接调用会静默失败或报错,需先通过
any_character、every_character 等方式进入正确 scope 再使用。
- 忘记迁移到
has_character_flag:新 mod 沿用此命令虽然短期内不会报错,但官方随时可能在后续版本彻底移除它;应养成习惯,凡新增逻辑一律改写为 has_character_flag,避免日后批量替换的维护成本。