diff options
author | Shauren <shauren.trinity@gmail.com> | 2015-06-14 00:26:56 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2015-06-14 00:26:56 +0200 |
commit | 3ada2ed993517a19f9733fcface94787569bbdf9 (patch) | |
tree | 825661cd471c0453cab605e3d69744e823a028bc | |
parent | 97c903ec2ab4babd6175d9569dd29bd795acba18 (diff) |
Core/Misc: Fixed loading access_requirement
Closes #14846
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index fa52653811f..bdfd66429cb 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -6144,11 +6144,21 @@ void ObjectMgr::LoadAccessRequirements() { Field* fields = result->Fetch(); - ++count; - uint32 mapid = fields[0].GetUInt32(); - uint8 difficulty = fields[1].GetUInt8(); - uint32 requirement_ID = MAKE_PAIR64(mapid, difficulty); + if (!sMapStore.LookupEntry(mapid)) + { + TC_LOG_ERROR("sql.sql", "Map %u referenced in `access_requirement` does not exist, skipped.", mapid); + continue; + } + + uint32 difficulty = fields[1].GetUInt8(); + if (!GetMapDifficultyData(mapid, Difficulty(difficulty))) + { + TC_LOG_ERROR("sql.sql", "Map %u referenced in `access_requirement` does not have difficulty %u, skipped", mapid, difficulty); + continue; + } + + uint64 requirement_ID = MAKE_PAIR64(mapid, difficulty); AccessRequirement* ar = new AccessRequirement(); ar->levelMin = fields[2].GetUInt8(); @@ -6165,7 +6175,7 @@ void ObjectMgr::LoadAccessRequirements() ItemTemplate const* pProto = GetItemTemplate(ar->item); if (!pProto) { - TC_LOG_ERROR("misc", "Key item %u does not exist for map %u difficulty %u, removing key requirement.", ar->item, mapid, difficulty); + TC_LOG_ERROR("sql.sql", "Key item %u does not exist for map %u difficulty %u, removing key requirement.", ar->item, mapid, difficulty); ar->item = 0; } } @@ -6175,7 +6185,7 @@ void ObjectMgr::LoadAccessRequirements() ItemTemplate const* pProto = GetItemTemplate(ar->item2); if (!pProto) { - TC_LOG_ERROR("misc", "Second item %u does not exist for map %u difficulty %u, removing key requirement.", ar->item2, mapid, difficulty); + TC_LOG_ERROR("sql.sql", "Second item %u does not exist for map %u difficulty %u, removing key requirement.", ar->item2, mapid, difficulty); ar->item2 = 0; } } @@ -6208,6 +6218,8 @@ void ObjectMgr::LoadAccessRequirements() } _accessRequirementStore[requirement_ID] = ar; + ++count; + } while (result->NextRow()); TC_LOG_INFO("server.loading", ">> Loaded %u access requirement definitions in %u ms", count, GetMSTimeDiffToNow(oldMSTime)); |