From 8d2ec76b0110c19370960dd2241a0d9bdd326927 Mon Sep 17 00:00:00 2001 From: panw Date: Mon, 24 Nov 2025 15:39:05 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=88=98=E6=96=97=E7=B3=BB=E7=BB=9F):=20?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=94=BB=E5=87=BB=E5=92=8C=E6=8A=80=E8=83=BD?= =?UTF-8?q?=E4=BC=A4=E5=AE=B3=E5=8A=A0=E6=88=90=E5=A4=A9=E8=B5=8B=E6=95=88?= =?UTF-8?q?=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加ATK_DMG和SKILL_DMG天赋类型,支持在普通攻击和技能释放时应用额外伤害 修改SACastSystem以处理不同类型的伤害加成 重构TalEffet枚举并更新相关配置 --- assets/script/game/common/config/TalSet.ts | 29 ++++++++++---------- assets/script/game/hero/HeroAttrsComp.ts | 6 ++++ assets/script/game/hero/SACastSystem.ts | 32 ++++++++++++++-------- assets/script/game/hero/TalComp.ts | 15 ++++++++++ 4 files changed, 57 insertions(+), 25 deletions(-) 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;