From 1dba4894515c2927f072f7e5b80e6aac1264ff31 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Wed, 15 May 2024 02:46:16 +0200 Subject: Core/AreaTriggers: Add PlaySpellVisual (#29985) (cherry picked from commit 6affa412b18b17623a828332823d0af55d664192) --- src/server/game/Entities/AreaTrigger/AreaTrigger.cpp | 8 ++++++++ src/server/game/Entities/AreaTrigger/AreaTrigger.h | 1 + src/server/game/Server/Packets/AreaTriggerPackets.cpp | 8 ++++++++ src/server/game/Server/Packets/AreaTriggerPackets.h | 11 +++++++++++ src/server/game/Server/Protocol/Opcodes.cpp | 2 +- 5 files changed, 29 insertions(+), 1 deletion(-) (limited to 'src') 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 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); -- cgit v1.2.3