aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2015-08-05 19:58:19 +0200
committerjackpoz <giacomopoz@gmail.com>2015-08-05 19:58:19 +0200
commit143026ed19455f5a908ef508d1bf5ce43c092a21 (patch)
treee450508f5ea4f04c46c83cb2b9bdd148425b5057 /src
parent578bb8452fa8296b1bfdb00a995862b7fc0f19c0 (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.
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 71c19674790..aaa9328ea89 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -2206,6 +2206,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);