refactor(attr system): 统一使用属性获取方法,让限时buff生效

1. 重构HeroAtkSystem中的暴击、击晕判定逻辑,改用getFinal方法获取抗性
2. 重构Skill.ts中的属性赋值逻辑,替换为对应的最终属性获取方法
3. 修复血量钳制逻辑,使用getFinalHpMax确保限时血量上限buff生效
4. 新增多个属性的最终值获取方法,统一处理限时修饰符
This commit is contained in:
pan
2026-07-23 16:55:33 +08:00
parent 2381812d06
commit 1afa06efb8
3 changed files with 83 additions and 11 deletions

View File

@@ -210,14 +210,14 @@ 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);
sDataCom.Attrs[Attrs.ap] = Math.floor(cAttrsComp.ap * sAp / 100); //技能的ap是百分值 需要/100 而且需要再最终计算总ap时再/100不然会出现ap为90%变0
sDataCom.Attrs[Attrs.critical] = cAttrsComp.getRuntimeCritical() + sCrt;
sDataCom.Attrs[Attrs.critical_damage] = cAttrsComp.getRuntimeCritDamageBonus();
sDataCom.Attrs[Attrs.freeze_chance] = cAttrsComp.getRuntimeFreezeChance() + sFrz;
sDataCom.Attrs[Attrs.stun_chance] = cAttrsComp.getRuntimeStunChance() + sStun;
sDataCom.Attrs[Attrs.knockback_chance] = cAttrsComp.knockback_chance + sBck;
sDataCom.Attrs[Attrs.knockback_distance] = cAttrsComp.knockback_distance || 0;
sDataCom.Attrs[Attrs.puncture_chance] = cAttrsComp.getRuntimePunctureChance(); // 初始化携带施法者的穿透概率
sDataCom.Attrs[Attrs.ap] = Math.floor(cAttrsComp.getFinalAp() * sAp / 100); //技能的ap是百分值 需要/100 而且需要再最终计算总ap时再/100不然会出现ap为90%变0
sDataCom.Attrs[Attrs.critical] = cAttrsComp.getFinalCritical() + sCrt;
sDataCom.Attrs[Attrs.critical_damage] = cAttrsComp.getFinalCritDamage();
sDataCom.Attrs[Attrs.freeze_chance] = cAttrsComp.getFinalFreezeChance() + sFrz;
sDataCom.Attrs[Attrs.stun_chance] = cAttrsComp.getFinalStunChance() + sStun;
sDataCom.Attrs[Attrs.knockback_chance] = cAttrsComp.getFinalKnockbackChance() + sBck;
sDataCom.Attrs[Attrs.knockback_distance] = cAttrsComp.getFinalKnockbackDistance();
sDataCom.Attrs[Attrs.puncture_chance] = cAttrsComp.getFinalPunctureChance(); // 初始化携带施法者的穿透概率
sDataCom.s_uuid = s_uuid
sDataCom.skill_lv = Math.max(0, skill_lv);
sDataCom.fac = cAttrsComp.fac