diff options
Diffstat (limited to 'src/server/game/Handlers/QueryHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/QueryHandler.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp index 7c7d21c5430..7e51a3a54f5 100644 --- a/src/server/game/Handlers/QueryHandler.cpp +++ b/src/server/game/Handlers/QueryHandler.cpp @@ -31,6 +31,7 @@ #include "QueryPackets.h" #include "RealmList.h" #include "TerrainMgr.h" +#include "Transport.h" #include "World.h" void WorldSession::BuildNameQueryData(ObjectGuid guid, WorldPackets::Query::NameCacheLookupResult& lookupData) @@ -168,7 +169,7 @@ void WorldSession::HandleQueryCorpseLocation(WorldPackets::Query::QueryCorpseLoc packet.MapID = corpseMapID; packet.ActualMapID = mapID; packet.Position = Position(x, y, z); - packet.Transport = ObjectGuid::Empty; + packet.Transport = ObjectGuid::Empty; // TODO: If corpse is on transport, send transport offsets and transport guid SendPacket(packet.Write()); } @@ -236,13 +237,18 @@ void WorldSession::HandleQueryCorpseTransport(WorldPackets::Query::QueryCorpseTr { WorldPackets::Query::CorpseTransportQuery response; response.Player = queryCorpseTransport.Player; - if (Player* player = ObjectAccessor::FindConnectedPlayer(queryCorpseTransport.Player)) + if (Player* player = ObjectAccessor::FindConnectedPlayer(queryCorpseTransport.Player); player && _player->IsInSameRaidWith(player)) { - Corpse* corpse = player->GetCorpse(); - if (_player->IsInSameRaidWith(player) && corpse && !corpse->GetTransGUID().IsEmpty() && corpse->GetTransGUID() == queryCorpseTransport.Transport) + if (Corpse const* corpse = _player->GetCorpse()) { - response.Position = corpse->GetTransOffset(); - response.Facing = corpse->GetTransOffsetO(); + if (Transport const* transport = dynamic_cast<Transport const*>(corpse->GetTransport())) + { + if (transport->GetGUID() == queryCorpseTransport.Transport) + { + response.Position = transport->GetPosition(); + response.Facing = transport->GetOrientation(); + } + } } } |