diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/GameObject/GameObject.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Server/Packets/GameObjectPackets.cpp | 10 | ||||
-rw-r--r-- | src/server/game/Server/Packets/GameObjectPackets.h | 12 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 |
4 files changed, 27 insertions, 5 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 050217996ee..97f1ca0345a 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1870,10 +1870,10 @@ void GameObject::CastSpell(Unit* target, uint32 spellId, bool triggered /*= true void GameObject::SendCustomAnim(uint32 anim) { - WorldPacket data(SMSG_GAME_OBJECT_CUSTOM_ANIM, 8 + 4); - data << GetGUID(); - data << uint32(anim); - SendMessageToSet(&data, true); + WorldPackets::GameObject::GameObjectCustomAnim customAnim; + customAnim.ObjectGUID = GetGUID(); + customAnim.CustomAnim = anim; + SendMessageToSet(customAnim.Write(), true); } bool GameObject::IsInRange(float x, float y, float z, float radius) const diff --git a/src/server/game/Server/Packets/GameObjectPackets.cpp b/src/server/game/Server/Packets/GameObjectPackets.cpp index 1b8aa3df32b..35e3796f78d 100644 --- a/src/server/game/Server/Packets/GameObjectPackets.cpp +++ b/src/server/game/Server/Packets/GameObjectPackets.cpp @@ -59,3 +59,13 @@ WorldPacket const * WorldPackets::GameObject::DestructibleBuildingDamage::Write( return &_worldPacket; } + +WorldPacket const* WorldPackets::GameObject::GameObjectCustomAnim::Write() +{ + _worldPacket << ObjectGUID; + _worldPacket << uint32(CustomAnim); + _worldPacket.WriteBit(PlayAsDespawn); + _worldPacket.FlushBits(); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/GameObjectPackets.h b/src/server/game/Server/Packets/GameObjectPackets.h index 5261beede13..6dd8cb8369b 100644 --- a/src/server/game/Server/Packets/GameObjectPackets.h +++ b/src/server/game/Server/Packets/GameObjectPackets.h @@ -108,6 +108,18 @@ namespace WorldPackets WorldPacket const* Write() override { return &_worldPacket; } }; + + class GameObjectCustomAnim final : public ServerPacket + { + public: + GameObjectCustomAnim() : ServerPacket(SMSG_GAME_OBJECT_CUSTOM_ANIM, 16 + 4 + 1) { } + + WorldPacket const* Write() override; + + ObjectGuid ObjectGUID; + uint32 CustomAnim = 0; + bool PlayAsDespawn = false; + }; } } #endif // GOPackets_h__ diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 917e136a19c..8f2f3e7d4e7 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1062,7 +1062,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_OBJECT_RELINK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FRIEND_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_CUSTOM_ANIM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_CUSTOM_ANIM, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_DESPAWN, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); |