refactor(天赋系统): 重构天赋效果枚举和属性处理逻辑
- 重新组织TalEffet枚举,按功能分类并添加注释说明 - 移除冗余的DMG_RED属性 - 为HeroAttrsComp添加详细的JSDoc注释 - 优化天赋buff处理方法,区分数值型和计数型天赋
This commit is contained in:
@@ -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