diff options
| author | Shauren <shauren.trinity@gmail.com> | 2016-11-08 00:04:19 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-11-08 00:04:19 +0100 |
| commit | fcbb4397ea5c803b5b46bda770606ae7a79e565f (patch) | |
| tree | 07bbcd1f1f45c27503617301e7bc36c68b185f43 /src/server/game/DataStores | |
| parent | 0abb9873ec3798b6476400c8d283a6410d9418fe (diff) | |
Core/Quests: Implemented handling all QuestPackageItem types
Closes #18209
Diffstat (limited to 'src/server/game/DataStores')
| -rw-r--r-- | src/server/game/DataStores/DB2Stores.cpp | 18 | ||||
| -rw-r--r-- | src/server/game/DataStores/DB2Stores.h | 3 |
2 files changed, 18 insertions, 3 deletions
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index e6b5290b752..d249097273f 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -794,7 +794,12 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) } for (QuestPackageItemEntry const* questPackageItem : sQuestPackageItemStore) - _questPackages[questPackageItem->QuestPackageID].push_back(questPackageItem); + { + if (questPackageItem->FilterType != QUEST_PACKAGE_FILTER_UNMATCHED) + _questPackages[questPackageItem->QuestPackageID].first.push_back(questPackageItem); + else + _questPackages[questPackageItem->QuestPackageID].second.push_back(questPackageItem); + } for (RulesetItemUpgradeEntry const* rulesetItemUpgrade : sRulesetItemUpgradeStore) _rulesetItemUpgrade[rulesetItemUpgrade->ItemID] = rulesetItemUpgrade->ItemUpgradeID; @@ -1625,7 +1630,16 @@ std::vector<QuestPackageItemEntry const*> const* DB2Manager::GetQuestPackageItem { auto itr = _questPackages.find(questPackageID); if (itr != _questPackages.end()) - return &itr->second; + return &itr->second.first; + + return nullptr; +} + +std::vector<QuestPackageItemEntry const*> const* DB2Manager::GetQuestPackageItemsFallback(uint32 questPackageID) const +{ + auto itr = _questPackages.find(questPackageID); + if (itr != _questPackages.end()) + return &itr->second.second; return nullptr; } diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h index 2a4e42b27ed..334081bab27 100644 --- a/src/server/game/DataStores/DB2Stores.h +++ b/src/server/game/DataStores/DB2Stores.h @@ -261,7 +261,7 @@ public: typedef std::array<std::vector<std::wregex>, TOTAL_LOCALES + 1> NameValidationRegexContainer; typedef std::unordered_map<uint32, std::set<uint32>> PhaseGroupContainer; typedef std::array<PowerTypeEntry const*, MAX_POWERS> PowerTypesContainer; - typedef std::unordered_map<uint32, std::vector<QuestPackageItemEntry const*>> QuestPackageItemContainer; + typedef std::unordered_map<uint32, std::pair<std::vector<QuestPackageItemEntry const*>, std::vector<QuestPackageItemEntry const*>>> QuestPackageItemContainer; typedef std::unordered_map<uint32, uint32> RulesetItemUpgradeContainer; typedef std::unordered_multimap<uint32, SkillRaceClassInfoEntry const*> SkillRaceClassInfoContainer; typedef std::unordered_map<uint32, std::vector<SpecializationSpellsEntry const*>> SpecializationSpellsContainer; @@ -330,6 +330,7 @@ public: static PvpDifficultyEntry const* GetBattlegroundBracketByLevel(uint32 mapid, uint32 level); static PvpDifficultyEntry const* GetBattlegroundBracketById(uint32 mapid, BattlegroundBracketId id); std::vector<QuestPackageItemEntry const*> const* GetQuestPackageItems(uint32 questPackageID) const; + std::vector<QuestPackageItemEntry const*> const* GetQuestPackageItemsFallback(uint32 questPackageID) const; uint32 GetQuestUniqueBitFlag(uint32 questId); uint32 GetRulesetItemUpgrade(uint32 itemId) const; SkillRaceClassInfoEntry const* GetSkillRaceClassInfo(uint32 skill, uint8 race, uint8 class_); |
