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";
|
|
|
|
|
|
2026-11-03 14:05:47 +08:00
|
|
|
public static readonly string[] Basic = { "RZX60", "RZ70" };
|
|
|
|
|
public static readonly string[] Advanced = { "RZX70", "RZ80", "RZX80", "RZ800" };
|
|
|
|
|
public static readonly string[] Flagship = { "RZX90", "RZ900" };
|
2026-11-03 09:27:28 +08:00
|
|
|
|
|
|
|
|
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)];
|
|
|
|
|
}
|
|
|
|
|
}
|