实战用法
can_declare_war_on 常用于判断某国在当前外交状态下是否具备对目标宣战的条件,典型场景包括:在决议(decision)或国策(focus)的 available 块中限制玩家或 AI 只有在可以合法宣战时才能触发相关选项,避免脚本强行绕过游戏外交规则。例如在一个"发动征服战争"的决策中:
available = {
can_declare_war_on = GER
}
也可以结合动态 target 写法,用于通用事件判断当前国家是否可以对 FROM 宣战:
trigger = {
can_declare_war_on = FROM
}
配合关系
[declare_war_on](/wiki/effect/declare_war_on):can_declare_war_on 是宣战前的条件校验,通常作为 declare_war_on effect 执行前的 available 或 limit 守卫,确保宣战行为本身合法。
[create_wargoal](/wiki/effect/create_wargoal):在实际宣战前往往需要先创建战争目标,两者配合可以构成"先检查可宣战性 → 生成战争目标 → 执行宣战"的完整流程。
[has_defensive_war_with](/wiki/trigger/has_defensive_war_with):当需要区分"主动宣战"与"已处于防御战"两种状态时,两个 trigger 搭配使用,可以精确分支处理不同的外交情境逻辑。
[exists](/wiki/trigger/exists):在判断能否宣战之前先确认目标国家存在,避免因目标已被消灭导致 trigger 产生意外行为。
常见坑
- 误以为此 trigger 仅检查"是否已有战争目标":
can_declare_war_on 综合检查游戏规则、外交关系、战争状态等多项条件,并非单纯判断战争目标是否存在。若目标国与本国已处于同一战争或是盟友,此 trigger 会返回 false,初学者常因此在测试中困惑为何明明有战争目标却仍判断失败。
- 在 effect 块中直接使用:该 trigger 只能写在条件判断块(
trigger/limit/available/allowed)中,将其写入 effect 块会导致脚本报错或静默失效,新手容易将它与 [declare_war_on](/wiki/effect/declare_war_on) 混淆放错位置。