实战用法
remove_dynamic_modifier 常用于事件或决议到期时清除之前挂载的动态加成,例如移除因某国签订条约而获得的临时军事加成,或在角色死亡/离职时清理挂在该角色身上的特定动态修正。下面示例演示当一项决议完成后,移除挂在德国上的某个动态修正:
# 在 option 或 complete_effect 块中
GER = {
remove_dynamic_modifier = {
modifier = ger_rearmament_bonus
scope = GER # 若当初 add_dynamic_modifier 时传入了 scope,此处必须对应
}
}
配合关系
[add_dynamic_modifier](/wiki/effect/add_dynamic_modifier) — 与之成对使用,先用 add_dynamic_modifier 挂载,再在适当时机用本命令移除,是动态修正生命周期管理的标准流程。
[force_update_dynamic_modifier](/wiki/effect/force_update_dynamic_modifier) — 当动态修正引用的变量已发生变化但尚未刷新时,先移除再重新添加后可配合此命令强制立即刷新数值。
[has_dynamic_modifier](/wiki/trigger/has_dynamic_modifier) — 在移除前用此触发器检查目标 scope 上是否确实存在该动态修正,避免对不存在的修正执行移除而产生警告日志。
[add_days_remove](/wiki/effect/add_days_remove) — 若希望动态修正在有限时间后自动消失,可在添加时配合 add_days_remove,而非手动用本命令移除,两种方案各有适用场景。
常见坑
scope 参数必须与 add_dynamic_modifier 时一致:若添加时填写了 scope = GER,移除时若遗漏该参数,游戏将无法匹配到对应修正,导致移除静默失败,修正依然生效,极难排查。
- 在错误的 scope 下执行:
remove_dynamic_modifier 需要在与修正实际挂载的同类 scope(国家/州/角色/特殊项目)中调用;若修正挂在 STATE 上却在 COUNTRY scope 下执行移除,命令不会跨 scope 生效,需先切换至正确的 scope 块再执行。