实战用法
can_build_railway 常用于 mod 中判断是否满足铁路建设条件,例如在决议(decision)的 available 块里限制玩家只有在特定省份之间存在可行路径时才能执行建设操作。也可用在事件选项的 trigger 块里,配合 controller_priority 动态过滤敌方控制区,实现只允许沿友军领土修路的逻辑。
# 决议可用条件示例:仅当首都与目标州之间可建铁路时才开放
available = {
can_build_railway = {
build_only_on_allied = yes
fallback = yes
start_state = 42
target_state = 100
controller_priority = {
base = 1
modifier = {
is_ally_with = ROOT
add = 3
}
}
}
}
配合关系
[build_railway](/wiki/effect/build_railway):can_build_railway 作为前置条件检查,通过后再用 build_railway 实际执行铁路建设,两者参数结构高度对称,可复用相同的 path/start_state/target_state 配置。
[has_railway_connection](/wiki/trigger/has_railway_connection):常与本 trigger 组合使用,先用 has_railway_connection 排除已有连接的情况,再用 can_build_railway 确认新路径可行,避免重复建设。
[has_railway_level](/wiki/trigger/has_railway_level):用于同时检查目标地区现有铁路等级,结合 can_build_railway 决定是新建还是升级,逻辑更完整。
[if](/wiki/effect/if) / [if](/wiki/trigger/if):将 can_build_railway 嵌入 if 条件分支,根据路径是否可行动态选择不同的建设策略或提示文本。
常见坑
path、start_province/target_province、start_state/target_state 同时写入时优先级理解错误:三种寻路方式并非等价叠加,游戏按 option 1 → 2 → 3 顺序优先取用,只有开启 fallback = yes 才会在前一选项失败后回退到下一选项;若未开启 fallback,写了多组选项也只会读第一个有效的,后面的会被静默忽略。
controller_priority 返回负值却期望路径仍然通过:负值的设计含义是"拒绝经过该控制者的省份",若误将中立或敌方省份权重设为负数,整条路径可能因无法绕开而判定为不可建,导致 trigger 始终返回 false,排查时容易忽略这一隐性截断。