Skip to content

概述

hna-dot 用于给目标施加持续伤害效果(Damage Over Time)。

基本语法

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

核心参数

参数别名类型默认值说明
amounta数值0每跳伤害值
durationd, t整数60总持续时间(tick)
intervali整数20跳动间隔(tick)
delaydl整数0初始延迟(tick)
modem字符串refresh重施策略
keyk字符串-实例 key
percentp布尔false是否按百分比
participate-pipelinepp布尔false是否参与战斗管线

扩展参数

参数别名类型默认值说明
source-typest字符串dot来源类型
damage-typedt字符串dot伤害类型
tagst字符串-附加标签
max-stacksms整数1最大层数
stop-on-caster-deathsiv布尔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"} @target

DOT 参与战斗管线(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

注意事项

  1. key 参数用于标识 DOT 实例,建议使用有意义的名称
  2. 不写 key 时会回退到 damage-type
  3. durationinterval 单位都是 tick(20 tick = 1 秒)
  4. DOT 每跳默认走的是无击退内部伤害
  5. 需要明确的目标选择器
  6. 从 v2.2.0 开始,可通过 pp=true 让 DOT 每跳参与战斗管线

调试方法

text
/hnattr periodic list
/hnattr periodic inspect <key>
/hnattr periodic debug detail <key>

相关文档

HN 系列插件文档