From c3badecd7130792dcd9190e4d45d1e220b60b20a Mon Sep 17 00:00:00 2001 From: panw Date: Tue, 24 Mar 2026 10:39:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=E6=8A=80=E8=83=BDAP?= =?UTF-8?q?=E7=99=BE=E5=88=86=E6=AF=94=E8=AE=A1=E7=AE=97=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复技能AP百分比计算逻辑,移除重复除以100的操作。在Skill.ts中移除多余注释,在SCastSystem.ts中正确计算治疗量,确保技能AP作为百分比值正确处理。 --- assets/script/game/hero/SCastSystem.ts | 5 +++-- assets/script/game/skill/Skill.ts | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/assets/script/game/hero/SCastSystem.ts b/assets/script/game/hero/SCastSystem.ts index 8cee4320..a598771c 100644 --- a/assets/script/game/hero/SCastSystem.ts +++ b/assets/script/game/hero/SCastSystem.ts @@ -195,7 +195,7 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate private applyFriendlySkillEffects(_s_uuid: number, _skillLv: number, config: SkillConfig, _heroView: HeroViewComp, _cAttrsComp: HeroAttrsComp, targets: HeroViewComp[], _targetPos: Vec3 | null) { const kind = config.kind ?? SkillKind.Support; const sUp = SkillUpList[_s_uuid] ?? SkillUpList[1001]; - const sAp =(config.ap+sUp.ap*_skillLv)/100; + const sAp =config.ap+sUp.ap*_skillLv; const sHit=config.hit_count+sUp.hit_count*_skillLv; const selectedTargets = this.pickRandomFriendlyTargets(targets, sHit); const applyTargets = kind === SkillKind.Heal ? this.sortTargetsByLowestHp(selectedTargets) : selectedTargets; @@ -204,7 +204,8 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate const model = target.ent.get(HeroAttrsComp); if (!model || model.is_dead) continue; if (kind === SkillKind.Heal && sAp !== 0) { - const addHp = Math.floor(model.add_hp(sAp*_cAttrsComp.ap)); + const addHp = Math.floor(sAp*_cAttrsComp.ap/100);//技能的ap是百分值 需要/100 + model.add_hp(addHp); target.health(addHp); } else if (kind === SkillKind.Shield && sAp !== 0) { const addShield = Math.floor(sAp*_cAttrsComp.ap); diff --git a/assets/script/game/skill/Skill.ts b/assets/script/game/skill/Skill.ts index ec249583..5c8d2282 100644 --- a/assets/script/game/skill/Skill.ts +++ b/assets/script/game/skill/Skill.ts @@ -210,7 +210,7 @@ export class Skill extends ecs.Entity { const sBck = (config.bck ?? 0)+(SUp.bck*skill_lv); const sAp =config.ap+(SUp.ap*skill_lv); const sHit=config.hit_count+(SUp.hit_count*skill_lv) + cAttrsComp.puncture - sDataCom.Attrs[Attrs.ap] = Math.floor(cAttrsComp.ap*sAp/100); + sDataCom.Attrs[Attrs.ap] = Math.floor(cAttrsComp.ap*sAp/100); //技能的ap是百分值 需要/100 而且需要再最终计算总ap时再/100,不然会出现ap为90%变0 sDataCom.Attrs[Attrs.critical] = cAttrsComp.critical + sCrt; sDataCom.Attrs[Attrs.freeze_chance] = cAttrsComp.freeze_chance + sFrz; sDataCom.Attrs[Attrs.back_chance] = cAttrsComp.back_chance + sBck;