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:
2025-10-17 22:02:23 +08:00
parent 94f83482fa
commit 2cdb25ac58
9 changed files with 280 additions and 276 deletions

View File

@@ -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;
};
/*