diff options
| author | Shauren <none@none> | 2010-07-29 18:11:41 +0200 |
|---|---|---|
| committer | Shauren <none@none> | 2010-07-29 18:11:41 +0200 |
| commit | ade1bbdd62f980e7c1284f4f39dbd7f1fbf98860 (patch) | |
| tree | 791c58dc29d7c226e6bc1837f22b6a6fb1d6b136 /src/server/game/Globals/ObjectMgr.cpp | |
| parent | dfe5ae36d33f2cceb6868d4a1d543804f94925b2 (diff) | |
Remade access_requirement table, now each difficulty mode for each instance has its own entry (for future Dungeon Finder development)
Added completed achievement as new requirement type
Removed obsolete access_id from areatrigger_teleport table
Implemented automatic downscaling of raid difficulty when requested mode does not exist
Changed dungeon_difficulty in characters table to instance_mode_mask saving both dungeon and raid difficulty in form (dungeon diff | raid diff << 4)
--HG--
branch : trunk
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 86 |
1 files changed, 35 insertions, 51 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 4890c67c6b4..d0af5081c89 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -5885,8 +5885,8 @@ void ObjectMgr::LoadAreaTriggerTeleports() uint32 count = 0; - // 0 1 2 3 4 5 6 - QueryResult_AutoPtr result = WorldDatabase.Query("SELECT id, access_id, target_map, target_position_x, target_position_y, target_position_z, target_orientation FROM areatrigger_teleport"); + // 0 1 2 3 4 5 + QueryResult_AutoPtr result = WorldDatabase.Query("SELECT id, target_map, target_position_x, target_position_y, target_position_z, target_orientation FROM areatrigger_teleport"); if (!result) { @@ -5913,12 +5913,11 @@ void ObjectMgr::LoadAreaTriggerTeleports() AreaTrigger at; - at.access_id = fields[1].GetUInt32(); - at.target_mapId = fields[2].GetUInt32(); - at.target_X = fields[3].GetFloat(); - at.target_Y = fields[4].GetFloat(); - at.target_Z = fields[5].GetFloat(); - at.target_Orientation = fields[6].GetFloat(); + at.target_mapId = fields[1].GetUInt32(); + at.target_X = fields[2].GetFloat(); + at.target_Y = fields[3].GetFloat(); + at.target_Z = fields[4].GetFloat(); + at.target_Orientation = fields[5].GetFloat(); AreaTriggerEntry const* atEntry = sAreaTriggerStore.LookupEntry(Trigger_ID); if (!atEntry) @@ -5954,8 +5953,8 @@ void ObjectMgr::LoadAccessRequirements() uint32 count = 0; - // 0 1 2 3 4 5 6 7 8 9 10 11 - QueryResult_AutoPtr result = WorldDatabase.Query("SELECT id, level_min, level_max, item, item2, heroic_key, heroic_key2, quest_done, quest_failed_text, heroic_quest_done, heroic_quest_failed_text, heroic_level_min FROM access_requirement"); + // 0 1 2 3 4 5 6 7 8 9 + QueryResult_AutoPtr result = WorldDatabase.Query("SELECT mapid, difficulty, level_min, level_max, item, item2, quest_done_A, quest_done_H, completed_achievement, quest_failed_text FROM access_requirement"); if (!result) { @@ -5978,28 +5977,27 @@ void ObjectMgr::LoadAccessRequirements() ++count; - uint32 requiremt_ID = fields[0].GetUInt32(); + uint32 mapid = fields[0].GetUInt32(); + uint8 difficulty = fields[1].GetUInt8(); + uint32 requirement_ID = MAKE_PAIR32(mapid,difficulty); AccessRequirement ar; - ar.levelMin = fields[1].GetUInt8(); - ar.levelMax = fields[2].GetUInt8(); - ar.heroicLevelMin = fields[11].GetUInt8(); - ar.item = fields[3].GetUInt32(); - ar.item2 = fields[4].GetUInt32(); - ar.heroicKey = fields[5].GetUInt32(); - ar.heroicKey2 = fields[6].GetUInt32(); - ar.quest = fields[7].GetUInt32(); - ar.questFailedText = fields[8].GetCppString(); - ar.heroicQuest = fields[9].GetUInt32(); - ar.heroicQuestFailedText = fields[10].GetCppString(); + ar.levelMin = fields[2].GetUInt8(); + ar.levelMax = fields[3].GetUInt8(); + ar.item = fields[4].GetUInt32(); + ar.item2 = fields[5].GetUInt32(); + ar.quest_A = fields[6].GetUInt32(); + ar.quest_H = fields[7].GetUInt32(); + ar.achievement = fields[8].GetUInt32(); + ar.questFailedText = fields[9].GetCppString(); if (ar.item) { ItemPrototype const *pProto = GetItemPrototype(ar.item); if (!pProto) { - sLog.outError("Key item %u does not exist for requirement %u, removing key requirement.", ar.item, requiremt_ID); + sLog.outError("Key item %u does not exist for map %u difficulty %u, removing key requirement.", ar.item, mapid, difficulty); ar.item = 0; } } @@ -6009,53 +6007,39 @@ void ObjectMgr::LoadAccessRequirements() ItemPrototype const *pProto = GetItemPrototype(ar.item2); if (!pProto) { - sLog.outError("Second item %u does not exist for requirement %u, removing key requirement.", ar.item2, requiremt_ID); + sLog.outError("Second item %u does not exist for map %u difficulty %u, removing key requirement.", ar.item2, mapid, difficulty); ar.item2 = 0; } } - if (ar.heroicKey) + if (ar.quest_A) { - ItemPrototype const *pProto = GetItemPrototype(ar.heroicKey); - if (!pProto) - { - sLog.outError("Heroic key %u not exist for trigger %u, remove key requirement.", ar.heroicKey, requiremt_ID); - ar.heroicKey = 0; - } - } - - if (ar.heroicKey2) - { - ItemPrototype const *pProto = GetItemPrototype(ar.heroicKey2); - if (!pProto) + if (!GetQuestTemplate(ar.quest_A)) { - sLog.outError("Second heroic key %u not exist for trigger %u, remove key requirement.", ar.heroicKey2, requiremt_ID); - ar.heroicKey2 = 0; + sLog.outErrorDb("Required Alliance Quest %u not exist for map %u difficulty %u, remove quest done requirement.", ar.quest_A, mapid, difficulty); + ar.quest_A = 0; } } - if (ar.heroicQuest) + if (ar.quest_H) { - QuestMap::iterator qReqItr = mQuestTemplates.find(ar.heroicQuest); - if (qReqItr == mQuestTemplates.end()) + if (!GetQuestTemplate(ar.quest_H)) { - sLog.outErrorDb("Required Heroic Quest %u not exist for trigger %u, remove heroic quest done requirement.",ar.heroicQuest,requiremt_ID); - ar.heroicQuest = 0; + sLog.outErrorDb("Required Horde Quest %u not exist for map %u difficulty %u, remove quest done requirement.", ar.quest_H, mapid, difficulty); + ar.quest_H = 0; } } - if (ar.quest) + if (ar.achievement) { - QuestMap::iterator qReqItr = mQuestTemplates.find(ar.quest); - if (qReqItr == mQuestTemplates.end()) + if (!sAchievementStore.LookupEntry(ar.achievement)) { - sLog.outErrorDb("Required Quest %u not exist for trigger %u, remove quest done requirement.",ar.quest,requiremt_ID); - ar.quest = 0; + sLog.outErrorDb("Required Achievement %u not exist for map %u difficulty %u, remove quest done requirement.", ar.achievement, mapid, difficulty); + ar.achievement = 0; } } - mAccessRequirements[requiremt_ID] = ar; - + mAccessRequirements[requirement_ID] = ar; } while (result->NextRow()); sLog.outString(); |
