diff options
Diffstat (limited to 'src/server/game/Movement/MotionMaster.cpp')
| -rw-r--r-- | src/server/game/Movement/MotionMaster.cpp | 7 | 
1 files changed, 4 insertions, 3 deletions
diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index f8aebbc27ab..c5bca4f3883 100644 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -737,15 +737,16 @@ void MotionMaster::MoveKnockbackFrom(float srcX, float srcY, float speedXY, floa      if (speedXY < 0.01f)          return; -    float x, y, z; +    Position dest = _owner->GetPosition();      float moveTimeHalf = speedZ / Movement::gravity;      float dist = 2 * moveTimeHalf * speedXY;      float max_height = -Movement::computeFallElevation(moveTimeHalf, false, -speedZ); -    _owner->GetNearPoint(_owner, x, y, z, dist, _owner->GetAbsoluteAngle(srcX, srcY) + float(M_PI)); +    // Use a mmap raycast to get a valid destination. +    _owner->MovePositionToFirstCollision(dest, dist, _owner->GetRelativeAngle(srcX, srcY) + float(M_PI));      Movement::MoveSplineInit init(_owner); -    init.MoveTo(x, y, z); +    init.MoveTo(dest.GetPositionX(), dest.GetPositionY(), dest.GetPositionZ(), false);      init.SetParabolic(max_height, 0);      init.SetOrientationFixed(true);      init.SetVelocity(speedXY);  | 
