From 6df4abadd18ad366ab71e3bee2d805ef27410ca5 Mon Sep 17 00:00:00 2001 From: panw Date: Mon, 24 Nov 2025 15:52:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=88=98=E6=96=97=E7=B3=BB=E7=BB=9F):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BF=85=E6=9D=80=E6=8A=80=E8=83=BD=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=B9=B6=E4=BC=98=E5=8C=96=E5=A4=A9=E8=B5=8B=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在TriType枚举中添加MAX类型用于必杀技能触发 - 重构SACastSystem中的技能处理逻辑,将普通攻击、技能和必杀技能分开处理 - 优化天赋触发条件判断,确保不同类型技能触发正确的天赋效果 - 调整技能动画播放和伤害计算逻辑,使风怒和双技能天赋能正确生效 --- assets/script/game/common/config/TalSet.ts | 9 +++-- assets/script/game/hero/SACastSystem.ts | 46 ++++++++++++++-------- 2 files changed, 34 insertions(+), 21 deletions(-) diff --git a/assets/script/game/common/config/TalSet.ts b/assets/script/game/common/config/TalSet.ts index b02e7d23..9a4f90d4 100644 --- a/assets/script/game/common/config/TalSet.ts +++ b/assets/script/game/common/config/TalSet.ts @@ -9,10 +9,11 @@ export enum TriType { ATK = 2, //普通攻击触发 DMG = 3, // 受伤触发 SKILL = 4, // 技能触发 - HPL = 5, // 失去生命值触发 - HPA = 6, // 获得生命值触发 - INIT = 7, // 初始触发,如:多1个技能 - DEAD = 8 // 基于死亡触发 + MAX = 5, // 必杀触发 + HPL = 6, // 失去生命值触发 + HPA = 7, // 获得生命值触发 + INIT = 8, // 初始触发,如:多1个技能 + DEAD = 9, // 基于死亡触发 } diff --git a/assets/script/game/hero/SACastSystem.ts b/assets/script/game/hero/SACastSystem.ts index 6aeae731..9549d64d 100644 --- a/assets/script/game/hero/SACastSystem.ts +++ b/assets/script/game/hero/SACastSystem.ts @@ -143,11 +143,12 @@ export class SACastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdat // 1. 播放施法动画 heroView.playSkillEffect(s_uuid); /**********************天赋处理*************************************************************************/ - // 2. 更新攻击类型的天赋触发值 + // 2. 更新攻击类型的天赋触发值,技能和必杀级 if(casterEntity.has(TalComp)){ const talComp = casterEntity.get(TalComp); if (hset === HSSet.atk) talComp.updateCur(TriType.ATK); - if (hset != HSSet.atk) talComp.updateCur(TriType.SKILL); + if (hset === HSSet.skill) talComp.updateCur(TriType.SKILL); + if (hset === HSSet.max) talComp.updateCur(TriType.MAX); } /**********************天赋处理*************************************************************************/ // 获取目标位置 @@ -156,41 +157,52 @@ export class SACastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdat console.warn("[SACastSystem] 没有找到有效目标"); return false; } - // 2. 延迟创建技能实体(等待动画) + // 2.1 普通攻击逻辑 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); + //风怒wfuny 只针对 普通攻击起效 + if (heroAttrs.useCountTal(TalEffet.WFUNY)){ + let ext2_dmg = heroAttrs.useCountValTal(TalEffet.ATK_DMG); + let delay = 0.3 + heroView.playSkillEffect(s_uuid); + //需要再添加 风怒动画 + heroView.scheduleOnce(() => { + this.createSkill(s_uuid, heroView,targets,ext2_dmg); + },delay); + } } + // 2.2 技能攻击逻辑 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); + // 双技能 只针对 技能起效 + if(heroAttrs.useCountTal(TalEffet.D_SKILL)){ + let ext2_dmg = heroAttrs.useCountValTal(TalEffet.SKILL_DMG); + let delay = 0.3 + heroView.playSkillEffect(s_uuid); + //需要再添加 双技能动画 + heroView.scheduleOnce(() => { + this.createSkill(s_uuid, heroView,targets,ext2_dmg); + },delay); + } } - - //风怒wfuny 只针对 普通攻击起效 - if (hset === HSSet.atk && heroAttrs.useCountTal(TalEffet.WFUNY)){ + // 2.3 必杀技能逻辑 + if(hset === HSSet.max){ let delay = 0.3 heroView.playSkillEffect(s_uuid); - //需要再添加 风怒动画 - heroView.scheduleOnce(() => { - this.createSkill(s_uuid, heroView,targets); - },delay); - } - - // 双技能 只针对 技能起效 - if(hset === HSSet.skill && heroAttrs.useCountTal(TalEffet.D_SKILL)){ - let delay = 0.3 - heroView.playSkillEffect(s_uuid); - //需要再添加 双技能动画 + //需要再添加 最大伤害动画 heroView.scheduleOnce(() => { this.createSkill(s_uuid, heroView,targets); },delay); } + return true;