feat(英雄): 动态计算技能卡牌的虚拟攻击力

- 根据卡牌等级给予基础成长,使用与英雄升级相同的公式
- 获取场上最高攻击力英雄的数值,确保后期治疗和增益效果足够
- 移除固定的基准攻击力,使技能数值更适应实际战斗场景
This commit is contained in:
walkpan
2026-04-06 10:05:10 +08:00
parent e3676c2775
commit ee380ff668
2 changed files with 743 additions and 587 deletions

View File

@@ -88,7 +88,21 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
// 构造一个模拟的 HeroAttrsComp 用于数值计算,只包含基础卡牌伤害计算所需的属性
const mockAttrs = new HeroAttrsComp();
mockAttrs.ap = 100; // 基准攻击力,可以根据设计需求调整
// 动态计算卡牌的虚拟攻击力:
// 1. 根据卡牌等级给予基础成长(同英雄升级公式,基准设为 100
let baseAp = 100 * Math.pow(FightSet.MERGE_NEED, cardLv - 1);
let highestAp = baseAp;
// 2. 获取场上最高攻击力的英雄,保证后期奶量/增益绝对够用
ecs.query(ecs.allOf(HeroAttrsComp)).forEach(e => {
const attr = e.get(HeroAttrsComp);
if (attr && attr.fac === FacSet.HERO && !attr.is_dead && attr.ap > highestAp) {
highestAp = attr.ap;
}
});
mockAttrs.ap = highestAp;
mockAttrs.critical = 0;
mockAttrs.freeze_chance = 0;
mockAttrs.back_chance = 0;