diff options
author | Jeremy <Golrag@users.noreply.github.com> | 2024-05-15 02:46:16 +0200 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-05-28 17:01:34 +0200 |
commit | 1dba4894515c2927f072f7e5b80e6aac1264ff31 (patch) | |
tree | 1818e8fb87ab02adcdef0f292f4ae16d69f3796a | |
parent | e337d3d661407d5eae679ba8b7468784de6ab5bd (diff) |
Core/AreaTriggers: Add PlaySpellVisual (#29985)
(cherry picked from commit 6affa412b18b17623a828332823d0af55d664192)
5 files changed, 29 insertions, 1 deletions
diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp index d1ead16c014..f80617f2723 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp @@ -101,6 +101,14 @@ void AreaTrigger::RemoveFromWorld() } } +void AreaTrigger::PlaySpellVisual(uint32 spellVisualId) const +{ + WorldPackets::AreaTrigger::AreaTriggerPlaySpellVisual packet; + packet.AreaTriggerGUID = GetGUID(); + packet.SpellVisualID = spellVisualId; + SendMessageToSet(packet.Write(), false); +} + bool AreaTrigger::Create(AreaTriggerCreatePropertiesId areaTriggerCreatePropertiesId, Map* map, Position const& pos, int32 duration, AreaTriggerSpawn const* spawnData /* nullptr */, Unit* caster /*= nullptr*/, Unit* target /*= nullptr*/, SpellCastVisual spellVisual /*= { 0, 0 }*/, SpellInfo const* spellInfo /*= nullptr*/, Spell* spell /*= nullptr*/, AuraEffect const* aurEff /*= nullptr*/) { _targetGuid = target ? target->GetGUID() : ObjectGuid::Empty; diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.h b/src/server/game/Entities/AreaTrigger/AreaTrigger.h index d27f6f5fe02..2db2fbad14e 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTrigger.h +++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.h @@ -84,6 +84,7 @@ class TC_GAME_API AreaTrigger final : public WorldObject, public GridObject<Area float GetStationaryZ() const override { return _stationaryPosition.GetPositionZ(); } float GetStationaryO() const override { return _stationaryPosition.GetOrientation(); } void RelocateStationaryPosition(Position const& pos) { _stationaryPosition.Relocate(pos); } + void PlaySpellVisual(uint32 spellVisualId) const; private: bool Create(AreaTriggerCreatePropertiesId areaTriggerCreatePropertiesId, Map* map, Position const& pos, int32 duration, AreaTriggerSpawn const* spawnData = nullptr, Unit* caster = nullptr, Unit* target = nullptr, SpellCastVisual spellVisual = { 0 }, SpellInfo const* spellInfo = nullptr, Spell* spell = nullptr, AuraEffect const* aurEff = nullptr); diff --git a/src/server/game/Server/Packets/AreaTriggerPackets.cpp b/src/server/game/Server/Packets/AreaTriggerPackets.cpp index 69db66ce94f..ae6dfddb134 100644 --- a/src/server/game/Server/Packets/AreaTriggerPackets.cpp +++ b/src/server/game/Server/Packets/AreaTriggerPackets.cpp @@ -99,3 +99,11 @@ WorldPacket const* WorldPackets::AreaTrigger::AreaTriggerRePath::Write() return &_worldPacket; } + +WorldPacket const* WorldPackets::AreaTrigger::AreaTriggerPlaySpellVisual::Write() +{ + _worldPacket << AreaTriggerGUID; + _worldPacket << uint32(SpellVisualID); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/AreaTriggerPackets.h b/src/server/game/Server/Packets/AreaTriggerPackets.h index bb7caed140c..2af22e72d2c 100644 --- a/src/server/game/Server/Packets/AreaTriggerPackets.h +++ b/src/server/game/Server/Packets/AreaTriggerPackets.h @@ -83,6 +83,17 @@ namespace WorldPackets Optional<AreaTriggerMovementScriptInfo> AreaTriggerMovementScript; ObjectGuid TriggerGUID; }; + + class AreaTriggerPlaySpellVisual final : public ServerPacket + { + public: + AreaTriggerPlaySpellVisual() : ServerPacket(SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL, 16 + 4) { } + + WorldPacket const* Write() override; + + ObjectGuid AreaTriggerGUID; + uint32 SpellVisualID = 0; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 8a37c7fbc83..1da2b135254 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1047,7 +1047,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_FORCE_SET_POSITION_AND_FACING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_NO_CORPSE, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_PLAY_SPELL_VISUAL, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_RE_PATH, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_RE_SHAPE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_UNATTACH, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); |