aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Unit
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-02-20 14:00:48 +0100
committerShauren <shauren.trinity@gmail.com>2021-02-20 14:00:48 +0100
commit31d3080091643d4e348ec53c5bec3caf0e17110f (patch)
tree6df7f20f2a01ac9480f46ac9504f82c0b756c5be /src/server/game/Entities/Unit
parent411631743adb6438dc7690e5be3a1430080384ec (diff)
Core/Players: Corrected shield block value calculations
Diffstat (limited to 'src/server/game/Entities/Unit')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp4
-rw-r--r--src/server/game/Entities/Unit/Unit.h2
2 files changed, 3 insertions, 3 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index b9718b165dd..614b0ce07db 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -1363,7 +1363,7 @@ void Unit::CalculateMeleeDamage(Unit* victim, uint32 damage, CalcDamageInfo* dam
damageInfo->HitInfo |= HITINFO_BLOCK;
damageInfo->originalDamage = damageInfo->damage;
// 30% damage blocked, double blocked amount if block is critical
- damageInfo->blocked_amount = CalculatePct(damageInfo->damage, damageInfo->target->isBlockCritical() ? damageInfo->target->GetBlockPercent() * 2 : damageInfo->target->GetBlockPercent());
+ damageInfo->blocked_amount = CalculatePct(damageInfo->damage, damageInfo->target->isBlockCritical() ? damageInfo->target->GetBlockPercent(getLevel()) * 2 : damageInfo->target->GetBlockPercent(getLevel()));
damageInfo->damage -= damageInfo->blocked_amount;
damageInfo->cleanDamage += damageInfo->blocked_amount;
break;
@@ -1649,7 +1649,7 @@ uint32 Unit::CalcArmorReducedDamage(Unit* attacker, Unit* victim, const uint32 d
// Expansion and ContentTuningID necessary? Does Player get a ContentTuningID too ?
float armorConstant = sDB2Manager.EvaluateExpectedStat(ExpectedStatType::ArmorConstant, attackerLevel, -2, 0, Classes(attacker->getClass()));
- if (!armorConstant)
+ if (!(armor + armorConstant))
return damage;
float mitigation = std::min(armor / (armor + armorConstant), 0.85f);
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 7a9e1cf7ae3..ba8b58e5317 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1233,7 +1233,7 @@ class TC_GAME_API Unit : public WorldObject
int32 GetMechanicResistChance(SpellInfo const* spellInfo) const;
bool CanUseAttackType(uint8 attacktype) const;
- virtual uint32 GetBlockPercent() const { return 30; }
+ virtual float GetBlockPercent(uint8 /*attackerLevel*/) const { return 30.0f; }
float GetWeaponProcChance() const;
float GetPPMProcChance(uint32 WeaponSpeed, float PPM, SpellInfo const* spellProto) const;