diff --git a/assets/script/game/common/config/TalSet.ts b/assets/script/game/common/config/TalSet.ts index 7d4a4f21..1b2934e5 100644 --- a/assets/script/game/common/config/TalSet.ts +++ b/assets/script/game/common/config/TalSet.ts @@ -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 = { 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%"}, diff --git a/assets/script/game/hero/HeroAttrsComp.ts b/assets/script/game/hero/HeroAttrsComp.ts index 9646a165..d4238700 100644 --- a/assets/script/game/hero/HeroAttrsComp.ts +++ b/assets/script/game/hero/HeroAttrsComp.ts @@ -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) {