diff --git a/Source/Framework/Database/Databases/HotfixDatabase.cs b/Source/Framework/Database/Databases/HotfixDatabase.cs index b6d46039c..44f824f0d 100644 --- a/Source/Framework/Database/Databases/HotfixDatabase.cs +++ b/Source/Framework/Database/Databases/HotfixDatabase.cs @@ -736,6 +736,10 @@ namespace Framework.Database PrepareStatement(HotfixStatements.SEL_REWARD_PACK, "SELECT ID, Money, ArtifactXPMultiplier, ArtifactXPDifficulty, ArtifactXPCategoryID, CharTitleID, " + "TreasurePickerID FROM reward_pack ORDER BY ID DESC"); + // RewardPackXCurrencyType.db2 + PrepareStatement(HotfixStatements.SEL_REWARD_PACK_X_CURRENCY_TYPE, "SELECT ID, CurrencyTypeID, Quantity, RewardPackID FROM reward_pack_x_currency_type" + + " ORDER BY ID DESC"); + // RewardPackXItem.db2 PrepareStatement(HotfixStatements.SEL_REWARD_PACK_X_ITEM, "SELECT ID, ItemID, ItemQuantity, RewardPackID FROM reward_pack_x_item ORDER BY ID DESC"); @@ -1415,6 +1419,8 @@ namespace Framework.Database SEL_REWARD_PACK, + SEL_REWARD_PACK_X_CURRENCY_TYPE, + SEL_REWARD_PACK_X_ITEM, SEL_RULESET_ITEM_UPGRADE, diff --git a/Source/Game/DataStorage/CliDB.cs b/Source/Game/DataStorage/CliDB.cs index 43b1590b1..5cb7fb163 100644 --- a/Source/Game/DataStorage/CliDB.cs +++ b/Source/Game/DataStorage/CliDB.cs @@ -194,6 +194,7 @@ namespace Game.DataStorage QuestXPStorage = DBReader.Read("QuestXP.db2", HotfixStatements.SEL_QUEST_XP); RandPropPointsStorage = DBReader.Read("RandPropPoints.db2", HotfixStatements.SEL_RAND_PROP_POINTS); RewardPackStorage = DBReader.Read("RewardPack.db2", HotfixStatements.SEL_REWARD_PACK); + RewardPackXCurrencyTypeStorage = DBReader.Read("RewardPackXCurrencyType.db2", HotfixStatements.SEL_REWARD_PACK_X_CURRENCY_TYPE); RewardPackXItemStorage = DBReader.Read("RewardPackXItem.db2", HotfixStatements.SEL_REWARD_PACK_X_ITEM); RulesetItemUpgradeStorage = DBReader.Read("RulesetItemUpgrade.db2", HotfixStatements.SEL_RULESET_ITEM_UPGRADE); SandboxScalingStorage = DBReader.Read("SandboxScaling.db2", HotfixStatements.SEL_SANDBOX_SCALING); @@ -525,6 +526,7 @@ namespace Game.DataStorage public static DB6Storage QuestXPStorage; public static DB6Storage RandPropPointsStorage; public static DB6Storage RewardPackStorage; + public static DB6Storage RewardPackXCurrencyTypeStorage; public static DB6Storage RewardPackXItemStorage; public static DB6Storage RulesetItemUpgradeStorage; public static DB6Storage SandboxScalingStorage; diff --git a/Source/Game/DataStorage/DB2Manager.cs b/Source/Game/DataStorage/DB2Manager.cs index 84b9d1bbb..266e1d01b 100644 --- a/Source/Game/DataStorage/DB2Manager.cs +++ b/Source/Game/DataStorage/DB2Manager.cs @@ -401,6 +401,11 @@ namespace Game.DataStorage CliDB.QuestPackageItemStorage.Clear(); + foreach (RewardPackXCurrencyTypeRecord rewardPackXCurrencyType in CliDB.RewardPackXCurrencyTypeStorage.Values) + _rewardPackCurrencyTypes.Add(rewardPackXCurrencyType.RewardPackID, rewardPackXCurrencyType); + + CliDB.RewardPackXCurrencyTypeStorage.Clear(); + foreach (RewardPackXItemRecord rewardPackXItem in CliDB.RewardPackXItemStorage.Values) _rewardPackItems.Add(rewardPackXItem.RewardPackID, rewardPackXItem); @@ -1244,6 +1249,11 @@ namespace Game.DataStorage return _pvpItemBonus.LookupByKey(itemId); } + public List GetRewardPackCurrencyTypesByRewardID(uint rewardPackID) + { + return _rewardPackCurrencyTypes.LookupByKey(rewardPackID); + } + public List GetRewardPackItemsByRewardID(uint rewardPackID) { return _rewardPackItems.LookupByKey(rewardPackID); @@ -1519,6 +1529,7 @@ namespace Game.DataStorage List[][][] _pvpTalentsByPosition = new List[(int)Class.Max][][]; uint[][] _pvpTalentUnlock = new uint[PlayerConst.MaxPvpTalentTiers][]; Dictionary, List>> _questPackages = new Dictionary, List>>(); + MultiMap _rewardPackCurrencyTypes = new MultiMap(); MultiMap _rewardPackItems = new MultiMap(); Dictionary _rulesetItemUpgrade = new Dictionary(); MultiMap _skillRaceClassInfoBySkill = new MultiMap(); diff --git a/Source/Game/DataStorage/Structs/R_Records.cs b/Source/Game/DataStorage/Structs/R_Records.cs index 67193a10a..c690fffca 100644 --- a/Source/Game/DataStorage/Structs/R_Records.cs +++ b/Source/Game/DataStorage/Structs/R_Records.cs @@ -36,6 +36,14 @@ namespace Game.DataStorage public ushort TreasurePickerID; } + public sealed class RewardPackXCurrencyTypeRecord + { + public uint Id; + public uint CurrencyTypeID; + public int Quantity; + public uint RewardPackID; + } + public sealed class RewardPackXItemRecord { public uint Id; diff --git a/Source/Game/Entities/Player/Player.PvP.cs b/Source/Game/Entities/Player/Player.PvP.cs index c1fd5c8be..e73eb59f7 100644 --- a/Source/Game/Entities/Player/Player.PvP.cs +++ b/Source/Game/Entities/Player/Player.PvP.cs @@ -241,12 +241,14 @@ namespace Game.Entities SetTitle(charTitlesEntry); ModifyMoney(rewardPackEntry.Money); + + var rewardCurrencyTypes = Global.DB2Mgr.GetRewardPackCurrencyTypesByRewardID(rewardPackEntry.Id); + foreach (RewardPackXCurrencyTypeRecord currency in rewardCurrencyTypes) + ModifyCurrency((CurrencyTypes)currency.CurrencyTypeID, currency.Quantity); + var rewardPackXItems = Global.DB2Mgr.GetRewardPackItemsByRewardID(rewardPackEntry.Id); - if (rewardPackXItems != null) - { - foreach (RewardPackXItemRecord rewardPackXItem in rewardPackXItems) - AddItem(rewardPackXItem.ItemID, rewardPackXItem.ItemQuantity); - } + foreach (RewardPackXItemRecord rewardPackXItem in rewardPackXItems) + AddItem(rewardPackXItem.ItemID, rewardPackXItem.ItemQuantity); } public void AddHonorXP(uint xp)