| | |
| | | // ============ 第二步:刷新实际血量 ============ |
| | | long fromHp = target.teamHero.curHp; |
| | | |
| | | |
| | | |
| | | // ============处理吸血跟反伤 =============== |
| | | // 也要按每一击平均算 最后要补齐伤害 |
| | | long suckHp = hurt.SuckHP; |
| | | long reflectHp = hurt.BounceHP; |
| | | |
| | | List<long> suckHpList = BattleUtility.DivideDamageToList(skillConfig.DamageDivide, _hitIndex, suckHp); |
| | | |
| | | List<long> reflectHpList = BattleUtility.DivideDamageToList(skillConfig.DamageDivide, _hitIndex, hurt.BounceHP); |
| | | // long currentSuckHp = suckHp / tagUseSkillAttack.HurtCount; |
| | | |
| | | // 计算当前这一击的实际伤害(所有分段伤害之和) |
| | | long currentHitDamage = 0; |
| | | foreach (long dmg in damageList) |
| | |
| | | currentHitDamage += dmg; |
| | | } |
| | | |
| | | long toHp = Math.Max(0, fromHp - currentHitDamage); |
| | | long currentHitSuckHp = 0; |
| | | foreach (long suck in suckHpList) |
| | | { |
| | | currentHitSuckHp += suck; |
| | | } |
| | | |
| | | long currentHitReflectHp = 0; |
| | | foreach (long reflect in reflectHpList) |
| | | { |
| | | currentHitReflectHp += reflect; |
| | | } |
| | | |
| | | long toHp = Math.Max(0, fromHp - currentHitDamage + currentHitSuckHp - currentHitReflectHp); |
| | | |
| | | |
| | | // 更新目标血量 |
| | | target.teamHero.curHp = toHp; |
| | |
| | | $"目标: {target.teamHero.name}\n" + |
| | | $"技能: {skillConfig.SkillName} (第{_hitIndex}击)\n" + |
| | | $"伤害: {currentHitDamage} (总伤害: {totalDamage})\n" + |
| | | $"吸血: {currentHitSuckHp}\n" + |
| | | $"反伤: {currentHitReflectHp}\n" + |
| | | $"血量变化: {fromHp} -> {toHp}" |
| | | ); |
| | | #endif |
| | |
| | | tempDropList.TryGetValue(objID, out BattleDrops battleDrops); |
| | | tempDeadPackList.TryGetValue(objID, out HB422_tagMCTurnFightObjDead deadPack); |
| | | |
| | | // ============ 第四步:执行表现(飘字、动画等) ============ |
| | | target.Hurt(damageList, totalDamage, hurt, skillConfig, _hitIndex, battleDrops, deadPack, fromHp, toHp); |
| | | |
| | | // ============ 第五步:处理施法者相关效果 ============ |
| | | caster.SuckHp(hurt.SuckHP, skillConfig); |
| | | caster.HurtByReflect(hurt.BounceHP, skillConfig); |
| | | // 参数打包 |
| | | BattleHurtParam hurtParam = new BattleHurtParam() |
| | | { |
| | | casterObj = caster, |
| | | hurtObj = target, |
| | | damageList = damageList, |
| | | suckHpList = suckHpList, |
| | | reflectHpList = reflectHpList, |
| | | fromHp = fromHp, |
| | | toHp = toHp, |
| | | battleDrops = battleDrops, |
| | | hurt = hurt, |
| | | hitIndex = _hitIndex, |
| | | deadPack = deadPack, |
| | | skillConfig = skillConfig |
| | | }; |
| | | |
| | | // ============ 第四步:执行表现(飘字、动画等) ============ |
| | | target.Hurt(hurtParam); |
| | | |
| | | |
| | | } |
| | | |
| | | // 处理HP刷新包(简化逻辑) |