refactor(天赋系统): 重构天赋效果枚举和属性处理逻辑
- 重新组织TalEffet枚举,按功能分类并添加注释说明 - 移除冗余的DMG_RED属性 - 为HeroAttrsComp添加详细的JSDoc注释 - 优化天赋buff处理方法,区分数值型和计数型天赋
This commit is contained in:
@@ -19,19 +19,24 @@ export enum TriType {
|
||||
|
||||
|
||||
export enum TalEffet {
|
||||
ATK_DMG=1, // 伤害
|
||||
SKILL_DMG=2, // 技能伤害
|
||||
HP=3, // 回血 百分比
|
||||
MP=4, //回蓝 百分比
|
||||
BUFF = 5, // 暴击率,闪避率等,可叠加的触发后清零
|
||||
STATS=6, // 状态
|
||||
WFUNY=7, // 风怒
|
||||
D_SKILL=8, //两次技能
|
||||
SHIELD=9, // 护盾
|
||||
DMG_RED=10, // 减伤
|
||||
C_MSKILL=11, // 必杀技能必暴
|
||||
C_ATK=12, // 普工必爆
|
||||
C_SKILL=13, // 一般技能必暴
|
||||
ATK_DMG=1, // 伤害 次数+伤害加成,如额外5次 伤害+20%
|
||||
SKILL_DMG=2, // 技能伤害 次数+伤害加成,如额外5次 伤害+20%
|
||||
DMG_RED=10, // 减伤 次数+减伤加成,如额外5次 伤害-20%
|
||||
THORNS=14, //反伤 百分比 次数+反伤加成,如额外5次 反伤-20%
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
HP=3, // 回血 百分比 直接触发,回血20%
|
||||
MP=4, //回蓝 百分比 直接触发,回蓝20%
|
||||
SHIELD=9, // 护盾 直接触发,获得20%的生命值护盾
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
BUFF = 5, // 数值叠加 触发后清零: 暴击率,闪避率等,触发后效果取消
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
STATS=6, // 状态 待定
|
||||
|
||||
WFUNY=7, // 风怒 次数 叠加 ,如额外5次 风怒
|
||||
D_SKILL=8, //两次技能 次数 叠加,如额外5次 两次技能
|
||||
C_MSKILL=11, // 必杀技能必暴 次数 叠加 ,如额外5次 必杀技能必暴
|
||||
C_ATK=12, // 普工必爆 次数 叠加 ,如额外5次 普工必爆
|
||||
C_SKILL=13, // 一般技能必暴 次数 叠加 ,如额外5次 一般技能必暴
|
||||
}
|
||||
|
||||
export enum TalTarget {
|
||||
@@ -48,7 +53,6 @@ export enum TalAttrs {
|
||||
CRITICAL=Attrs.CRITICAL, // 暴击率
|
||||
AP=Attrs.AP, // 攻击力
|
||||
MP=Attrs.MAP, // 魔法攻击力
|
||||
DMG_RED=Attrs.DMG_RED, // 魔法防御
|
||||
}
|
||||
/**
|
||||
* 天赋配置接口
|
||||
@@ -112,7 +116,7 @@ export const talConf: Record<number, ItalConf> = {
|
||||
desc:"被攻击3次后, 给于目标50%的伤害"},
|
||||
7102:{uuid:7102,name:"护盾",triType:TriType.DMG,Trigger:3,count:1,target:TalTarget.SELF,effet:TalEffet.SHIELD,vType:BType.RATIO, value:20,attrs:TalAttrs.NON,
|
||||
desc:"被攻击3次后, 获得20%的生命值护盾"},
|
||||
7103:{uuid:7103,name:"减伤",triType:TriType.DMG,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.DMG_RED,vType:BType.RATIO, value:50,attrs:TalAttrs.DMG_RED,
|
||||
7103:{uuid:7103,name:"减伤",triType:TriType.DMG,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.DMG_RED,vType:BType.RATIO, value:50,attrs:TalAttrs.NON,
|
||||
desc:"被攻击3次后, 下1次伤害减50%"},
|
||||
|
||||
|
||||
|
||||
@@ -441,6 +441,13 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 添加数值型天赋buff 数值会进行累加,count 时叠加层数
|
||||
* @param t_uuid 天赋唯一标识
|
||||
* @param attrIndex 属性索引
|
||||
* @param bType buff类型(VALUE:数值型, RATIO:百分比型)
|
||||
* @param value buff值
|
||||
*/
|
||||
addValueTal(t_uuid: number, attrIndex?: number, bType?: BType, value: number = 0) {
|
||||
if (attrIndex === undefined || bType === undefined) return;
|
||||
const buff = this.BUFFS_TAL[t_uuid];
|
||||
@@ -452,6 +459,12 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
}
|
||||
this.recalculateSingleAttr(attrIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加计数型天赋,每次添加数值已最新额覆盖久的,count为可用次数
|
||||
* @param eff 天赋效果ID
|
||||
* @param value 天赋值
|
||||
*/
|
||||
addCountTal(eff: number, value: number) {
|
||||
const t = this.Talents[eff] || { value: 0, count: 0 };
|
||||
t.value = value;
|
||||
@@ -459,18 +472,34 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
this.Talents[eff] = t;
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用计数型天赋,如风怒 ,必爆等天赋,只需要返回是否暴击的,使用这个方法
|
||||
* @param eff 天赋效果ID
|
||||
* @returns 是否使用成功
|
||||
*/
|
||||
useCountTal(eff: number): boolean {
|
||||
const t = this.Talents[eff];
|
||||
if (!t || t.count <= 0) return false;
|
||||
t.count -= 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用计数型天赋并返回天赋值,如额外5次 伤害+20% ,5次受伤,免伤20% 使用这个方法
|
||||
* @param eff 天赋效果ID
|
||||
* @returns 天赋值
|
||||
*/
|
||||
useCountValTal(eff: number): number {
|
||||
const t = this.Talents[eff];
|
||||
if (!t || t.value <= 0) return 0;
|
||||
t.count -= 1;
|
||||
return t.value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据UUID移除数值型天赋buff
|
||||
* @param t_uuid 天赋唯一标识
|
||||
*/
|
||||
useValueTalByUuid(t_uuid: number) {
|
||||
const buff = this.BUFFS_TAL[t_uuid];
|
||||
if (!buff) return;
|
||||
@@ -478,6 +507,11 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
delete this.BUFFS_TAL[t_uuid];
|
||||
this.recalculateSingleAttr(attrIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据属性索引移除数值型天赋buff
|
||||
* @param attrIndex 属性索引
|
||||
*/
|
||||
useValueTalByAttr(attrIndex: number) {
|
||||
let changed = false;
|
||||
for (const key in this.BUFFS_TAL) {
|
||||
|
||||
Reference in New Issue
Block a user