From 5ebb982db5dad3c786412a54bfb9fb18a64e9dd0 Mon Sep 17 00:00:00 2001 From: Stoabrogga <38475780+Stoabrogga@users.noreply.github.com> Date: Sun, 16 Feb 2020 10:04:55 +0100 Subject: [PATCH] fix(Core/CreatureGroups): Fix "MoveSplineInitArgs::Validate" errors (#2604) --- src/server/game/Entities/Creature/CreatureGroups.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/server/game/Entities/Creature/CreatureGroups.cpp b/src/server/game/Entities/Creature/CreatureGroups.cpp index f8ffdff35..8a3138f83 100644 --- a/src/server/game/Entities/Creature/CreatureGroups.cpp +++ b/src/server/game/Entities/Creature/CreatureGroups.cpp @@ -279,9 +279,13 @@ void CreatureGroup::LeaderMoveTo(float x, float y, float z, bool run) // xinef: if we move members to position without taking care of sizes, we should compare distance without sizes // xinef: change members speed basing on distance - if too far speed up, if too close slow down UnitMoveType mtype = Movement::SelectSpeedType(member->GetUnitMovementFlags()); - member->SetSpeedRate(mtype, m_leader->GetSpeedRate(mtype) * member->GetExactDist(dx, dy, dz) / pathDist); + float speedRate = m_leader->GetSpeedRate(mtype) * member->GetExactDist(dx, dy, dz) / pathDist; - member->GetMotionMaster()->MovePoint(0, dx, dy, dz); - member->SetHomePosition(dx, dy, dz, pathAngle); + if (speedRate > 0.01f) // don't move if speed rate is too low + { + member->SetSpeedRate(mtype, speedRate); + member->GetMotionMaster()->MovePoint(0, dx, dy, dz); + member->SetHomePosition(dx, dy, dz, pathAngle); + } } }