From 0508dec313e6798f04949350611f66dbd3d9cd78 Mon Sep 17 00:00:00 2001 From: panw Date: Wed, 15 Apr 2026 10:23:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=8A=80=E8=83=BD):=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E8=8B=B1=E9=9B=84=E6=8A=80=E8=83=BD=E7=9A=84=E5=A4=9A=E9=87=8D?= =?UTF-8?q?=E8=A7=A6=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改 Hero、Monster 和 HeroAtkSystem 中的技能触发逻辑,将 call、dead 等技能字段从单个 uuid 改为 uuid 数组,支持同时触发多个技能。同时更新 heroSet.ts 中的类型定义和英雄配置以匹配此变更。 --- assets/script/game/common/config/heroSet.ts | 12 ++++++------ assets/script/game/hero/Hero.ts | 14 ++++++++------ assets/script/game/hero/HeroAtkSystem.ts | 14 ++++++++------ assets/script/game/hero/Mon.ts | 14 ++++++++------ 4 files changed, 30 insertions(+), 24 deletions(-) diff --git a/assets/script/game/common/config/heroSet.ts b/assets/script/game/common/config/heroSet.ts index 427ac937..fa581364 100644 --- a/assets/script/game/common/config/heroSet.ts +++ b/assets/script/game/common/config/heroSet.ts @@ -63,10 +63,10 @@ export interface heroInfo { type: HType; // 攻击定位(近战/中程/远程) hp: number; // 生命值上限 ap: number; // 攻击力 - call?:number; // 召唤后出发的技能uuid - dead?:number; // 死亡后出发的技能uuid - fstart?:number; //战斗开始时释放的技能uuid - fend?:number; //战斗结束时释放的技能uuid + call?:number[]; // 召唤后触发的技能uuid列表 + dead?:number[]; // 死亡后触发的技能uuid列表 + fstart?:number[]; // 战斗开始时释放的技能uuid列表 + fend?:number[]; // 战斗结束时释放的技能uuid列表 // dis: number; // 攻击距离(像素) speed: number; // 移动速度(像素/秒) skills: Record ; // 携带技能ID列表 @@ -98,7 +98,7 @@ export interface HSkillInfo { export const HeroInfo: Record = { // ========== 近战英雄 ========== - 5001:{uuid:5001,name:"盾战士",path:"hk1", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Melee,hp:450,ap:25,call:6305,dead:6305,speed:800, + 5001:{uuid:5001,name:"盾战士",path:"hk1", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Melee,hp:450,ap:25,call:[6305],dead:[6305],speed:800, skills:{6001:{uuid:6001,lv:1,cd:1.5,ccd:0},6301:{uuid:6301,lv:1,cd:5,ccd:0}},info:"近战,魔法盾 坦克"}, 5002:{uuid:5002,name:"圣骑士",path:"hk3", fac:FacSet.HERO,cards_lv:3,lv:1,type:HType.Melee,hp:1350,ap:75,speed:800, skills:{6001:{uuid:6001,lv:1,cd:1.5,ccd:0},6305:{uuid:6305,lv:1,cd:5,ccd:0}},info:"近战,群体护盾 坦克"}, @@ -131,7 +131,7 @@ export const HeroInfo: Record = { skills:{6011:{uuid:6101,lv:1,cd:0.9,ccd:0},6101:{uuid:6101,lv:1,cd:5,ccd:0}},info:"暴射,光箭 远dps"}, // ========== 腐竹英雄 ========== - 5301:{uuid:5301,name:"牧师",path:"hh1", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Long,hp:150,ap:20,speed:800,fstart:6302,fend:6302, + 5301:{uuid:5301,name:"牧师",path:"hh1", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Long,hp:150,ap:20,speed:800,fstart:[6302],fend:[6302], skills:{6202:{uuid:6202,lv:1,cd:1.2,ccd:0},6302:{uuid:6302,lv:1,cd:5,ccd:0}},info:"冰锥1,治疗 远辅助" }, 5302:{uuid:5302,name:"战地医师",path:"hz1", fac:FacSet.HERO,cards_lv:2,lv:1,type:HType.Long,hp:300,ap:40,speed:800, skills:{6202:{uuid:6202,lv:1,cd:1.2,ccd:0},6304:{uuid:6304,lv:1,cd:5,ccd:0}},info:"冰锥1,群体治疗 远辅助"}, diff --git a/assets/script/game/hero/Hero.ts b/assets/script/game/hero/Hero.ts index b2522f2e..d1e98856 100644 --- a/assets/script/game/hero/Hero.ts +++ b/assets/script/game/hero/Hero.ts @@ -144,12 +144,14 @@ export class Hero extends ecs.Entity { hv.as.idle(); // 触发 call 技能 - if (hero.call) { - oops.message.dispatchEvent(GameEvent.TriggerSkill, { - s_uuid: hero.call, - heroAttrs: model, - heroView: hv, - triggerType: 'call' + if (hero.call && hero.call.length > 0) { + hero.call.forEach(uuid => { + oops.message.dispatchEvent(GameEvent.TriggerSkill, { + s_uuid: uuid, + heroAttrs: model, + heroView: hv, + triggerType: 'call' + }); }); } diff --git a/assets/script/game/hero/HeroAtkSystem.ts b/assets/script/game/hero/HeroAtkSystem.ts index fa896a4b..130aa466 100644 --- a/assets/script/game/hero/HeroAtkSystem.ts +++ b/assets/script/game/hero/HeroAtkSystem.ts @@ -255,14 +255,16 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd // 触发死亡技能 const heroInfo = HeroInfo[TAttrsComp.hero_uuid]; - if (heroInfo && heroInfo.dead) { + if (heroInfo && heroInfo.dead && heroInfo.dead.length > 0) { const view = entity.get(HeroViewComp); if (view) { - oops.message.dispatchEvent(GameEvent.TriggerSkill, { - s_uuid: heroInfo.dead, - heroAttrs: TAttrsComp, - heroView: view, - triggerType: 'dead' + heroInfo.dead.forEach((uuid: number) => { + oops.message.dispatchEvent(GameEvent.TriggerSkill, { + s_uuid: uuid, + heroAttrs: TAttrsComp, + heroView: view, + triggerType: 'dead' + }); }); } } diff --git a/assets/script/game/hero/Mon.ts b/assets/script/game/hero/Mon.ts index 6f8bfd5d..cfa5ec28 100644 --- a/assets/script/game/hero/Mon.ts +++ b/assets/script/game/hero/Mon.ts @@ -198,12 +198,14 @@ export class Monster extends ecs.Entity { move.moving = false; // 触发 call 技能 - if (hero.call) { - oops.message.dispatchEvent(GameEvent.TriggerSkill, { - s_uuid: hero.call, - heroAttrs: model, - heroView: view, - triggerType: 'call' + if (hero.call && hero.call.length > 0) { + hero.call.forEach((uuid: number) => { + oops.message.dispatchEvent(GameEvent.TriggerSkill, { + s_uuid: uuid, + heroAttrs: model, + heroView: view, + triggerType: 'call' + }); }); }