[9271] Revert "[9266] Implement CMSG_CORPSE_MAP_POSITION_QUERY opcode."

This reverts commit 102abf5fff122ec736b49c978fcfba0177f9edc2.

Research was in fact wrong, and caused wrong corpse position at client.
This commit is contained in:
XTZGZoReX 2010-01-30 15:17:44 +01:00
parent bfa86a0d4d
commit a24320d4b5
2 changed files with 8 additions and 68 deletions

View file

@ -314,7 +314,7 @@ void WorldSession::HandleCorpseQueryOpcode(WorldPacket & /*recv_data*/)
data << float(y);
data << float(z);
data << int32(corpsemapid);
data << uint32(corpse->GetGUIDLow());
data << uint32(0); // unknown
SendPacket(&data);
}
@ -455,74 +455,14 @@ void WorldSession::HandleCorpseMapPositionQuery( WorldPacket & recv_data )
{
sLog.outDebug( "WORLD: Recv CMSG_CORPSE_MAP_POSITION_QUERY" );
uint32 lowGuid;
recv_data >> lowGuid; // not needed
Player* player = _player;
Corpse* corpse = player->GetCorpse();
if (!corpse)
return;
uint32 unk;
recv_data >> unk;
WorldPacket data(CMSG_CORPSE_MAP_POSITION_QUERY_RESPONSE, 4+4+4+4);
Map* map = corpse->GetMap();
float cx, cy, cz;
if (map->IsDungeon())
{
int32 mapId;
float mx, my;
map->GetEntrancePos(mapId, mx, my);
const Map* newMap = sMapMgr.CreateBaseMap(mapId);
uint32 zoneId = newMap->GetZoneId(mx, my, 0);
float _mx = mx;
float _my = my;
Map2ZoneCoordinates(mx, my, zoneId);
float x = corpse->GetPositionX();
float y = corpse->GetPositionY();
Map2ZoneCoordinates(x, y, zoneId);
cx = x - mx;
cy = y - my;
cz = corpse->GetPositionZ() - map->GetHeight(_mx, _my, MAX_HEIGHT);
}
else
{
WorldSafeLocsEntry const *ClosestGrave = NULL;
// Special handle for battleground maps
if (BattleGround *bg = player->GetBattleGround())
ClosestGrave = bg->GetClosestGraveYard(player);
else
ClosestGrave = sObjectMgr.GetClosestGraveYard(player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetMapId(), player->GetTeam());
if (!ClosestGrave)
return;
uint32 zoneId = corpse->GetZoneId();
float gx = ClosestGrave->x;
float gy = ClosestGrave->y;
Map2ZoneCoordinates(gx, gy, zoneId);
float x = corpse->GetPositionX();
float y = corpse->GetPositionY();
Map2ZoneCoordinates(x, y, zoneId);
cx = x - gx;
cy = y - gy;
cz = corpse->GetPositionZ() - ClosestGrave->z;
}
data << float(cx);
data << float(cy);
data << float(cz);
data << float(0); // unknown
data << float(0);
data << float(0);
data << float(0);
data << float(0);
SendPacket(&data);
}