命令百科

trigger · has_unit_type

Definition

  • Supported scope:COMBATANT
  • Supported target:none

Description

Check if the combatant has at least one of the provided unit types.
For example:
has_unit_type = amphibious_mechanized

实战 · 配合 · 坑

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

实战用法

has_unit_type 常用于战斗事件或决策中,根据参战部队的兵种组成来触发特殊效果,例如当敌方拥有装甲单位时给予己方额外惩罚,或者为包含特定兵种的部队解锁专属战斗加成。典型场景是 mod 中为两栖作战编写额外限制:只有当攻击方确实携带了两栖机械化步兵时,才允许触发某个特殊登陆奖励事件。

# 在战斗事件的 trigger 块中,检查进攻方是否包含装甲单位
combat_event = {
    id = my_mod.1
    trigger = {
        is_attacker = yes
        has_unit_type = medium_armor
    }
    # ...
}

配合关系

  • [is_attacker](/wiki/trigger/is_attacker) / [is_defender](/wiki/trigger/is_defender):通常需要先限定检查的是哪一方的兵种组成,避免对双方都生效产生逻辑混乱。
  • [is_amphibious_invasion](/wiki/trigger/is_amphibious_invasion):与 has_unit_type 搭配用于判断"是两栖登陆且携带了专用兵种"的复合条件,常见于登陆战特殊规则。
  • [has_cavalry_ratio](/wiki/trigger/has_cavalry_ratio) / [has_artillery_ratio](/wiki/trigger/has_artillery_ratio):前者检查某兵种是否存在(至少一个),后二者检查比例,组合使用可以构造"有骑兵且骑兵占比超过阈值"的精细条件。
  • [is_fighting_in_terrain](/wiki/trigger/is_fighting_in_terrain):在特定地形战斗时叠加兵种检查,实现"山地作战且有山地步兵"类的地形-兵种联动逻辑。

常见坑

  1. Scope 不是 country 或 unit_leader:此 trigger 只能在 COMBATANT scope(即战斗中的一方)下使用,如果在国家或将领 scope 里直接写会静默失败或报错,务必确认脚本处于 combat_eventon_combat_enter 等进入战斗 scope 的上下文中。
  2. 兵种名写错不会报错:如果填写的单位类型字符串不存在(例如拼写错误),游戏通常不会抛出明显错误而是直接返回 false,导致条件永远不触发,调试时需要用日志逐一核对兵种的真实内部名称(如 light_armormotorized 等)。