refactor(skillSet): 基本功完成 新buff系统 优化DBuff与Attrs映射及转换逻辑
- 规范化DBuff的枚举命名,修正属性对应关系 - 统一DBuff与Attrs的双向映射,通过TransformBuffs函数处理转换 - 移除旧的getAttrFieldFromDebuff方法,改用更灵活的映射数组 - 更新Attrs枚举,增加被易伤、防护盾等新属性 - 重新调整AttrsType映射,保证属性类型一致性 refactor(hero): 重构Hero和Monster初始化属性及buff系统 - Hero初始化时完善基础属性赋值,新增基础移动速度与攻击距离 - Hero使用initAttrs替代initBuffsDebuffs,重构buff/debuff初始化流程 - Monster初始化简化,统一按Hero写法初始化基础属性和Attrs - 实现buff/debuff属性智能覆盖与叠加时长的改进逻辑 - 属性计算改用统一逻辑,支持数值型和百分比型准确计算 - 增加属性值范围限制,确保部分属性在合理区间内 refactor(heroViewComp): 优化buff/debuff管理及状态判断 - 统一buff和debuff的持久与临时管理字典及更新方法 - 优化临时buff/debuff的更新时间处理,自动触发属性重新计算 - 提供isStun和isFrost接口简化眩晕、冰冻状态判断 - 规范注释及代码格式,提升可读性和维护性 refactor(skillConComp): 优化眩晕与冰冻状态判断逻辑 - 移除遍历判断,改用HeroViewComp的isStun和isFrost方法 - 简化技能冷却更新逻辑,提升性能 chore(heroSet): 添加AttrSet枚举定义属性最大值限制 docs(rogueConfig): 更新说明文档中的属性枚举定义说明 - 将属性增强枚举由BuffAttr修改为Attrs,以保持一致性
This commit is contained in:
@@ -101,17 +101,18 @@ export enum DBuff {
|
||||
SLOW = 2, //减速 - 对应Attrs.AS (攻击速度), BType.RATIO
|
||||
FROST = 3, //冰冻 - 对应Attrs.ICE_RES (冰冻抗性), BType.RATIO
|
||||
BURN = 4, //易伤 - 对应Attrs.DEF/MDEF (防御/魔防), BType.RATIO, 默认次数是5, 技能配置的devC是额外次数
|
||||
DEAS = 5, //减速 - 对应Attrs.AS (攻击速度), BType.RATIO, 直接+技能cd
|
||||
DEHP = 6, //减hp - 对应Attrs.HP_MAX (最大生命值), BType.RATIO
|
||||
DEAP = 7, //减atk - 对应Attrs.AP (攻击力), BType.RATIO
|
||||
DEMGP = 8, //减魔法伤害 - 对应Attrs.MAP (魔法攻击力), BType.RATIO
|
||||
BACK = 9, //击退概率 - 对应Attrs.KNOCKBACK (击退概率), BType.RATIO
|
||||
AS = 5, //减速 - 对应Attrs.AS (攻击速度), BType.RATIO, 直接+技能cd
|
||||
HP_MAX = 6, //减hp - 对应Attrs.HP_MAX (最大生命值), BType.RATIO
|
||||
AP = 7, //减atk - 对应Attrs.AP (攻击力), BType.RATIO
|
||||
MGP = 8, //减魔法伤害 - 对应Attrs.MAP (魔法攻击力), BType.RATIO
|
||||
DEBACK = 9, //击退概率 - 对应Attrs.BACK (击退概率), BType.RATIO
|
||||
CRITICAL = 10, //-暴击率 - 对应Attrs.CRITICAL (暴击率), BType.RATIO
|
||||
CRIT_DAMAGE = 11, //-暴击伤害 - 对应Attrs.CRITICAL_DMG (暴击伤害), BType.RATIO
|
||||
DODGE = 12, //-闪避 - 对应Attrs.DODGE (闪避), BType.RATIO
|
||||
DBUFFUP=13, //edbuff效果提升
|
||||
BUFF_DOWN = 14,// buff效果减弱
|
||||
SPEED = 15, //移动速度下降 - 对应Attrs.MOVE_SPEED (移动速度), BType.RATIO
|
||||
DEBURN= 16, //被攻击带易伤
|
||||
}
|
||||
|
||||
|
||||
@@ -131,19 +132,23 @@ export enum Attrs {
|
||||
AS = 12, //攻击速度,直接减技能cd
|
||||
REFLICT = 13, //反伤比率
|
||||
LIFESTEAL = 14, //吸血比率
|
||||
KNOCKBACK = 15, //攻击带击退概率
|
||||
CON_RES = 16, //控制抗性
|
||||
ICE_RES = 17, //冰冻抗性
|
||||
FIRE_RES = 18, //火抗性
|
||||
WIND_RES = 19, //风抗性
|
||||
ICE_POWER = 20, //冰冻伤害效果提升
|
||||
FIRE_POWER = 21,//火伤害效果提升
|
||||
WIND_POWER = 22,//风伤害效果提升
|
||||
SHIELD_UP = 23, //护盾效果提升
|
||||
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, //被攻击易伤
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -184,6 +189,8 @@ export const AttrsType: Record<Attrs, BType> = {
|
||||
[Attrs.DEF]: BType.VALUE, // 防御 - 数值型
|
||||
[Attrs.MDEF]: BType.VALUE, // 魔法防御 - 数值型
|
||||
[Attrs.DIS]: BType.VALUE, // 攻击距离 - 数值型
|
||||
[Attrs.BURN]: BType.VALUE, // 易伤 - 数值型
|
||||
[Attrs.DEBURN]: BType.VALUE, // 被攻击易伤 - 数值型
|
||||
|
||||
// ========== 百分比型属性 ==========
|
||||
[Attrs.CRITICAL]: BType.RATIO, // 暴击率 - 百分比型
|
||||
@@ -194,7 +201,7 @@ export const AttrsType: Record<Attrs, BType> = {
|
||||
[Attrs.AS]: BType.RATIO, // 攻击速度 - 百分比型
|
||||
[Attrs.REFLICT]: BType.RATIO, // 反伤比率 - 百分比型
|
||||
[Attrs.LIFESTEAL]: BType.RATIO, // 吸血比率 - 百分比型
|
||||
[Attrs.KNOCKBACK]: BType.RATIO, // 击退概率 - 百分比型
|
||||
[Attrs.BACK]: BType.RATIO, // 击退概率 - 百分比型
|
||||
[Attrs.CON_RES]: BType.RATIO, // 控制抗性 - 百分比型
|
||||
[Attrs.ICE_RES]: BType.RATIO, // 冰冻抗性 - 百分比型
|
||||
[Attrs.FIRE_RES]: BType.RATIO, // 火抗性 - 百分比型
|
||||
@@ -202,10 +209,11 @@ export const AttrsType: Record<Attrs, BType> = {
|
||||
[Attrs.ICE_POWER]: BType.RATIO, // 冰冻伤害效果提升 - 百分比型
|
||||
[Attrs.FIRE_POWER]: BType.RATIO, // 火伤害效果提升 - 百分比型
|
||||
[Attrs.WIND_POWER]: BType.RATIO, // 风伤害效果提升 - 百分比型
|
||||
[Attrs.SHIELD_UP]: 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, // 护盾效果提升 - 百分比型
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -227,61 +235,44 @@ export const getAttrType = (attrType: Attrs): BType => {
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取 debuff 对应的属性字段
|
||||
* @param debuffType DBuff 类型
|
||||
* @returns 对应的 Attrs 字段,如果是状态类 debuff(只缓存)返回 -1
|
||||
*
|
||||
* 扩展说明:
|
||||
* 1. 普通 debuff:返回 Attrs 值(会直接修改属性)
|
||||
* 2. 状态类 debuff:返回 -1(只缓存,不修改属性)
|
||||
*
|
||||
* 新增 DBuff 时:
|
||||
* - 如果需要修改属性,在 debuffAttrMap 中添加映射: [DBuff.NEW]: Attrs.ATTR
|
||||
* - 如果只需缓存状态,在 stateDebuffSet 中添加: DBuff.NEW
|
||||
* DBuff 与 Attrs 的双向映射关系表
|
||||
* 格式:[DBuff, Attrs 或 -1(状态类)]
|
||||
*/
|
||||
export const getAttrFieldFromDebuff = (debuffType: DBuff): number => {
|
||||
// 状态类 debuff(只需缓存,不影响属性)
|
||||
const stateDebuffSet = new Set<DBuff>([
|
||||
DBuff.STUN,
|
||||
DBuff.FROST,
|
||||
]);
|
||||
|
||||
// 检查是否是状态类 debuff
|
||||
if (stateDebuffSet.has(debuffType)) {
|
||||
return -1; // 表示只缓存,不影响属性
|
||||
}
|
||||
const DEBUFF_ATTR_MAP: [DBuff, number][] = [
|
||||
[DBuff.STUN, -1], // 眩晕 - 状态类
|
||||
[DBuff.SLOW, Attrs.SPEED], // 减速 -> 速度
|
||||
[DBuff.FROST, -1], // 冰冻 - 状态类
|
||||
[DBuff.DEBURN, Attrs.DEBURN], // 被易伤 -> 被易伤
|
||||
[DBuff.BURN, Attrs.BURN], // 易伤 -> 易伤效果
|
||||
[DBuff.AS, Attrs.AS], // 减cd -> 攻击速度
|
||||
[DBuff.HP_MAX, Attrs.HP_MAX], // 减hp -> 最大生命值
|
||||
[DBuff.AP, Attrs.AP], // 减atk -> 攻击力
|
||||
[DBuff.MGP, Attrs.MAP], // 减魔法 -> 魔法攻击力
|
||||
[DBuff.DEBACK, Attrs.DEBACK], // 被击退 -> 被击退概率
|
||||
[DBuff.CRITICAL, Attrs.CRITICAL], // -暴击率 -> 暴击率
|
||||
[DBuff.CRIT_DAMAGE, Attrs.CRITICAL_DMG], // -暴击伤害 -> 暴击伤害
|
||||
[DBuff.DODGE, Attrs.DODGE], // -闪避 -> 闪避
|
||||
[DBuff.DBUFFUP, Attrs.DBUFF_UP], // debuff提升 -> debuff提升
|
||||
[DBuff.BUFF_DOWN, Attrs.BUFF_UP], // buff减弱 -> buff效果
|
||||
[DBuff.SPEED, Attrs.SPEED], // 移动速度下降 -> 移动速度
|
||||
];
|
||||
|
||||
// ==================== 普通 Debuff 到 Attrs 的完整映射表 ====================
|
||||
// 格式: [DBuff 类型]: Attrs 属性(会直接修改属性值)
|
||||
// 注意:新增普通 debuff 时,在此添加映射关系即可
|
||||
const debuffAttrMap: Record<DBuff, number> = {
|
||||
[DBuff.STUN]: Attrs.CON_RES, // 眩晕 -> 控制抗性
|
||||
[DBuff.SLOW]: Attrs.AS, // 减速 -> 攻击速度
|
||||
[DBuff.FROST]: Attrs.ICE_RES, // 冰冻 -> 冰冻抗性
|
||||
[DBuff.BURN]: Attrs.DEF, // 易伤 -> 防御
|
||||
[DBuff.DEAS]: Attrs.AS, // 减cd -> 攻击速度
|
||||
[DBuff.DEHP]: Attrs.HP_MAX, // 减hp -> 最大生命值
|
||||
[DBuff.DEAP]: Attrs.AP, // 减atk -> 攻击力
|
||||
[DBuff.DEMGP]: Attrs.MAP, // 减魔法 -> 魔法攻击力
|
||||
[DBuff.BACK]: Attrs.KNOCKBACK, // 击退 -> 击退概率
|
||||
[DBuff.CRITICAL]: Attrs.CRITICAL, // -暴击率 -> 暴击率
|
||||
[DBuff.CRIT_DAMAGE]: Attrs.CRITICAL_DMG, // -暴击伤害 -> 暴击伤害
|
||||
[DBuff.DODGE]: Attrs.DODGE, // -闪避 -> 闪避
|
||||
[DBuff.DBUFFUP]: Attrs.DBUFF_UP, // debuff提升 -> debuff提升
|
||||
[DBuff.BUFF_DOWN]: Attrs.BUFF_UP, // buff减弱 -> buff效果
|
||||
[DBuff.SPEED]: Attrs.SPEED, // 移动速度下降 -> 移动速度
|
||||
|
||||
};
|
||||
|
||||
const attrField = debuffAttrMap[debuffType];
|
||||
|
||||
// 如果映射不存在,打印警告信息(方便开发调试)
|
||||
if (attrField === undefined) {
|
||||
console.warn(`[SkillSet] 未知的 DBuff 类型: ${debuffType},请在 getAttrFieldFromDebuff 添加映射关系或放入 stateDebuffSet`);
|
||||
return -1;
|
||||
/**
|
||||
* 双向转换:DBuff ⇄ Attrs
|
||||
* @param key DBuff 或 Attrs 枚举值
|
||||
* @param isDebuff true: key 是 DBuff, false: key 是 Attrs
|
||||
* @returns 对应的转换值,未找到则返回 -1
|
||||
*/
|
||||
export const TransformBuffs = (key: number, isDebuff: boolean): number => {
|
||||
if (isDebuff) {
|
||||
// DBuff → Attrs
|
||||
const found = DEBUFF_ATTR_MAP.find(([debuff]) => debuff === key);
|
||||
return found ? found[1] : -1;
|
||||
} else {
|
||||
// Attrs → DBuff(只返回第一个匹配)
|
||||
const found = DEBUFF_ATTR_MAP.find(([, attr]) => attr === key);
|
||||
return found ? found[0] : -1;
|
||||
}
|
||||
|
||||
return attrField;
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -26,7 +26,9 @@ import { debuff } from "../../skills/debuff"
|
||||
* 0:战士 1:远程 2:法师
|
||||
* * */
|
||||
|
||||
|
||||
export enum AttrSet {
|
||||
ATTR_MAX = 85,
|
||||
}
|
||||
export enum HType {
|
||||
warrior = 0,
|
||||
remote = 1,
|
||||
|
||||
Reference in New Issue
Block a user