实战用法
add_scientist_role 最常用于剧情事件或国策完成时,动态为某个角色解锁科学家职能,例如让一位特定历史人物在研究项目开启后成为专项科学家。在需要从国家 scope 操作特定角色时,可通过 character = 参数精确指定目标;若已处于角色自身 scope 则可省略该参数,直接写 scientist = { ... } 块。
# 国策完成后,从国家 scope 为指定角色添加科学家职能
complete_national_focus = {
SOV = {
add_scientist_role = {
character = sov_igor_kurchatov
scientist = {
desc = kurchatov_scientist_desc
traits = { nuclear_specialist }
skills = { nuclear = 3 }
}
}
}
}
配合关系
[remove_scientist_role](/wiki/effect/remove_scientist_role):与之对称,当剧情需要角色退出科研岗位时用于撤销职能,两者通常成对出现在事件选项中。
[add_scientist_trait](/wiki/effect/add_scientist_trait):在赋予科学家职能后追加专属特质,弥补 scientist = { traits = {} } 只能写初始特质的情况,适合动态成长系统。
[add_scientist_xp](/wiki/effect/add_scientist_xp):给新科学家立即注入经验值,让其起步时就有一定等级,避免初期能力过低影响玩家体验。
[any_scientist](/wiki/trigger/any_scientist):在条件块中检测国家现有科学家状态,可用来判断是否已存在同类角色,防止重复添加科学家职能。
常见坑
- 忘记
skills 字段导致脚本报错或科学家无法正常运作:scientist = { } 块中 skills 并非可选——至少需要声明一个专业化方向的技能值,否则角色可能无法被分配到研究项目,甚至在读档时引发警告。
- 在 CHARACTER scope 下多写了
character = 参数:当 scope 本身已经是目标角色时再填写 character = ... 会造成指向混乱或被忽略,只需在国家 scope 下才需要通过 character = 参数指定目标角色。