命令百科

trigger · has_active_mission

Definition

  • Supported scope:COUNTRY
  • Supported target:none

Description

check if country has an active mission with specified ID. has_active_mission = my_test_mission

实战 · 配合 · 坑

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

实战用法

has_active_mission 常用于任务链设计中,当某个任务激活后需要锁定其他选项、显示特定提示或触发后续事件时作为前置条件判断。例如在 availabletrigger 块里检测玩家是否已处于某个倒计时任务的进行中,以防止重复触发或提供互斥逻辑。

# 在另一个决策的 available 里,避免与正在进行的任务冲突
available = {
    NOT = { has_active_mission = my_expansion_mission }
}

配合关系

  • [activate_mission](/wiki/effect/activate_mission):最直接的搭档——先用 activate_mission 激活任务,再用 has_active_mission 检测该任务是否仍在运行,形成完整的"激活→监测"闭环。
  • [add_days_mission_timeout](/wiki/effect/add_days_mission_timeout):需要在任务进行中动态延长倒计时时,先用 has_active_mission 确认任务处于激活状态再执行,避免对不存在的任务操作。
  • [has_decision](/wiki/trigger/has_decision):两者常并排出现在同一 trigger 块中,分别检测决策与任务的激活状态,共同构成复杂任务链的互斥或联锁条件。
  • [activate_mission_tooltip](/wiki/effect/activate_mission_tooltip):在 available 判断失败时用于向玩家提示"某任务正在进行中"的原因,与 has_active_mission 配合提升 UI 可读性。

常见坑

  1. 任务 ID 拼写与 missions 文件不一致has_active_mission 的值必须与 missions 文件夹中对应任务块的键名完全一致(区分大小写),写错 ID 不会报错但永远返回假,导致逻辑静默失效,排查时极难发现。
  2. 误以为任务完成后仍为"active":任务超时或被完成后即不再处于激活状态,该 trigger 会立刻返回假;若需要检测"曾经触发过"的状态,应改用 [has_country_flag](/wiki/trigger/has_country_flag) 配合在任务 complete_effect 中设置标记旗帜来持久记录。