aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/SpellHandler.cpp
diff options
context:
space:
mode:
authorDiscover- <amort11@hotmail.com>2014-01-25 16:59:01 +0100
committerDiscover- <amort11@hotmail.com>2014-01-25 16:59:01 +0100
commit6b25c2b4147a237ab07c99dbd3563cedfda2f8fc (patch)
tree9561ac6d0b98ec4f442f29f893050755fd4798b8 /src/server/game/Handlers/SpellHandler.cpp
parentc6650ecc7197aab566b30d74f42aff7e2be52bdd (diff)
Core/Gameobjects: Fix an exploit where it was possible to use gameobjects from any distance. Fixes for example picking up the WSG flag from any distance using hacking tools.
Diffstat (limited to 'src/server/game/Handlers/SpellHandler.cpp')
-rw-r--r--src/server/game/Handlers/SpellHandler.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp
index 75a98247186..ba30803e8c2 100644
--- a/src/server/game/Handlers/SpellHandler.cpp
+++ b/src/server/game/Handlers/SpellHandler.cpp
@@ -266,19 +266,21 @@ void WorldSession::HandleOpenItemOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGameObjectUseOpcode(WorldPacket& recvData)
{
uint64 guid;
-
recvData >> guid;
TC_LOG_DEBUG("network", "WORLD: Recvd CMSG_GAMEOBJ_USE Message [guid=%u]", GUID_LOPART(guid));
if (GameObject* obj = GetPlayer()->GetMap()->GetGameObject(guid))
{
+ if (!obj->IsWithinDistInMap(GetPlayer(), obj->GetInteractionDistance()))
+ return;
+
// ignore for remote control state
- if (_player->m_mover != _player)
- if (!(_player->IsOnVehicle(_player->m_mover) || _player->IsMounted()) && !obj->GetGOInfo()->IsUsableMounted())
+ if (GetPlayer()->m_mover != GetPlayer())
+ if (!(GetPlayer()->IsOnVehicle(GetPlayer()->m_mover) || GetPlayer()->IsMounted()) && !obj->GetGOInfo()->IsUsableMounted())
return;
- obj->Use(_player);
+ obj->Use(GetPlayer());
}
}