元素系统
默认元素
| 元素 ID |
显示名 |
图标 |
颜色 |
积累方式 |
异常效果 |
LIUHUO |
流火 |
🔥 |
&c |
伤害 × 50% |
灼烧:8 秒,每秒 2% 当前生命的流火伤害 |
HANSHUANG |
寒霜 |
❄ |
&b |
每次固定 25 |
虚弱:4 秒,物理抗性 / 法抗 -30% |
LEIZHE |
雷蛰 |
⚡ |
&e |
法术强度 × 0.2 |
易伤:6 秒,受到的技能伤害 +25% |
元素配置
# elements.yml
elements:
LIUHUO:
display: "&c流火"
icon: '🔥' # 伤害飘字图标(默认 ✦)
color: '&c' # 伤害飘字颜色(默认 &f)
threshold: 30 # 积累阈值,达到后触发异常(默认 100)
decay_per_second: 1 # 每秒衰减量(默认 5)
accumulation:
mode: DAMAGE_PERCENT # DAMAGE_PERCENT / FIXED / ATTRIBUTE
value: 0.5 # 每次伤害 × 50% 计入积累
allow_sources: # 允许积累的来源,留空 = 全部
- ATTACK
- SKILL
ailment: LIUHUO_DOT # 达到阈值时触发的异常 ID
积累模式
| 模式 |
积累值 |
DAMAGE_PERCENT |
元素伤害 × value |
FIXED |
每次固定 value |
ATTRIBUTE |
攻击者 attribute × multiplier,attribute 支持 SPELL_POWER 或 ATTACK_DAMAGE |
积累规则:
- 只有带元素的伤害才会积累;来源为
ATTACK(普攻或 attacktype=attack)或 SKILL(其他 DamageRequest 伤害,包括异常 DOT)。
- 目标的元素抗性会降低积累量,最多降低 75%。
- 达到阈值后触发异常并清零该元素积累。
- 没有元素伤害输入时每秒按
decay_per_second 衰减。
异常配置
# ailments.yml
ailments:
LIUHUO_DOT:
display: "&c流火"
duration: 160 # tick,160 = 8 秒
refresh_policy: RESET # RESET / STACK / IGNORE / REPLACE
max_stacks: 1 # 仅 STACK 策略使用
triggers:
- type: DAMAGE_PERCENT
value: 0.02 # 2% 当前生命
interval: 20 # 每 20 tick 触发一次
HANSHUANG_WEAKEN:
display: "&b寒霜"
duration: 80
refresh_policy: RESET
triggers:
- type: ATTRIBUTE_MOD
attribute: PHYSICAL_RESIST
value: -0.3 # 属性 × (1 - 0.3)
- type: ATTRIBUTE_MOD
attribute: SPELL_RESIST
value: -0.3
LEIZHE_BREAK:
display: "&e雷蛰"
duration: 120
refresh_policy: RESET
triggers:
- type: RESISTANCE_REDUCTION
value: -0.25 # 受到的技能伤害 +25%
刷新策略
| 策略 |
行为 |
RESET |
已存在时重新计时(默认) |
STACK |
叠加层数,每层独立计时,上限 max_stacks |
IGNORE |
已存在时忽略新触发 |
REPLACE |
移除旧的,应用新的 |
触发器类型
| 类型 |
说明 |
DAMAGE_PERCENT |
每 interval tick 造成 value × 当前生命的伤害;伤害带该元素、按法术类型走 ItemCore 伤害流程,不暴击 |
DAMAGE_FIXED |
每 interval tick 造成固定 value 点原版伤害(不经过 ItemCore 伤害计算) |
ATTRIBUTE_MOD |
持续期间将目标 attribute 乘以 (1 + value),可用于任意属性 |
RESISTANCE_REDUCTION |
持续期间提高目标受到的 DamageRequest 伤害(技能、icdamage、DOT),value 为负数;原版普攻不受影响 |
POTION_EFFECT |
尚未实现 |
三种默认异常有内置粒子效果(火焰 / 雪花 / 紫色尘埃),自定义异常没有粒子。
拓展自定义元素
ItemCore.getElementRegistry().register(new ElementType("ARCANE", "奥术"));
注册后在 elements.yml 与 ailments.yml 中配置积累与异常规则,并可在物品 attributes.element_mastery / element_resist 与技能 element=ARCANE 中使用。自定义元素应在物品配置加载前注册。