diff --git a/assets/script/game/common/config/heroSet.ts b/assets/script/game/common/config/heroSet.ts index 1e1eb0eb..793b9fe6 100644 --- a/assets/script/game/common/config/heroSet.ts +++ b/assets/script/game/common/config/heroSet.ts @@ -126,7 +126,7 @@ export const HeroInfo: Record = { // 刘邦 - 领导型战士(善于用人,知人善任) 5001:{uuid:5001,name:"刘邦",path:"hk1", fac:FacSet.HERO, kind:1,as:1.5, - type:HType.warrior,lv:1,hp:200,mp:200,def:0,ap:15,dis:100,speed:120,skills:[6001,6001], + type:HType.warrior,lv:1,hp:200,mp:200,def:0,ap:15,dis:100,speed:120,skills:[6001,6002], buff:[],tal:[],info:"楚汉争霸领袖,领导统御型战士"}, // 荆轲 - 刺客(敏捷型,高速度和暴击率) diff --git a/assets/script/game/hero/SACastSystem.ts b/assets/script/game/hero/SACastSystem.ts index e968ec34..c3acfe7c 100644 --- a/assets/script/game/hero/SACastSystem.ts +++ b/assets/script/game/hero/SACastSystem.ts @@ -46,9 +46,8 @@ export class SACastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdat // 检查是否正在攻击(只有攻击时才释放技能) if (!heroAttrs.is_atking) return; - // 🔥 怪物不消耗蓝,使用Infinity作为mp参数 - const mpForCheck = heroAttrs.fac === FacSet.MON ? Infinity : heroAttrs.mp; - const readySkills = skills.getReadySkills(mpForCheck); + + const readySkills = skills.getReadySkills(heroAttrs.mp); if (readySkills.length === 0) return; // 选择第一个可施放的技能(支持伤害/治疗/护盾) @@ -90,7 +89,10 @@ export class SACastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdat if (castSucess) { // 🔥 怪物不消耗蓝 if (heroAttrs.fac !== FacSet.MON) { - heroAttrs.mp -= skill.cost; + // 使用 add_mp 确保 MP 不会变成负数,并触发相关更新 + heroAttrs.add_mp(-skill.cost, true); + // 手动更新技能距离缓存,因为 HeroAttrSystem 无法检测到跨帧的 MP 变化 + heroAttrs.updateSkillDistanceCache(skills); } skills.resetCD(skill.s_uuid); }