aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp2
-rwxr-xr-xsrc/server/game/Maps/MapManager.cpp8
-rwxr-xr-xsrc/server/game/Maps/MapManager.h12
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp2
4 files changed, 17 insertions, 7 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 84182ad1d25..3585f69fae1 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -2207,7 +2207,7 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
// If the map is not created, assume it is possible to enter it.
// It will be created in the WorldPortAck.
- Map* map = sMapMgr->FindBaseMap(mapid);
+ Map* map = sMapMgr->FindBaseNonInstanceMap(mapid);
if (!map || map->CanEnter(this))
{
//lets reset near teleport flag if it wasn't reset during chained teleports
diff --git a/src/server/game/Maps/MapManager.cpp b/src/server/game/Maps/MapManager.cpp
index bb62912d204..1b1aeefb610 100755
--- a/src/server/game/Maps/MapManager.cpp
+++ b/src/server/game/Maps/MapManager.cpp
@@ -119,6 +119,14 @@ Map* MapManager::CreateBaseMap(uint32 id)
return m;
}
+Map* MapManager::FindBaseNonInstanceMap(uint32 mapId) const
+{
+ Map* map = FindBaseMap(mapId);
+ if(map && map->Instanceable())
+ return NULL;
+ return map;
+}
+
Map* MapManager::CreateMap(uint32 id, Player* player)
{
Map* m = CreateBaseMap(id);
diff --git a/src/server/game/Maps/MapManager.h b/src/server/game/Maps/MapManager.h
index 6ce641f81bd..3b168a57cd5 100755
--- a/src/server/game/Maps/MapManager.h
+++ b/src/server/game/Maps/MapManager.h
@@ -36,11 +36,7 @@ class MapManager
public:
Map* CreateBaseMap(uint32 mapId);
- Map* FindBaseMap(uint32 mapId) const
- {
- MapMapType::const_iterator iter = i_maps.find(mapId);
- return (iter == i_maps.end() ? NULL : iter->second);
- }
+ Map* FindBaseNonInstanceMap(uint32 mapId) const;
Map* CreateMap(uint32 mapId, Player* player);
Map* FindMap(uint32 mapId, uint32 instanceId) const;
@@ -164,6 +160,12 @@ class MapManager
MapManager();
~MapManager();
+ Map* FindBaseMap(uint32 mapId) const
+ {
+ MapMapType::const_iterator iter = i_maps.find(mapId);
+ return (iter == i_maps.end() ? NULL : iter->second);
+ }
+
MapManager(const MapManager &);
MapManager& operator=(const MapManager &);
diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
index 48e662d08bf..396b0c489f2 100755
--- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
@@ -351,7 +351,7 @@ void FlightPathMovementGenerator::InitEndGridInfo()
void FlightPathMovementGenerator::PreloadEndGrid()
{
// used to preload the final grid where the flightmaster is
- Map* endMap = sMapMgr->FindBaseMap(m_endMapId);
+ Map* endMap = sMapMgr->FindBaseNonInstanceMap(m_endMapId);
// Load the grid
if (endMap)