Skip to content

概述

hna-damage 是 HNAttribute 提供的伤害机制,可以造成固定值伤害、百分比伤害,或接入完整的战斗管线。

基本语法

yaml
- hna-damage{参数} @目标选择器

参数列表

参数别名类型默认值说明
amounta数值0基础伤害值
multiplierm数值1.0最终倍率
percentp布尔false是否按目标最大生命百分比
source-typest字符串skill来源类型
damage-typedt字符串physical伤害类型
tagst字符串-附加标签(逗号分隔)
pi-布尔false是否绕过伤害间隔
pk-布尔false是否抑制击退
participate-pipelinepp布尔false是否参与战斗管线

三种伤害模式

1. 固定值伤害

直接造成指定数值的伤害,不经过战斗管线。

yaml
# 造成 100 点固定伤害
- hna-damage{amount=100} @target

# 造成 100 点固定伤害,倍率 1.5
- hna-damage{amount=100;multiplier=1.5} @target

2. 百分比伤害

按目标最大生命值的百分比造成伤害。

yaml
# 造成目标最大生命 10% 的伤害
- hna-damage{amount=10;percent=true} @target

# 造成目标最大生命 15% 的伤害,倍率 1.2
- hna-damage{amount=15;percent=true;multiplier=1.2} @target

3. 战斗管线伤害

不指定 amountamount <= 0 时,走完整的 HNAttribute 战斗管线。

yaml
# 走战斗管线,使用攻击方的属性计算伤害
- hna-damage{multiplier=1.2;source-type=skill;damage-type=fire} @target

# 短写形式
- hna-damage{m=1.2;st=skill;dt=fire;t=mythic,skill} @target

显式伤害参与战斗管线(v2.2.0+)

从 2.2.0 版本开始,固定值和百分比伤害可以通过 participate-pipeline 参数进入战斗管线。

基本用法

yaml
# 固定值伤害参与管线
- hna-damage{a=100;pp=true;st=skill;dt=physical} @target

# 百分比伤害参与管线
- hna-damage{a=12;p=true;pp=true;st=skill;dt=physical} @target

行为差异

不开启 pp=true(默认):

  • 固定值/百分比伤害直接结算
  • 不经过战斗管线的增减伤、暴击等阶段
  • 保持原有的直接伤害语义

开启 pp=true

  • 显式伤害作为管线输入
  • 继续走命中、闪避、格挡判定
  • 经过增减伤、暴击等阶段
  • 可被管线配置的标签规则控制

自动附加标签

开启 pp=true 后,系统会自动附加:

  • explicit-damage:所有显式伤害
  • fixed-damage:固定值伤害
  • percent-damage:百分比伤害

实际应用场景

场景 1:火球术(固定伤害)

yaml
Fireball:
  Skills:
  - hna-damage{amount=100;damage-type=fire;source-type=skill} @target

场景 2:斩杀技能(百分比伤害)

yaml
Execute:
  Skills:
  - hna-damage{amount=15;percent=true;damage-type=physical} @target

场景 3:技能伤害走战斗管线

yaml
PowerStrike:
  Skills:
  - hna-damage{m=1.5;st=skill;dt=physical;t=mythic,skill} @target

场景 4:百分比伤害参与管线(v2.2.0+)

yaml
ExecuteWithCrit:
  Skills:
  # 斩杀技能,按百分比但仍吃增伤和暴击
  - hna-damage{a=15;p=true;pp=true;st=skill;dt=physical} @target

场景 5:固定值技能伤害参与管线(v2.2.0+)

yaml
MagicMissile:
  Skills:
  # 固定值技能伤害,需要吃增伤但不暴击(通过管线配置控制)
  - hna-damage{a=200;pp=true;st=skill;dt=magic;t=no-crit} @target

场景 6:真实伤害(不参与管线)

yaml
TrueDamage:
  Skills:
  # 真实伤害,不参与管线(默认行为)
  - hna-damage{a=100;st=skill;dt=true} @target

元素赋予与临时元素伤害

重要概念

fire_damage 是"火焰通道数值",不是内置的"火焰赋予开关"。

在当前默认战斗模型里:

  • 只要 fire 通道被启用
  • 且攻击方的 fire_damage > 0
  • 这次结算就可能产出火焰分量

如果想做"必须开火焰赋予才能打出火伤"

推荐配置方式:

  1. 自己增加一个独立属性,例如 fire_imbue
  2. pipelines/*.yml 的相关 stage 里,对 fire 类型或 self_fire_damage 做门控
yaml
id: fire_gate
type: modifier
depends_on:
  - damage
formula: |-
  if (damage_type == 'fire' && self_fire_imbue <= 0) {
    return 0
  }
  return damage

如果只是想打一发"明确是火属性"的技能伤害

yaml
# 完整写法
- hna-damage{amount=100;damage-type=fire;source-type=skill} @target

# 短写形式
- hna-damage{a=100;dt=fire;st=skill} @target

如果想做"开技能期间临时带火"

两种思路:

  1. **赋予流:**先给自己临时加 fire_imbue,让普攻/常规战斗管线在持续时间内放行火通道
  2. **技能直伤流:**技能本身直接用 hna-damage{dt=fire},不改平A语义

注意事项

  1. hna-damage 不是 Mythic 原版 damage{} 的同义替代,而是 HNAttribute 自己的伤害入口
  2. 需要明确的目标选择器,不会自动回退到 trigger
  3. 系统会自动补 mythic 标签
  4. amount <= 0 时走战斗管线
  5. 从 v2.2.0 开始,可通过 pp=true 让显式伤害参与战斗管线

调试方法

text
/hnattr inspect
/hnattr source
/hnattr trace attack_damage

相关文档

HN 系列插件文档