diff --git a/assets/script/game/common/config/TalSet.ts b/assets/script/game/common/config/TalSet.ts index d686421b..b02e7d23 100644 --- a/assets/script/game/common/config/TalSet.ts +++ b/assets/script/game/common/config/TalSet.ts @@ -18,19 +18,20 @@ export enum TriType { export enum TalEffet { - DMG=1, // 伤害 - HP=2, // 回血 百分比 - MP=3, //回蓝 百分比 - BUFF = 4, // 暴击率,闪避率等,可叠加的触发后清零 - STATS=5, // 状态 - WFUNY=6, // 风怒 - SPLASH=7, // 溅射 - D_SKILL=8, //两次技能 - SHIELD=9, // 护盾 - LDMG=10, // 减伤 - C_ATK=11, // 普工必爆 - C_SKILL=12, // 一般技能必暴 - C_MSKILL=13, // 必杀技能必暴 + ATK_DMG=1, // 伤害 + SKILL_DMG=2, // 技能伤害 + HP=3, // 回血 百分比 + MP=4, //回蓝 百分比 + BUFF = 5, // 暴击率,闪避率等,可叠加的触发后清零 + STATS=6, // 状态 + WFUNY=7, // 风怒 + SPLASH=8, // 溅射 + D_SKILL=9, //两次技能 + SHIELD=10, // 护盾 + LDMG=11, // 减伤 + C_ATK=12, // 普工必爆 + C_SKILL=13, // 一般技能必暴 + C_MSKILL=14, // 必杀技能必暴 } export enum TalTarget { @@ -107,7 +108,7 @@ export const talConf: Record = { desc:"普通攻击10次后, 下次一般技能额外释放1次,伤害100%"}, /*** 受伤触发 ***/ - 7101:{uuid:7101,name:"反击",triType:TriType.DMG,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.DMG,vType:BType.RATIO, value:50,attrs:TalAttrs.NON, + 7101:{uuid:7101,name:"反击",triType:TriType.DMG,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.ATK_DMG,vType:BType.RATIO, value:50,attrs:TalAttrs.NON, 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%的生命值护盾"}, diff --git a/assets/script/game/hero/HeroAttrsComp.ts b/assets/script/game/hero/HeroAttrsComp.ts index ffc01f2a..8d7092db 100644 --- a/assets/script/game/hero/HeroAttrsComp.ts +++ b/assets/script/game/hero/HeroAttrsComp.ts @@ -433,6 +433,12 @@ export class HeroAttrsComp extends ecs.Comp { t.count -= 1; return true; } + useCountValTal(eff: number): number { + const t = this.Talents[eff]; + if (!t || t.value <= 0) return 0; + t.count -= 1; + return t.value; + } useValueTalByUuid(t_uuid: number) { const buff = this.BUFFS_TAL[t_uuid]; if (!buff) return; diff --git a/assets/script/game/hero/SACastSystem.ts b/assets/script/game/hero/SACastSystem.ts index 491d15d8..6aeae731 100644 --- a/assets/script/game/hero/SACastSystem.ts +++ b/assets/script/game/hero/SACastSystem.ts @@ -157,29 +157,39 @@ export class SACastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdat return false; } // 2. 延迟创建技能实体(等待动画) - const delay = 0.3 - heroView.scheduleOnce(() => { - this.createSkill(s_uuid, heroView,targets); - }, delay); + if (hset === HSSet.atk){ + let delay = 0.3 + let ext_dmg = heroAttrs.useCountValTal(TalEffet.ATK_DMG); + heroView.scheduleOnce(() => { + this.createSkill(s_uuid, heroView,targets,ext_dmg); + }, delay); + } + if(hset === HSSet.skill){ + let delay = 0.3 + let ext_dmg = heroAttrs.useCountValTal(TalEffet.SKILL_DMG); + heroView.scheduleOnce(() => { + this.createSkill(s_uuid, heroView,targets,ext_dmg); + }, delay); + } //风怒wfuny 只针对 普通攻击起效 if (hset === HSSet.atk && heroAttrs.useCountTal(TalEffet.WFUNY)){ + let delay = 0.3 heroView.playSkillEffect(s_uuid); //需要再添加 风怒动画 - this.createSkill(s_uuid, heroView,targets); + heroView.scheduleOnce(() => { + this.createSkill(s_uuid, heroView,targets); + },delay); } + // 双技能 只针对 技能起效 if(hset === HSSet.skill && heroAttrs.useCountTal(TalEffet.D_SKILL)){ - targets = this.sTargets(heroView, s_uuid); - if (targets.length === 0) { - console.warn("[SACastSystem] 没有找到有效目标"); - return false; - } + let delay = 0.3 heroView.playSkillEffect(s_uuid); //需要再添加 双技能动画 heroView.scheduleOnce(() => { this.createSkill(s_uuid, heroView,targets); - }, delay); + },delay); } diff --git a/assets/script/game/hero/TalComp.ts b/assets/script/game/hero/TalComp.ts index fd7cacf5..6a95b889 100644 --- a/assets/script/game/hero/TalComp.ts +++ b/assets/script/game/hero/TalComp.ts @@ -202,6 +202,21 @@ export class TalComp extends ecs.Comp { const talent = this.Tals[uuid]; const heroAttrs=this.ent.get(HeroAttrsComp); switch(talent.effet){ + case TalEffet.ATK_DMG: + heroAttrs.addCountTal(TalEffet.ATK_DMG, talent.value + talent.value_add); + break; + case TalEffet.SKILL_DMG: + heroAttrs.addCountTal(TalEffet.SKILL_DMG, talent.value + talent.value_add); + break; + case TalEffet.LDMG: + heroAttrs.addCountTal(TalEffet.LDMG, talent.value + talent.value_add); + break; + // case TalEffet.HP: + // heroAttrs.addCountTal(TalEffet.HP, talent.value + talent.value_add); + // break; + // case TalEffet.MP: + // heroAttrs.addCountTal(TalEffet.MP, talent.value + talent.value_add); + // break; case TalEffet.WFUNY: heroAttrs.addCountTal(TalEffet.WFUNY, talent.value + talent.value_add); break;