aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/QueryHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Handlers/QueryHandler.cpp')
-rw-r--r--src/server/game/Handlers/QueryHandler.cpp18
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();
+ }
+ }
}
}