refactor: 移除英雄击退相关属性和逻辑

移除 HeroAttrsComp 中的 back_chance 属性及相关配置,清理 SCastSystem、Skill 和 HeroAtkSystem 中击退概率的计算与判定逻辑,简化攻击效果处理流程。
This commit is contained in:
panw
2026-04-15 16:20:19 +08:00
parent 083a530a72
commit bf799a84fe
6 changed files with 13 additions and 11 deletions

View File

@@ -26,7 +26,6 @@ export enum Attrs {
// ==================== 特殊效果属性 ====================
freeze_chance = "freeze_chance", // 冰冻概率
back_chance = "back_chance", // 击退概率
// ==================== 增益效果属性 ====================
revive_count = "revive_count", // 复活次数
revive_time = "revive_time", // 复活时间
@@ -47,7 +46,6 @@ export interface GameScoreStats {
crt_count: number; // 暴击次数
wf_count: number; // 风怒次数
dod_count: number; // 闪避次数
back_count: number; // 击退次数
stun_count: number; // 击晕次数
freeze_count: number; // 冰冻次数

View File

@@ -1 +1,11 @@
盾战获得护盾抵御3次攻击
攻击类型:
普通: 水球、近战无
暴击: 火球
穿刺: 旋风
可叠加类型:
双击(风怒)概率
群攻:不限

View File

@@ -171,13 +171,12 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
mLogger.log(this.debugMode, 'HeroAtkSystem', ` 英雄${TAttrsComp.hero_name} (uuid: ${TAttrsComp.hero_uuid}) 受到 eid:${casterEid} 的 伤害 ${damage},${isCrit?"暴击":"普通"}攻击,技能ID ${damageEvent.s_uuid}`);
// 击退和冰冻判定
const isBack = this.checkChance((damageEvent.Attrs[Attrs.back_chance] || 0));
// 冰冻判定
const freezeChance = damageEvent.Attrs[Attrs.freeze_chance] || 0;
const isFrost = !TAttrsComp.isFrost() && this.checkChance(freezeChance);
// ✅ 触发视图层表现(伤害数字、受击动画、后退,冰冻)
// ✅ 触发视图层表现(伤害数字、受击动画、冰冻)
if (targetView) {
targetView.do_atked(damage, isCrit, damageEvent.s_uuid, isBack);
targetView.do_atked(damage, isCrit, damageEvent.s_uuid, false);
targetView.playEnd(skillConf.endAnm);
if (isFrost) {
TAttrsComp.toFrost();

View File

@@ -30,7 +30,6 @@ export class HeroAttrsComp extends ecs.Comp {
// ==================== 特殊属性 ====================
critical: number = 0; // 暴击率
freeze_chance: number = 0; // 冰冻概率
back_chance: number = 0; // 击退概率
puncture: number = 0; // 穿刺次数
wfuny: number = 0; // 风怒
@@ -232,7 +231,6 @@ export class HeroAttrsComp extends ecs.Comp {
this.skills = {};
this.critical = 0;
this.freeze_chance = 0;
this.back_chance = 0;
this.revive_count = 0;
this.revive_time = 0;
this.invincible_time = 0;

View File

@@ -105,7 +105,6 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
mockAttrs.ap = highestAp;
mockAttrs.critical = 0;
mockAttrs.freeze_chance = 0;
mockAttrs.back_chance = 0;
mockAttrs.puncture = 0;
mockAttrs.fac = FacSet.HERO;

View File

@@ -210,13 +210,11 @@ export class Skill extends ecs.Entity {
const SUp=SkillUpList[s_uuid] ? SkillUpList[s_uuid]:SkillUpList[1001];
const sCrt = (config.crt ?? 0)+(SUp.crt*skill_lv);
const sFrz = (config.frz ?? 0)+(SUp.frz*skill_lv);
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) + cAttrsComp.puncture
sDataCom.Attrs[Attrs.ap] = Math.floor(cAttrsComp.ap*sAp/100); //技能的ap是百分值 需要/100 而且需要再最终计算总ap时再/100不然会出现ap为90%变0
sDataCom.Attrs[Attrs.critical] = cAttrsComp.critical + sCrt;
sDataCom.Attrs[Attrs.freeze_chance] = cAttrsComp.freeze_chance + sFrz;
sDataCom.Attrs[Attrs.back_chance] = cAttrsComp.back_chance + sBck;
sDataCom.s_uuid=s_uuid
sDataCom.skill_lv = Math.max(0, skill_lv);
sDataCom.fac=cAttrsComp.fac