diff --git a/CHANGELOG.md b/CHANGELOG.md index e13961a..a1ee556 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ - 举报:马上拿 1,200 信用点赏金、治安部声望 +8,混币器永久关停(在途的照常提回,不能再存),报纸"混币器运营者落网",第 4 次不再上门。 - 卖给黑市:3,000 CRT 进当前钱包(一半带污点)、黑市声望 +5,之后混币器手续费 ×1.5、跑路概率 ×4,报纸"混币服务易主";第 4 次他上门质问。 - 新画了密钥盘的像素图(深紫数据棒、金属接口、红色指示灯)。 + - 补测(游戏内):举报结局现金 +1,200(1,000,080 → 1,001,280)、治安部声望 0 → 12(加 8,游戏声望计算自带调整)、没有第 4 次上门、混币器页"状态:已关停"并拒收新存入;卖给黑市结局黑市声望 75 → 82(加 5,同样有调整),第 4 次上门质问。高息理财:被举报崩盘后罪证账本出现 FRAUD 400;手动卷走后下层声望 45 → 0、FRAUD 400。 - 游戏内验证:调试入口"Tumbler: next visit now"依次叫进四次,第 1、2、3 次对话正常,第 3 次出现三个选项;选"藏好"后日志"选择 1";第 4 次取回密钥盘,晨间日志"Tumbler 取回了密钥盘,留下 1,000 CRT 谢礼(已转入 主钱包),混币器手续费减半"。没有在游戏里验证:举报和卖给黑市两条结局(单元测试只覆盖倍率)、第 2 次之后的查封和新闻、搜查翻出密钥盘、自然触发(第 30 天、已解锁混币器)。 - 9.3 收尾经济复核(ops `research/fullsim`):挖矿收入全部再投资、钱够就买矿机,120 天平均只买到 3.4–3.9 台(矿机商每周 25%、一次一台),没有滚雪球;第 30 天金融线占总收入 19–22%(目标 20–30%),专心买矿机的玩家第 80–90 天峰值 37–44%,第 90 天减半和矿机时代后回落。没有改数值。 - 报纸修复:报纸按重要度排序、最多登 4 条;mod 新闻原来的重要度是 2,游戏事件一多就被挤掉(此前各阶段"报纸新闻没有验证"的原因)。改为默认 5(游戏事件多在 4–7),剧情联动 9。 diff --git a/src/Decentralized/DealerStock.cs b/src/Decentralized/DealerStock.cs index d975d2e..c13aa2b 100644 --- a/src/Decentralized/DealerStock.cs +++ b/src/Decentralized/DealerStock.cs @@ -149,6 +149,14 @@ namespace Decentralized TumblerStory.ForceVisit(m); PlayerStore.Instance.TryCallNextClient(); })); + ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "Lower-level rep +30 (test)", () => StoreReputation.ModReputation(StoreReputation.FACTION_LOWER_LEVEL, 30)); + ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "Dump crimes and reputation (test)", () => Log.Guard("罪证与声望", () => + { + var sd = PlayerStore.Instance.secData; + var crimes = string.Join(",", sd.crimeTypes.Select((c, i) => c + " " + sd.crimeAmount[i])); + string Rep(string f) => f + " " + (StoreReputation.GetStoreReputation(f)?.GetReputation().ToString() ?? "-"); + Log.Info($"测试:罪证 [{crimes}],证据 {sd.evidenceLevel};声望 {Rep(StoreReputation.FACTION_LOWER_LEVEL)},{Rep(StoreReputation.FACTION_SECURITY)},{Rep(StoreReputation.FACTION_BLACK_MARKET)};现金 {PlayerStore.Instance.playerCash}"); + })); ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "Predict: window = tomorrow (test)", () => { foreach (var m in Session.Data.Predict.Markets) { m.FromDay = m.ToDay = StoreStation.GetDayCounter() + 1; } Log.Info("测试:所有盘口窗口改成明天"); }); ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "Perp fund 0 (test)", () => { Session.Data.Perps.InsuranceFund = 0; Log.Info("测试:保险基金清零"); }); ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "SPARK x0.3 (test)", () => { var st = Session.Data.Stable; st.Spark *= 0.3; Log.Info($"测试:SPARK 价格 {st.Spark:0.00}"); }); diff --git a/src/Decentralized/ModFiles/Localization/en.csv b/src/Decentralized/ModFiles/Localization/en.csv index 28eeda4..87235b1 100644 --- a/src/Decentralized/ModFiles/Localization/en.csv +++ b/src/Decentralized/ModFiles/Localization/en.csv @@ -781,3 +781,4 @@ news.tumbler.caught.desc,The mixer operator known as Tumbler was arrested in the news.tumbler.sold.title,Mixing service changes hands news.tumbler.sold.desc,"Word is the signing keys of a lower-level mixing service have fallen into black-market hands, and fees went up at once. Users fear for their funds." nightlog.tumbler.gift,Tumbler took back the key drive and left {0} CRT as thanks (sent to {1}); mixer fees halved. +mixer.status.closed,Status: shut down diff --git a/src/Decentralized/ModFiles/Localization/zh.csv b/src/Decentralized/ModFiles/Localization/zh.csv index 7eafa55..8010e2c 100644 --- a/src/Decentralized/ModFiles/Localization/zh.csv +++ b/src/Decentralized/ModFiles/Localization/zh.csv @@ -780,3 +780,4 @@ news.tumbler.caught.desc,化名 Tumbler 的混币器运营者在下层区被捕 news.tumbler.sold.title,混币服务易主 news.tumbler.sold.desc,有消息称,下层区一家混币服务的签名密钥已落入黑市之手,费用随即上调。用户担心资金安全。 nightlog.tumbler.gift,Tumbler 取回了密钥盘,留下 {0} CRT 谢礼(已转入 {1}),混币器手续费减半。 +mixer.status.closed,状态:已关停 diff --git a/src/Decentralized/TerminalWindow.cs b/src/Decentralized/TerminalWindow.cs index 9cbb148..2954298 100644 --- a/src/Decentralized/TerminalWindow.cs +++ b/src/Decentralized/TerminalWindow.cs @@ -1480,7 +1480,7 @@ namespace Decentralized Columns(b, l => { l.AddHeader(L.T("mixer.h")); - l.AddLabel(d.Mixer.Sanctioned(day) ? L.T("mixer.sanctioned", d.Mixer.SanctionedUntil - day + 1) : L.T("mixer.ok")); + l.AddLabel(d.Story.MixerClosed ? L.T("mixer.status.closed") : d.Mixer.Sanctioned(day) ? L.T("mixer.sanctioned", d.Mixer.SanctionedUntil - day + 1) : L.T("mixer.ok")); if (w.Taint > 0.5) l.AddLabel(L.T("wallet.taint", Fmt.Credits(w.Taint))); l.AddSeparator(); l.AddHeader(L.T("mixer.pending"));