aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoName <322016+Faq@users.noreply.github.com>2020-04-05 15:53:23 +0300
committerShauren <shauren.trinity@gmail.com>2021-12-31 21:56:33 +0100
commit25e68fc5c20c2a331711ef74dbc6686d08e256ec (patch)
treeee73b9e65603f2d8a6e1ddce8f4262270f4d294a
parenta95c836b3b0cdf24347fdcf1507a5de8dfdc8734 (diff)
Core/PacketIO: Handle CMSG_REQUEST_PET_INFO for more cases (#24364)
+ vehicle + charm + possession from https://github.com/The-Cataclysm-Preservation-Project/TrinityCore/commit/87c6cc19e570623ab0d1d0ae569e0a51823d0200 (cherry picked from commit fbcd244b2fb65bd357d9fad0f5cc4d8d684f288f)
-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();
+ }
}