实战用法
add_relation_rule_override 常用于外交协议、意识形态限制或剧本事件场景,例如让某个民主国家无法对盟友宣战,或限制特定国家间的志愿者派遣。它的优势在于可以绑定命名触发器(named trigger)动态判断条件,而非硬编码目标标签,适合需要灵活外交规则的 mod。
# 事件选项:德国无法对美国宣战(直接绑定目标标签)
option = {
name = example.1.a
add_relation_rule_override = {
target = USA
usage_desc = REASON_PEACE_TREATY
can_not_declare_war = yes
}
}
# 或:对所有民主国家启用市场准入
add_relation_rule_override = {
trigger = is_democratic_country
usage_desc = DEMOCRATIC_MARKET_ACCESS
can_access_market = yes
}
配合关系
[has_active_rule](/wiki/trigger/has_active_rule):用于在后续触发器中检查某条规则覆盖是否已经生效,配合本 effect 做前置或后续判断逻辑。
[clear_rule](/wiki/effect/clear_rule):当外交协议失效或玩家做出新选择时,用于清除之前通过本 effect 添加的规则覆盖,两者形成成对的"添加/移除"工作流。
[add_opinion_modifier](/wiki/effect/add_opinion_modifier):规则覆盖通常伴随外交关系变化,添加关系修正可以在 UI 层面直观反映规则生效的外交背景。
[diplomatic_relation](/wiki/effect/diplomatic_relation):在设置宣战或市场准入规则时,往往同步调整正式外交关系状态(如不侵犯条约、贸易协定),两者共同构成完整的外交事件效果。
常见坑
target 与 trigger 二选一,不可混用:新手容易同时写 target 和 trigger 字段,但两者是互斥的两种使用形式(Alternative 1 / Alternative 2),同时出现会导致脚本解析异常或规则不生效。
- 规则名称写错导致静默失败:目前仅支持有限的规则名(如
can_not_declare_war、can_send_volunteer、can_access_market),若写了游戏不支持的规则名,脚本不会报错但完全无效,调试时极难发现。