实战用法
swap_ideas 常用于国策链、决议或事件中替换具有时限的 idea,例如将"战时动员(初级)"升级为"战时动员(高级)",同时平滑衔接剩余天数,避免出现 idea 短暂消失的闪烁感。使用 add_days 可在旧 idea 剩余时长的基础上叠加或扣减新 idea 的持续时间,适合处理需要"继承进度"的临时加成。
# 将临时的初级工业动员替换为高级版本,并额外延长 30 天
country_event = {
id = my_mod.5
option = {
name = my_mod.5.a
swap_ideas = {
remove_idea = basic_war_mobilization
add_idea = advanced_war_mobilization
add_days = 30
}
}
}
配合关系
[has_country_flag](/wiki/trigger/has_country_flag):在执行替换前检查国家标记,确保只有满足特定剧情条件的分支才触发 idea 升级,防止逻辑错乱。
[add_timed_idea](/wiki/effect/add_timed_idea):当需要新增一个全新的有时限 idea(而非替换已有的)时与 swap_ideas 分工使用,二者共同构成完整的临时 buff 管理体系。
[has_allowed_idea_with_traits](/wiki/trigger/has_allowed_idea_with_traits):在 trigger 块中预判目标 idea 是否满足装载条件,避免因 idea 不存在而导致脚本报错。
[add_days_remove](/wiki/effect/add_days_remove):若替换后还需要动态调整新 idea 的剩余天数,可在 swap_ideas 之后追加此命令进行精细修正。
常见坑
- 忘记旧 idea 必须实际存在于该国:若
remove_idea 指定的 idea 当前并未激活,脚本不会报硬错误但替换会静默失败,add_idea 的新 idea 也不会被添加——务必在外层用 [has_allowed_idea_with_traits](/wiki/trigger/has_allowed_idea_with_traits) 或 has_country_flag 等条件守门。
- 混淆
add_days 与 days 的语义:add_days 是在旧 idea 剩余天数的基础上叠加,days 是覆盖设置新 idea 的持续时间;若不清楚旧 idea 还剩多久就误用 add_days,可能导致新 idea 的有效期远超预期或立即过期。