实战用法
当你通过 add_dynamic_modifier 或 remove_dynamic_modifier 修改某个 scope 的动态修正后,游戏默认等到每日更新才重新计算实际效果;如果 mod 逻辑要求修正在同一事件/决议链中立即生效(例如后续触发器需要读取它的数值),就应在操作完成后立即调用此 effect。典型场景是在一个事件 option 里先给某国家移除旧动态修正、添加新动态修正,再强制刷新,确保 UI 和后续脚本看到的都是最新状态。
option = {
name = my_event.1.a
remove_dynamic_modifier = { modifier = old_war_economy }
add_dynamic_modifier = { modifier = new_war_economy }
force_update_dynamic_modifier = yes # 立即生效,不等日更
}
配合关系
[add_dynamic_modifier](/wiki/effect/add_dynamic_modifier):添加动态修正后通常紧跟此命令,确保新增修正立即计入计算,而非在下一个 tick 才生效。
[remove_dynamic_modifier](/wiki/effect/remove_dynamic_modifier):移除动态修正后同样需要强制刷新,否则旧修正的数值在当前帧内仍被视为有效。
[has_dynamic_modifier](/wiki/trigger/has_dynamic_modifier):若后续触发器需要检查某动态修正是否存在或其变量已更新,必须先通过此 effect 刷新,才能保证检查结果准确。
常见坑
- 忘记调用导致数值滞后:在同一执行块里修改动态修正后,如果后续逻辑(如同一 hidden_effect 里的触发器判断或 UI 反馈)依赖修正结果,却没有加
force_update_dynamic_modifier = yes,会出现"改了但没生效"的假象,排查起来极为隐蔽。
- 在没有动态修正变动的地方滥用:此命令会强制重新计算当前 scope 的所有动态修正,频繁在大量 scope 或每日脉冲中无条件调用会产生不必要的性能开销,应仅在确实有修正变动、且需要即时生效的时机才调用。