diff options
author | megamage <none@none> | 2009-06-05 17:16:39 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-06-05 17:16:39 -0500 |
commit | 4aa03113ea160b6dec17a2797535d586dd5ff5e2 (patch) | |
tree | 9c448969095a9237bb9d1d3a74fd114decfa2ea6 /src/game/QueryHandler.cpp | |
parent | 2a7a9a4656bff49774aeafea301756c2c4b5b8f8 (diff) |
[7961] Use more fast code into HandleCorpseQueryOpcode. Author: VladimirMangos
Also small changes in send data (if corpse exist data send always).
--HG--
branch : trunk
Diffstat (limited to 'src/game/QueryHandler.cpp')
-rw-r--r-- | src/game/QueryHandler.cpp | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/game/QueryHandler.cpp b/src/game/QueryHandler.cpp index e5782fcb8df..5d13a6a576a 100644 --- a/src/game/QueryHandler.cpp +++ b/src/game/QueryHandler.cpp @@ -288,21 +288,25 @@ void WorldSession::HandleCorpseQueryOpcode(WorldPacket & /*recv_data*/) float x = corpse->GetPositionX(); float y = corpse->GetPositionY(); float z = corpse->GetPositionZ(); - int32 corpsemapid = _player->GetMapId(); + int32 corpsemapid = mapid; - if(Map *map = MapManager::Instance().FindMap(corpse->GetMapId(), corpse->GetInstanceId())) + // if corpse at different map + if(mapid != _player->GetMapId()) { - if(map->IsDungeon()) + // search entrance map for proper show entrance + if(MapEntry const* corpseMapEntry = sMapStore.LookupEntry(mapid)) { - if(!map->GetEntrancePos(mapid, x, y)) - return; - - Map *entrance_map = MapManager::Instance().GetMap(mapid, _player); - if(!entrance_map) - return; - - z = entrance_map->GetHeight(x, y, MAX_HEIGHT); - corpsemapid = corpse->GetMapId(); + if(corpseMapEntry->IsDungeon() && corpseMapEntry->entrance_map >= 0) + { + // if corpse map have entrance + if(Map const* entranceMap = MapManager::Instance().GetBaseMap(corpseMapEntry->entrance_map)) + { + mapid = corpseMapEntry->entrance_map; + x = corpseMapEntry->entrance_x; + y = corpseMapEntry->entrance_y; + z = entranceMap->GetHeight(x, y, MAX_HEIGHT); + } + } } } |