diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 6956a1677b..c678e6f4ec 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2821,10 +2821,10 @@ void WorldObject::SetAIAnimKitId(uint16 animKitId) m_aiAnimKitId = animKitId; - WorldPacket data(SMSG_SET_AI_ANIM_KIT, 8 + 2); - data << GetPackGUID(); - data << uint16(animKitId); - SendMessageToSet(&data, true); + WorldPackets::Misc::SetAIAnimKit packet; + packet.Unit = GetGUID(); + packet.AnimKitID = animKitId; + SendMessageToSet(packet.Write(), true); } void WorldObject::SetMovementAnimKitId(uint16 animKitId) @@ -2837,10 +2837,10 @@ void WorldObject::SetMovementAnimKitId(uint16 animKitId) m_movementAnimKitId = animKitId; - WorldPacket data(SMSG_SET_MOVEMENT_ANIM_KIT, 8 + 2); - data << GetPackGUID(); - data << uint16(animKitId); - SendMessageToSet(&data, true); + WorldPackets::Misc::SetMovementAnimKit packet; + packet.Unit = GetGUID(); + packet.AnimKitID = animKitId; + SendMessageToSet(packet.Write(), true); } void WorldObject::SetMeleeAnimKitId(uint16 animKitId) @@ -2853,8 +2853,8 @@ void WorldObject::SetMeleeAnimKitId(uint16 animKitId) m_meleeAnimKitId = animKitId; - WorldPacket data(SMSG_SET_MELEE_ANIM_KIT, 8 + 2); - data << GetPackGUID(); - data << uint16(animKitId); - SendMessageToSet(&data, true); + WorldPackets::Misc::SetMeleeAnimKit packet; + packet.Unit = GetGUID(); + packet.AnimKitID = animKitId; + SendMessageToSet(packet.Write(), true); } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 73a39467fc..dc5c64b72b 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -39,6 +39,7 @@ #include "Item.h" #include "Log.h" #include "LootMgr.h" +#include "MiscPackets.h" #include "MotionMaster.h" #include "MovementGenerator.h" #include "MovementPackets.h" @@ -11604,17 +11605,17 @@ bool Unit::InitTamedPet(Pet* pet, uint8 level, uint32 spell_id) void Unit::SendDurabilityLoss(Player* receiver, uint32 percent) { - WorldPacket data(SMSG_DURABILITY_DAMAGE_DEATH, 4); - data << uint32(percent); - receiver->SendDirectMessage(&data); + WorldPackets::Misc::DurabilityDamageDeath packet; + packet.Percent = percent; + receiver->SendDirectMessage(packet.Write()); } void Unit::PlayOneShotAnimKitId(uint16 animKitId) { - WorldPacket data(SMSG_PLAY_ONE_SHOT_ANIM_KIT, 7+2); - data << GetPackGUID(); - data << uint16(animKitId); - SendMessageToSet(&data, true); + WorldPackets::Misc::PlayOneShotAnimKit packet; + packet.Unit = GetGUID(); + packet.AnimKitID = animKitId; + SendMessageToSet(packet.Write(), true); } void Unit::Kill(Unit* victim, bool durabilityLoss) diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index ac775cfcf0..f853a49e7c 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -185,3 +185,42 @@ WorldPacket const* WorldPackets::Misc::OverrideLight::Write() return &_worldPacket; } + +WorldPacket const* WorldPackets::Misc::DurabilityDamageDeath::Write() +{ + _worldPacket << int32(Percent); + + return &_worldPacket; +} + +WorldPacket const* WorldPackets::Misc::PlayOneShotAnimKit::Write() +{ + _worldPacket << Unit.WriteAsPacked(); + _worldPacket << uint16(AnimKitID); + + return &_worldPacket; +} + +WorldPacket const* WorldPackets::Misc::SetAIAnimKit::Write() +{ + _worldPacket << Unit.WriteAsPacked(); + _worldPacket << uint16(AnimKitID); + + return &_worldPacket; +} + +WorldPacket const* WorldPackets::Misc::SetMeleeAnimKit::Write() +{ + _worldPacket << Unit.WriteAsPacked(); + _worldPacket << uint16(AnimKitID); + + return &_worldPacket; +} + +WorldPacket const* WorldPackets::Misc::SetMovementAnimKit::Write() +{ + _worldPacket << Unit.WriteAsPacked(); + _worldPacket << uint16(AnimKitID); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 32818ded8a..6e2a25aae5 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -216,6 +216,60 @@ namespace WorldPackets int32 TransitionMilliseconds = 0; int32 OverrideLightID = 0; }; + + class DurabilityDamageDeath final : public ServerPacket + { + public: + DurabilityDamageDeath() : ServerPacket(SMSG_DURABILITY_DAMAGE_DEATH, 4) { } + + WorldPacket const* Write() override; + + int32 Percent = 0; + }; + + class PlayOneShotAnimKit final : public ServerPacket + { + public: + PlayOneShotAnimKit() : ServerPacket(SMSG_PLAY_ONE_SHOT_ANIM_KIT, 8 + 2) { } + + WorldPacket const* Write() override; + + ObjectGuid Unit; + uint16 AnimKitID = 0; + }; + + class SetAIAnimKit final : public ServerPacket + { + public: + SetAIAnimKit() : ServerPacket(SMSG_SET_AI_ANIM_KIT, 8 + 2) { } + + WorldPacket const* Write() override; + + ObjectGuid Unit; + uint16 AnimKitID = 0; + }; + + class SetMovementAnimKit final : public ServerPacket + { + public: + SetMovementAnimKit() : ServerPacket(SMSG_SET_MOVEMENT_ANIM_KIT, 8 + 2) { } + + WorldPacket const* Write() override; + + ObjectGuid Unit; + uint16 AnimKitID = 0; + }; + + class SetMeleeAnimKit final : public ServerPacket + { + public: + SetMeleeAnimKit() : ServerPacket(SMSG_SET_MELEE_ANIM_KIT, 8 + 2) { } + + WorldPacket const* Write() override; + + ObjectGuid Unit; + uint16 AnimKitID = 0; + }; } }