diff options
author | Xanadu <none@none> | 2010-03-15 02:59:21 +0100 |
---|---|---|
committer | Xanadu <none@none> | 2010-03-15 02:59:21 +0100 |
commit | 8cc3d2ad7f01cf5a707f72fbd6e7d79cb7c02f53 (patch) | |
tree | 2a5383c953e8773f68e1680959c48d28883975ea /src/game/Unit.cpp | |
parent | 1845a9588d78e669f8d9b10661f4addc39b6a6ea (diff) |
Fixed Drain Soul and Shadowburn Soul Shard on target death. Closes issue 1058.
--HG--
branch : trunk
Diffstat (limited to 'src/game/Unit.cpp')
-rw-r--r-- | src/game/Unit.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 8aed67a0f9d..ba4f49f6691 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -11976,6 +11976,11 @@ void Unit::SetHover(bool on) void Unit::setDeathState(DeathState s) { + // death state needs to be updated before RemoveAllAurasOnDeath() calls HandleChannelDeathItem(..) so that + // it can be used to check creation of death items (such as soul shards). + DeathState oldDeathState = m_deathState; + m_deathState = s; + if (s != ALIVE && s != JUST_ALIVED) { CombatStop(); @@ -12012,13 +12017,12 @@ void Unit::setDeathState(DeathState s) else if (s == JUST_ALIVED) RemoveFlag (UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE); // clear skinnable for creature and player (at battleground) - if (m_deathState != ALIVE && s == ALIVE) + if (oldDeathState != ALIVE && s == ALIVE) { //_ApplyAllAuraMods(); // Reset display id on resurection - needed by corpse explosion to cleanup after display change SetDisplayId(GetNativeDisplayId()); } - m_deathState = s; } /*######################################## |