Skip to content

Commit

Permalink
Merge pull request #2879 from planetarium/feature/worldboss-ranking-r…
Browse files Browse the repository at this point in the history
…eward

add column Materials in WorldBossRankingRewardSheet
  • Loading branch information
tyrosine1153 authored Oct 11, 2024
2 parents 1f53d2e + 9721ed4 commit 3dfe961
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 43 deletions.
50 changes: 27 additions & 23 deletions .Lib9c.Tests/TableData/WorldBossRankingRewardSheetTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand All @@ -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]
Expand Down Expand Up @@ -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);
}
}
}
38 changes: 19 additions & 19 deletions Lib9c/TableCSV/WorldBoss/WorldBossRankingRewardSheet.csv
Original file line number Diff line number Diff line change
@@ -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
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
27 changes: 26 additions & 1 deletion Lib9c/TableData/WorldBossRankingRewardSheet.cs
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -32,6 +34,7 @@ public RuneInfo(int id, int qty)
public int RateMax;
public List<RuneInfo> Runes;
public int Crystal;
public List<(int itemId, int quantity)> Materials;
public override int Key => Id;
public override void Set(IReadOnlyList<string> fields)
{
Expand All @@ -48,9 +51,22 @@ public override void Set(IReadOnlyList<string> 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<FungibleAssetValue> GetRewards(RuneSheet runeSheet)
public List<FungibleAssetValue> GetRewards(
RuneSheet runeSheet,
MaterialItemSheet materialSheet)
{
var result = new List<FungibleAssetValue>
{
Expand All @@ -61,6 +77,15 @@ public List<FungibleAssetValue> 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;
}
}
Expand Down

0 comments on commit 3dfe961

Please sign in to comment.