diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 3d18506bfdf..221bcefe47f 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -14155,7 +14155,7 @@ bool Unit::SetHover(bool enable, bool packetOnly /*= false*/, bool /*updateAnima { //! No need to check height on ascent AddUnitMovementFlag(MOVEMENTFLAG_HOVER); - if (hoverHeight) + if (hoverHeight && GetPositionZ() - GetFloorZ() < hoverHeight) UpdateHeight(GetPositionZ() + hoverHeight); } else @@ -14164,7 +14164,7 @@ bool Unit::SetHover(bool enable, bool packetOnly /*= false*/, bool /*updateAnima //! Dying creatures will MoveFall from setDeathState if (hoverHeight && (!isDying() || GetTypeId() != TYPEID_UNIT)) { - float newZ = GetPositionZ() - hoverHeight; + float newZ = std::max(GetFloorZ(), GetPositionZ() - hoverHeight); UpdateAllowedPositionZ(GetPositionX(), GetPositionY(), newZ); UpdateHeight(newZ); }