实战用法
create_dynamic_country 常用于 mod 中在游戏进行中动态生成一个全新的傀儡国、分裂国或特殊剧情国家,而无需在历史文件中预先定义该标签。例如在内战事件或分裂剧情中,可以基于原有国家(original_tag)复制基础数据,再立即在子块中执行一系列初始化效果(设定首都、给予省份、设置政府等)。
# 意大利内战:动态创建北意大利分裂政权
create_dynamic_country = {
original_tag = ITA
copy_tag = ITA
set_capital = 516 # 米兰省
transfer_state = 159
transfer_state = 160
set_politics = {
ruling_party = communism
elections_allowed = no
}
save_event_target_as = north_italy_breakaway
}
配合关系
[save_event_target_as](/wiki/effect/save_event_target_as) — 在子块内立即将新生成的动态国家保存为事件目标,方便后续其他事件或效果通过目标引用它,否则动态国家创建后将难以再次精确定位。
[hidden_effect](/wiki/effect/hidden_effect) — 将 create_dynamic_country 包裹在隐藏效果块中,避免玩家界面出现不必要的提示信息,适合在幕后静默初始化国家。
[every_country](/wiki/effect/every_country) — 创建完成后,用 every_country 遍历所有国家,对新动态国家的外交关系(如宣战理由、阵营关系)进行批量初始化。
[country_exists](/wiki/trigger/country_exists) — 在执行创建前或创建后的条件判断中,用于检查原始标签是否存在,防止脚本在目标国家已灭亡时报错或产生异常行为。
常见坑
- 子块效果的 scope 理解错误:新手容易忘记
create_dynamic_country 的花括号子块内,scope 已经自动切换到新创建的动态国家,不需要也不应该在子块内再写 = { } 来切换 scope,直接写效果即可;若误以为仍在原始 scope 下执行,会导致效果错误地作用于触发国而非新国家。
original_tag 与 copy_tag 混用导致数据污染:original_tag 决定新国家的基础模板(国旗、科技树等历史数据来源),而 copy_tag 会额外复制当前游戏内该国的运行时状态(科技、将领等);不清楚二者区别而同时乱填,容易使新国家意外继承不该有的军事或经济状态,导致平衡性问题。