Stage 4: honeypot, seller busts, controlled delivery; mining report moved into Web3 page

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ZHU MINCHAOandClaude Sonnet 5.5 committed 2026-11-03 20:13:18 +08:00
1 parent e44a4439ed
commit 5b57f3eedc
9 files changed
+156 -16

No files matched your search

+37 -6
View File
@@ -1,3 +1,4 @@
using System;
using System.Linq;
using Decentralized.Domain;
@@ -61,10 +62,10 @@ namespace Decentralized
public static void Night(SaveData d, int day, bool crackdown)
{
var ps = PlayerStore.Instance;
foreach (var e in d.Black.Night(day, crackdown, d.Hot, d.Rng))
foreach (var e in d.Black.Night(day, crackdown, d.Hot, d.Rng, StoreReputation.GetSecReputation()))
{
string name = e.Order != null ? ItemName(e.Order.Item) : null;
Log.Info($"黑市订单事件:{e.Kind} {e.Order?.Item} {e.Order?.Seller} {e.Order?.Mode} 金额 {e.Amount:0}");
string name = e.Order != null && e.Kind != "trap" ? ItemName(e.Order.Item) : null;
Log.Info($"黑市订单事件:{e.Kind} {e.Order?.Item} {e.Order?.Seller} {e.Order?.Mode} 受控 {e.Order?.Controlled} 金额 {e.Amount:0}");
switch (e.Kind)
{
case "ready": ps.AddNightLog(L.T("nightlog.bm.ready", name), "99bb66"); break;
@@ -72,6 +73,13 @@ namespace Decentralized
case "scam_loss": ps.AddNightLog(L.T("nightlog.bm.scam_loss", e.Order.Seller, name, Fmt.Num(e.Amount)), "cc7755"); break;
case "intercept": ps.AddNightLog(L.T("nightlog.bm.intercept", name, Fmt.Num(e.Amount)), "cc7755"); break;
case "rug": ps.AddNightLog(L.T("nightlog.bm.rug", name, Fmt.Num(e.Amount)), "cc7755"); break;
case "trap":
{
int amount = (int)Math.Min(Tuning.CrimeEventCap, e.Amount);
ps.secData.CommitCrime(e.Order.Item != null && e.Order.Item.StartsWith("gpu:") ? "FENCING" : "CONTRABAND_TRAFFICKING", amount);
ps.AddNightLog(L.T("nightlog.bm.trap." + e.Order.Seller, ItemName(e.Order.Item), amount), "cc7755");
break;
}
case "reopen": ps.AddNightLog(L.T("nightlog.bm.reopen"), "99bb66"); break;
}
if (e.Kind == "rug") Night_RugNews(day);
@@ -107,8 +115,31 @@ namespace Decentralized
clientIntent = StoreClient.ClientIntent.SELL,
};
StoreClientFactionSetup.InitScav(c);
c.mainDialogue.SetText(c.displayName, L.T("courier.line1." + rng.Range(1, 2))).NextDialogue().SetText(c.displayName, L.T("courier.line2." + rng.Range(1, 2)))
.SetEndAction(() => Log.Guard("黑市快递交货", () => { DeliverDoor(); PlayerStore.Instance.DismissCurrentClient(); }));
var trap = Session.Data.Black.Ready.FirstOrDefault(o => o.Controlled);
Action finish = () => { PlayerStore.Instance.DismissCurrentClient(); };
if (trap == null)
{
c.mainDialogue.SetText(c.displayName, L.T("courier.line1." + rng.Range(1, 2))).NextDialogue().SetText(c.displayName, L.T("courier.line2." + rng.Range(1, 2)))
.SetEndAction(() => Log.Guard("黑市快递交货", () => { DeliverDoor(); finish(); }));
}
else
{
// 受控交付:快递员神色异常,签收就是当场记罪证并查封,拒签只损失货款
var sign = new Dialogue();
sign.SetText("PLAYER", L.T("courier.sign.say"));
sign.NextDialogue().SetText(c.displayName, L.T("courier.signed")).SetEndAction(() => Log.Guard("受控交付签收", () =>
{
int amount = (int)Math.Min(Tuning.CrimeEventCap, Session.Data.Black.Sign(trap, true));
PlayerStore.Instance.secData.CommitCrime(trap.Item.StartsWith("gpu:") ? "FENCING" : "CONTRABAND_TRAFFICKING", amount);
DeliverDoor(); finish();
}));
var refuse = new Dialogue();
refuse.SetText("PLAYER", L.T("courier.refuse.say"));
refuse.NextDialogue().SetText(c.displayName, L.T("courier.refused")).SetEndAction(() => Log.Guard("受控交付拒签", () => { Session.Data.Black.Sign(trap, false); DeliverDoor(); finish(); }));
c.mainDialogue.SetText(c.displayName, L.T("courier.odd1")).NextDialogue().SetText(c.displayName, L.T("courier.odd2"))
.AddChoice(DirectoryMaster.Item("yes"), L.T("courier.sign"), "", sign, null)
.AddChoice(DirectoryMaster.Item("cancel"), L.T("courier.refuse"), "", refuse, null);
}
c.AddBasicDialog();
c.CompleteClientCreation();
return c;
@@ -117,7 +148,7 @@ namespace Decentralized
private static void DeliverDoor()
{
var d = Session.Data;
foreach (var o in d.Black.Ready.ToList())
foreach (var o in d.Black.Ready.Where(x => !x.Controlled).ToList())
{
Items.Give(Make(o.Item, o.Model, o.FakeOf, o.Health));
d.Black.Deliver(o);