diff --git a/assets/script/game/common/config/TalSet.ts b/assets/script/game/common/config/TalSet.ts index 9a80c830..54949b0c 100644 --- a/assets/script/game/common/config/TalSet.ts +++ b/assets/script/game/common/config/TalSet.ts @@ -28,7 +28,7 @@ export enum TalEffet { WFUNY=7, // 风怒 D_SKILL=8, //两次技能 SHIELD=9, // 护盾 - LDMG=10, // 减伤 + DAMAGE_REDUCTION=10, // 减伤 C_MSKILL=11, // 必杀技能必暴 C_ATK=12, // 普工必爆 C_SKILL=13, // 一般技能必暴 @@ -111,7 +111,7 @@ export const talConf: Record = { desc:"被攻击3次后, 给于目标50%的伤害"}, 7102:{uuid:7102,name:"护盾",triType:TriType.DMG,Trigger:3,count:1,target:TalTarget.SELF,effet:TalEffet.SHIELD,vType:BType.RATIO, value:20,attrs:TalAttrs.NON, desc:"被攻击3次后, 获得20%的生命值护盾"}, - 7103:{uuid:7103,name:"减伤",triType:TriType.DMG,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.LDMG,vType:BType.RATIO, value:50,attrs:TalAttrs.NON, + 7103:{uuid:7103,name:"减伤",triType:TriType.DMG,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.DAMAGE_REDUCTION,vType:BType.RATIO, value:50,attrs:TalAttrs.NON, desc:"被攻击3次后, 下1次伤害减50%"}, diff --git a/assets/script/game/hero/HeroAtkSystem.ts b/assets/script/game/hero/HeroAtkSystem.ts index c4a06aa2..06dbd931 100644 --- a/assets/script/game/hero/HeroAtkSystem.ts +++ b/assets/script/game/hero/HeroAtkSystem.ts @@ -158,7 +158,7 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd const isCrit = this.checkChance(damageEvent.Attrs[Attrs.CRITICAL]); if (isCrit) attackerModel?.useValueTalByAttr(Attrs.CRITICAL); // 清除施法者的暴击buff // 计算伤害 - let damage = this.dmgCount(damageEvent,targetAttrs.Attrs); + let damage = this.dmgCount(damageEvent,targetAttrs); if (isCrit) { // 暴击伤害计算 // 使用施法者的暴击伤害加成属性(damageEvent.Attrs 快照) @@ -228,9 +228,10 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd * - 所有除法和乘法计算后都进行取整操作,确保游戏中的伤害值为整数 * - 元素伤害只应用于魔法伤害部分 */ - private dmgCount(damageEvent:any,TAttrs:any){ + private dmgCount(damageEvent:any,TAttrsComp:HeroAttrsComp){ // 1. 获取技能配置 - 如果技能不存在,直接返回0伤害 const CAttrs=damageEvent.Attrs; + const TAttrs=TAttrsComp.Attrs; let sConf = SkillSet[damageEvent.s_uuid]; if (!sConf) return 0; @@ -276,11 +277,12 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd // 8. 计算最终总伤害(物理伤害 + 魔法伤害) let total = apAfter + mapAfter; - - // 9. 应用最终伤害减免效果(如特殊天赋、buff等提供的减免) + // 9. 计算免伤 + let DMG_RED = TAttrs[Attrs.DAMAGE_REDUCTION]||0+TAttrsComp.useCountValTal(Attrs.DAMAGE_REDUCTION); + // 10. 应用最终伤害减免效果(如特殊天赋、buff等提供的减免) total = Math.floor(total * (1 - ((TAttrs[Attrs.DAMAGE_REDUCTION]||0)/100))); - // 10. 确保伤害值非负,返回最终伤害 + // 11. 确保伤害值非负,返回最终伤害 return Math.max(0,total); } diff --git a/assets/script/game/hero/TalComp.ts b/assets/script/game/hero/TalComp.ts index a50a6933..f4f9b325 100644 --- a/assets/script/game/hero/TalComp.ts +++ b/assets/script/game/hero/TalComp.ts @@ -208,8 +208,8 @@ export class TalComp extends ecs.Comp { case TalEffet.SKILL_DMG: heroAttrs.addCountTal(TalEffet.SKILL_DMG, talent.value + talent.value_add); break; - case TalEffet.LDMG: - heroAttrs.addCountTal(TalEffet.LDMG, talent.value + talent.value_add); + case TalEffet.DAMAGE_REDUCTION: + heroAttrs.addCountTal(TalEffet.DAMAGE_REDUCTION, talent.value + talent.value_add); break; case TalEffet.HP: heroAttrs.add_hp(talent.value + talent.value_add,talent.vType == BType.VALUE);