aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/PetHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Handlers/PetHandler.cpp')
-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 da0e46c5a1d..0ae1b56ac3c 100644
--- a/src/server/game/Handlers/PetHandler.cpp
+++ b/src/server/game/Handlers/PetHandler.cpp
@@ -764,5 +764,21 @@ void WorldSession::SendPetNameInvalid(uint32 error, const std::string& name, Dec
void WorldSession::HandleRequestPetInfo(WorldPackets::Pet::RequestPetInfo& /*requestPetInfo*/)
{
- 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->HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED) && charm->HasUnitFlag(UNIT_FLAG_POSSESSED))
+ _player->VehicleSpellInitialize();
+ // Packet sent when player has a charmed unit
+ else
+ _player->CharmSpellInitialize();
+ }
}