refactor: 移除英雄击退相关属性和逻辑
移除 HeroAttrsComp 中的 back_chance 属性及相关配置,清理 SCastSystem、Skill 和 HeroAtkSystem 中击退概率的计算与判定逻辑,简化攻击效果处理流程。
This commit is contained in:
@@ -26,7 +26,6 @@ export enum Attrs {
|
|||||||
|
|
||||||
// ==================== 特殊效果属性 ====================
|
// ==================== 特殊效果属性 ====================
|
||||||
freeze_chance = "freeze_chance", // 冰冻概率
|
freeze_chance = "freeze_chance", // 冰冻概率
|
||||||
back_chance = "back_chance", // 击退概率
|
|
||||||
// ==================== 增益效果属性 ====================
|
// ==================== 增益效果属性 ====================
|
||||||
revive_count = "revive_count", // 复活次数
|
revive_count = "revive_count", // 复活次数
|
||||||
revive_time = "revive_time", // 复活时间
|
revive_time = "revive_time", // 复活时间
|
||||||
@@ -47,7 +46,6 @@ export interface GameScoreStats {
|
|||||||
crt_count: number; // 暴击次数
|
crt_count: number; // 暴击次数
|
||||||
wf_count: number; // 风怒次数
|
wf_count: number; // 风怒次数
|
||||||
dod_count: number; // 闪避次数
|
dod_count: number; // 闪避次数
|
||||||
back_count: number; // 击退次数
|
|
||||||
stun_count: number; // 击晕次数
|
stun_count: number; // 击晕次数
|
||||||
freeze_count: number; // 冰冻次数
|
freeze_count: number; // 冰冻次数
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1,11 @@
|
|||||||
盾战:获得护盾,抵御3次攻击,
|
盾战:获得护盾,抵御3次攻击,
|
||||||
|
|
||||||
|
攻击类型:
|
||||||
|
普通: 水球、近战无
|
||||||
|
暴击: 火球
|
||||||
|
穿刺: 旋风
|
||||||
|
可叠加类型:
|
||||||
|
双击(风怒)概率
|
||||||
|
|
||||||
|
|
||||||
|
群攻:不限
|
||||||
@@ -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}`);
|
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 freezeChance = damageEvent.Attrs[Attrs.freeze_chance] || 0;
|
||||||
const isFrost = !TAttrsComp.isFrost() && this.checkChance(freezeChance);
|
const isFrost = !TAttrsComp.isFrost() && this.checkChance(freezeChance);
|
||||||
// ✅ 触发视图层表现(伤害数字、受击动画、后退,冰冻)
|
// ✅ 触发视图层表现(伤害数字、受击动画、冰冻)
|
||||||
if (targetView) {
|
if (targetView) {
|
||||||
targetView.do_atked(damage, isCrit, damageEvent.s_uuid, isBack);
|
targetView.do_atked(damage, isCrit, damageEvent.s_uuid, false);
|
||||||
targetView.playEnd(skillConf.endAnm);
|
targetView.playEnd(skillConf.endAnm);
|
||||||
if (isFrost) {
|
if (isFrost) {
|
||||||
TAttrsComp.toFrost();
|
TAttrsComp.toFrost();
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ export class HeroAttrsComp extends ecs.Comp {
|
|||||||
// ==================== 特殊属性 ====================
|
// ==================== 特殊属性 ====================
|
||||||
critical: number = 0; // 暴击率
|
critical: number = 0; // 暴击率
|
||||||
freeze_chance: number = 0; // 冰冻概率
|
freeze_chance: number = 0; // 冰冻概率
|
||||||
back_chance: number = 0; // 击退概率
|
|
||||||
puncture: number = 0; // 穿刺次数
|
puncture: number = 0; // 穿刺次数
|
||||||
wfuny: number = 0; // 风怒
|
wfuny: number = 0; // 风怒
|
||||||
|
|
||||||
@@ -232,7 +231,6 @@ export class HeroAttrsComp extends ecs.Comp {
|
|||||||
this.skills = {};
|
this.skills = {};
|
||||||
this.critical = 0;
|
this.critical = 0;
|
||||||
this.freeze_chance = 0;
|
this.freeze_chance = 0;
|
||||||
this.back_chance = 0;
|
|
||||||
this.revive_count = 0;
|
this.revive_count = 0;
|
||||||
this.revive_time = 0;
|
this.revive_time = 0;
|
||||||
this.invincible_time = 0;
|
this.invincible_time = 0;
|
||||||
|
|||||||
@@ -105,7 +105,6 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
|
|||||||
mockAttrs.ap = highestAp;
|
mockAttrs.ap = highestAp;
|
||||||
mockAttrs.critical = 0;
|
mockAttrs.critical = 0;
|
||||||
mockAttrs.freeze_chance = 0;
|
mockAttrs.freeze_chance = 0;
|
||||||
mockAttrs.back_chance = 0;
|
|
||||||
mockAttrs.puncture = 0;
|
mockAttrs.puncture = 0;
|
||||||
mockAttrs.fac = FacSet.HERO;
|
mockAttrs.fac = FacSet.HERO;
|
||||||
|
|
||||||
|
|||||||
@@ -210,13 +210,11 @@ export class Skill extends ecs.Entity {
|
|||||||
const SUp=SkillUpList[s_uuid] ? SkillUpList[s_uuid]:SkillUpList[1001];
|
const SUp=SkillUpList[s_uuid] ? SkillUpList[s_uuid]:SkillUpList[1001];
|
||||||
const sCrt = (config.crt ?? 0)+(SUp.crt*skill_lv);
|
const sCrt = (config.crt ?? 0)+(SUp.crt*skill_lv);
|
||||||
const sFrz = (config.frz ?? 0)+(SUp.frz*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 sAp =config.ap+(SUp.ap*skill_lv);
|
||||||
const sHit=config.hit_count+(SUp.hit_count*skill_lv) + cAttrsComp.puncture
|
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.ap] = Math.floor(cAttrsComp.ap*sAp/100); //技能的ap是百分值 需要/100 而且需要再最终计算总ap时再/100,不然会出现ap为90%变0
|
||||||
sDataCom.Attrs[Attrs.critical] = cAttrsComp.critical + sCrt;
|
sDataCom.Attrs[Attrs.critical] = cAttrsComp.critical + sCrt;
|
||||||
sDataCom.Attrs[Attrs.freeze_chance] = cAttrsComp.freeze_chance + sFrz;
|
sDataCom.Attrs[Attrs.freeze_chance] = cAttrsComp.freeze_chance + sFrz;
|
||||||
sDataCom.Attrs[Attrs.back_chance] = cAttrsComp.back_chance + sBck;
|
|
||||||
sDataCom.s_uuid=s_uuid
|
sDataCom.s_uuid=s_uuid
|
||||||
sDataCom.skill_lv = Math.max(0, skill_lv);
|
sDataCom.skill_lv = Math.max(0, skill_lv);
|
||||||
sDataCom.fac=cAttrsComp.fac
|
sDataCom.fac=cAttrsComp.fac
|
||||||
|
|||||||
Reference in New Issue
Block a user