diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-07-17 19:14:13 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-07-17 19:14:13 +0200 |
commit | b8e52fd90bdab6e720d13e44c64483945e139fa2 (patch) | |
tree | 23217ab42d5d99f6042fd7bc22fafc3a242d2dfb /src | |
parent | 87b0a193049c23356b449b48dda1d56262d9c0af (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.cpp | 22 | ||||
-rw-r--r-- | src/server/game/Handlers/MovementHandler.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Instances/InstanceSaveMgr.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Instances/InstanceSaveMgr.h | 1 | ||||
-rw-r--r-- | src/server/game/Maps/MapInstanced.cpp | 7 | ||||
-rw-r--r-- | src/server/game/Maps/MapManager.cpp | 15 | ||||
-rw-r--r-- | src/server/game/Maps/MapManager.h | 8 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 3 |
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; } |