refactor(属性系统): 重构英雄属性系统,将属性定义移至HeroAttrs模块
- 将Attrs和DBuff相关定义从SkillSet迁移至HeroAttrs - 新增NeAttrs枚举用于管理负面状态 - 重构HeroViewComp中的buff/debuff处理逻辑 - 优化属性分类和分组,增加新属性类型 - 移除旧的DBuff相关代码,改用统一的负面状态管理
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import * as exp from "constants";
|
||||
import { HType } from "./heroSet";
|
||||
|
||||
/**
|
||||
@@ -10,51 +11,115 @@ export enum BType {
|
||||
RATIO = 1 //百分比型
|
||||
}
|
||||
|
||||
export enum NeAttrs {
|
||||
IN_FROST = 0,
|
||||
IN_STUN = 1,
|
||||
IN_BURN = 2,
|
||||
IN_POISON = 3,
|
||||
}
|
||||
export const getNeAttrs = () => {
|
||||
let reAttrs = {};
|
||||
Object.keys(NeAttrs).forEach(key => {
|
||||
if (!isNaN(Number(key))) {
|
||||
reAttrs[Number(key)] = {
|
||||
value: 0,
|
||||
time: 0,
|
||||
};
|
||||
}
|
||||
});
|
||||
return reAttrs;
|
||||
}
|
||||
// ========== 属性枚举 ==========
|
||||
/**
|
||||
* 英雄属性枚举
|
||||
* 定义所有可用的战斗属性类型
|
||||
* 按逻辑分组排序:基础生存 → 攻击属性 → 防御属性 → 特殊效果 → 基础属性
|
||||
*/
|
||||
export enum Attrs {
|
||||
HP_MAX = 0, //生命值
|
||||
MP_MAX = 1, //魔法值
|
||||
SHIELD_MAX = 2, //护盾
|
||||
AP = 3, //攻击力
|
||||
MAP = 4, //魔法攻击力
|
||||
DEF = 5, //防御
|
||||
MDEF = 6, //魔法防御
|
||||
CRITICAL = 7, //暴击率
|
||||
CRITICAL_DMG = 8, //暴击伤害
|
||||
DODGE = 9, //闪避
|
||||
HIT = 10, //命中
|
||||
WFUNY = 11, // 风怒
|
||||
AS = 12, //攻击速度,直接减技能cd
|
||||
REFLICT = 13, //反伤比率
|
||||
LIFESTEAL = 14, //吸血比率
|
||||
BACK = 15, //攻击带击退概率
|
||||
DEBACK = 16, //被攻击击退概率
|
||||
CON_RES = 17, //控制抗性
|
||||
ICE_RES = 18, //冰冻抗性
|
||||
FIRE_RES = 19, //火抗性
|
||||
WIND_RES = 20, //风抗性
|
||||
ICE_POWER = 21, //冰冻伤害效果提升
|
||||
FIRE_POWER = 22, //火伤害效果提升
|
||||
WIND_POWER = 23, //风伤害效果提升
|
||||
BUFF_UP = 24, //buff效果提升
|
||||
DBUFF_UP = 25, //debuff效果提升
|
||||
DIS = 26, //攻击距离
|
||||
SPEED = 27, //移动速度加成,默认都是百分比
|
||||
SHIELD_UP = 28, //护盾效果提升
|
||||
BURN = 29, //攻击带易伤
|
||||
DEBURN = 30, //被攻击易伤
|
||||
PUNCTURE = 31, // 穿刺次数
|
||||
PUNCTURE_DMG = 32, //穿刺伤害加成
|
||||
// 基础属性
|
||||
STRENGTH = 33, //力量
|
||||
INTELLIGENCE = 34, //智力
|
||||
AGILITY = 35, //敏捷
|
||||
SPIRIT = 36, //精神
|
||||
LUCK = 37, //幸运
|
||||
// ========== 基础生存属性 (0-9) ==========
|
||||
HP_MAX = 0, // 最大生命值
|
||||
MP_MAX = 1, // 最大魔法值
|
||||
SHIELD_MAX = 2, // 最大护盾值
|
||||
HP_REGEN = 3, // 生命回复
|
||||
MP_REGEN = 4, // 魔法回复
|
||||
HEAL_EFFECT = 5, // 治疗效果
|
||||
|
||||
// ========== 攻击属性 (10-19) ==========
|
||||
AP = 10, // 攻击力
|
||||
MAP = 11, // 魔法攻击力
|
||||
DIS = 12, // 攻击距离
|
||||
AS = 13, // 攻击速度(减少技能CD)
|
||||
SKILL_DURATION = 14, // 技能持续时间
|
||||
AREA_OF_EFFECT = 15, // 作用范围
|
||||
PIERCE = 16, // 穿透次数
|
||||
|
||||
// ========== 防御属性 (20-29) ==========
|
||||
DEF = 20, // 物理防御
|
||||
MDEF = 21, // 魔法防御
|
||||
DODGE = 22, // 闪避率
|
||||
BLOCK = 23, // 格挡率
|
||||
DAMAGE_REDUCTION = 24, // 伤害减免
|
||||
THORNS = 25, // 反伤
|
||||
CRITICAL_RESIST = 26, // 暴击抗性
|
||||
CON_RES = 27, // 控制抗性
|
||||
MAGIC_RES = 28, // 魔法抗性
|
||||
|
||||
// ========== 暴击与命中属性 (30-39) ==========
|
||||
CRITICAL = 30, // 暴击率
|
||||
CRITICAL_DMG = 31, // 暴击伤害
|
||||
HIT = 32, // 命中率
|
||||
|
||||
// ========== 元素属性 (40-49) ==========
|
||||
ICE_RES = 40, // 冰冻抗性
|
||||
FIRE_RES = 41, // 火焰抗性
|
||||
WIND_RES = 42, // 自然抗性
|
||||
ICE_POWER = 43, // 冰冻伤害加成
|
||||
FIRE_POWER = 44, // 火焰伤害加成
|
||||
WIND_POWER = 45, // 自然伤害加成
|
||||
|
||||
|
||||
// ========== 特殊效果属性 (50-59) ==========
|
||||
LIFESTEAL = 50, // 吸血比率
|
||||
MANASTEAL = 51, // 吸蓝比率
|
||||
FREEZE_CHANCE = 52, // 冰冻概率
|
||||
BURN_CHANCE = 53, // 燃烧概率
|
||||
STUN_CHANCE = 54, // 眩晕概率
|
||||
KNOCKBACK = 55, // 击退概率
|
||||
SLOW_CHANCE = 56, // 减速概率
|
||||
POISON_CHANCE = 57, // 中毒概率
|
||||
CHAIN_CHANCE = 58, // 连锁概率
|
||||
EXPLOSION_CHANCE = 59, // 爆炸概率
|
||||
|
||||
// ========== 增益效果属性 (60-69) ==========
|
||||
BUFF_UP = 60, // Buff效果提升
|
||||
DBUFF_UP = 61, // Debuff效果提升
|
||||
SHIELD_UP = 62, // 护盾效果提升
|
||||
SPEED = 63, // 移动速度加成
|
||||
EXP_GAIN = 64, // 经验获取
|
||||
GOLD_GAIN = 65, // 金币获取
|
||||
DROP_CHANCE = 66, // 掉落率
|
||||
REVIVE_COUNT = 67, // 复活次数
|
||||
REVIVE_TIME = 68, // 复活时间
|
||||
INVINCIBLE_TIME = 69, // 无敌时间
|
||||
|
||||
// ========== 武器进化相关 (70-79) ==========
|
||||
PUNCTURE = 70, // 穿刺次数
|
||||
PUNCTURE_DMG = 71, // 穿刺伤害
|
||||
BACK = 73, // 被击退概率(兼容旧代码)
|
||||
MOVE_SPEED = 74, // 移动速度
|
||||
BURN = 75, // 易伤效果
|
||||
WFUNY = 77, // 风怒
|
||||
|
||||
// ========== 生存与恢复相关 (80-89) ==========
|
||||
|
||||
// ========== 负面状态相关 (90-99) ==========
|
||||
|
||||
// ========== 基础属性(影响其他属性)(100-104) ==========
|
||||
STRENGTH = 90, // 力量(影响物理相关)
|
||||
INTELLIGENCE = 91, // 智力(影响魔法相关)
|
||||
AGILITY = 92, // 敏捷(影响速度和闪避)
|
||||
SPIRIT = 93, // 精神(影响抗性和特殊效果)
|
||||
LUCK = 94, // 幸运(影响暴击和特殊概率)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -78,49 +143,92 @@ export const getAttrs = () => {
|
||||
* 用于区分每个属性是数值型还是百分比型
|
||||
* - VALUE: 数值型属性(如生命值、攻击力等绝对数值)
|
||||
* - RATIO: 百分比型属性(如暴击率、闪避率等百分比数值)
|
||||
* 按新的Attrs枚举顺序重新组织
|
||||
*/
|
||||
export const AttrsType: Record<Attrs, BType> = {
|
||||
// ========== 数值型属性 ==========
|
||||
// ========== 基础生存属性(数值型) ==========
|
||||
[Attrs.HP_MAX]: BType.VALUE, // 最大生命值 - 数值型
|
||||
[Attrs.MP_MAX]: BType.VALUE, // 最大魔法值 - 数值型
|
||||
[Attrs.SHIELD_MAX]: BType.VALUE, // 最大护盾值 - 数值型
|
||||
[Attrs.HP_REGEN]: BType.VALUE, // 生命回复 - 数值型
|
||||
[Attrs.MP_REGEN]: BType.VALUE, // 魔法回复 - 数值型
|
||||
[Attrs.HEAL_EFFECT]: BType.RATIO, // 治疗效果 - 百分比型
|
||||
|
||||
// ========== 攻击属性(数值型) ==========
|
||||
[Attrs.AP]: BType.VALUE, // 攻击力 - 数值型
|
||||
[Attrs.MAP]: BType.VALUE, // 魔法攻击力 - 数值型
|
||||
[Attrs.DEF]: BType.VALUE, // 防御 - 数值型
|
||||
[Attrs.MDEF]: BType.VALUE, // 魔法防御 - 数值型
|
||||
[Attrs.DIS]: BType.VALUE, // 攻击距离 - 数值型
|
||||
[Attrs.BURN]: BType.VALUE, // 易伤 - 数值型
|
||||
[Attrs.DEBURN]: BType.VALUE, // 被攻击易伤 - 数值型
|
||||
[Attrs.PUNCTURE]: BType.VALUE, // 穿刺次数 - 数值型
|
||||
[Attrs.AS]: BType.RATIO, // 攻击速度 - 百分比型
|
||||
[Attrs.SKILL_DURATION]: BType.RATIO, // 技能持续时间 - 百分比型
|
||||
[Attrs.AREA_OF_EFFECT]: BType.VALUE, // 作用范围 - 数值型
|
||||
[Attrs.PIERCE]: BType.VALUE, // 穿透次数 - 数值型
|
||||
|
||||
// ========== 防御属性(混合类型) ==========
|
||||
[Attrs.DEF]: BType.VALUE, // 物理防御 - 数值型
|
||||
[Attrs.MDEF]: BType.VALUE, // 魔法防御 - 数值型
|
||||
[Attrs.DODGE]: BType.RATIO, // 闪避率 - 百分比型
|
||||
[Attrs.BLOCK]: BType.RATIO, // 格挡率 - 百分比型
|
||||
[Attrs.DAMAGE_REDUCTION]: BType.RATIO, // 伤害减免 - 百分比型
|
||||
[Attrs.THORNS]: BType.RATIO, // 反伤 - 百分比型
|
||||
|
||||
// ========== 暴击与命中属性(百分比型) ==========
|
||||
[Attrs.CRITICAL]: BType.RATIO, // 暴击率 - 百分比型
|
||||
[Attrs.CRITICAL_DMG]: BType.RATIO, // 暴击伤害 - 百分比型
|
||||
[Attrs.HIT]: BType.RATIO, // 命中率 - 百分比型
|
||||
[Attrs.CRITICAL_RESIST]: BType.RATIO, // 暴击抗性 - 百分比型
|
||||
[Attrs.CON_RES]: BType.RATIO, // 控制抗性 - 百分比型
|
||||
[Attrs.MAGIC_RES]: BType.RATIO, // 魔法抗性 - 百分比型
|
||||
|
||||
// ========== 元素属性(百分比型) ==========
|
||||
[Attrs.ICE_RES]: BType.RATIO, // 冰冻抗性 - 百分比型
|
||||
[Attrs.FIRE_RES]: BType.RATIO, // 火焰抗性 - 百分比型
|
||||
[Attrs.WIND_RES]: BType.RATIO, // 风抗性 - 百分比型
|
||||
[Attrs.ICE_POWER]: BType.RATIO, // 冰冻伤害加成 - 百分比型
|
||||
[Attrs.FIRE_POWER]: BType.RATIO, // 火焰伤害加成 - 百分比型
|
||||
[Attrs.WIND_POWER]: BType.RATIO, // 风伤害加成 - 百分比型
|
||||
|
||||
// ========== 特殊效果属性(百分比型) ==========
|
||||
[Attrs.LIFESTEAL]: BType.RATIO, // 吸血比率 - 百分比型
|
||||
[Attrs.MANASTEAL]: BType.RATIO, // 吸蓝 - 百分比型
|
||||
[Attrs.FREEZE_CHANCE]: BType.RATIO, // 冰冻概率 - 百分比型
|
||||
[Attrs.BURN_CHANCE]: BType.RATIO, // 燃烧概率 - 百分比型
|
||||
[Attrs.STUN_CHANCE]: BType.RATIO, // 眩晕概率 - 百分比型
|
||||
[Attrs.KNOCKBACK]: BType.RATIO, // 击退 - 百分比型
|
||||
[Attrs.SLOW_CHANCE]: BType.RATIO, // 减速概率 - 百分比型
|
||||
[Attrs.POISON_CHANCE]: BType.RATIO, // 中毒概率 - 百分比型
|
||||
[Attrs.CHAIN_CHANCE]: BType.RATIO, // 连锁概率 - 百分比型
|
||||
[Attrs.EXPLOSION_CHANCE]: BType.RATIO, // 爆炸概率 - 百分比型
|
||||
|
||||
// ========== 增益效果属性(百分比型) ==========
|
||||
[Attrs.BUFF_UP]: BType.RATIO, // Buff效果提升 - 百分比型
|
||||
[Attrs.DBUFF_UP]: BType.RATIO, // Debuff效果提升 - 百分比型
|
||||
[Attrs.SHIELD_UP]: BType.RATIO, // 护盾效果提升 - 百分比型
|
||||
[Attrs.SPEED]: BType.RATIO, // 移动速度加成 - 百分比型
|
||||
[Attrs.EXP_GAIN]: BType.RATIO, // 经验获取 - 百分比型
|
||||
[Attrs.GOLD_GAIN]: BType.RATIO, // 金币获取 - 百分比型
|
||||
[Attrs.DROP_CHANCE]: BType.RATIO, // 掉落率 - 百分比型
|
||||
[Attrs.REVIVE_COUNT]: BType.VALUE, // 复活次数 - 数值型
|
||||
[Attrs.REVIVE_TIME]: BType.RATIO, // 复活时间 - 百分比型
|
||||
[Attrs.INVINCIBLE_TIME]: BType.RATIO, // 无敌时间 - 百分比型
|
||||
|
||||
// ========== 武器进化相关(混合类型) ==========
|
||||
[Attrs.PUNCTURE]: BType.VALUE, // 穿刺次数 - 数值型
|
||||
[Attrs.PUNCTURE_DMG]: BType.RATIO, // 穿刺伤害 - 百分比型
|
||||
[Attrs.BACK]: BType.RATIO, // 被击退概率(兼容)- 百分比型
|
||||
[Attrs.MOVE_SPEED]: BType.VALUE, // 移动速度 - 数值型
|
||||
[Attrs.BURN]: BType.RATIO, // 易伤效果 - 百分比型
|
||||
[Attrs.WFUNY]: BType.RATIO, // 未知特殊属性 - 百分比型
|
||||
|
||||
// ========== 生存与恢复相关(混合类型) ==========
|
||||
|
||||
// ========== 负面状态相关(混合类型) ==========
|
||||
|
||||
// ========== 基础属性(数值型) ==========
|
||||
[Attrs.STRENGTH]: BType.VALUE, // 力量 - 数值型
|
||||
[Attrs.INTELLIGENCE]: BType.VALUE, // 智力 - 数值型
|
||||
[Attrs.AGILITY]: BType.VALUE, // 敏捷 - 数值型
|
||||
[Attrs.SPIRIT]: BType.VALUE, // 精神 - 数值型
|
||||
[Attrs.LUCK]: BType.VALUE, // 幸运 - 数值型
|
||||
|
||||
// ========== 百分比型属性 ==========
|
||||
[Attrs.CRITICAL]: BType.RATIO, // 暴击率 - 百分比型
|
||||
[Attrs.CRITICAL_DMG]: BType.RATIO, // 暴击伤害 - 百分比型
|
||||
[Attrs.DODGE]: BType.RATIO, // 闪避 - 百分比型
|
||||
[Attrs.HIT]: BType.RATIO, // 命中 - 百分比型
|
||||
[Attrs.WFUNY]: BType.RATIO, // 风怒 - 百分比型
|
||||
[Attrs.AS]: BType.RATIO, // 攻击速度 - 百分比型
|
||||
[Attrs.REFLICT]: BType.RATIO, // 反伤比率 - 百分比型
|
||||
[Attrs.LIFESTEAL]: BType.RATIO, // 吸血比率 - 百分比型
|
||||
[Attrs.BACK]: BType.RATIO, // 击退概率 - 百分比型
|
||||
[Attrs.CON_RES]: BType.RATIO, // 控制抗性 - 百分比型
|
||||
[Attrs.ICE_RES]: BType.RATIO, // 冰冻抗性 - 百分比型
|
||||
[Attrs.FIRE_RES]: BType.RATIO, // 火抗性 - 百分比型
|
||||
[Attrs.WIND_RES]: BType.RATIO, // 风抗性 - 百分比型
|
||||
[Attrs.ICE_POWER]: BType.RATIO, // 冰冻伤害效果提升 - 百分比型
|
||||
[Attrs.FIRE_POWER]: BType.RATIO, // 火伤害效果提升 - 百分比型
|
||||
[Attrs.WIND_POWER]: BType.RATIO, // 风伤害效果提升 - 百分比型
|
||||
[Attrs.DEBACK]: BType.RATIO, // 被击退概率 - 百分比型
|
||||
[Attrs.BUFF_UP]: BType.RATIO, // buff效果提升 - 百分比型
|
||||
[Attrs.DBUFF_UP]: BType.RATIO, // debuff效果提升 - 百分比型
|
||||
[Attrs.SPEED]: BType.RATIO, // 移动速度加成 - 百分比型
|
||||
[Attrs.SHIELD_UP]: BType.RATIO, // 护盾效果提升 - 百分比型
|
||||
[Attrs.PUNCTURE_DMG]: BType.RATIO, // 穿刺伤害加成 - 百分比型
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -177,6 +285,8 @@ export const HeroTypeGrowthConfig: Record<HType, HeroTypeAttrGrowth> = {
|
||||
[Attrs.MP_MAX]: 0.5, // 精神 -> 魔法值
|
||||
[Attrs.LIFESTEAL]: 0.4, // 精神 -> 吸血 (战士较高)
|
||||
[Attrs.MDEF]: 0.3, // 精神 -> 魔法防御
|
||||
[Attrs.HP_REGEN]: 0.2, // 精神 -> 生命回复
|
||||
[Attrs.MP_REGEN]: 0.3, // 精神 -> 魔法回复
|
||||
},
|
||||
[Attrs.LUCK]: {
|
||||
[Attrs.CRITICAL]: 0.8, // 幸运 -> 暴击率
|
||||
@@ -225,6 +335,7 @@ export const HeroTypeGrowthConfig: Record<HType, HeroTypeAttrGrowth> = {
|
||||
[Attrs.MP_MAX]: 2, // 智力 -> 魔法值 (法师最高)
|
||||
[Attrs.MAP]: 1.8, // 智力 -> 魔法攻击 (法师最高)
|
||||
[Attrs.MDEF]: 0.8, // 智力 -> 魔法防御
|
||||
[Attrs.AREA_OF_EFFECT]: 0.3, // 智力 -> 作用范围
|
||||
},
|
||||
[Attrs.AGILITY]: {
|
||||
[Attrs.CRITICAL]: 0.4, // 敏捷 -> 暴击率
|
||||
|
||||
Reference in New Issue
Block a user