命令百科

trigger · has_event_target

Definition

  • Supported scope:any
  • Supported target:any

Description

checks if current scope or global scope has the specified event target saved

实战 · 配合 · 坑

实战内容由 AI 生成,并已对照 vanilla 命令词表校验 —— 请当作起点而非权威依据。上方的定义节才是游戏自带文档原文。

实战用法

has_event_target 常用于事件链或决策脚本中,在触发后续逻辑前先确认某个通过 save_event_target_as 保存的目标确实存在,避免脚本在目标为空时崩溃或产生意外行为。例如在一个外交事件链中,保存了谈判对象国后,后续选项需要验证该目标仍有效:

# 在事件选项的 trigger/available 中校验之前保存的目标
available = {
    has_event_target = negotiation_partner
}

配合关系

  • [save_event_target_as](/wiki/effect/save_event_target_as) — 负责将某个 scope 存储为具名目标,has_event_target 通常在其之后用于验证该目标已成功存入。
  • [save_global_event_target_as](/wiki/effect/save_global_event_target_as) — 保存全局目标时同样需要 has_event_target 在后续逻辑中做存在性检查,两者形成"写入–校验"的标准配对。
  • [clear_global_event_target](/wiki/effect/clear_global_event_target) — 清除全局目标前可先用 has_event_target 确认目标存在,防止对空目标执行清除操作产生脚本警告。
  • [scope_exists](/wiki/trigger/scope_exists) — 两者常并列出现:has_event_target 确认目标名称已注册,scope_exists 进一步确认该 scope 对应的对象(如国家)在游戏中依然存活。

常见坑

  1. 混淆 local 与 global 目标:用 save_event_target_as 保存的本地目标仅在当前事件/效果块的生命周期内有效,跨事件后再用 has_event_target 检查会返回假;若需跨事件持久存储,必须改用 save_global_event_target_as,否则逻辑永远不会通过。
  2. 将目标名写成变量引用has_event_target 的参数是硬编码的字符串标识符,不能传入变量或动态名称,新手有时误写成 has_event_target = var:some_variable,这会导致检测永远失败且不报明显错误。