diff options
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 22 |
1 files changed, 8 insertions, 14 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; } |