实战用法
常用于外交事件或国家焦点的前提条件中,判断两国之间是否存在互不侵犯条约,从而决定是否触发特定的外交选项或解锁后续决议。例如在冷战 mod 里,可以用它来阻止玩家对签署了互不侵犯条约的国家宣战,或触发"撕毁条约"的剧情事件。
# 在国家焦点 available 中,要求与目标国存在互不侵犯条约才能执行
available = {
has_non_aggression_pact_with = FROM
}
# 在事件 trigger 中,检测本国是否与苏联签有互不侵犯条约
trigger = {
tag = GER
has_non_aggression_pact_with = SOV
}
配合关系
[has_defensive_war_with](/wiki/trigger/has_defensive_war_with):互不侵犯条约的存在与否往往需要配合防御战检测,二者共同用于判断当前敌对关系是否与协议相悖。
[can_declare_war_on](/wiki/trigger/can_declare_war_on):在限制宣战的条件块中与本 trigger 配合,确保只有在互不侵犯条约不存在时才允许发动战争。
[has_country_flag](/wiki/trigger/has_country_flag):常搭配国旗标记使用,记录条约是否曾被单方面违背,为后续事件提供状态追踪依据。
[any_allied_country](/wiki/trigger/any_allied_country):用于遍历盟友时,与本 trigger 联合筛选出既是盟友、又与第三方签有互不侵犯条约的国家,辅助复杂外交逻辑判断。
常见坑
- scope 方向写反:本 trigger 的 scope 是发起检测的国家,target 是条约对方。新手容易把双方对调,导致在错误的国家 scope 下执行判断,结果始终返回假而不自知。
- 误以为可接受普通国家标签以外的写法:target 仅支持白名单中的代词(
THIS、FROM 等)或具体国家标签,不能直接写州/省 scope 或其他非国家对象,否则脚本会静默失败而不报错。