主题
damage_types yml 配置速查
damage_types/*.yml 负责定义伤害类型的显示身份和可选的通道减伤公式。
它不负责 Stage 编排(那是 Pipeline 的事),不负责属性绑定(那是属性的 channel + channel-role 的事)。
文件位置
text
plugins/HNAttribute/damage_types/默认自带:
physical.ymlmagic.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
- damageStage 编排现在由 pipelines/*.yml 负责。
错误 2:把属性绑定职责写进 damage_types
属性归属应放在属性定义里的 channel + channel-role。
damage_types/*.yml 负责的是:
- 显示名
- 显示模板
- 颜色
- 可选
resist-formula
错误 3:id 和文件名不一致
文件名可以随意,但 id 字段才是真正的标识。建议保持一致以避免混淆。
