diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index a16ee3186d..c612fe3f7d 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -1482,14 +1482,6 @@ void WorldSession::HandleMoveSetCanFlyAckOpcode(WorldPacket& recvData) _player->m_unitMovedByMe->m_movementInfo.flags = movementInfo.GetMovementFlags(); } -void WorldSession::HandleRequestPetInfoOpcode(WorldPacket& /*recvData */) -{ - /* - TC_LOG_DEBUG("network", "WORLD: CMSG_REQUEST_PET_INFO"); - recvData.hexlike(); - */ -} - void WorldSession::HandleSetTaxiBenchmarkOpcode(WorldPacket& recvData) { TC_LOG_DEBUG("network", "WORLD: CMSG_SET_TAXI_BENCHMARK_MODE"); diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index cfeb3ba299..988f1053a4 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -972,3 +972,27 @@ void WorldSession::SendPetAdded(int32 petSlot, int32 petNumber, int32 creatureID SendPacket(&data); } + +void WorldSession::HandleRequestPetInfoOpcode(WorldPacket& /*recvData*/) +{ + /* Handle the packet CMSG_REQUEST_PET_INFO - Send when player has a pet, and does /reload + * From: https://github.com/TrinityCore/TrinityCore/commit/6ebe1afeeccb847702c12e522bddaa7b5694dc38#comments + * This packet is also sent when + * You're controlling a vehicle (Player::VehicleSpellInitialize) + * You have a unit charmed (Player::CharmSpellInitialize) + * You're possessing a unit (Player::PossessSpellInitialize) + */ + + if (_player->GetPet() && _player->CanControlPet()) + _player->PetSpellInitialize(); + + if (Unit* charm = _player->GetCharm()) + { + if (charm->HasUnitState(UNIT_STATE_POSSESSED)) + _player->PossessSpellInitialize(); + else if (charm->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED)) + _player->VehicleSpellInitialize(); + else + _player->CharmSpellInitialize(); + } +}