diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index 2b43db14cf9..eefa703798b 100644 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -530,8 +530,24 @@ void MotionMaster::MoveSmoothPath(uint32 pointId, Position const* pathPoints, si if (fly) { init.SetFly(); - init.SetUncompressed(); init.SetSmooth(); + init.SetUncompressed(); + } + else + { + if (pathSize > 1) + { + G3D::Vector3 middle = (path[0] + path[pathSize]) / 2.f; + for (uint32 i = 1; i < pathSize; ++i) + { + G3D::Vector3 delta = middle - path[i]; + if (delta.x > 400 || delta.y > 400 || delta.z > 400) + { + init.SetUncompressed(); + break; + } + } + } } if (velocity > 0.0f)