From 0d475eac5f2fdee58d79b1f3361da6d3f22b0232 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 17 May 2025 19:43:19 +0200 Subject: Core/PacketIO: Implemented CMSG_UPDATE_SPELL_VISUAL --- src/server/game/Handlers/SpellHandler.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/server/game/Handlers/SpellHandler.cpp') diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index ccbd6c88b0b..ba85aa17866 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -589,6 +589,25 @@ void WorldSession::HandleUpdateMissileTrajectory(WorldPackets::Spells::UpdateMis HandleMovementOpcode(CMSG_MOVE_STOP, *packet.Status); } +void WorldSession::HandleUpdateAuraVisual(WorldPackets::Spells::UpdateAuraVisual const& updateAuraVisual) +{ + Unit* target = ObjectAccessor::GetUnit(*_player, updateAuraVisual.TargetGUID); + if (!target) + return; + + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(updateAuraVisual.SpellID, _player->GetMap()->GetDifficultyID()); + if (!spellInfo) + return; + + uint32 spellXspellVisualId = _player->GetCastSpellXSpellVisualId(spellInfo); + for (auto const& [_, auraApp] : Trinity::Containers::MapEqualRange(target->GetAppliedAuras(), spellInfo->Id)) + if (auraApp->GetBase()->GetCasterGUID() == _player->GetGUID()) + auraApp->GetBase()->SetSpellVisual({ .SpellXSpellVisualID = spellXspellVisualId }); + + if (_player->GetChannelSpellId() == spellInfo->Id) + _player->SetChannelVisual({ .SpellXSpellVisualID = spellXspellVisualId }); +} + void WorldSession::HandleKeyboundOverride(WorldPackets::Spells::KeyboundOverride& keyboundOverride) { Player* player = GetPlayer(); -- cgit v1.2.3