From 1dfb1dcf05685d1e874ed51078ddb95c9452e46c Mon Sep 17 00:00:00 2001 From: hondacrx Date: Mon, 15 Nov 2021 20:53:37 -0500 Subject: [PATCH] Core/Movement: Speed Limit for Spline Port From (https://github.com/TrinityCore/TrinityCore/commit/8ff0572ee30db22c81d9131348f5350781f64a4f) --- Source/Game/Movement/MoveSplineInit.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Source/Game/Movement/MoveSplineInit.cs b/Source/Game/Movement/MoveSplineInit.cs index 58a496b70..e22cca753 100644 --- a/Source/Game/Movement/MoveSplineInit.cs +++ b/Source/Game/Movement/MoveSplineInit.cs @@ -124,6 +124,20 @@ namespace Game.Movement args.velocity = unit.GetSpeed(SelectSpeedType(moveFlagsForSpeed)); } + // limit the speed in the same way the client does + float speedLimit() + { + if (args.flags.HasFlag(SplineFlag.Unknown_0x20000000)) + return float.MaxValue; + + if (args.flags.HasFlag(SplineFlag.Falling) || args.flags.HasFlag(SplineFlag.Catmullrom) || args.flags.HasFlag(SplineFlag.Flying) || args.flags.HasFlag(SplineFlag.Parabolic)) + return 50.0f; + + return Math.Max(28.0f, unit.GetSpeed(UnitMoveType.Run) * 4.0f); + }; + + args.velocity = Math.Min(args.velocity, speedLimit()); + if (!args.Validate(unit)) return 0;