Skip to content

变量类型

技能变量(variables)支持多种类型,用于定义技能在不同等级下的数值变化。

类型列表

类型别名说明
expression数学表达式,支持 %level% 等变量。最常用的类型。
stringstrtext字符串值。
random_textrandom_linesrandom_linetext_linesrandom_text_lines从列表中随机选一行。
random_charrandom_charschar_randomchars_random从候选中等概率随机选取一项。
weighted_random_charweighted_random_charsweighted_charweighted_charsweighted_char_random按权重随机选取一项。
conditional_charcondition_charcase_charif_char按条件分支选取一项。
booleanboolflag布尔值,支持表达式判断。
constantconstfixed固定值。无法识别的 type 也会回退到该类型。
range区间取值。
uniform均匀分布随机数(min~max 等概率)。
gaussiannormal高斯(正态)分布随机数。
skew_normalskewnormal偏态正态分布随机数。
triangle三角分布随机数。

stringrandom_textrandom_charweighted_random_charconditional_charboolean 为非数值类型,min / max / decimals 对它们不生效。

参数字段

字段类型说明
typestring参数类型(见上表)。
valuestring参数值或表达式。
mindouble数值下限。计算结果低于此值时截断。
maxdouble数值上限。计算结果高于此值时截断。
decimalsinteger小数位数。0 表示取整。
defaultstring默认值(表达式解析失败时使用)。

示例

expression 类型

yaml
variables:
  damage:
    type: expression
    value: "10 + %level% * 5"
    min: 10
    max: 100
    decimals: 0
  range:
    type: expression
    value: "3 + %level% * 0.5"
    max: 10
    decimals: 1

uniform 类型

yaml
variables:
  bonus_damage:
    type: uniform
    value: "5~15"
    decimals: 0

random_text 类型

yaml
variables:
  cast_message:
    type: random_text
    lines:
      - "<red>火焰爆发!"
      - "<red>燃烧吧!"
      - "<red>烈焰之力!"

候选列表的键名是 lines

random_text 只读取 lines。写成 values 不会报错,但候选列表为空。反之,只要写了 lines 且没写 type,类型会被自动判定为 random_text

boolean 类型

yaml
variables:
  is_aoe:
    type: boolean
    value: "%level% >= 5"

在脚本中使用变量

变量解析后的值可在脚本动作、条件和文本中通过 %var.变量名% 引用:

yaml
script:
  actions:
    cast:
      - 'trigger | damage amount=%var.damage%'
      - 'trigger | where %var.is_aoe%==true | spawn_particle particle=EXPLOSION count=10'

变量按声明顺序解析,后声明的变量可以引用先声明的变量:

yaml
variables:
  damage:
    type: expression
    value: "10 + %level% * 5"
  hit_message: "<red>造成 %damage% 点伤害"

注入 MythicMobs

解析后的变量会注入 MythicMobs 技能元数据,在 MythicMobs 技能中通过 <skill.var.变量名> 读取。 另有 5 个内置变量始终注入:emaki_skill_idemaki_skill_levelemaki_trigger_idemaki_is_passiveemaki_has_target