aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormegamage <none@none>2009-06-05 17:16:39 -0500
committermegamage <none@none>2009-06-05 17:16:39 -0500
commit4aa03113ea160b6dec17a2797535d586dd5ff5e2 (patch)
tree9c448969095a9237bb9d1d3a74fd114decfa2ea6
parent2a7a9a4656bff49774aeafea301756c2c4b5b8f8 (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
-rw-r--r--src/game/QueryHandler.cpp28
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);
+ }
+ }
}
}