diff options
4 files changed, 34 insertions, 0 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 8dec4749996..8ad52346afd 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -2758,6 +2758,17 @@ void GameObject::SetAnimKitId(uint16 animKitId, bool oneshot) SendMessageToSet(activateAnimKit.Write(), true); } +void GameObject::SetSpellVisualId(int32 spellVisualId, ObjectGuid activatorGuid) +{ + SetUpdateFieldValue(m_values.ModifyValue(&GameObject::m_gameObjectData).ModifyValue(&UF::GameObjectData::SpellVisualID), spellVisualId); + + WorldPackets::GameObject::GameObjectPlaySpellVisual packet; + packet.ObjectGUID = GetGUID(); + packet.ActivatorGUID = activatorGuid; + packet.SpellVisualID = spellVisualId; + SendMessageToSet(packet.Write(), true); +} + class GameObjectModelOwnerImpl : public GameObjectModelOwnerBase { public: diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index faf4b8dec72..bdbc08d9875 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -314,6 +314,8 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject> uint32 GetWorldEffectID() const { return _worldEffectID; } void SetWorldEffectID(uint32 worldEffectID) { _worldEffectID = worldEffectID; } + void SetSpellVisualId(int32 spellVisualId, ObjectGuid activatorGuid = ObjectGuid::Empty); + void AIM_Destroy(); bool AIM_Initialize(); diff --git a/src/server/game/Server/Packets/GameObjectPackets.cpp b/src/server/game/Server/Packets/GameObjectPackets.cpp index 1eb8ae52ccb..2baf6ec206d 100644 --- a/src/server/game/Server/Packets/GameObjectPackets.cpp +++ b/src/server/game/Server/Packets/GameObjectPackets.cpp @@ -77,3 +77,12 @@ WorldPacket const* WorldPackets::GameObject::GameObjectUILink::Write() return &_worldPacket; } + +WorldPacket const* WorldPackets::GameObject::GameObjectPlaySpellVisual::Write() +{ + _worldPacket << ObjectGUID; + _worldPacket << ActivatorGUID; + _worldPacket << int32(SpellVisualID); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/GameObjectPackets.h b/src/server/game/Server/Packets/GameObjectPackets.h index 3a96b3bcb70..f3bcf758425 100644 --- a/src/server/game/Server/Packets/GameObjectPackets.h +++ b/src/server/game/Server/Packets/GameObjectPackets.h @@ -131,6 +131,18 @@ namespace WorldPackets ObjectGuid ObjectGUID; int32 UILink = 0; }; + + class GameObjectPlaySpellVisual final : public ServerPacket + { + public: + GameObjectPlaySpellVisual() : ServerPacket(SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL, 16 + 16 + 4) { } + + WorldPacket const* Write() override; + + ObjectGuid ObjectGUID; + ObjectGuid ActivatorGUID; + int32 SpellVisualID = 0; + }; } } #endif // GOPackets_h__ |