From c1d865f09bacc06cb78ed3404e8a2d20f9d907b5 Mon Sep 17 00:00:00 2001 From: joschiwald Date: Sun, 15 Apr 2018 21:25:24 +0200 Subject: Core/DataStores: Implemented RewardPackXCurrencyType.db2 --- .../database/Database/Implementation/HotfixDatabase.cpp | 4 ++++ .../database/Database/Implementation/HotfixDatabase.h | 2 ++ src/server/game/DataStores/DB2LoadInfo.h | 16 ++++++++++++++++ src/server/game/DataStores/DB2Stores.cpp | 15 +++++++++++++++ src/server/game/DataStores/DB2Stores.h | 1 + src/server/game/DataStores/DB2Structure.h | 8 ++++++++ src/server/game/Entities/Player/Player.cpp | 5 +++++ 7 files changed, 51 insertions(+) (limited to 'src') diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp index ebd4f1ac6e4..2eb4beb7a32 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.cpp +++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp @@ -746,6 +746,10 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_REWARD_PACK, "SELECT ID, Money, ArtifactXPMultiplier, ArtifactXPDifficulty, ArtifactXPCategoryID, CharTitleID, " "TreasurePickerID FROM reward_pack ORDER BY ID DESC", CONNECTION_SYNCH); + // RewardPackXCurrencyType.db2 + PrepareStatement(HOTFIX_SEL_REWARD_PACK_X_CURRENCY_TYPE, "SELECT ID, CurrencyTypeID, Quantity, RewardPackID FROM reward_pack_x_currency_type" + " ORDER BY ID DESC", CONNECTION_SYNCH); + // RewardPackXItem.db2 PrepareStatement(HOTFIX_SEL_REWARD_PACK_X_ITEM, "SELECT ID, ItemID, ItemQuantity, RewardPackID FROM reward_pack_x_item ORDER BY ID DESC", CONNECTION_SYNCH); diff --git a/src/server/database/Database/Implementation/HotfixDatabase.h b/src/server/database/Database/Implementation/HotfixDatabase.h index 6ffb860931a..bb56844ddae 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.h +++ b/src/server/database/Database/Implementation/HotfixDatabase.h @@ -395,6 +395,8 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_REWARD_PACK, + HOTFIX_SEL_REWARD_PACK_X_CURRENCY_TYPE, + HOTFIX_SEL_REWARD_PACK_X_ITEM, HOTFIX_SEL_RULESET_ITEM_UPGRADE, diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h index 16f3f1158e4..244bfa1a685 100644 --- a/src/server/game/DataStores/DB2LoadInfo.h +++ b/src/server/game/DataStores/DB2LoadInfo.h @@ -3760,6 +3760,22 @@ struct RewardPackLoadInfo } }; +struct RewardPackXCurrencyTypeLoadInfo +{ + static DB2LoadInfo const* Instance() + { + static DB2FieldMeta const fields[] = + { + { false, FT_INT, "ID" }, + { false, FT_INT, "CurrencyTypeID" }, + { true, FT_INT, "Quantity" }, + { false, FT_INT, "RewardPackID" }, + }; + static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, RewardPackXCurrencyTypeMeta::Instance(), HOTFIX_SEL_REWARD_PACK_X_CURRENCY_TYPE); + return &loadInfo; + } +}; + struct RewardPackXItemLoadInfo { static DB2LoadInfo const* Instance() diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index 486b9356ecd..0dee96c82ce 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -194,6 +194,7 @@ DB2Storage sQuestV2Store("QuestV2.db2", Que DB2Storage sQuestXPStore("QuestXP.db2", QuestXpLoadInfo::Instance()); DB2Storage sRandPropPointsStore("RandPropPoints.db2", RandPropPointsLoadInfo::Instance()); DB2Storage sRewardPackStore("RewardPack.db2", RewardPackLoadInfo::Instance()); +DB2Storage sRewardPackXCurrencyTypeStore("RewardPackXCurrencyType.db2", RewardPackXCurrencyTypeLoadInfo::Instance()); DB2Storage sRewardPackXItemStore("RewardPackXItem.db2", RewardPackXItemLoadInfo::Instance()); DB2Storage sRulesetItemUpgradeStore("RulesetItemUpgrade.db2", RulesetItemUpgradeLoadInfo::Instance()); DB2Storage sSandboxScalingStore("SandboxScaling.db2", SandboxScalingLoadInfo::Instance()); @@ -370,6 +371,7 @@ namespace PvpTalentsByPosition _pvpTalentsByPosition; uint32 _pvpTalentUnlock[MAX_PVP_TALENT_TIERS][MAX_PVP_TALENT_COLUMNS]; QuestPackageItemContainer _questPackages; + std::unordered_map> _rewardPackCurrencyTypes; std::unordered_map> _rewardPackItems; RulesetItemUpgradeContainer _rulesetItemUpgrade; SkillRaceClassInfoContainer _skillRaceClassInfoBySkill; @@ -626,6 +628,7 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) LOAD_DB2(sQuestXPStore); LOAD_DB2(sRandPropPointsStore); LOAD_DB2(sRewardPackStore); + LOAD_DB2(sRewardPackXCurrencyTypeStore); LOAD_DB2(sRewardPackXItemStore); LOAD_DB2(sRulesetItemUpgradeStore); LOAD_DB2(sSandboxScalingStore); @@ -985,6 +988,9 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) _questPackages[questPackageItem->PackageID].second.push_back(questPackageItem); } + for (RewardPackXCurrencyTypeEntry const* rewardPackXCurrencyType : sRewardPackXCurrencyTypeStore) + _rewardPackCurrencyTypes[rewardPackXCurrencyType->RewardPackID].push_back(rewardPackXCurrencyType); + for (RewardPackXItemEntry const* rewardPackXItem : sRewardPackXItemStore) _rewardPackItems[rewardPackXItem->RewardPackID].push_back(rewardPackXItem); @@ -2004,6 +2010,15 @@ uint8 DB2Manager::GetPvpItemLevelBonus(uint32 itemId) const return 0; } +std::vector const* DB2Manager::GetRewardPackCurrencyTypesByRewardID(uint32 rewardPackID) const +{ + auto itr = _rewardPackCurrencyTypes.find(rewardPackID); + if (itr != _rewardPackCurrencyTypes.end()) + return &itr->second; + + return nullptr; +} + std::vector const* DB2Manager::GetRewardPackItemsByRewardID(uint32 rewardPackID) const { auto itr = _rewardPackItems.find(rewardPackID); diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h index f923d6c437b..35b0456ea4a 100644 --- a/src/server/game/DataStores/DB2Stores.h +++ b/src/server/game/DataStores/DB2Stores.h @@ -316,6 +316,7 @@ public: std::vector const* GetQuestPackageItems(uint32 questPackageID) const; std::vector const* GetQuestPackageItemsFallback(uint32 questPackageID) const; uint32 GetQuestUniqueBitFlag(uint32 questId); + std::vector const* GetRewardPackCurrencyTypesByRewardID(uint32 rewardPackID) const; std::vector const* GetRewardPackItemsByRewardID(uint32 rewardPackID) const; uint32 GetRulesetItemUpgrade(uint32 itemId) const; SkillRaceClassInfoEntry const* GetSkillRaceClassInfo(uint32 skill, uint8 race, uint8 class_); diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 57c73c701b0..02d458d6de1 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -2207,6 +2207,14 @@ struct RewardPackEntry uint32 TreasurePickerID; }; +struct RewardPackXCurrencyTypeEntry +{ + uint32 ID; + uint32 CurrencyTypeID; + int32 Quantity; + uint32 RewardPackID; +}; + struct RewardPackXItemEntry { uint32 ID; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index a0117149937..1354ddb17d5 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -6446,6 +6446,11 @@ void Player::RewardPlayerWithRewardPack(RewardPackEntry const* rewardPackEntry) SetTitle(charTitlesEntry); ModifyMoney(rewardPackEntry->Money); + + if (std::vector const* rewardCurrencyTypes = sDB2Manager.GetRewardPackCurrencyTypesByRewardID(rewardPackEntry->ID)) + for (RewardPackXCurrencyTypeEntry const* currency : *rewardCurrencyTypes) + ModifyCurrency(currency->CurrencyTypeID, currency->Quantity); + if (std::vector const* rewardPackXItems = sDB2Manager.GetRewardPackItemsByRewardID(rewardPackEntry->ID)) for (RewardPackXItemEntry const* rewardPackXItem : *rewardPackXItems) AddItem(rewardPackXItem->ItemID, rewardPackXItem->ItemQuantity); -- cgit v1.2.3