diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index 2b24bbe19b..bb15c56736 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -26,6 +26,7 @@ #include "ObjectMgr.h" #include "Opcodes.h" #include "Pet.h" +#include "PetPackets.h" #include "PetAI.h" #include "Player.h" #include "Spell.h" @@ -957,17 +958,14 @@ void WorldSession::SendPetSlotUpdated(int32 petNumberA, int32 petSlotA, int32 pe void WorldSession::SendPetAdded(int32 petSlot, int32 petNumber, int32 creatureID, int32 level, std::string name) { - WorldPacket data(SMSG_PET_ADDED, 4 + 4 + 1 + 4 + 4 + name.length()); + WorldPackets::Pet::PetAdded petAdded; + petAdded.Level = level; + petAdded.PetSlot = petSlot; + petAdded.Flags = PET_STABLE_ACTIVE | (petSlot > PET_SLOT_LAST_ACTIVE_SLOT ? PET_STABLE_INACTIVE : 0); + petAdded.CreatureID = creatureID; + petAdded.Name = name; - data << uint32(level); - data << uint32(petSlot); - data << uint8(PET_STABLE_ACTIVE | (petSlot > PET_SLOT_LAST_ACTIVE_SLOT ? PET_STABLE_INACTIVE : 0)); - data << uint32(creatureID); - data << uint32(petNumber); - data.WriteBits(uint32(name.length()), 8); - data << name; - - SendPacket(&data); + SendPacket(petAdded.Write()); } void WorldSession::HandleRequestPetInfoOpcode(WorldPacket& /*recvData*/) diff --git a/src/server/game/Server/Packets/PetPackets.cpp b/src/server/game/Server/Packets/PetPackets.cpp index dad8195415..3469659fcb 100644 --- a/src/server/game/Server/Packets/PetPackets.cpp +++ b/src/server/game/Server/Packets/PetPackets.cpp @@ -67,3 +67,16 @@ WorldPacket const* WorldPackets::Pet::PetActionSound::Write() return &_worldPacket; } + +WorldPacket const* WorldPackets::Pet::PetAdded::Write() +{ + _worldPacket << int32(Level); + _worldPacket << int32(PetSlot); + _worldPacket << uint8(Flags); + _worldPacket << int32(CreatureID); + _worldPacket << int32(PetNumber); + _worldPacket.WriteBits(Name.length(), 8); + _worldPacket << Name; + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/PetPackets.h b/src/server/game/Server/Packets/PetPackets.h index 3b64af4af5..bd9f9989ef 100644 --- a/src/server/game/Server/Packets/PetPackets.h +++ b/src/server/game/Server/Packets/PetPackets.h @@ -79,6 +79,21 @@ namespace WorldPackets ObjectGuid UnitGUID; int32 Action = 0; }; + + class PetAdded final : public ServerPacket + { + public: + PetAdded() : ServerPacket(SMSG_PET_ADDED, 4 + 4 + 1 + 4 + 4) { } + + WorldPacket const* Write() override; + + std::string Name; + int32 CreatureID = 0; + int32 Level = 0; + int32 PetSlot = 0; + uint32 PetNumber = 0; + uint8 Flags = 0; + }; } }