From d3956f31426217145b87cb724e451708713d2fdd Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 16 Jan 2022 18:58:34 +0100 Subject: [PATCH] fix(Core/Spells): Charging unit should always reach its target even if stunned/rooted. (#10192) Fixes #9454 --- .../MovementGenerators/PointMovementGenerator.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp index 146d12136..317f8c2a9 100644 --- a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp @@ -99,12 +99,22 @@ bool PointMovementGenerator::DoUpdate(T* unit, uint32 /*diff*/) if (!unit) return false; - if (unit->HasUnitState(UNIT_STATE_NOT_MOVE) || unit->IsMovementPreventedByCasting()) + if (unit->IsMovementPreventedByCasting()) { unit->StopMoving(); return true; } + if (unit->HasUnitState(UNIT_STATE_NOT_MOVE)) + { + if (!unit->HasUnitState(UNIT_STATE_CHARGING)) + { + unit->StopMoving(); + } + + return true; + } + unit->AddUnitState(UNIT_STATE_ROAMING_MOVE); if (i_recalculateSpeed && !unit->movespline->Finalized())