aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2015-08-05 19:58:19 +0200
committerCarbenium <carbenium@outlook.com>2015-09-24 19:51:05 +0200
commit57328c69aa85a9758cc3e3c93d1f7a44279ef439 (patch)
tree6328ecdf60b8a446e6b55d0d9e406a7360191699 /src
parentcf67b7d375845e1745a79a712701413fcf4e75ea (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.cpp3
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);