diff options
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; } /*######################################## |