Core/Maps: Fixed retrieving terrain info when on child maps

Port From (https://github.com/TrinityCore/TrinityCore/commit/704142f15a51055c4fa064b1286b65d78b795e05)
This commit is contained in:
hondacrx
2023-01-06 16:38:58 -05:00
parent a16289d51e
commit 54a507e284
9 changed files with 77 additions and 74 deletions
+4 -4
View File
@@ -206,7 +206,7 @@ namespace Game.Chat.Commands
player.SaveRecallPosition(); // save only in non-flight case
TerrainInfo terrain = Global.TerrainMgr.LoadTerrain(mapId);
float z = Math.Max(terrain.GetStaticHeight(PhasingHandler.EmptyPhaseShift, x, y, MapConst.MaxHeight), terrain.GetWaterLevel(PhasingHandler.EmptyPhaseShift, x, y));
float z = Math.Max(terrain.GetStaticHeight(PhasingHandler.EmptyPhaseShift, mapId, x, y, MapConst.MaxHeight), terrain.GetWaterLevel(PhasingHandler.EmptyPhaseShift, mapId, x, y));
player.TeleportTo(mapId, x, y, z, player.GetOrientation());
return true;
@@ -353,7 +353,7 @@ namespace Game.Chat.Commands
player.SaveRecallPosition(); // save only in non-flight case
TerrainInfo terrain = Global.TerrainMgr.LoadTerrain(mapId);
z = Math.Max(terrain.GetStaticHeight(PhasingHandler.EmptyPhaseShift, x, y, MapConst.MaxHeight), terrain.GetWaterLevel(PhasingHandler.EmptyPhaseShift, x, y));
z = Math.Max(terrain.GetStaticHeight(PhasingHandler.EmptyPhaseShift, mapId, x, y, MapConst.MaxHeight), terrain.GetWaterLevel(PhasingHandler.EmptyPhaseShift, mapId, x, y));
player.TeleportTo(mapId, x, y, z, 0.0f);
return true;
@@ -399,7 +399,7 @@ namespace Game.Chat.Commands
return false;
}
TerrainInfo terrain = Global.TerrainMgr.LoadTerrain(mapId);
z = Math.Max(terrain.GetStaticHeight(PhasingHandler.EmptyPhaseShift, x, y, MapConst.MaxHeight), terrain.GetWaterLevel(PhasingHandler.EmptyPhaseShift, x, y));
z = Math.Max(terrain.GetStaticHeight(PhasingHandler.EmptyPhaseShift, mapId, x, y, MapConst.MaxHeight), terrain.GetWaterLevel(PhasingHandler.EmptyPhaseShift, mapId, x, y));
}
return DoTeleport(handler, new Position(x, y, z.Value, o.Value), mapId);
@@ -446,7 +446,7 @@ namespace Game.Chat.Commands
else
player.SaveRecallPosition(); // save only in non-flight case
float z = Math.Max(terrain.GetStaticHeight(PhasingHandler.EmptyPhaseShift, x, y, MapConst.MaxHeight), terrain.GetWaterLevel(PhasingHandler.EmptyPhaseShift, x, y));
float z = Math.Max(terrain.GetStaticHeight(PhasingHandler.EmptyPhaseShift, zoneEntry.ContinentID, x, y, MapConst.MaxHeight), terrain.GetWaterLevel(PhasingHandler.EmptyPhaseShift, zoneEntry.ContinentID, x, y));
player.TeleportTo(zoneEntry.ContinentID, x, y, z, player.GetOrientation());
return true;
+3 -3
View File
@@ -108,7 +108,7 @@ namespace Game.Chat
handler.SendSysMessage("tileloc [{0}, {1}]", gx, gy);
// calculate navmesh tile location
uint terrainMapId = PhasingHandler.GetTerrainMapId(player.GetPhaseShift(), player.GetMap().GetTerrain(), x, y);
uint terrainMapId = PhasingHandler.GetTerrainMapId(player.GetPhaseShift(), player.GetMapId(), player.GetMap().GetTerrain(), x, y);
Detour.dtNavMesh navmesh = Global.MMapMgr.GetNavMesh(terrainMapId);
Detour.dtNavMeshQuery navmeshquery = Global.MMapMgr.GetNavMeshQuery(terrainMapId, player.GetInstanceId());
if (navmesh == null || navmeshquery == null)
@@ -160,7 +160,7 @@ namespace Game.Chat
static bool HandleMmapLoadedTilesCommand(CommandHandler handler)
{
Player player = handler.GetSession().GetPlayer();
uint terrainMapId = PhasingHandler.GetTerrainMapId(player.GetPhaseShift(), player.GetMap().GetTerrain(), player.GetPositionX(), player.GetPositionY());
uint terrainMapId = PhasingHandler.GetTerrainMapId(player.GetPhaseShift(), player.GetMapId(), player.GetMap().GetTerrain(), player.GetPositionX(), player.GetPositionY());
Detour.dtNavMesh navmesh = Global.MMapMgr.GetNavMesh(terrainMapId);
Detour.dtNavMeshQuery navmeshquery = Global.MMapMgr.GetNavMeshQuery(terrainMapId, handler.GetPlayer().GetInstanceId());
if (navmesh == null || navmeshquery == null)
@@ -186,7 +186,7 @@ namespace Game.Chat
static bool HandleMmapStatsCommand(CommandHandler handler)
{
Player player = handler.GetSession().GetPlayer();
uint terrainMapId = PhasingHandler.GetTerrainMapId(player.GetPhaseShift(), player.GetMap().GetTerrain(), player.GetPositionX(), player.GetPositionY());
uint terrainMapId = PhasingHandler.GetTerrainMapId(player.GetPhaseShift(), player.GetMapId(), player.GetMap().GetTerrain(), player.GetPositionX(), player.GetPositionY());
handler.SendSysMessage("mmap stats:");
handler.SendSysMessage(" global mmap pathfinding is {0}abled", Global.DisableMgr.IsPathfindingEnabled(player.GetMapId()) ? "En" : "Dis");
handler.SendSysMessage(" {0} maps loaded with {1} tiles overall", Global.MMapMgr.GetLoadedMapsCount(), Global.MMapMgr.GetLoadedTilesCount());