aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Handlers/PetHandler.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp
index ca029b23e28..f39cc88e47e 100644
--- a/src/server/game/Handlers/PetHandler.cpp
+++ b/src/server/game/Handlers/PetHandler.cpp
@@ -904,5 +904,21 @@ void WorldSession::HandleLearnPreviewTalentsPet(WorldPacket& recvData)
void WorldSession::HandleRequestPetInfoOpcode(WorldPacket& /*recvPacket*/)
{
- GetPlayer()->PetSpellInitialize();
+ // Handle the packet CMSG_REQUEST_PET_INFO - sent when player does ingame /reload command
+
+ // Packet sent when player has a pet
+ if (_player->GetPet())
+ _player->PetSpellInitialize();
+ else if (Unit* charm = _player->GetCharmed())
+ {
+ // Packet sent when player has a possessed unit
+ if (charm->HasUnitState(UNIT_STATE_POSSESSED))
+ _player->PossessSpellInitialize();
+ // Packet sent when player controlling a vehicle
+ else if (charm->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED) && charm->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_POSSESSED))
+ _player->VehicleSpellInitialize();
+ // Packet sent when player has a charmed unit
+ else
+ _player->CharmSpellInitialize();
+ }
}