From f0a6051591fbaedfa182b4b44b0859679c30dc6f Mon Sep 17 00:00:00 2001 From: ZHU MINCHAO <48154958+MinchaoZhu@users.noreply.github.com> Date: Sun, 8 Nov 2026 19:03:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E6=B5=8B=EF=BC=9A=E9=92=93=E9=B1=BC?= =?UTF-8?q?=E6=B7=B7=E5=B8=81=E5=99=A8=E6=8F=90=E5=9B=9E=E6=97=B6=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E5=8F=AA=E8=AF=B4=E5=9C=B0=E5=9D=80=E8=A2=AB=E6=A0=87?= =?UTF-8?q?=E8=AE=B0=EF=BC=88=E4=B8=8D=E5=86=99=E5=88=B6=E8=A3=81=EF=BC=89?= =?UTF-8?q?=EF=BC=9B=E6=B5=8B=E8=AF=95=E6=8C=89=E9=92=AE=EF=BC=9A=E9=92=B1?= =?UTF-8?q?=E5=8C=85=E5=8A=A0=20CRC=E3=80=81=E8=87=AA=E8=90=A5=E6=B7=B7?= =?UTF-8?q?=E5=B8=81=E5=99=A8=E9=A3=8E=E5=A3=B0=E6=8B=89=E6=BB=A1=E3=80=81?= =?UTF-8?q?=E7=AB=8B=E5=88=BB=E6=8D=A2=E6=88=90=E9=92=93=E9=B1=BC=E6=B7=B7?= =?UTF-8?q?=E5=B8=81=E5=99=A8=E3=80=81=E8=81=94=E7=B3=BB=E4=BA=BA=20+=20?= =?UTF-8?q?=E6=98=8E=E5=A4=A9=E9=95=87=E5=8E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- src/Decentralized/DealerStock.cs | 23 +++++++++++++++++++ .../ModFiles/Localization/de.csv | 1 + .../ModFiles/Localization/en.csv | 1 + .../ModFiles/Localization/es.csv | 1 + .../ModFiles/Localization/fr.csv | 1 + .../ModFiles/Localization/ja.csv | 1 + .../ModFiles/Localization/pl.csv | 1 + .../ModFiles/Localization/ru.csv | 1 + .../ModFiles/Localization/zh.csv | 1 + src/Decentralized/Night.cs | 4 +++- 10 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/Decentralized/DealerStock.cs b/src/Decentralized/DealerStock.cs index 6655724..29a8685 100644 --- a/src/Decentralized/DealerStock.cs +++ b/src/Decentralized/DealerStock.cs @@ -160,6 +160,29 @@ namespace Decentralized st.Applied.RemoveAll(k => k.StartsWith("tumbler_")); st.MixerClosed = st.MixerRebranded = st.MixerHoneypot = false; st.MixerFee = st.MixerVolume = st.MixerRug = 1; }); + ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "Hot wallet +2000 CRC (test)", () => + { + var w = Session.Data.Hot; w.Add(Assets.CRC, 2000); w.Basis += 2000; + Log.Info($"测试:钱包 CRC {w.Get(Assets.CRC):0},污点 {w.Taint:0}"); + }); + ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "My mixer: max heat (test)", () => + { + var m = Session.Data.OwnMix; m.Heat = 1e4; + Log.Info($"测试:自营混币器风声拉满,今晚查封概率 {m.SeizeChance(1, false):P0}"); + }); + ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "Mixer: honeypot now (test)", () => + { + var d = Session.Data; + d.Story.Rebrand(true); d.Story.After.Rebranded = true; + d.Addresses["mixer_old"] = d.Address("mixer"); d.Addresses["mixer"] = ChainAddress.Make(d.Rng.NextUInt()); + Log.Info($"测试:混币器换成钓鱼混币器,费率 {Mixer.Fee:P1}"); + }); + ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "Tumbler: contact, crackdown tomorrow (test)", () => Log.Guard("联系人测试", () => + { + Session.Data.Story.After.Contact = true; + StoreStation.Instance.storeEventManager.QueueFuturEvent(OperationListSec.Crackdown(), 1, false); + Log.Info("测试:Tumbler 成为联系人,镇压排到明天(玩家不知道)"); + })); ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "Tumbler: leak tonight (test)", () => { var a = Session.Data.Story.After; a.Leaked = false; a.LeakDay = StoreStation.GetDayCounter(); diff --git a/src/Decentralized/ModFiles/Localization/de.csv b/src/Decentralized/ModFiles/Localization/de.csv index 81dfbe2..09a439e 100644 --- a/src/Decentralized/ModFiles/Localization/de.csv +++ b/src/Decentralized/ModFiles/Localization/de.csv @@ -174,6 +174,7 @@ news.sanction.title,Mixer auf Sanktionsliste gesetzt news.sanction.desc,Security hat eine Reihe von Mixing-Diensten sanktioniert. In den nächsten Tagen aus Mixern abgehobene Gelder gelten als verdächtig. nightlog.mixer,Mixer zahlte {0} {1} zurück; Kontamination {2} -> {3}. nightlog.mixer_flag," (während Sanktionen abgehoben; Adresse markiert)" +nightlog.mixer_flag.trap," (die Auszahlungsadresse ist markiert)" nightlog.mixer_rug,Der Mixer-Betreiber ist untergetaucht: {0} {1} kehrten nie zurück. web3.sub.trade,Handel gray.sub.mixer,Mixer diff --git a/src/Decentralized/ModFiles/Localization/en.csv b/src/Decentralized/ModFiles/Localization/en.csv index 26261d7..0df737c 100644 --- a/src/Decentralized/ModFiles/Localization/en.csv +++ b/src/Decentralized/ModFiles/Localization/en.csv @@ -174,6 +174,7 @@ news.sanction.title,Mixer put on sanctions list news.sanction.desc,Security has sanctioned a batch of mixing services. Funds withdrawn from mixers in the next few days will be treated as suspicious. nightlog.mixer,Mixer returned {0} {1}; taint {2} -> {3}. nightlog.mixer_flag," (withdrawn during sanctions; address flagged)" +nightlog.mixer_flag.trap," (the withdrawal address is flagged)" nightlog.mixer_rug,The mixer's operator ran off with it: {0} {1} never came back. web3.sub.trade,Trade gray.sub.mixer,Mixer diff --git a/src/Decentralized/ModFiles/Localization/es.csv b/src/Decentralized/ModFiles/Localization/es.csv index 84d404d..e470549 100644 --- a/src/Decentralized/ModFiles/Localization/es.csv +++ b/src/Decentralized/ModFiles/Localization/es.csv @@ -174,6 +174,7 @@ news.sanction.title,Mezclador incluido en la lista de sanciones news.sanction.desc,Seguridad sancionó un lote de servicios de mezcla. Los fondos retirados de mezcladores en los próximos días se tratarán como sospechosos. nightlog.mixer,El mezclador devolvió {0} {1}; contaminación {2} -> {3}. nightlog.mixer_flag," (retirado durante las sanciones; dirección marcada)" +nightlog.mixer_flag.trap," (la dirección de retiro está marcada)" nightlog.mixer_rug,El operador del mezclador se fugó con el dinero: {0} {1} nunca regresaron. web3.sub.trade,Comercio gray.sub.mixer,Mezclador diff --git a/src/Decentralized/ModFiles/Localization/fr.csv b/src/Decentralized/ModFiles/Localization/fr.csv index 140c6f6..9078925 100644 --- a/src/Decentralized/ModFiles/Localization/fr.csv +++ b/src/Decentralized/ModFiles/Localization/fr.csv @@ -174,6 +174,7 @@ news.sanction.title,Mixeur placé sur la liste des sanctions news.sanction.desc,La Sécurité a sanctionné plusieurs services de mixage. Les fonds retirés des mixeurs au cours des prochains jours seront considérés comme suspects. nightlog.mixer,Le mixeur a restitué {0} {1} ; contamination {2} -> {3}. nightlog.mixer_flag," (retiré pendant les sanctions ; adresse signalée)" +nightlog.mixer_flag.trap," (l'adresse de retrait est signalée)" nightlog.mixer_rug,L'opérateur du mixeur a pris la fuite : {0} {1} ne sont jamais revenus. web3.sub.trade,Trading gray.sub.mixer,Mixeur diff --git a/src/Decentralized/ModFiles/Localization/ja.csv b/src/Decentralized/ModFiles/Localization/ja.csv index 1cff385..f69a3b7 100644 --- a/src/Decentralized/ModFiles/Localization/ja.csv +++ b/src/Decentralized/ModFiles/Localization/ja.csv @@ -174,6 +174,7 @@ news.sanction.title,ミキサーを制裁リストに追加 news.sanction.desc,警察が複数のミキシングサービスに制裁を実施。今後数日間にミキサーから出金された資金は不審として扱われる。 nightlog.mixer,ミキサーから {0} {1} を回収。汚染 {2} → {3}。 nightlog.mixer_flag,(制裁期間中に出金。アドレスはフラグ付き) +nightlog.mixer_flag.trap,(出金先アドレスがフラグ付き) nightlog.mixer_rug,ミキサーの運営者が持ち逃げした:{0} {1} は戻ってこなかった。 web3.sub.trade,取引 gray.sub.mixer,ミキサー diff --git a/src/Decentralized/ModFiles/Localization/pl.csv b/src/Decentralized/ModFiles/Localization/pl.csv index 488368c..4352fae 100644 --- a/src/Decentralized/ModFiles/Localization/pl.csv +++ b/src/Decentralized/ModFiles/Localization/pl.csv @@ -174,6 +174,7 @@ news.sanction.title,Mikser wpisany na listę sankcyjną news.sanction.desc,Ochrona objęła sankcjami grupę usług miksujących. Środki wypłacone z mikserów w ciągu najbliższych kilku dni będą traktowane jako podejrzane. nightlog.mixer,Mikser zwrócił {0} {1}; skażenie {2} -> {3}. nightlog.mixer_flag," (wypłacono w trakcie sankcji; adres oznaczony)" +nightlog.mixer_flag.trap," (adres wypłaty jest oznaczony)" nightlog.mixer_rug,Operator miksera uciekł ze środkami: {0} {1} nigdy nie wróciło. web3.sub.trade,Handel gray.sub.mixer,Mikser diff --git a/src/Decentralized/ModFiles/Localization/ru.csv b/src/Decentralized/ModFiles/Localization/ru.csv index 099ba3c..0dccc9e 100644 --- a/src/Decentralized/ModFiles/Localization/ru.csv +++ b/src/Decentralized/ModFiles/Localization/ru.csv @@ -174,6 +174,7 @@ news.sanction.title,Миксер внесён в санкционный спис news.sanction.desc,"Служба безопасности ввела санкции против ряда миксер-сервисов. Средства, выведенные из миксеров в ближайшие дни, будут считаться подозрительными." nightlog.mixer,Миксер вернул {0} {1}; загрязнение: {2} -> {3}. nightlog.mixer_flag," (выведено во время санкций; адрес помечен)" +nightlog.mixer_flag.trap," (адрес вывода помечен)" nightlog.mixer_rug,Оператор миксера сбежал с деньгами: {0} {1} не вернулись. web3.sub.trade,Торговля gray.sub.mixer,Миксер diff --git a/src/Decentralized/ModFiles/Localization/zh.csv b/src/Decentralized/ModFiles/Localization/zh.csv index e0388d8..51df5d8 100644 --- a/src/Decentralized/ModFiles/Localization/zh.csv +++ b/src/Decentralized/ModFiles/Localization/zh.csv @@ -173,6 +173,7 @@ news.sanction.title,混币器被列入制裁名单 news.sanction.desc,"安保部门宣布制裁一批混币服务。此后几天从混币器提出的资金将被视为可疑。" nightlog.mixer,混币器提回 {0} {1},污点 {2} → {3}。 nightlog.mixer_flag,(制裁期间提出,地址被标记) +nightlog.mixer_flag.trap,(提出的地址被标记) nightlog.mixer_rug,混币器的运营者卷款跑路了:{0} {1} 没有提回。 web3.sub.trade,交易 gray.sub.mixer,混币器 diff --git a/src/Decentralized/Night.cs b/src/Decentralized/Night.cs index 881039b..111cc2b 100644 --- a/src/Decentralized/Night.cs +++ b/src/Decentralized/Night.cs @@ -311,7 +311,9 @@ namespace Decentralized if (m.Rugged) ps.AddNightLog(L.T("nightlog.mixer_rug", Fmt.Num(m.Amount), m.Asset), "cc7755"); else { - string line = L.T("nightlog.mixer", Fmt.Num(m.Amount), m.Asset, Fmt.Credits(m.TaintBefore), Fmt.Credits(m.TaintAfter)) + (m.Flagged ? L.T("nightlog.mixer_flag") : ""); + // 制裁期间提出的写明制裁;不在制裁期却被标记的是治安部的钓鱼混币器,只说被标记 + string flag = !m.Flagged ? "" : d.Mixer.Sanctioned(day) ? L.T("nightlog.mixer_flag") : L.T("nightlog.mixer_flag.trap"); + string line = L.T("nightlog.mixer", Fmt.Num(m.Amount), m.Asset, Fmt.Credits(m.TaintBefore), Fmt.Credits(m.TaintAfter)) + flag; if (m.Flagged) ps.AddNightLog(line, "cc7755"); else ps.AddNightLog(line); } }