实战用法
在制作势力平衡(Power Balance)系统相关 mod 时,常用此 trigger 在事件或决策的 available / trigger 块中检查某个修正是否已被添加,从而避免重复添加或实现互斥逻辑。例如,确认某阵营的特定加成尚未生效后再触发后续事件:
available = {
NOT = {
has_power_balance_modifier = {
id = my_pb_east_west
modifier = eastern_bloc_dominance
}
}
}
配合关系
[add_power_balance_modifier](/wiki/effect/add_power_balance_modifier):最直接的搭档——先用 has_power_balance_modifier 检查修正是否存在,不存在时才执行添加,防止重复叠加。
[remove_power_balance_modifier](/wiki/effect/remove_power_balance_modifier):在条件成立(修正已存在)时移除对应修正,实现"有则清除"的状态切换逻辑。
[remove_all_power_balance_modifiers](/wiki/effect/remove_all_power_balance_modifiers):当需要重置整个势力平衡状态时,先用 trigger 确认有修正存在再批量清除,避免无意义的脚本调用。
[is_power_balance_in_range](/wiki/trigger/is_power_balance_in_range):常与本 trigger 组合使用,既检查特定修正是否存在,又检查当前势力平衡数值是否在目标区间,双重条件共同把关决策触发时机。
常见坑
id 与 modifier 字段写反或遗漏:id 指的是势力平衡本身的唯一标识符,modifier 才是挂载在其上的静态修正 id,两者含义不同,填错会导致 trigger 永远返回 false 且游戏日志不一定报错。
- 误以为 scope 限制为某国:该 trigger 的支持 scope 为
any,但实际脚本中仍需确保当前执行上下文能访问到对应的势力平衡定义;若势力平衡是在特定 DLC 或特定 mod 文件中定义的,未加载时同样会静默失败而非报错。