aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy <Golrag@users.noreply.github.com>2021-03-14 15:40:42 +0100
committerGitHub <noreply@github.com>2021-03-14 15:40:42 +0100
commit2d84912ce92e1ac30efd6548ca98cb8f894f5268 (patch)
treedc3ab25880395f20a1fadbcf7f38bf6bff98fb0b /src
parent08e017b3512ce8189adc6762e3670c20c900f54e (diff)
Core/GameObjects: Add GameObjectPlaySpellVisual (#26044)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp11
-rw-r--r--src/server/game/Entities/GameObject/GameObject.h2
-rw-r--r--src/server/game/Server/Packets/GameObjectPackets.cpp9
-rw-r--r--src/server/game/Server/Packets/GameObjectPackets.h12
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__