Skip to content

damage_types yml 配置速查

damage_types/*.yml 负责定义伤害类型的显示身份和可选的通道减伤公式。

它不负责 Stage 编排(那是 Pipeline 的事),不负责属性绑定(那是属性的 channel + channel-role 的事)。


文件位置

text
plugins/HNAttribute/damage_types/

默认自带:

  • physical.yml
  • magic.yml

完整字段速查

yml
id: physical
display-order: 0
display-name: "伤害"
display: "{color}{value}"
color: "&f"
special-color: "&f&l"
description: "物理伤害"

# 可选:自定义减伤公式
resist-formula: |-
  effective_defense = max(0, channel_resist - channel_penetration_flat) * (1 - channel_penetration_rate / 100)
  return max(0, channel_value - effective_defense)

字段说明

id

伤害类型唯一 ID。会被技能参数 dt=<id>、内部伤害上下文、显示层引用。

display-order

显示顺序,数值越小越靠前。用于多通道伤害的显示排序。

display-name

玩家看到的伤害类型名称。

display

伤害数字的显示模板。可用占位符:

  • {color} -- 颜色代码
  • {value} -- 伤害数值

color

普通颜色代码。

special-color

特殊颜色,通常用于暴击显示。

description

给服主看的说明文字。

resist-formula(可选)

通道专属的减伤公式。如果配置了,per_channel 类型的 resist Stage 在处理该通道时会优先使用这个公式,而不是 Stage 自身的默认公式。

可用变量:

变量含义
channel_value当前通道的伤害值
channel_resist当前通道的抗性值
channel_penetration_flat当前通道的固定穿透
channel_penetration_rate当前通道的百分比穿透
self_*攻击者的任意属性
target_*受击者的任意属性

默认伤害类型

physical

yml
id: physical
display-order: 0
display-name: "伤害"
color: "&f"
resist-formula: |-
  effective_defense = max(0, channel_resist - channel_penetration_flat) * (1 - channel_penetration_rate / 100)
  return max(0, channel_value - effective_defense)

物理伤害使用固定减伤:伤害值减去有效防御力。

magic

yml
id: magic
display-order: 10
display-name: "魔法伤害"
color: "&b"
resist-formula: |-
  effective_resist = max(0, channel_resist - channel_penetration_flat) * (1 - channel_penetration_rate / 100)
  return max(0, channel_value * (1 - min(effective_resist, 100) / 100))

魔法伤害使用百分比减伤:按抗性百分比减少伤害。


新增伤害类型

新建一个 yml 文件即可:

yml
# damage_types/thunder.yml
id: thunder
display-order: 20
display-name: "雷电伤害"
display: "{color}{value}"
color: "&e"
special-color: "&e&l"
description: "雷电伤害"

如果不配 resist-formula,该通道会使用 stages/resist.yml 的默认公式。


常见错误

错误 1:在 damage_types 里写 Stage 编排

yml
pipelines:
  standard:
    - hit
    - dodge
    - damage

Stage 编排现在由 pipelines/*.yml 负责。

错误 2:把属性绑定职责写进 damage_types

属性归属应放在属性定义里的 channel + channel-role

damage_types/*.yml 负责的是:

  • 显示名
  • 显示模板
  • 颜色
  • 可选 resist-formula

错误 3:id 和文件名不一致

文件名可以随意,但 id 字段才是真正的标识。建议保持一致以避免混淆。

HN 系列插件文档