feat: 新增暴击抗性和冰冻抗性属性并完善暴击冰冻判定
1. 在HeroAttrs枚举中新增critical_res和freeze_res属性 2. 在HeroAttrsComp中添加对应抗性属性并在重置方法中初始化 3. 修改暴击和冰冻判定逻辑,加入抗性减免计算
This commit is contained in:
@@ -24,9 +24,11 @@ export enum Attrs {
|
||||
// ==================== 暴击与命中属性 ====================
|
||||
critical = "critical", // 暴击率
|
||||
critical_damage = "critical_damage", // 暴击伤害
|
||||
critical_res = "critical_res", // 暴击抗性
|
||||
|
||||
// ==================== 特殊效果属性 ====================
|
||||
freeze_chance = "freeze_chance", // 冰冻概率
|
||||
freeze_res = "freeze_res", // 冰冻抗性
|
||||
knockback_chance = "knockback_chance", // 击退概率
|
||||
knockback_distance = "knockback_distance", // 击退距离强化
|
||||
knockback_res = "knockback_res", // 击退抗性
|
||||
|
||||
@@ -135,7 +135,8 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
|
||||
|
||||
// 暴击判定
|
||||
// 使用施法者的暴击率属性(damageEvent.Attrs 快照),- 被攻击者的暴击抗性属
|
||||
const isCrit = this.checkChance(damageEvent.Attrs[Attrs.critical]);
|
||||
const criticalChance = (damageEvent.Attrs[Attrs.critical] || 0) - (TAttrsComp.critical_res || 0);
|
||||
const isCrit = this.checkChance(criticalChance);
|
||||
|
||||
// 计算基础伤害
|
||||
let damage = this.dmgCount(damageEvent,TAttrsComp);
|
||||
@@ -189,7 +190,7 @@ 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 freezeChance = damageEvent.Attrs[Attrs.freeze_chance] || 0;
|
||||
const freezeChance = (damageEvent.Attrs[Attrs.freeze_chance] || 0) - (TAttrsComp.freeze_res || 0);
|
||||
const isFrost = !TAttrsComp.isFrost() && this.checkChance(freezeChance);
|
||||
|
||||
// 击退判定
|
||||
|
||||
@@ -42,7 +42,9 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
|
||||
// ==================== 特殊属性 ====================
|
||||
critical: number = 0; // 暴击率
|
||||
critical_res: number = 0; // 暴击抗性
|
||||
freeze_chance: number = 0; // 冰冻概率
|
||||
freeze_res: number = 0; // 冰冻抗性
|
||||
knockback_chance: number = 0; // 击退概率
|
||||
knockback_distance: number = 0; // 击退距离强化
|
||||
knockback_res: number = 0; // 击退抗性
|
||||
@@ -299,7 +301,9 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
this.atked = undefined;
|
||||
this.revive = undefined;
|
||||
this.critical = 0;
|
||||
this.critical_res = 0;
|
||||
this.freeze_chance = 0;
|
||||
this.freeze_res = 0;
|
||||
this.knockback_chance = 0;
|
||||
this.knockback_distance = 0;
|
||||
this.knockback_res = 0;
|
||||
|
||||
Reference in New Issue
Block a user