Files
probably-decentralized/src/Decentralized.Domain/Dealer.cs
T

36 lines
1.6 KiB
C#
Raw Normal View History

2026-11-03 09:27:28 +08:00
using System.Collections.Generic;
namespace Decentralized.Domain
{
/// <summary>
/// 正规渠道(杰克逊博士)每次进货时上架的挖矿设备:全新、真货。返回物品种类:矿架用 <see cref="Rig"/>,显卡用型号。
/// </summary>
public static class Dealer
{
public const string Rig = "RIG";
public static readonly string[] Basic = { "RZX50", "RZX60", "RZ470", "RZ580" };
public static readonly string[] Advanced = { "RZX70", "RZX80Ti", "RZ6800" };
public static readonly string[] Flagship = { "RZX90", "RZ7900" };
public const int AdvancedFromDay = 10, FlagshipFromDay = 30, SpecialFlagshipFromDay = 20;
public const double RigRestockChance = 0.30, AdvancedChance = 0.60, AdvancedSecondChance = 0.30, FlagshipChance = 0.25;
public static List<string> Stock(int day, bool ownsRig, bool specialStock, Rng rng)
{
var list = new List<string>();
if (!ownsRig || rng.Chance(RigRestockChance)) list.Add(Rig);
for (int i = 0; i < 2; i++) list.Add(Pick(Basic, rng));
if (day >= AdvancedFromDay && rng.Chance(AdvancedChance))
{
list.Add(Pick(Advanced, rng));
if (rng.Chance(AdvancedSecondChance)) list.Add(Pick(Advanced, rng));
}
if (specialStock && day >= SpecialFlagshipFromDay) list.Add(Pick(Flagship, rng));
else if (day >= FlagshipFromDay && rng.Chance(FlagshipChance)) list.Add(Pick(Flagship, rng));
return list;
}
private static string Pick(string[] from, Rng rng) => from[rng.Range(0, from.Length - 1)];
}
}