aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/SpellHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Handlers/SpellHandler.cpp')
-rw-r--r--src/server/game/Handlers/SpellHandler.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp
index c98a9fbcb5c..6ec94e4bf52 100644
--- a/src/server/game/Handlers/SpellHandler.cpp
+++ b/src/server/game/Handlers/SpellHandler.cpp
@@ -81,7 +81,7 @@ void WorldSession::HandleClientCastFlags(WorldPacket& recvPacket, uint8 castFlag
void WorldSession::HandleUseItemOpcode(WorldPacket& recvPacket)
{
- // TODO: add targets.read() check
+ /// @todo add targets.read() check
Player* pUser = _player;
// ignore for remote control state
@@ -293,12 +293,15 @@ void WorldSession::HandleGameObjectUseOpcode(WorldPacket& recvData)
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd CMSG_GAMEOBJ_USE Message [guid=%u]", GUID_LOPART(guid));
- // ignore for remote control state
- if (_player->m_mover != _player)
- return;
-
if (GameObject* obj = GetPlayer()->GetMap()->GetGameObject(guid))
+ {
+ // ignore for remote control state
+ if (_player->m_mover != _player)
+ if (!(_player->IsOnVehicle(_player->m_mover) || _player->IsMounted()) && !obj->GetGOInfo()->IsUsableMounted())
+ return;
+
obj->Use(_player);
+ }
}
void WorldSession::HandleGameobjectReportUse(WorldPacket& recvPacket)
@@ -595,7 +598,7 @@ void WorldSession::HandleSpellClick(WorldPacket& recvData)
if (!unit)
return;
- // TODO: Unit::SetCharmedBy: 28782 is not in world but 0 is trying to charm it! -> crash
+ /// @todo Unit::SetCharmedBy: 28782 is not in world but 0 is trying to charm it! -> crash
if (!unit->IsInWorld())
return;