effect · if
Definition
- Supported scope:
any - Supported target:
none
Description
a conditional effect
ifanynonea conditional effect
实战内容由 AI 生成,并已对照 vanilla 命令词表校验 —— 请当作起点而非权威依据。上方的定义节才是游戏自带文档原文。
if 用于在事件选项、国策完成效果或 on_action 回调中,根据当前游戏状态有条件地执行一段效果,例如只有当玩家满足某个变量或旗帜条件时才触发特殊奖励。结合 else_if 和 else 子块,可以在同一个执行块里实现多分支逻辑,避免写多个互斥选项。
# 国策完成效果:根据阵营立场给予不同奖励
complete_effect = {
if = {
limit = {
has_global_flag = allied_with_west
}
add_victory_points = {
province = 3455
value = 5
}
}
else_if = {
limit = {
has_global_flag = allied_with_east
}
add_victory_points = {
province = 3455
value = 3
}
}
else = {
set_global_flag = neutral_path_taken
}
}
[has_global_flag](/wiki/trigger/has_global_flag):最常放在 limit 块里检测全局旗帜,决定 if 分支是否执行,是最典型的条件守卫写法。[check_variable](/wiki/trigger/check_variable):在 limit 中用于比较数值型变量,配合 if 实现基于积分或计数器的分支效果。[hidden_effect](/wiki/effect/hidden_effect):常嵌套在 if 内部,将条件成立后不希望玩家看到的执行细节隐藏,保持日志/提示干净。[custom_effect_tooltip](/wiki/effect/custom_effect_tooltip):当 if 内部逻辑对玩家不可见时,与之配合在界面上显示人类可读的条件说明,改善 UX。limit 块:if 必须包含 limit = { ... } 来声明触发条件,如果省略 limit,游戏会将该分支视为无条件执行,效果等同于直接写在外层,逻辑完全错误且不会报错,非常难排查。limit 里写 effect 命令:limit 块只接受 trigger(条件判断),误将 set_variable 等 effect 写入其中不会生效,且部分版本下静默失败,导致分支永远不触发或脚本异常。