实战用法
remove_unit_leader_trait 常用于剧情事件或决策中,动态调整将领的特质,例如当某位将领经历特定事件后失去某个正面或负面特质。比如在一个"将领改革"事件中,移除其过时的战术风格特质,再赋予新的特质,实现角色成长弧线。
# 事件触发:将领从游击战专家转型
character_event = {
id = my_mod.101
hidden = yes
immediate = {
SOV_vasily_chuikov = {
remove_unit_leader_trait = guerrilla_fighter
add_unit_leader_trait = urban_assault_specialist
}
}
}
配合关系
[add_unit_leader_trait](/wiki/effect/add_unit_leader_trait):最直接的搭档,先移除旧特质再添加新特质,实现特质的"替换"逻辑(注意也可以直接用 [replace_unit_leader_trait](/wiki/effect/replace_unit_leader_trait) 一步完成)。
[has_trait](/wiki/trigger/has_trait):在执行移除前用此触发器检查将领是否真的拥有该特质,避免因特质不存在引发脚本报错或逻辑混乱。
[add_timed_unit_leader_trait](/wiki/effect/add_timed_unit_leader_trait):与本命令组合可实现"临时特质到期后移除、换上永久特质"的进阶效果。
[is_corps_commander](/wiki/trigger/is_corps_commander) / [is_field_marshal](/wiki/trigger/is_field_marshal):在 if 条件块中确认角色当前的将领类型,确保移除的特质对该角色类型有效。
常见坑
- 对不存在的特质执行移除不会报错但会静默失败:如果将领当前并没有该特质,命令不会崩溃,但也不会有任何效果。建议在执行前用
[has_trait](/wiki/trigger/has_trait) 包裹一层 limit 或 if 判断,保证逻辑清晰可追溯。
- 作用域必须是 CHARACTER 本身而非国家:新手常在国家 scope 下直接写
remove_unit_leader_trait,导致命令无效。必须先通过 SOV_xxx = { ... } 或 random_unit_leader 等方式进入正确的 CHARACTER scope 才能生效。