Stage 6.3: RatDigg ASIC miners, miner dealers on the black market, miner era event

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ZHU MINCHAOandClaude Sonnet 5.5 committed 2026-11-04 00:58:14 +08:00
1 parent b249747855
commit 7d13ae2fe8
18 files changed
+395 -19

No files matched your search

+17 -4
View File
@@ -47,6 +47,7 @@ namespace Decentralized
dir.Add(Guide, CreateGuide);
dir.Add(Web3Guide, CreateWeb3Guide);
dir.Add(HwWallet, CreateHwWallet);
AsicItems.Register(dir);
foreach (var spec in Hardware.Specs.Values.Where(s => !s.Asic && !s.Scrap))
{
var s = spec;
@@ -316,9 +317,17 @@ namespace Decentralized
public static Unit ToUnit(GameItem item)
{
string model = item.identifier.Substring(GpuPrefix.Length);
model = Hardware.Specs.Keys.FirstOrDefault(k => k.ToLowerInvariant() == model) ?? "RTX60";
bool asic = AsicItems.Is(item);
string model = item.identifier.Substring(asic ? AsicItems.Prefix.Length : GpuPrefix.Length);
model = Hardware.Specs.Keys.FirstOrDefault(k => k.ToLowerInvariant() == model) ?? (asic ? "M1" : "RTX60");
var u = new Unit { Model = model, Health = 100 };
if (asic)
{
// 矿机没有外观、没有真假:不记外观种子,算力、损耗、暴毙都按规格表
if (item.IsTag(HealthTag)) u.Health = item.GetTagReadonly(HealthTag).GetDouble();
u.Dead = item.IsTag(DeadTag);
return u;
}
if (item.IsTag(HealthTag)) u.Health = item.GetTagReadonly(HealthTag).GetDouble();
if (item.IsTag(FakeTag)) u.FakeOf = item.GetTagReadonly(FakeTag).GetString();
u.Refurbished = item.IsTag(RefurbTag);
@@ -335,14 +344,18 @@ namespace Decentralized
if (u.FakeOf != null) item.ModifyTag(FakeTag, s => s.Enable().SetString(u.FakeOf));
if (u.Refurbished) item.EnableTag(RefurbTag);
if (u.Dead) item.EnableTag(DeadTag);
item.ModifyTag(LookTag, s => s.Enable().SetString(u.Look.Encode()));
item.ModifyTag(SeedTag, s => s.Enable().SetInt((int)u.Look.Seed));
if (!AsicItems.Is(item))
{
item.ModifyTag(LookTag, s => s.Enable().SetString(u.Look.Encode()));
item.ModifyTag(SeedTag, s => s.Enable().SetInt((int)u.Look.Seed));
}
Refresh(item);
}
/// <summary>按标签更新名字、说明、价值和图:显示的是标签上的型号(假卡也显示被冒充的型号)。</summary>
public static void Refresh(GameItem item)
{
if (AsicItems.Is(item)) { AsicItems.Refresh(item); return; }
var u = ToUnit(item);
var label = u.Label;
if (u.Dead)