实战用法
has_mio_flag 常用于追踪军事工业组织的特定状态,例如判断某个 MIO 是否已完成过某次特殊任务、触发过某个剧情事件或达成过某个自定义里程碑。典型场景是在 MIO 的 trait 解锁条件或 available 块中,检查之前通过脚本打上的标记,从而实现阶段推进式的解锁逻辑。
# 在 MIO trait 的 available 中,判断是否设置过"完成第一阶段研究"的标记
some_mio_trait = {
available = {
has_mio_flag = first_phase_complete
}
}
# 也可以结合值或天数做更精细的判断
available = {
has_mio_flag = {
flag = production_boosted
days < 180
}
}
配合关系
[set_mio_flag](/wiki/effect/set_mio_flag):has_mio_flag 检查的标记正是由 set_mio_flag 写入的,两者构成"写入—读取"的完整逻辑闭环,缺一不可。
[clr_mio_flag](/wiki/effect/clr_mio_flag):当某个条件达成后需要重置状态时,用 clr_mio_flag 清除标记,再由 has_mio_flag 在下一阶段重新判断,适合实现循环或多阶段流程。
[modify_mio_flag](/wiki/effect/modify_mio_flag):modify_mio_flag 可修改标记的数值,配合 has_mio_flag 的 value 比较字段,可实现类似"计数器"的累计判断逻辑。
[is_mio_trait_completed](/wiki/trigger/is_mio_trait_completed):通常与 has_mio_flag 并列写在同一 trigger 块中,同时检查 MIO 的 trait 完成情况与自定义标记,共同构成复合解锁条件。
常见坑
- Scope 写错位置:
has_mio_flag 只能在 INDUSTRIAL_ORG scope 下使用,新手常将其直接写在国家或角色 scope 的 trigger 块中导致静默失效或报错,使用前务必确认已通过 any_mio / every_mio 等方式切换到正确 scope。
- flag 名拼写不一致:
set_mio_flag 和 has_mio_flag 引用的 flag 名称必须完全一致(区分大小写),新手在不同文件中复制粘贴时容易出现大小写或下划线差异,导致条件永远返回假却难以排查。