主题
概述
hna-damage 是 HNAttribute 提供的伤害机制,可以造成固定值伤害、百分比伤害,或接入完整的战斗管线。
基本语法
yaml
- hna-damage{参数} @目标选择器参数列表
| 参数 | 别名 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
amount | a | 数值 | 0 | 基础伤害值 |
multiplier | m | 数值 | 1.0 | 最终倍率 |
percent | p | 布尔 | false | 是否按目标最大生命百分比 |
source-type | st | 字符串 | skill | 来源类型 |
damage-type | dt | 字符串 | physical | 伤害类型 |
tags | t | 字符串 | - | 附加标签(逗号分隔) |
pi | - | 布尔 | false | 是否绕过伤害间隔 |
pk | - | 布尔 | false | 是否抑制击退 |
participate-pipeline | pp | 布尔 | false | 是否参与战斗管线 |
三种伤害模式
1. 固定值伤害
直接造成指定数值的伤害,不经过战斗管线。
yaml
# 造成 100 点固定伤害
- hna-damage{amount=100} @target
# 造成 100 点固定伤害,倍率 1.5
- hna-damage{amount=100;multiplier=1.5} @target2. 百分比伤害
按目标最大生命值的百分比造成伤害。
yaml
# 造成目标最大生命 10% 的伤害
- hna-damage{amount=10;percent=true} @target
# 造成目标最大生命 15% 的伤害,倍率 1.2
- hna-damage{amount=15;percent=true;multiplier=1.2} @target3. 战斗管线伤害
不指定 amount 或 amount <= 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 - 这次结算就可能产出火焰分量
如果想做"必须开火焰赋予才能打出火伤"
推荐配置方式:
- 自己增加一个独立属性,例如
fire_imbue - 在
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如果想做"开技能期间临时带火"
两种思路:
- **赋予流:**先给自己临时加
fire_imbue,让普攻/常规战斗管线在持续时间内放行火通道 - **技能直伤流:**技能本身直接用
hna-damage{dt=fire},不改平A语义
注意事项
hna-damage不是 Mythic 原版damage{}的同义替代,而是 HNAttribute 自己的伤害入口- 需要明确的目标选择器,不会自动回退到
trigger - 系统会自动补
mythic标签 amount <= 0时走战斗管线- 从 v2.2.0 开始,可通过
pp=true让显式伤害参与战斗管线
调试方法
text
/hnattr inspect
/hnattr source
/hnattr trace attack_damage相关文档
- 战斗流程与显示
- damage-types 配置速查
- 如何配置战斗管线
- MythicMobs 联动总览 N/HNAttribute/如何配置战斗管线)
- MythicMobs 联动总览
