feat: 新增闪避与命中属性系统,完善战斗判定逻辑
1. 新增全局默认闪避/命中率配置,为英雄和怪物提供缺省属性兜底 2. 扩展英雄属性组件,添加闪避、命中率属性与对应计算接口 3. 实现闪避判定逻辑,修正伤害流程,添加闪避提示效果 4. 新增闪避/命中相关buff、技能与光环配置 5. 完善属性值计算与 tooltip 显示逻辑
This commit is contained in:
@@ -134,6 +134,14 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpda
|
||||
// 触发被攻击事件
|
||||
this.onAttacked(target);
|
||||
|
||||
// 闪避判定(DoT 不参与):闪避率 = 目标闪避 − 施法者命中
|
||||
if (!isDot && this.checkDodge(damageEvent, TAttrsComp)) {
|
||||
smc.vmdata.scores.dod_count++;
|
||||
targetView?.showMiss?.();
|
||||
// 预留:闪避后触发技能(SkillTriggerType.Dodged)在此接入
|
||||
return reDate;
|
||||
}
|
||||
|
||||
// 暴击判定
|
||||
// 使用施法者的暴击率属性(damageEvent.Attrs 快照)- 被攻击者的暴击抗性 + 目标出血层数附加的被暴击率
|
||||
const criticalChance = (damageEvent.Attrs[Attrs.critical] || 0) - TAttrsComp.getFinalCriticalRes() + this.getBleedCritBonus(target);
|
||||
@@ -528,6 +536,19 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpda
|
||||
return (layers?.length ?? 0) * BLEED_CRIT_PER_STACK;
|
||||
}
|
||||
|
||||
/**
|
||||
* 闪避判定:闪避率 = 目标闪避 − 施法者命中,再按该值判定是否闪避。
|
||||
* 命中未配置时(accuracy=0)闪避率 = 目标闪避,即无命中加成时闪避全额生效。
|
||||
* @param damageEvent 伤害事件(含施法者属性快照)
|
||||
* @param TAttrsComp 目标属性组件
|
||||
* @returns true=闪避成功,false=命中
|
||||
*/
|
||||
private checkDodge(damageEvent: DamageEvent, TAttrsComp: HeroAttrsComp): boolean {
|
||||
const dodgeChance = TAttrsComp.getFinalDodge() - (damageEvent.Attrs[Attrs.accuracy] || 0);
|
||||
if (dodgeChance <= 0) return false;
|
||||
return this.checkChance(dodgeChance);
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算易伤附加伤害:汇总目标每层易伤 buff 的数值(value_override 优先),再被易伤抗性百分比减免。
|
||||
* @returns 附加伤害值(向下取整,非负)
|
||||
|
||||
Reference in New Issue
Block a user