diff options
author | jackpoz <giacomopoz@gmail.com> | 2015-08-05 19:58:19 +0200 |
---|---|---|
committer | Carbenium <carbenium@outlook.com> | 2015-09-24 19:51:05 +0200 |
commit | 57328c69aa85a9758cc3e3c93d1f7a44279ef439 (patch) | |
tree | 6328ecdf60b8a446e6b55d0d9e406a7360191699 /src | |
parent | cf67b7d375845e1745a79a712701413fcf4e75ea (diff) |
Core/Spells: Fix damage done by SPELL_EFFECT_NORMALIZED_WEAPON_DMG
Fix a rare case that would cause SPELL_EFFECT_NORMALIZED_WEAPON_DMG to do 4 billions damage or to trigger an assertion in Unit::CalculateDamage() depending by Unit base damage.
To reproduce the issue cast spell 25816 on a level 1-14 warrior, then make the warrior cast spell 694 on a Creature.
(cherry picked from commit 143026ed19455f5a908ef508d1bf5ce43c092a21)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 59a7c8fb8fc..5bfbf189d25 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -2117,6 +2117,9 @@ uint32 Unit::CalculateDamage(WeaponAttackType attType, bool normalized, bool add } } + minDamage = std::max(0.f, minDamage); + maxDamage = std::max(0.f, maxDamage); + if (minDamage > maxDamage) std::swap(minDamage, maxDamage); |