Dr. Jackson stocks mining hardware

Uses the game's inventor stock hook (his shop at night and his weekly visit
to the player's store) and his own table placement, so prices are item value
plus his markup. A rig if the player has none (30% otherwise), two basic
cards every time, advanced cards from day 10 (60%, a second at 30%),
flagships from day 30 (25%) or always during his special stock from day 20.
New, genuine cards only; only after Mining Access is unlocked. A test entry
in the dev panel (F9) restocks the counter the way his shop does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ZHU MINCHAOandClaude Opus 5.5 committed 2026-11-03 09:27:28 +08:00
1 parent 79d4c686a0
commit a101b58f1c
5 files changed
+110

No files matched your search

+36
View File
@@ -0,0 +1,36 @@
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)];
}
}