refactor: 重构击退机制,将概率改为距离增量

1. 调整近战默认攻击距离从150改为100
2. 将击退相关属性从概率改为击退距离增量,同步更新所有配置、UI显示和技能描述
3. 移除旧的击退概率判定逻辑,改为直接应用击退距离增量
4. 优化受击击退的处理流程,统一参数传递
This commit is contained in:
pan
2026-08-13 11:09:37 +08:00
parent a3375ec3b6
commit eb4b370533
14 changed files with 34 additions and 135 deletions

View File

@@ -175,11 +175,6 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpda
TAttrsComp.atked_count++;
this.checkAndTriggerAtkedSkills(TAttrsComp, targetView);
// 受击者产生击退效果
// if (damage > 0 && targetView) {
// targetView.back();
// }
mLogger.log(this.debugMode, 'HeroAtkSystem', ` 英雄${TAttrsComp.hero_name} (uuid: ${TAttrsComp.hero_uuid}) 受到 eid:${casterEid} 的 伤害 ${damage},${isCrit ? "暴击" : "普通"}攻击,技能ID ${damageEvent.s_uuid}`);
// 冰冻判定
@@ -190,13 +185,14 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpda
const stunChance = (damageEvent.Attrs[Attrs.stun_chance] || 0) - TAttrsComp.getFinalStunRes();
const isStun = !TAttrsComp.isStun() && this.checkChance(stunChance);
// 击退判定
const knockbackChance = (damageEvent.Attrs[Attrs.knockback_chance] || 0) - (TAttrsComp.knockback_res || 0);
const isKnockback = this.checkChance(knockbackChance);
// 击退:受击默认后退,击退属性不再作为概率,而是转换为后退距离的增量
// 击退增量 = 施法者击退强化(原击退概率)- 被攻击者击退抗性 + 击退距离强化
const knockbackBonus = (damageEvent.Attrs[Attrs.knockback_chance] || 0) - (TAttrsComp.getFinalKnockbackRes() || 0);
const knockbackExtra = Math.max(0, knockbackBonus + (damageEvent.Attrs[Attrs.knockback_distance] || 0));
// ✅ 触发视图层表现(伤害数字、受击动画、冰冻、击晕、击退)
if (targetView) {
targetView.do_atked(damage, isCrit, damageEvent.s_uuid, false);
targetView.do_atked(damage, isCrit, damageEvent.s_uuid, knockbackExtra);
targetView.playEnd(skillConf.endAnm);
if (isFrost) {
TAttrsComp.toFrost();
@@ -212,9 +208,6 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpda
smc.vmdata.scores.stun_count++;
}
}
if (isKnockback) {
targetView.back(damageEvent.Attrs[Attrs.knockback_distance] || 0);
}
}
@@ -395,7 +388,7 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpda
* 用于所有概率相关的判定:
* - 暴击率判定
* - 闪避率判定
* - 击退概率判定
* - 冰冻/击晕概率判定
* - 其他特殊效果概率
*
* @param rate 概率值0-100的百分比