feat(战斗系统): 添加必杀技能类型并优化天赋触发逻辑
- 在TriType枚举中添加MAX类型用于必杀技能触发 - 重构SACastSystem中的技能处理逻辑,将普通攻击、技能和必杀技能分开处理 - 优化天赋触发条件判断,确保不同类型技能触发正确的天赋效果 - 调整技能动画播放和伤害计算逻辑,使风怒和双技能天赋能正确生效
This commit is contained in:
@@ -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, // 基于死亡触发
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user