实战用法
has_mio_policy 常用于检查某个军事工业组织是否已解锁或允许特定政策,从而决定后续奖励、特性解锁或 UI 提示是否显示。例如,在设计某 MIO 的特性可用条件时,可以要求玩家必须先启用对应政策才能激活该特性:
# 在某个 MIO 特性的 available 块中检查政策
mio:my_arms_company = {
is_mio_trait_available = my_advanced_trait
}
# 特性定义内部
available = {
mio:my_arms_company = {
has_mio_policy = my_production_policy
}
}
配合关系
[has_mio_policy_active](/wiki/trigger/has_mio_policy_active):has_mio_policy 仅检查政策是否被允许(存在于允许列表),而 has_mio_policy_active 检查政策是否当前激活,两者常一起使用来区分"可用但未启用"与"已启用"的两种状态。
[has_mio_trait](/wiki/trigger/has_mio_trait):政策往往与特性联动,先用 has_mio_policy 确认政策允许,再用 has_mio_trait 确认对应特性已完成,构成双重前置条件检查。
[complete_mio_trait](/wiki/effect/complete_mio_trait):当政策检查通过后,在 effect 块中配合此命令自动授予特性,实现"满足政策条件即解锁特性"的逻辑。
[is_mio_trait_available](/wiki/trigger/is_mio_trait_available):与 has_mio_policy 嵌套使用,精确控制特性在特定政策下的可见与可用范围。
常见坑
- 作用域写错:
has_mio_policy 必须在 INDUSTRIAL_ORG 作用域下调用,直接写在国家作用域(country scope)的 trigger 块里会静默失败或报错,需要先通过 mio:my_mio = { ... } 进入正确作用域。
- 混淆 allowed 与 active:新手常误以为
has_mio_policy 等价于"政策已启用",实际上它只检查政策是否在允许列表中,政策是否真正生效需要用 has_mio_policy_active 来判断,两者语义不同,混用会导致条件判断逻辑错误。