diff --git a/CHANGELOG.md b/CHANGELOG.md index a2def60..b014279 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,8 +6,8 @@ - 多语言第二轮审校(Claude 子代理逐语言通读 UI 与 16 章手册,交叉复审 Gemini 的修订):采用 de 39、fr 56、es 34、pl 37、ru 45、ja 142 条(ja 里约一半是全角标点、×、〜 等机械统一)。要点:天数不再缩写、Tumbler 称谓与 Key-Drive 统一、手册页签名对齐界面、ASIC 时代统一、修正数处误译(俄语手册首章“卖出”写成用交易币付款、永续/挖矿章、日语质押章“向池子付款”等)。 - 真伪依据改版:检视面板最前面四行是风扇数、供电口、背面丝印、序列号,四项全部符合标称型号才是正品,任何一项不符即为假冒;其后是型号和四项成色。风扇数、供电口各自独立(假卡不再固定两项都对不上),假卡四项各自露出破绽,至少一项,平均约 1.5 项(`Tuning.FakeSignChance`)。去掉检视面板和指南里的“卖家的说法”,该机制只在后台生效。指南里不再用“档次”,改称型号;背面图上画出序列号。 -- 矿架改版:图 5×4 格(原 3×3);去掉升级槽位,改成把电子元件拖到矿架上就投入升级(每次一件,和游戏里别的机器一致);原升级槽位那一栏换成只读的状态面板(显卡数、耗电、算力);不显示显卡磨损外观。 -- 修正:电子元件拖到矿架上原来会被元件自己的判断否决(游戏取三方判断的与),改为在原版电子元件(普通、稀有)上追加“作用于矿架”的判断,升级才真正可触发。升级流程用探查命令走通:普通 ×4 解锁第 3 槽,稀有 ×1 第 4 槽,稀有 ×2 第 5 槽,满级后不再收;5 张卡放满窗口显示 5/5。 +- 矿架改版:图 4×4 格(原 3×3;5×4 放不进任何容器,改回 4×4);去掉升级槽位,改成把电子元件拖到矿架上就投入升级(每次一件,和游戏里别的机器一致);原升级槽位那一栏换成只读的状态面板(显卡数、耗电、算力);不显示显卡磨损外观。 +- 修正:电子元件拖到矿架上原来会被元件自己的判断否决(游戏取三方判断的与),改为在原版电子元件(普通、稀有)上追加“作用于矿架”的判断,升级才真正可触发。升级流程用探查命令和真实鼠标拖拽都走通(4 次拖拽解锁第 3 槽):普通 ×4 解锁第 3 槽,稀有 ×1 第 4 槽,稀有 ×2 第 5 槽,满级后不再收;5 张卡放满窗口显示 5/5。 - 检视面板的型号鉴定只留一个“指出型号”按钮(第一行,型号);风扇数、供电口、背面丝印、序列号四行只读,四项全部符合才是正品。 - 检视面板的型号行右侧显示“标签价”(当前报价,随指出和改标签实时变化),鉴定客户的估价框同步。 - 显卡鉴定指南的鉴定示例由 1 个增至 5 个(成色很差、假冒、轻微使用、全新),共 13 页。 diff --git a/art/__pycache__/sprites.cpython-314.pyc b/art/__pycache__/sprites.cpython-314.pyc index b4bb1ae..f8030bc 100644 Binary files a/art/__pycache__/sprites.cpython-314.pyc and b/art/__pycache__/sprites.cpython-314.pyc differ diff --git a/art/sprites.py b/art/sprites.py index 30e3f55..069c900 100644 --- a/art/sprites.py +++ b/art/sprites.py @@ -387,10 +387,10 @@ MODELS = ['RTX 60', 'RTX 70', 'RTX 80', 'RTX 90', 'RX 70', 'RX 80', 'RX 800', 'R def rig(): - """矿架(80×64,5×4 格):和游戏里其他机器一样的略微俯视(3/4 视角)——顶面是上窄下宽的梯形, + """矿架(64×64,4×4 格):和游戏里其他机器一样的略微俯视(3/4 视角)——顶面是上窄下宽的梯形, 下面是正面,正面里四层显卡位,左下角电源;光从左上来,左亮右暗;轮廓统一深紫、削掉尖角、底下两只脚和一圈阴影。""" - c = Canvas(80, 64) - FL, FR, FY, DEP = 3, 76, 36, 31 # 正面左右边、顶面前沿所在行、顶面深度(顶面后沿在 y=6,中心行 y=8 落在顶面上) + c = Canvas(64, 64) + FL, FR, FY, DEP = 3, 60, 36, 31 # 正面左右边、顶面前沿所在行、顶面深度(顶面后沿在 y=6,中心行 y=8 落在顶面上) BOT = 60 # 正面底边 inset = lambda v: v // 8 # 顶面后部只略微收窄:原版机器的顶面也近似矩形,并且要让左右两格的中心落在顶面内 @@ -406,7 +406,7 @@ def rig(): c.put(x, FY - DEP + 1, 'l') # 顶面上的散热格栅和一个小指示灯 for v in range(4, 26, 3): - for u in range(6, 50): + for u in range(6, 34): c.put(FL + inset(v) + u, FY - v, 'g') c.put(FR - 9, FY - 8, 'G'); c.put(FR - 8, FY - 8, 'G') # 正面:中间色,左端受光、右端暗;顶部一条暗折线 diff --git a/src/Decentralized/ModFiles/Textures/Items/rig.png b/src/Decentralized/ModFiles/Textures/Items/rig.png index ebb0d8f..5ece865 100644 Binary files a/src/Decentralized/ModFiles/Textures/Items/rig.png and b/src/Decentralized/ModFiles/Textures/Items/rig.png differ diff --git a/src/Decentralized/ShowcaseCases.cs b/src/Decentralized/ShowcaseCases.cs index 93b477c..69579b9 100644 --- a/src/Decentralized/ShowcaseCases.cs +++ b/src/Decentralized/ShowcaseCases.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using System.Collections.Generic; using Decentralized.Domain; @@ -98,6 +99,15 @@ namespace Decentralized Place(item); Log.Info($"展示样例(鉴定){_next}/{All.Count}:{c.Name}"); })); + ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "Clear counter + half of storage (test)", () => Log.Guard("清柜台与一半储物", () => + { + var e = EmporiumEntry.Instance; + int counter = 0, bays = 0; + foreach (var it in e.backInvinvElement.childItems.ToList()) { it.Destroy(); counter++; } + var storage = e.invElement.childItems.Where(i => i.identifier != null && i.identifier.StartsWith("storage_bay")).ToList(); + for (int i = 0; i < storage.Count; i += 2) { storage[i].Destroy(); bays++; } + Log.Info($"清空柜台 {counter} 件;储物箱 {storage.Count} 个里去掉 {bays} 个"); + })); ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "Paper: dump starters (test)", () => Log.Guard("纸张起点", () => { var sb = new System.Text.StringBuilder("\n");