mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 02:04:52 +01:00
*Fix a crash in CORPSE_MAP_POSITION_RESPONSE handler.
--HG-- branch : trunk
This commit is contained in:
@@ -1152,6 +1152,16 @@ struct MapEntry
|
||||
MapID==616 || MapID==595; // Eye Of Eternity, The Culling of Stratholme
|
||||
}
|
||||
|
||||
bool GetEntrancePos(int32 &mapid, float &x, float &y) const
|
||||
{
|
||||
if(entrance_map < 0)
|
||||
return false;
|
||||
mapid = entrance_map;
|
||||
x = entrance_x;
|
||||
y = entrance_y;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool IsContinent() const
|
||||
{
|
||||
return MapID == 0 || MapID == 1 || MapID == 530 || MapID == 571;
|
||||
|
||||
@@ -369,12 +369,7 @@ class TRINITY_DLL_SPEC Map : public GridRefManager<NGridType>, public Trinity::O
|
||||
{
|
||||
if(!i_mapEntry)
|
||||
return false;
|
||||
if(i_mapEntry->entrance_map < 0)
|
||||
return false;
|
||||
mapid = i_mapEntry->entrance_map;
|
||||
x = i_mapEntry->entrance_x;
|
||||
y = i_mapEntry->entrance_y;
|
||||
return true;
|
||||
return i_mapEntry->GetEntrancePos(mapid, x, y);
|
||||
}
|
||||
|
||||
void AddObjectToRemoveList(WorldObject *obj);
|
||||
|
||||
@@ -471,17 +471,17 @@ void WorldSession::HandleCorpseMapPositionQuery( WorldPacket & recv_data )
|
||||
|
||||
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 = corpse->GetMapId();
|
||||
MapEntry const * corpseMapEntry = sMapStore.LookupEntry(mapId);
|
||||
if (corpseMapEntry->IsDungeon())
|
||||
{
|
||||
int32 mapId;
|
||||
float mx, my;
|
||||
map->GetEntrancePos(mapId, mx, my);
|
||||
bool entranceFound = corpseMapEntry->GetEntrancePos(mapId, mx, my);
|
||||
assert(entranceFound);
|
||||
|
||||
const Map* newMap = MapManager::Instance().CreateBaseMap(mapId);
|
||||
Map const * newMap = MapManager::Instance().CreateBaseMap(mapId);
|
||||
uint32 zoneId = newMap->GetZoneId(mx, my, 0);
|
||||
|
||||
float _mx = mx;
|
||||
@@ -494,7 +494,7 @@ void WorldSession::HandleCorpseMapPositionQuery( WorldPacket & recv_data )
|
||||
|
||||
cx = x - mx;
|
||||
cy = y - my;
|
||||
cz = corpse->GetPositionZ() - map->GetHeight(_mx, _my, MAX_HEIGHT);
|
||||
cz = corpse->GetPositionZ() - newMap->GetHeight(_mx, _my, MAX_HEIGHT);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user