diff options
author | Jeremy <Golrag@users.noreply.github.com> | 2021-03-14 15:40:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-14 15:40:42 +0100 |
commit | 2d84912ce92e1ac30efd6548ca98cb8f894f5268 (patch) | |
tree | dc3ab25880395f20a1fadbcf7f38bf6bff98fb0b /src | |
parent | 08e017b3512ce8189adc6762e3670c20c900f54e (diff) |
Core/GameObjects: Add GameObjectPlaySpellVisual (#26044)
Diffstat (limited to 'src')
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__ |