feat(技能): 支持英雄技能的多重触发
修改 Hero、Monster 和 HeroAtkSystem 中的技能触发逻辑,将 call、dead 等技能字段从单个 uuid 改为 uuid 数组,支持同时触发多个技能。同时更新 heroSet.ts 中的类型定义和英雄配置以匹配此变更。
This commit is contained in:
@@ -63,10 +63,10 @@ export interface heroInfo {
|
|||||||
type: HType; // 攻击定位(近战/中程/远程)
|
type: HType; // 攻击定位(近战/中程/远程)
|
||||||
hp: number; // 生命值上限
|
hp: number; // 生命值上限
|
||||||
ap: number; // 攻击力
|
ap: number; // 攻击力
|
||||||
call?:number; // 召唤后出发的技能uuid
|
call?:number[]; // 召唤后触发的技能uuid列表
|
||||||
dead?:number; // 死亡后出发的技能uuid
|
dead?:number[]; // 死亡后触发的技能uuid列表
|
||||||
fstart?:number; //战斗开始时释放的技能uuid
|
fstart?:number[]; // 战斗开始时释放的技能uuid列表
|
||||||
fend?:number; //战斗结束时释放的技能uuid
|
fend?:number[]; // 战斗结束时释放的技能uuid列表
|
||||||
// dis: number; // 攻击距离(像素)
|
// dis: number; // 攻击距离(像素)
|
||||||
speed: number; // 移动速度(像素/秒)
|
speed: number; // 移动速度(像素/秒)
|
||||||
skills: Record<number, HSkillInfo> ; // 携带技能ID列表
|
skills: Record<number, HSkillInfo> ; // 携带技能ID列表
|
||||||
@@ -98,7 +98,7 @@ export interface HSkillInfo {
|
|||||||
|
|
||||||
export const HeroInfo: Record<number, heroInfo> = {
|
export const HeroInfo: Record<number, heroInfo> = {
|
||||||
// ========== 近战英雄 ==========
|
// ========== 近战英雄 ==========
|
||||||
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:"近战,魔法盾 坦克"},
|
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,
|
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:"近战,群体护盾 坦克"},
|
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<number, heroInfo> = {
|
|||||||
skills:{6011:{uuid:6101,lv:1,cd:0.9,ccd:0},6101:{uuid:6101,lv:1,cd:5,ccd:0}},info:"暴射,光箭 远dps"},
|
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,治疗 远辅助" },
|
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,
|
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,群体治疗 远辅助"},
|
skills:{6202:{uuid:6202,lv:1,cd:1.2,ccd:0},6304:{uuid:6304,lv:1,cd:5,ccd:0}},info:"冰锥1,群体治疗 远辅助"},
|
||||||
|
|||||||
@@ -144,13 +144,15 @@ export class Hero extends ecs.Entity {
|
|||||||
hv.as.idle();
|
hv.as.idle();
|
||||||
|
|
||||||
// 触发 call 技能
|
// 触发 call 技能
|
||||||
if (hero.call) {
|
if (hero.call && hero.call.length > 0) {
|
||||||
|
hero.call.forEach(uuid => {
|
||||||
oops.message.dispatchEvent(GameEvent.TriggerSkill, {
|
oops.message.dispatchEvent(GameEvent.TriggerSkill, {
|
||||||
s_uuid: hero.call,
|
s_uuid: uuid,
|
||||||
heroAttrs: model,
|
heroAttrs: model,
|
||||||
heroView: hv,
|
heroView: hv,
|
||||||
triggerType: 'call'
|
triggerType: 'call'
|
||||||
});
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 依据下落距离自适应入场时长,保证手感稳定
|
// 依据下落距离自适应入场时长,保证手感稳定
|
||||||
|
|||||||
@@ -255,15 +255,17 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
|
|||||||
|
|
||||||
// 触发死亡技能
|
// 触发死亡技能
|
||||||
const heroInfo = HeroInfo[TAttrsComp.hero_uuid];
|
const heroInfo = HeroInfo[TAttrsComp.hero_uuid];
|
||||||
if (heroInfo && heroInfo.dead) {
|
if (heroInfo && heroInfo.dead && heroInfo.dead.length > 0) {
|
||||||
const view = entity.get(HeroViewComp);
|
const view = entity.get(HeroViewComp);
|
||||||
if (view) {
|
if (view) {
|
||||||
|
heroInfo.dead.forEach((uuid: number) => {
|
||||||
oops.message.dispatchEvent(GameEvent.TriggerSkill, {
|
oops.message.dispatchEvent(GameEvent.TriggerSkill, {
|
||||||
s_uuid: heroInfo.dead,
|
s_uuid: uuid,
|
||||||
heroAttrs: TAttrsComp,
|
heroAttrs: TAttrsComp,
|
||||||
heroView: view,
|
heroView: view,
|
||||||
triggerType: 'dead'
|
triggerType: 'dead'
|
||||||
});
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -198,13 +198,15 @@ export class Monster extends ecs.Entity {
|
|||||||
move.moving = false;
|
move.moving = false;
|
||||||
|
|
||||||
// 触发 call 技能
|
// 触发 call 技能
|
||||||
if (hero.call) {
|
if (hero.call && hero.call.length > 0) {
|
||||||
|
hero.call.forEach((uuid: number) => {
|
||||||
oops.message.dispatchEvent(GameEvent.TriggerSkill, {
|
oops.message.dispatchEvent(GameEvent.TriggerSkill, {
|
||||||
s_uuid: hero.call,
|
s_uuid: uuid,
|
||||||
heroAttrs: model,
|
heroAttrs: model,
|
||||||
heroView: view,
|
heroView: view,
|
||||||
triggerType: 'call'
|
triggerType: 'call'
|
||||||
});
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 依据下落距离自适应入场时长,确保观感一致
|
// 依据下落距离自适应入场时长,确保观感一致
|
||||||
|
|||||||
Reference in New Issue
Block a user