From 8ee11c7c6595c89f3159f3eaafe2f290391aa62a Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sat, 31 Aug 2019 11:54:00 -0400 Subject: [PATCH] Core/Movement: Corrected all speed checks Port From (https://github.com/TrinityCore/TrinityCore/commit/396457e36a78ebd6f2b1c801121880168908134b) --- Source/Game/Movement/MotionMaster.cs | 5 +++++ Source/Game/Movement/MoveSplineInitArgs.cs | 2 +- Source/Game/Spells/SpellEffects.cs | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Source/Game/Movement/MotionMaster.cs b/Source/Game/Movement/MotionMaster.cs index 65448f66e..7eecc45c1 100644 --- a/Source/Game/Movement/MotionMaster.cs +++ b/Source/Game/Movement/MotionMaster.cs @@ -351,6 +351,9 @@ namespace Game.Movement if (_owner.IsTypeId(TypeId.Player)) return; + if (speedXY < 0.01f) + return; + float x, y, z; float moveTimeHalf = (float)(speedZ / gravity); float dist = 2 * moveTimeHalf * speedXY; @@ -393,6 +396,8 @@ namespace Game.Movement JumpArrivalCastArgs arrivalCast = null, SpellEffectExtraData spellEffectExtraData = null) { Log.outDebug(LogFilter.Server, "Unit ({0}) jump to point (X: {1} Y: {2} Z: {3})", _owner.GetGUID().ToString(), x, y, z); + if (speedXY < 0.01f) + return; float moveTimeHalf = (float)(speedZ / gravity); float max_height = -MoveSpline.computeFallElevation(moveTimeHalf, false, -speedZ); diff --git a/Source/Game/Movement/MoveSplineInitArgs.cs b/Source/Game/Movement/MoveSplineInitArgs.cs index aa3311774..8eb0ecf0b 100644 --- a/Source/Game/Movement/MoveSplineInitArgs.cs +++ b/Source/Game/Movement/MoveSplineInitArgs.cs @@ -66,7 +66,7 @@ namespace Game.Movement if (!CHECK(path.Length > 1)) return false; - if (!CHECK(velocity > 0.01f)) + if (!CHECK(velocity >= 0.01f)) return false; if (!CHECK(time_perc >= 0.0f && time_perc <= 1.0f)) return false; diff --git a/Source/Game/Spells/SpellEffects.cs b/Source/Game/Spells/SpellEffects.cs index 1ba499a52..89bdfbfde 100644 --- a/Source/Game/Spells/SpellEffects.cs +++ b/Source/Game/Spells/SpellEffects.cs @@ -4179,7 +4179,7 @@ namespace Game.Spells float ratio = 0.1f; float speedxy = effectInfo.MiscValue * ratio; float speedz = damage * ratio; - if (speedxy < 0.1f && speedz < 0.1f) + if (speedxy < 0.01f && speedz < 0.01f) return; float x, y;