fix: 修正技能AP百分比计算错误

修复技能AP百分比计算逻辑,移除重复除以100的操作。在Skill.ts中移除多余注释,在SCastSystem.ts中正确计算治疗量,确保技能AP作为百分比值正确处理。
This commit is contained in:
panw
2026-03-24 10:39:47 +08:00
parent b51a68bc8f
commit c3badecd71
2 changed files with 4 additions and 3 deletions

View File

@@ -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) { 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 kind = config.kind ?? SkillKind.Support;
const sUp = SkillUpList[_s_uuid] ?? SkillUpList[1001]; 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 sHit=config.hit_count+sUp.hit_count*_skillLv;
const selectedTargets = this.pickRandomFriendlyTargets(targets, sHit); const selectedTargets = this.pickRandomFriendlyTargets(targets, sHit);
const applyTargets = kind === SkillKind.Heal ? this.sortTargetsByLowestHp(selectedTargets) : selectedTargets; 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); const model = target.ent.get(HeroAttrsComp);
if (!model || model.is_dead) continue; if (!model || model.is_dead) continue;
if (kind === SkillKind.Heal && sAp !== 0) { 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); target.health(addHp);
} else if (kind === SkillKind.Shield && sAp !== 0) { } else if (kind === SkillKind.Shield && sAp !== 0) {
const addShield = Math.floor(sAp*_cAttrsComp.ap); const addShield = Math.floor(sAp*_cAttrsComp.ap);

View File

@@ -210,7 +210,7 @@ export class Skill extends ecs.Entity {
const sBck = (config.bck ?? 0)+(SUp.bck*skill_lv); const sBck = (config.bck ?? 0)+(SUp.bck*skill_lv);
const sAp =config.ap+(SUp.ap*skill_lv); const sAp =config.ap+(SUp.ap*skill_lv);
const sHit=config.hit_count+(SUp.hit_count*skill_lv) + cAttrsComp.puncture 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.critical] = cAttrsComp.critical + sCrt;
sDataCom.Attrs[Attrs.freeze_chance] = cAttrsComp.freeze_chance + sFrz; sDataCom.Attrs[Attrs.freeze_chance] = cAttrsComp.freeze_chance + sFrz;
sDataCom.Attrs[Attrs.back_chance] = cAttrsComp.back_chance + sBck; sDataCom.Attrs[Attrs.back_chance] = cAttrsComp.back_chance + sBck;