aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-07-17 19:14:13 +0200
committerShauren <shauren.trinity@gmail.com>2022-07-17 19:14:13 +0200
commitb8e52fd90bdab6e720d13e44c64483945e139fa2 (patch)
tree23217ab42d5d99f6042fd7bc22fafc3a242d2dfb /src
parent87b0a193049c23356b449b48dda1d56262d9c0af (diff)
Core/Maps: Made instance_template no longer required to create and enter instance maps
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp22
-rw-r--r--src/server/game/Handlers/MovementHandler.cpp6
-rw-r--r--src/server/game/Instances/InstanceSaveMgr.cpp6
-rw-r--r--src/server/game/Instances/InstanceSaveMgr.h1
-rw-r--r--src/server/game/Maps/MapInstanced.cpp7
-rw-r--r--src/server/game/Maps/MapManager.cpp15
-rw-r--r--src/server/game/Maps/MapManager.h8
-rw-r--r--src/server/game/Spells/Spell.cpp3
8 files changed, 16 insertions, 52 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index cae5700ef64..67a83cf7c8d 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -6304,7 +6304,7 @@ void ObjectMgr::LoadInstanceTemplate()
uint16 mapID = fields[0].GetUInt16();
- if (!MapManager::IsValidMAP(mapID, true))
+ if (!MapManager::IsValidMAP(mapID))
{
TC_LOG_ERROR("sql.sql", "ObjectMgr::LoadInstanceTemplate: bad mapid %d for template!", mapID);
continue;
@@ -7474,31 +7474,25 @@ void ObjectMgr::LoadAccessRequirements()
*/
AreaTriggerStruct const* ObjectMgr::GetGoBackTrigger(uint32 Map) const
{
- bool useParentDbValue = false;
- uint32 parentId = 0;
+ Optional<uint32> parentId;
MapEntry const* mapEntry = sMapStore.LookupEntry(Map);
if (!mapEntry || mapEntry->CorpseMapID < 0)
return nullptr;
if (mapEntry->IsDungeon())
- {
- InstanceTemplate const* iTemplate = sObjectMgr->GetInstanceTemplate(Map);
-
- if (!iTemplate)
- return nullptr;
+ if (InstanceTemplate const* iTemplate = sObjectMgr->GetInstanceTemplate(Map))
+ parentId = iTemplate->Parent;
- parentId = iTemplate->Parent;
- useParentDbValue = true;
- }
-
- uint32 entrance_map = uint32(mapEntry->CorpseMapID);
+ uint32 entrance_map = parentId.value_or(mapEntry->CorpseMapID);
for (AreaTriggerContainer::const_iterator itr = _areaTriggerStore.begin(); itr != _areaTriggerStore.end(); ++itr)
- if ((!useParentDbValue && itr->second.target_mapId == entrance_map) || (useParentDbValue && itr->second.target_mapId == parentId))
+ {
+ if (itr->second.target_mapId == entrance_map)
{
AreaTriggerEntry const* atEntry = sAreaTriggerStore.LookupEntry(itr->first);
if (atEntry && atEntry->ContinentID == int32(Map))
return &itr->second;
}
+ }
return nullptr;
}
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp
index 69299588ba6..7e2d1a98129 100644
--- a/src/server/game/Handlers/MovementHandler.cpp
+++ b/src/server/game/Handlers/MovementHandler.cpp
@@ -28,7 +28,6 @@
#include "MapManager.h"
#include "MiscPackets.h"
#include "MovementPackets.h"
-#include "ObjectMgr.h"
#include "Player.h"
#include "SpellInfo.h"
#include "MotionMaster.h"
@@ -68,10 +67,9 @@ void WorldSession::HandleMoveWorldportAck()
// get the destination map entry, not the current one, this will fix homebind and reset greeting
MapEntry const* mEntry = sMapStore.LookupEntry(loc.GetMapId());
- InstanceTemplate const* mInstance = sObjectMgr->GetInstanceTemplate(loc.GetMapId());
// reset instance validity, except if going to an instance inside an instance
- if (player->m_InstanceValid == false && !mInstance)
+ if (player->m_InstanceValid == false && !mEntry->IsDungeon())
player->m_InstanceValid = true;
Map* oldMap = player->GetMap();
@@ -191,7 +189,7 @@ void WorldSession::HandleMoveWorldportAck()
}
}
- if (mInstance)
+ if (mEntry->IsDungeon())
{
// check if this instance has a reset time and send it to player if so
Difficulty diff = newMap->GetDifficultyID();
diff --git a/src/server/game/Instances/InstanceSaveMgr.cpp b/src/server/game/Instances/InstanceSaveMgr.cpp
index 7e422677c80..134223adc04 100644
--- a/src/server/game/Instances/InstanceSaveMgr.cpp
+++ b/src/server/game/Instances/InstanceSaveMgr.cpp
@@ -241,12 +241,6 @@ time_t InstanceSave::GetResetTimeForDB()
return GetResetTime();
}
-// to cache or not to cache, that is the question
-InstanceTemplate const* InstanceSave::GetTemplate()
-{
- return sObjectMgr->GetInstanceTemplate(m_mapid);
-}
-
MapEntry const* InstanceSave::GetMapEntry()
{
return sMapStore.LookupEntry(m_mapid);
diff --git a/src/server/game/Instances/InstanceSaveMgr.h b/src/server/game/Instances/InstanceSaveMgr.h
index e83406b97a0..6b5ac5c562f 100644
--- a/src/server/game/Instances/InstanceSaveMgr.h
+++ b/src/server/game/Instances/InstanceSaveMgr.h
@@ -81,7 +81,6 @@ class TC_GAME_API InstanceSave
uint32 GetEntranceLocation() const { return m_entranceId; }
void SetEntranceLocation(uint32 entranceId) { m_entranceId = entranceId; }
- InstanceTemplate const* GetTemplate();
MapEntry const* GetMapEntry();
/* online players bound to the instance (perm/solo)
diff --git a/src/server/game/Maps/MapInstanced.cpp b/src/server/game/Maps/MapInstanced.cpp
index 89f22965d94..934a807394f 100644
--- a/src/server/game/Maps/MapInstanced.cpp
+++ b/src/server/game/Maps/MapInstanced.cpp
@@ -24,7 +24,6 @@
#include "Log.h"
#include "MapManager.h"
#include "MMapFactory.h"
-#include "ObjectMgr.h"
#include "Player.h"
#include "ScenarioMgr.h"
#include "VMapFactory.h"
@@ -222,12 +221,6 @@ InstanceMap* MapInstanced::CreateInstance(uint32 InstanceId, InstanceSave* save,
TC_LOG_ERROR("maps", "CreateInstance: no entry for map %d", GetId());
ABORT();
}
- InstanceTemplate const* iTemplate = sObjectMgr->GetInstanceTemplate(GetId());
- if (!iTemplate)
- {
- TC_LOG_ERROR("maps", "CreateInstance: no instance template for map %d", GetId());
- ABORT();
- }
// some instances only have one difficulty
sDB2Manager.GetDownscaledMapDifficultyData(GetId(), difficulty);
diff --git a/src/server/game/Maps/MapManager.cpp b/src/server/game/Maps/MapManager.cpp
index f9ca9526adb..e59e0cea265 100644
--- a/src/server/game/Maps/MapManager.cpp
+++ b/src/server/game/Maps/MapManager.cpp
@@ -156,10 +156,6 @@ Map::EnterState MapManager::PlayerCannotEnter(uint32 mapid, Player* player, bool
if (!entry->IsDungeon())
return Map::CAN_ENTER;
- InstanceTemplate const* instance = sObjectMgr->GetInstanceTemplate(mapid);
- if (!instance)
- return Map::CANNOT_ENTER_UNINSTANCED_DUNGEON;
-
Difficulty targetDifficulty, requestedDifficulty;
targetDifficulty = requestedDifficulty = player->GetDifficultyID(entry);
// Get the highest available difficulty if current setting is higher than the instance allows
@@ -266,16 +262,9 @@ bool MapManager::ExistMapAndVMap(uint32 mapid, float x, float y)
return Map::ExistMap(mapid, gx, gy) && Map::ExistVMap(mapid, gx, gy);
}
-bool MapManager::IsValidMAP(uint32 mapid, bool startUp)
+bool MapManager::IsValidMAP(uint32 mapId)
{
- MapEntry const* mEntry = sMapStore.LookupEntry(mapid);
-
- if (startUp)
- return mEntry ? true : false;
- else
- return mEntry && (!mEntry->IsDungeon() || sObjectMgr->GetInstanceTemplate(mapid));
-
- /// @todo add check for battleground template
+ return sMapStore.LookupEntry(mapId) != nullptr;
}
void MapManager::UnloadAll()
diff --git a/src/server/game/Maps/MapManager.h b/src/server/game/Maps/MapManager.h
index 432795b11fb..57bfd88ae3f 100644
--- a/src/server/game/Maps/MapManager.h
+++ b/src/server/game/Maps/MapManager.h
@@ -84,21 +84,21 @@ class TC_GAME_API MapManager
void UnloadAll();
static bool ExistMapAndVMap(uint32 mapid, float x, float y);
- static bool IsValidMAP(uint32 mapid, bool startUp);
+ static bool IsValidMAP(uint32 mapId);
static bool IsValidMapCoord(uint32 mapid, float x, float y)
{
- return IsValidMAP(mapid, false) && Trinity::IsValidMapCoord(x, y);
+ return IsValidMAP(mapid) && Trinity::IsValidMapCoord(x, y);
}
static bool IsValidMapCoord(uint32 mapid, float x, float y, float z)
{
- return IsValidMAP(mapid, false) && Trinity::IsValidMapCoord(x, y, z);
+ return IsValidMAP(mapid) && Trinity::IsValidMapCoord(x, y, z);
}
static bool IsValidMapCoord(uint32 mapid, float x, float y, float z, float o)
{
- return IsValidMAP(mapid, false) && Trinity::IsValidMapCoord(x, y, z, o);
+ return IsValidMAP(mapid) && Trinity::IsValidMapCoord(x, y, z, o);
}
static bool IsValidMapCoord(uint32 mapid, Position const& pos)
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index ea90562b469..1268330ceec 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -6240,9 +6240,6 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32
if (targetBind->perm && targetBind->save != casterBind->save)
return SPELL_FAILED_TARGET_LOCKED_TO_RAID_INSTANCE;
- InstanceTemplate const* instance = sObjectMgr->GetInstanceTemplate(mapId);
- if (!instance)
- return SPELL_FAILED_TARGET_NOT_IN_INSTANCE;
if (!target->Satisfy(sObjectMgr->GetAccessRequirement(mapId, difficulty), mapId))
return SPELL_FAILED_BAD_TARGETS;
}