实战用法
has_nationality 常用于谍报/特工系统的 mod 场景,例如根据特工的国籍决定其是否可以执行特定任务、触发专属事件,或在 limit 块中筛选目标特工进行国籍转换。以下示例展示如何限制只对德国特工执行某操作:
# 在 operative_leader_event 的 trigger 块中
trigger = {
is_operative = yes
has_nationality = GER
}
配合关系
[is_operative](/wiki/trigger/is_operative):使用 has_nationality 前必须确认角色是特工身份,否则游戏脚本会报错,两者几乎总是成对出现。
[set_nationality](/wiki/effect/set_nationality):常见于"策反/转化特工"逻辑——先用 has_nationality 判断原始国籍,再用 set_nationality 将其转变为新阵营。
[turn_operative](/wiki/effect/turn_operative):将对方特工转为己方时,通常先以 has_nationality 筛选出目标国籍的特工,再触发策反效果。
[add_nationality](/wiki/effect/add_nationality):为特工增加双重国籍前,可用 has_nationality 检查其当前主国籍,避免逻辑冲突。
常见坑
- 在非特工角色 scope 下使用:
has_nationality 对普通将领、顾问等非 operative 角色无效,脚本不会报语法错误但永远返回 false,需配合 is_operative = yes 提前过滤,否则逻辑会静默失效。
- 混淆"国籍"与"所属国":特工的 nationality(国籍)和其当前被哪个国家雇用/控制是两个不同概念,
has_nationality 检查的是前者,不能用来判断特工当前效忠于哪国,新手容易将两者混用导致条件判断错误。