aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorccrs <ccrs@users.noreply.github.com>2019-05-19 11:58:03 +0200
committerShauren <shauren.trinity@gmail.com>2021-12-05 23:00:39 +0100
commit476566871879abe51a48833a01cec427dd7c6b8e (patch)
tree5346ba747d858bf2d65d09ea9b6eec3b26b95192
parenta41cac45f4be2e5a9b2e2be72a01d3dc0a0efae7 (diff)
Core/Handlers: apply some movement related corrections
Unit::StopMoving() is evil, and so is MotionMaster::Clear() the first can really mess up existing movement generators the second can interrupt "controlled" movements... can do it literally mid-air (cherry picked from commit c826ec0a3c17f86f8a3e44455c533fb46f239720)
-rw-r--r--src/server/game/Handlers/PetHandler.cpp4
1 files changed, 1 insertions, 3 deletions
diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp
index e312422087b..5801ec4742f 100644
--- a/src/server/game/Handlers/PetHandler.cpp
+++ b/src/server/game/Handlers/PetHandler.cpp
@@ -152,8 +152,7 @@ void WorldSession::HandlePetActionHelper(Unit* pet, ObjectGuid guid1, uint32 spe
switch (spellid)
{
case COMMAND_STAY: // flat = 1792 - STAY
- pet->StopMoving();
- pet->GetMotionMaster()->Clear();
+ pet->GetMotionMaster()->Clear(MOTION_PRIORITY_NORMAL);
pet->GetMotionMaster()->MoveIdle();
charmInfo->SetCommandState(COMMAND_STAY);
@@ -371,7 +370,6 @@ void WorldSession::HandlePetActionHelper(Unit* pet, ObjectGuid guid1, uint32 spe
// This is true if pet has no target or has target but targets differs.
if (pet->GetVictim() != unit_target)
{
- pet->GetMotionMaster()->Clear();
if (CreatureAI* AI = pet->ToCreature()->AI())
{
if (PetAI* petAI = dynamic_cast<PetAI*>(AI))