From 06a2d4d477598f2a0033f1408377a56e587b8262 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 16 Jan 2022 16:24:47 +0100 Subject: Core/Spells: Fixed caster unit validation for players that have charmed (not possessed) units Closes #27563 --- src/server/game/Handlers/SpellHandler.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/server') diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 722b83de80e..4f49bd176fe 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -21,6 +21,7 @@ #include "DatabaseEnv.h" #include "Log.h" #include "DBCStores.h" +#include "GameClient.h" #include "GameObject.h" #include "GameObjectAI.h" #include "Item.h" @@ -336,8 +337,8 @@ void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket) TC_LOG_DEBUG("network", "WORLD: got cast spell packet, castCount: %u, spellId: %u, castFlags: %u, data length = %u", castCount, spellId, castFlags, (uint32)recvPacket.size()); // ignore for remote control state (for player case) - Unit* mover = _player->GetCharmedOrSelf(); - if (mover != _player && mover->GetTypeId() == TYPEID_PLAYER) + Unit* mover = GetGameClient()->GetActivelyMovedUnit(); + if (!mover || mover != _player && mover->GetTypeId() == TYPEID_PLAYER) { recvPacket.rfinish(); // prevent spam at ignore packet return; @@ -546,10 +547,10 @@ void WorldSession::HandleCancelAutoRepeatSpellOpcode(WorldPackets::Spells::Cance void WorldSession::HandleCancelChanneling(WorldPackets::Spells::CancelChannelling& cancelChanneling) { - Unit* mover = _player->GetCharmedOrSelf(); + Unit* mover = GetGameClient()->GetActivelyMovedUnit(); // ignore for remote control state (for player case) - if (_player->GetCharmed() && _player->GetCharmed()->GetTypeId() == TYPEID_PLAYER) + if (!mover) return; SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(cancelChanneling.ChannelSpell); -- cgit v1.2.3