feat(buff): 新增出血debuff并实现暴击率加成逻辑
1. 在BuffSet中新增出血debuff的配置、图标映射与相关常量 2. 在HeroAtkSystem中添加出血层数带来的被暴击率加成计算逻辑
This commit is contained in:
@@ -19,7 +19,7 @@ import { getMonsterGoldDrop } from "../map/RogueConfig";
|
||||
import { MissionEconomy } from "../map/MissionEconomy";
|
||||
import { MoveComp } from "./MoveComp";
|
||||
import { buffManager, BuffApplyOverrides } from "./BuffManager";
|
||||
import { DEBUFF_ICON_MAP, VULNERABLE_BUFF_ID, BuffList } from "../common/config/BuffSet";
|
||||
import { DEBUFF_ICON_MAP, VULNERABLE_BUFF_ID, BLEED_BUFF_ID, BLEED_CRIT_PER_STACK, BuffList } from "../common/config/BuffSet";
|
||||
import { BuffComp } from "./BuffComp";
|
||||
|
||||
/** 最终伤害数据接口
|
||||
@@ -135,8 +135,8 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpda
|
||||
this.onAttacked(target);
|
||||
|
||||
// 暴击判定
|
||||
// 使用施法者的暴击率属性(damageEvent.Attrs 快照),- 被攻击者的暴击抗性属
|
||||
const criticalChance = (damageEvent.Attrs[Attrs.critical] || 0) - TAttrsComp.getFinalCriticalRes();
|
||||
// 使用施法者的暴击率属性(damageEvent.Attrs 快照)- 被攻击者的暴击抗性 + 目标出血层数附加的被暴击率
|
||||
const criticalChance = (damageEvent.Attrs[Attrs.critical] || 0) - TAttrsComp.getFinalCriticalRes() + this.getBleedCritBonus(target);
|
||||
const isCrit = this.checkChance(criticalChance);
|
||||
|
||||
// 计算基础伤害:DoT 直接用固定 tick 值,普攻走 dmgCount 公式
|
||||
@@ -462,6 +462,16 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpda
|
||||
* @param damage 原始伤害值
|
||||
* @returns {remainingDamage, absorbedDamage} 剩余伤害值和被护盾减免的伤害值
|
||||
*/
|
||||
/**
|
||||
* 目标出血层数附加的被暴击率(每层 +BLEED_CRIT_PER_STACK 百分点)。
|
||||
* @returns 附加的被暴击率(百分点)
|
||||
*/
|
||||
private getBleedCritBonus(target: ecs.Entity): number {
|
||||
if (!target.has(BuffComp)) return 0;
|
||||
const layers = target.get(BuffComp).buffs.get(BLEED_BUFF_ID);
|
||||
return (layers?.length ?? 0) * BLEED_CRIT_PER_STACK;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算易伤附加伤害:汇总目标每层易伤 buff 的数值(value_override 优先),再被易伤抗性百分比减免。
|
||||
* @returns 附加伤害值(向下取整,非负)
|
||||
|
||||
Reference in New Issue
Block a user