主题
概述
hna-dot 用于给目标施加持续伤害效果(Damage Over Time)。
基本语法
yaml
- hna-dot{参数} @目标选择器核心参数
| 参数 | 别名 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
amount | a | 数值 | 0 | 每跳伤害值 |
duration | d, t | 整数 | 60 | 总持续时间(tick) |
interval | i | 整数 | 20 | 跳动间隔(tick) |
delay | dl | 整数 | 0 | 初始延迟(tick) |
mode | m | 字符串 | refresh | 重施策略 |
key | k | 字符串 | - | 实例 key |
percent | p | 布尔 | false | 是否按百分比 |
participate-pipeline | pp | 布尔 | false | 是否参与战斗管线 |
扩展参数
| 参数 | 别名 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
source-type | st | 字符串 | dot | 来源类型 |
damage-type | dt | 字符串 | dot | 伤害类型 |
tags | t | 字符串 | - | 附加标签 |
max-stacks | ms | 整数 | 1 | 最大层数 |
stop-on-caster-death | siv | 布尔 | true | 来源失效时是否停止 |
基本示例
yaml
# 最简单的 DOT:每秒 2 点伤害,持续 3 秒
- hna-dot{amount=2;duration=60;interval=20;key="burn"} @target
# 短写形式
- hna-dot{a=2;d=60;i=20;k="burn"} @target重施策略
通过 mode 参数控制:
refresh:刷新时长,保持最高等级(默认)stack:叠加层数replace:直接替换ignore:忽略新的施加
yaml
# 刷新模式
- hna-dot{a=2;d=60;i=20;m=refresh;k="burn"} @target
# 叠加模式,最多 5 层
- hna-dot{a=2;d=60;i=20;m=stack;ms=5;k="bleed"} @target实际应用场景
场景 1:火焰灼烧
yaml
FireBurn:
Skills:
- hna-damage{amount=50;damage-type=fire} @target
- hna-dot{amount=3;duration=100;interval=20;key="burn"} @target
- effect:particles{p=FLAME;a=10} @target场景 2:流血效果
yaml
BleedingStrike:
Skills:
- hna-damage{amount=80} @target
- hna-dot{amount=2;duration=80;interval=20;mode=stack;max-stacks=3;key="bleed"} @target场景 3:中毒效果
yaml
PoisonCloud:
Skills:
- hna-dot{amount=1;duration=200;interval=20;key="poison"} @PlayersInRadius{r=5}
- effect:particles{p=VILLAGER_ANGRY;a=50} @Self场景 4:百分比 DOT
yaml
PercentDot:
Skills:
# 每秒造成目标最大生命 2% 的伤害
- hna-dot{amount=2;percent=true;duration=100;interval=20;key="curse"} @targetDOT 参与战斗管线(v2.2.0+)
从 2.2.0 版本开始,DOT 每跳可以通过 participate-pipeline 参数进入战斗管线。
基本用法
yaml
# DOT 每跳参与管线
- hna-dot{a=5;d=60;i=20;pp=true;st=dot;dt=fire} @target
# 百分比 DOT 参与管线
- hna-dot{a=3;p=true;d=60;i=20;pp=true;st=dot;dt=poison} @target行为差异
不开启 pp=true(默认):
- DOT 每跳直接结算,不经过战斗管线
- 保持原有的周期伤害语义
- 适合纯粹的持续伤害效果
开启 pp=true:
- 每跳伤害进入战斗管线
- 可被增减伤、暴击等阶段影响
- 可通过管线配置的标签规则控制
实际应用
yaml
# 灼烧 DOT,每跳吃增伤但不暴击
- hna-dot{a=8;d=100;i=20;pp=true;st=dot;dt=fire;k="burn"} @target
# 流血 DOT,按百分比且参与管线
- hna-dot{a=2;p=true;d=80;i=20;pp=true;st=dot;dt=physical;k="bleed"} @target
# 普通中毒,不参与管线(默认行为)
- hna-dot{a=5;d=60;i=20;st=dot;dt=poison;k="poison"} @target完整技能示例
yaml
FireballWithDot:
Cooldown: 10
Skills:
# 初始伤害
- hna-damage{amount=100;damage-type=fire;source-type=skill} @target
# 施加灼烧 DOT
- hna-dot{
amount=5;
duration=100;
interval=20;
mode=refresh;
key="fireball-burn";
damage-type=fire;
source-type=dot
} @target
# 特效
- effect:particles{p=FLAME;a=20} @target
- sound{s=entity.blaze.shoot} @target注意事项
key参数用于标识 DOT 实例,建议使用有意义的名称- 不写
key时会回退到damage-type duration和interval单位都是 tick(20 tick = 1 秒)- DOT 每跳默认走的是无击退内部伤害
- 需要明确的目标选择器
- 从 v2.2.0 开始,可通过
pp=true让 DOT 每跳参与战斗管线
调试方法
text
/hnattr periodic list
/hnattr periodic inspect <key>
/hnattr periodic debug detail <key>