diff options
| author | Shauren <shauren.trinity@gmail.com> | 2017-11-26 16:52:42 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2018-03-08 23:13:51 +0100 |
| commit | 241109327bf573460d488d707d7eb19f82f1350c (patch) | |
| tree | 32e59a9e43ce9e673094f86edee461f69a61d6c3 /src/server/game/Entities | |
| parent | 592516ae69d89da3bcb0ede144644a3d2e0186e0 (diff) | |
Core/Creatures: Remove hover on death
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 7 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 3 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index c536e24312b..d2ffa162436 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -1992,7 +1992,10 @@ void Creature::setDeathState(DeathState s) if (m_formation && m_formation->GetLeader() == this) m_formation->FormationReset(true); - if ((CanFly() || IsFlying())) + bool needsFalling = IsFlying() || IsHovering(); + SetHover(false); + + if (needsFalling) GetMotionMaster()->MoveFall(); Unit::setDeathState(CORPSE); @@ -3007,7 +3010,7 @@ void Creature::UpdateMovementFlags() { SetCanFly(false); SetDisableGravity(false); - if (CanHover() || HasAuraType(SPELL_AURA_HOVER)) + if (IsAlive() && (CanHover() || HasAuraType(SPELL_AURA_HOVER))) SetHover(true); } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index c55e6f49459..d27d6b89917 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -14065,7 +14065,8 @@ bool Unit::SetHover(bool enable, bool /*packetOnly = false*/) else { RemoveUnitMovementFlag(MOVEMENTFLAG_HOVER); - if (hoverHeight) + //! Dying creatures will MoveFall from setDeathState + if (hoverHeight && (!isDying() || GetTypeId() != TYPEID_UNIT)) { float newZ = GetPositionZ() - hoverHeight; UpdateAllowedPositionZ(GetPositionX(), GetPositionY(), newZ); |
