diff --git a/.Lib9c.Tests/TableData/WorldBossRankingRewardSheetTest.cs b/.Lib9c.Tests/TableData/WorldBossRankingRewardSheetTest.cs index 5bd262d0b8..67e80f3e03 100644 --- a/.Lib9c.Tests/TableData/WorldBossRankingRewardSheetTest.cs +++ b/.Lib9c.Tests/TableData/WorldBossRankingRewardSheetTest.cs @@ -7,25 +7,25 @@ namespace Lib9c.Tests.TableData public class WorldBossRankingRewardSheetTest { private const string Csv = - @"id,boss_id,ranking_min,ranking_max,rate_min,rate_max,rune_1_id,rune_1_qty,rune_2_id,rune_2_qty,rune_3_id,rune_3_qty,crystal -1,900001,1,1,0,0,10001,3500,10002,1200,10003,300,900000 -2,900001,2,2,0,0,10001,2200,10002,650,10003,150,625000 -3,900001,3,3,0,0,10001,1450,10002,450,10003,100,400000 -4,900001,4,10,0,0,10001,1000,10002,330,10003,70,250000 -5,900001,11,100,0,0,10001,560,10002,150,10003,40,150000 -6,900001,0,0,1,30,10001,370,10002,105,10003,25,100000 -7,900001,0,0,31,50,10001,230,10002,60,10003,10,50000 -8,900001,0,0,51,70,10001,75,10002,20,10003,5,25000 -9,900001,0,0,71,100,10001,40,10002,10,10003,0,15000 -10,900002,1,1,0,0,10011,3500,10012,1200,10013,300,1000000 -11,900002,2,2,0,0,10011,2200,10012,650,10013,150,750000 -12,900002,3,3,0,0,10011,1450,10012,450,10013,100,500000 -13,900002,4,10,0,0,10011,1000,10012,330,10013,70,250000 -14,900002,11,100,0,0,10011,560,10012,150,10013,40,150000 -15,900002,0,0,1,30,10011,370,10012,105,10013,25,100000 -16,900002,0,0,31,50,10011,230,10012,60,10013,10,50000 -17,900002,0,0,51,70,10011,75,10012,20,10013,5,25000 -18,900002,0,0,71,100,10011,40,10012,10,0,0,15000 + @"id,boss_id,ranking_min,ranking_max,rate_min,rate_max,rune_1_id,rune_1_qty,rune_2_id,rune_2_qty,rune_3_id,rune_3_qty,crystal,item_1_id,item_1_qty,item_2_id,item_2_qty +1,900001,1,1,0,0,10001,3500,10002,1200,10003,300,10000000,600201,100,500000,1000 +2,900001,2,2,0,0,10001,2200,10002,650,10003,150,7500000,600201,100,500000,1000 +3,900001,3,3,0,0,10001,1450,10002,450,10003,100,5000000,600201,100,500000,1000 +4,900001,4,10,0,0,10001,1000,10002,330,10003,70,2500000,600201,100,500000,1000 +5,900001,11,100,0,0,10001,560,10002,150,10003,40,1500000,600201,100,500000,1000 +6,900001,0,0,1,30,10001,370,10002,105,10003,25,500000,600201,50,500000,100 +7,900001,0,0,31,50,10001,230,10002,60,10003,10,250000,600201,50,500000,100 +8,900001,0,0,51,70,10001,75,10002,20,10003,5,125000,600201,50,500000,100 +9,900001,0,0,71,100,10001,40,10002,10,0,0,100000,600201,50,500000,100 +10,900002,1,1,0,0,10011,3500,10012,1200,10013,300,10000000,600201,100,500000,1000 +11,900002,2,2,0,0,10011,2200,10012,650,10013,150,7500000,600201,100,500000,1000 +12,900002,3,3,0,0,10011,1450,10012,450,10013,100,5000000,600201,100,500000,1000 +13,900002,4,10,0,0,10011,1000,10012,330,10013,70,2500000,600201,100,500000,1000 +14,900002,11,100,0,0,10011,560,10012,150,10013,40,1500000,600201,100,500000,1000 +15,900002,0,0,1,30,10011,370,10012,105,10013,25,500000,600201,50,500000,100 +16,900002,0,0,31,50,10011,230,10012,60,10013,10,250000,600201,50,500000,100 +17,900002,0,0,51,70,10011,75,10012,20,10013,5,125000,600201,50,500000,100 +18,900002,0,0,71,100,10011,40,10012,10,0,0,100000,600201,50,500000,100 "; [Fact] @@ -41,7 +41,11 @@ public void Set() Assert.Equal(0, row.RateMin); Assert.Equal(0, row.RateMax); Assert.Equal(3, row.Runes.Count); - Assert.Equal(900000, row.Crystal); + Assert.Equal(10000000, row.Crystal); + Assert.Equal(600201, row.Materials[0].itemId); + Assert.Equal(100, row.Materials[0].quantity); + Assert.Equal(500000, row.Materials[1].itemId); + Assert.Equal(1000, row.Materials[1].quantity); } [Theory] @@ -70,10 +74,10 @@ public void GetRewards() var sheet = new WorldBossRankingRewardSheet(); sheet.Set(Csv); var row = sheet.FindRow(900001, 1, 0); - var runeSheet = new TableSheets(TableSheetsImporter.ImportSheets()).RuneSheet; - var rewards = row.GetRewards(runeSheet); + var tableSheets = new TableSheets(TableSheetsImporter.ImportSheets()); + var rewards = row.GetRewards(tableSheets.RuneSheet, tableSheets.MaterialItemSheet); - Assert.Equal(4, rewards.Count); + Assert.Equal(6, rewards.Count); } } } diff --git a/Lib9c/TableCSV/WorldBoss/WorldBossRankingRewardSheet.csv b/Lib9c/TableCSV/WorldBoss/WorldBossRankingRewardSheet.csv index c1c3f3ac47..dcc4e698b4 100644 --- a/Lib9c/TableCSV/WorldBoss/WorldBossRankingRewardSheet.csv +++ b/Lib9c/TableCSV/WorldBoss/WorldBossRankingRewardSheet.csv @@ -1,19 +1,19 @@ -id,boss_id,ranking_min,ranking_max,rate_min,rate_max,rune_1_id,rune_1_qty,rune_2_id,rune_2_qty,rune_3_id,rune_3_qty,crystal -1,900001,1,1,0,0,10001,3500,10002,1200,10003,300,10000000 -2,900001,2,2,0,0,10001,2200,10002,650,10003,150,7500000 -3,900001,3,3,0,0,10001,1450,10002,450,10003,100,5000000 -4,900001,4,10,0,0,10001,1000,10002,330,10003,70,2500000 -5,900001,11,100,0,0,10001,560,10002,150,10003,40,1500000 -6,900001,0,0,1,30,10001,370,10002,105,10003,25,500000 -7,900001,0,0,31,50,10001,230,10002,60,10003,10,250000 -8,900001,0,0,51,70,10001,75,10002,20,10003,5,125000 -9,900001,0,0,71,100,10001,40,10002,10,0,0,100000 -10,900002,1,1,0,0,10011,3500,10012,1200,10013,300,10000000 -11,900002,2,2,0,0,10011,2200,10012,650,10013,150,7500000 -12,900002,3,3,0,0,10011,1450,10012,450,10013,100,5000000 -13,900002,4,10,0,0,10011,1000,10012,330,10013,70,2500000 -14,900002,11,100,0,0,10011,560,10012,150,10013,40,1500000 -15,900002,0,0,1,30,10011,370,10012,105,10013,25,500000 -16,900002,0,0,31,50,10011,230,10012,60,10013,10,250000 -17,900002,0,0,51,70,10011,75,10012,20,10013,5,125000 -18,900002,0,0,71,100,10011,40,10012,10,0,0,100000 \ No newline at end of file +id,boss_id,ranking_min,ranking_max,rate_min,rate_max,rune_1_id,rune_1_qty,rune_2_id,rune_2_qty,rune_3_id,rune_3_qty,crystal,item_1_id,item_1_qty,item_2_id,item_2_qty +1,900001,1,1,0,0,10001,3500,10002,1200,10003,300,10000000,600201,100,500000,1000 +2,900001,2,2,0,0,10001,2200,10002,650,10003,150,7500000,600201,100,500000,1000 +3,900001,3,3,0,0,10001,1450,10002,450,10003,100,5000000,600201,100,500000,1000 +4,900001,4,10,0,0,10001,1000,10002,330,10003,70,2500000,600201,100,500000,1000 +5,900001,11,100,0,0,10001,560,10002,150,10003,40,1500000,600201,100,500000,1000 +6,900001,0,0,1,30,10001,370,10002,105,10003,25,500000,600201,50,500000,100 +7,900001,0,0,31,50,10001,230,10002,60,10003,10,250000,600201,50,500000,100 +8,900001,0,0,51,70,10001,75,10002,20,10003,5,125000,600201,50,500000,100 +9,900001,0,0,71,100,10001,40,10002,10,0,0,100000,600201,50,500000,100 +10,900002,1,1,0,0,10011,3500,10012,1200,10013,300,10000000,600201,100,500000,1000 +11,900002,2,2,0,0,10011,2200,10012,650,10013,150,7500000,600201,100,500000,1000 +12,900002,3,3,0,0,10011,1450,10012,450,10013,100,5000000,600201,100,500000,1000 +13,900002,4,10,0,0,10011,1000,10012,330,10013,70,2500000,600201,100,500000,1000 +14,900002,11,100,0,0,10011,560,10012,150,10013,40,1500000,600201,100,500000,1000 +15,900002,0,0,1,30,10011,370,10012,105,10013,25,500000,600201,50,500000,100 +16,900002,0,0,31,50,10011,230,10012,60,10013,10,250000,600201,50,500000,100 +17,900002,0,0,51,70,10011,75,10012,20,10013,5,125000,600201,50,500000,100 +18,900002,0,0,71,100,10011,40,10012,10,0,0,100000,600201,50,500000,100 diff --git a/Lib9c/TableData/WorldBossRankingRewardSheet.cs b/Lib9c/TableData/WorldBossRankingRewardSheet.cs index 066e76379a..5e0b639fb4 100644 --- a/Lib9c/TableData/WorldBossRankingRewardSheet.cs +++ b/Lib9c/TableData/WorldBossRankingRewardSheet.cs @@ -1,8 +1,10 @@ using System; using System.Collections.Generic; using System.Linq; +using Lib9c; using Libplanet.Types.Assets; using Nekoyume.Helper; +using Nekoyume.Model.Item; using static Nekoyume.TableData.TableExtensions; namespace Nekoyume.TableData @@ -32,6 +34,7 @@ public RuneInfo(int id, int qty) public int RateMax; public List Runes; public int Crystal; + public List<(int itemId, int quantity)> Materials; public override int Key => Id; public override void Set(IReadOnlyList fields) { @@ -48,9 +51,22 @@ public override void Set(IReadOnlyList fields) Runes.Add(new RuneInfo(ParseInt(fields[6 + offset]), ParseInt(fields[7 + offset]))); } Crystal = ParseInt(fields[12]); + + if (fields.Count > 13) + { + Materials = new List<(int, int)>(); + for (int i = 0; i < 2; i++) + { + var offset = i * 2; + Materials.Add( + (ParseInt(fields[13 + offset]), ParseInt(fields[14 + offset]))); + } + } } - public List GetRewards(RuneSheet runeSheet) + public List GetRewards( + RuneSheet runeSheet, + MaterialItemSheet materialSheet) { var result = new List { @@ -61,6 +77,15 @@ public List GetRewards(RuneSheet runeSheet) .Select(runeInfo => RuneHelper.ToFungibleAssetValue(runeSheet[runeInfo.RuneId], runeInfo.RuneQty))); + + foreach (var (itemId, quantity) in Materials) + { + var isTradable = materialSheet[itemId].ItemSubType + is ItemSubType.Circle or ItemSubType.Scroll; + var currency = Currencies.GetItemCurrency(itemId, isTradable); + result.Add(currency * quantity); + } + return result; } }