aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/DataStores
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-11-08 00:04:19 +0100
committerShauren <shauren.trinity@gmail.com>2016-11-08 00:04:19 +0100
commitfcbb4397ea5c803b5b46bda770606ae7a79e565f (patch)
tree07bbcd1f1f45c27503617301e7bc36c68b185f43 /src/server/game/DataStores
parent0abb9873ec3798b6476400c8d283a6410d9418fe (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.cpp18
-rw-r--r--src/server/game/DataStores/DB2Stores.h3
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_);