diff --git a/Source/Game/Entities/GameObject/GameObject.cs b/Source/Game/Entities/GameObject/GameObject.cs index a9e348673..2cf9a726d 100644 --- a/Source/Game/Entities/GameObject/GameObject.cs +++ b/Source/Game/Entities/GameObject/GameObject.cs @@ -2659,6 +2659,17 @@ namespace Game.Entities SendMessageToSet(activateAnimKit, true); } + void SetSpellVisualId(uint spellVisualId, ObjectGuid activatorGuid = default) + { + SetUpdateFieldValue(m_values.ModifyValue(m_gameObjectData).ModifyValue(m_gameObjectData.SpellVisualID), spellVisualId); + + GameObjectPlaySpellVisual packet = new(); + packet.ObjectGUID = GetGUID(); + packet.ActivatorGUID = activatorGuid; + packet.SpellVisualID = spellVisualId; + SendMessageToSet(packet, true); + } + public override ushort GetAIAnimKitId() { return _animKitId; } public uint GetWorldEffectID() { return _worldEffectID; } diff --git a/Source/Game/Networking/Packets/GameObjectPackets.cs b/Source/Game/Networking/Packets/GameObjectPackets.cs index ae60cc7a4..3109682eb 100644 --- a/Source/Game/Networking/Packets/GameObjectPackets.cs +++ b/Source/Game/Networking/Packets/GameObjectPackets.cs @@ -149,4 +149,20 @@ namespace Game.Networking.Packets public ObjectGuid ObjectGUID; public int UILink; } + + class GameObjectPlaySpellVisual : ServerPacket + { + public GameObjectPlaySpellVisual() : base(ServerOpcodes.GameObjectPlaySpellVisual) { } + + public override void Write() + { + _worldPacket.WritePackedGuid(ObjectGUID); + _worldPacket.WritePackedGuid(ActivatorGUID); + _worldPacket.WriteUInt32(SpellVisualID); + } + + public ObjectGuid ObjectGUID; + public ObjectGuid ActivatorGUID; + public uint SpellVisualID; + } }