diff options
author | ccrs <ccrs@users.noreply.github.com> | 2019-05-19 11:58:03 +0200 |
---|---|---|
committer | ccrs <ccrs@users.noreply.github.com> | 2019-05-19 11:58:03 +0200 |
commit | c826ec0a3c17f86f8a3e44455c533fb46f239720 (patch) | |
tree | 529bb04fd082b765cb10271c545b83bce31ef765 /src/server/game/Handlers/PetHandler.cpp | |
parent | 48208b8dde9fe69131f44bc49a52d8bff90db9ef (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
Diffstat (limited to 'src/server/game/Handlers/PetHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/PetHandler.cpp | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index 0bc5d5006e7..dca55bf98ee 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -159,8 +159,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); @@ -366,7 +365,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)) |