aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/SpellHandler.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-01-16 16:24:47 +0100
committerShauren <shauren.trinity@gmail.com>2022-01-16 16:24:47 +0100
commit06a2d4d477598f2a0033f1408377a56e587b8262 (patch)
tree2dff2416c4511cb543e81249088ffe6714504384 /src/server/game/Handlers/SpellHandler.cpp
parent80e8cbdc96bf0177f5c50c643f7d9003fa93e9f7 (diff)
Core/Spells: Fixed caster unit validation for players that have charmed (not possessed) units
Closes #27563
Diffstat (limited to 'src/server/game/Handlers/SpellHandler.cpp')
-rw-r--r--src/server/game/Handlers/SpellHandler.cpp9
1 files changed, 5 insertions, 4 deletions
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);