Core/Movement: various improvements for creature knockbacks

Port From (https://github.com/TrinityCore/TrinityCore/commit/a3d28efcfa329a1330b8687e9bdde8759bbe0bdc)
This commit is contained in:
hondacrx
2022-02-18 13:10:52 -05:00
parent 380aeac394
commit 44b045d5be
+5 -3
View File
@@ -687,15 +687,16 @@ namespace Game.Movement
if (speedXY < 0.01f) if (speedXY < 0.01f)
return; return;
float x, y, z; Position dest = _owner.GetPosition();
float moveTimeHalf = (float)(speedZ / gravity); float moveTimeHalf = (float)(speedZ / gravity);
float dist = 2 * moveTimeHalf * speedXY; float dist = 2 * moveTimeHalf * speedXY;
float max_height = -MoveSpline.ComputeFallElevation(moveTimeHalf, false, -speedZ); 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); MoveSplineInit init = new(_owner);
init.MoveTo(x, y, z); init.MoveTo(dest.GetPositionX(), dest.GetPositionY(), dest.GetPositionZ(), false);
init.SetParabolic(max_height, 0); init.SetParabolic(max_height, 0);
init.SetOrientationFixed(true); init.SetOrientationFixed(true);
init.SetVelocity(speedXY); init.SetVelocity(speedXY);
@@ -1030,6 +1031,7 @@ namespace Game.Movement
void Pop(bool active, bool movementInform) void Pop(bool active, bool movementInform)
{ {
if (!_generators.Empty())
Remove(_generators.FirstOrDefault(), active, movementInform); Remove(_generators.FirstOrDefault(), active, movementInform);
} }