feat(英雄): 动态计算技能卡牌的虚拟攻击力
- 根据卡牌等级给予基础成长,使用与英雄升级相同的公式 - 获取场上最高攻击力英雄的数值,确保后期治疗和增益效果足够 - 移除固定的基准攻击力,使技能数值更适应实际战斗场景
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user