[9197] More propertly update walk mode for player pets.

* Use AddMonsterMoveFlag instead SetMonsterMoveFlags for set walk-mode
* Apply walk/run mode to all copntrolled units (except totems).
* Synchronize walk/run mode at pet creating/loading.
This commit is contained in:
VladimirMangos 2010-01-17 07:48:04 +03:00
parent b0809f63b2
commit 2e9bf5ad6a
6 changed files with 43 additions and 25 deletions

View file

@ -300,27 +300,7 @@ void WorldSession::HandleMovementOpcodes( WorldPacket & recv_data )
plMover->HandleFall(movementInfo);
if ((opcode == MSG_MOVE_SET_WALK_MODE || opcode == MSG_MOVE_SET_RUN_MODE) && plMover)
{
Pet* pPet = plMover->GetPet();
Pet* pMiniPet = plMover->GetMiniPet();
if (movementInfo.HasMovementFlag(MOVEMENTFLAG_WALK_MODE))
{
if (pPet && !pPet->isInCombat())
pPet->SetMonsterMoveFlags(MONSTER_MOVE_WALK);
if (pMiniPet)
pMiniPet->SetMonsterMoveFlags(MONSTER_MOVE_WALK);
}
else
{
if (pPet)
pPet->RemoveMonsterMoveFlag(MONSTER_MOVE_WALK);
if (pMiniPet)
pMiniPet->RemoveMonsterMoveFlag(MONSTER_MOVE_WALK);
}
}
plMover->UpdateWalkModeForPets(movementInfo.HasMovementFlag(MOVEMENTFLAG_WALK_MODE));
if (plMover && (movementInfo.HasMovementFlag(MOVEMENTFLAG_SWIMMING) != plMover->IsInWater()))
{