From 44b045d5be611f6b63092a7c15bd96bfb655f8b8 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Fri, 18 Feb 2022 13:10:52 -0500 Subject: [PATCH] Core/Movement: various improvements for creature knockbacks Port From (https://github.com/TrinityCore/TrinityCore/commit/a3d28efcfa329a1330b8687e9bdde8759bbe0bdc) --- Source/Game/Movement/MotionMaster.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Source/Game/Movement/MotionMaster.cs b/Source/Game/Movement/MotionMaster.cs index eadc8b22f..789f397c6 100644 --- a/Source/Game/Movement/MotionMaster.cs +++ b/Source/Game/Movement/MotionMaster.cs @@ -687,15 +687,16 @@ namespace Game.Movement if (speedXY < 0.01f) return; - float x, y, z; + Position dest = _owner.GetPosition(); float moveTimeHalf = (float)(speedZ / gravity); float dist = 2 * moveTimeHalf * speedXY; float max_height = -MoveSpline.ComputeFallElevation(moveTimeHalf, false, -speedZ); - _owner.GetNearPoint(_owner, out x, out y, out z, dist, _owner.GetAbsoluteAngle(origin) + MathFunctions.PI); + // Use a mmap raycast to get a valid destination. + _owner.MovePositionToFirstCollision(dest, dist, _owner.GetRelativeAngle(origin) + MathF.PI); MoveSplineInit init = new(_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); @@ -1030,7 +1031,8 @@ namespace Game.Movement void Pop(bool active, bool movementInform) { - Remove(_generators.FirstOrDefault(), active, movementInform); + if (!_generators.Empty()) + Remove(_generators.FirstOrDefault(), active, movementInform); } void DirectInitialize()