第十一阶段 stage 1:污点代替没收、模块不设上限、出块 ×10
- 预测市场内幕单改为确定性记污点:结算或卖出时照常兑付,内幕份额对应的兑付记收款钱包污点;删除 PredictInsiderShare、PredictInsiderCatch - 操纵检出被查后照常兑付,预测兑付记钱包污点、永续盈利记 Poinbase 账户污点;删除 ManipFreezeDays - Wallet.AddTaintCapped:污点不超过钱包当时的价值,超出部分按 PredictFraudShare / PredictFraudCap 记诈骗罪证(TaintCrime.Commit) - 模块效果不设上限,只留算力、耗电、损耗乘数的下限(ModuleHashFloor / ModuleKjFloor / ModuleWearFloor) - BlockReward 100 → 1000,NpcHash0 360 → 3600 - 修正内幕卖出日志"只退本金"的错误说法;8 种语言文字与手册更新 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
45a6ec2f77
commit
bc23ae056b
18 files changed
+248
-205
No files matched your search
@@ -1247,13 +1247,12 @@ namespace Decentralized
|
||||
Summary = L.T("predict.sum.sell", PredictGame.Question(m)),
|
||||
Execute = pw =>
|
||||
{
|
||||
var res = d.Predict.SellAll(pw, m, StoreStation.GetDayCounter(), d.Rng, out double got, out double fraud);
|
||||
var res = d.Predict.SellAll(pw, m, StoreStation.GetDayCounter(), Session.Price, out double got, out double taint, out double over);
|
||||
_message = res == PredictResult.Ok ? L.T("predict.sold", Fmt.Num(got)) : L.T("predict.err." + res);
|
||||
if (fraud > 0)
|
||||
if (res == PredictResult.Ok && taint + over > 1e-9)
|
||||
{
|
||||
PlayerStore.Instance.secData.CommitCrime("FRAUD", (int)Math.Round(fraud));
|
||||
_message = L.T("predict.sold.caught", Fmt.Num(got));
|
||||
Log.Info($"内幕卖出被查:只退本金 {got:0},罪证 {fraud:0}");
|
||||
_message = L.T("predict.sold.caught", Fmt.Num(got), Fmt.Credits(taint)) + TaintCrime.Commit(over);
|
||||
Log.Info($"内幕卖出:收回 {got:0},污点 +{taint:0},超出 {over:0}");
|
||||
}
|
||||
if (res == PredictResult.Ok) Session.Save();
|
||||
Open();
|
||||
@@ -1292,18 +1291,16 @@ namespace Decentralized
|
||||
double margin = pos.Margin;
|
||||
CandleChart.Trade(_perpProduct, pos.Notional(PerpSpot(_perpProduct)));
|
||||
double paid = d.Perps.Close(d.Poinbase, _perpProduct, PerpSpot(_perpProduct), StoreStation.GetDayCounter(), out double deficit);
|
||||
// 操纵:平仓盈利,而且盈利方向和玩家自己推价的方向一致,按推价幅度被查:盈利没收,记诈骗罪证,永续账户冻结几天
|
||||
// 操纵:平仓盈利,而且盈利方向和玩家自己推价的方向一致,按推价幅度被查:盈利照常留在 Poinbase 账户,这笔盈利记污点(带上限)
|
||||
double push = d.Market.PlayerPush, profit = paid - margin;
|
||||
bool aligned = _perpProduct == "PSC" && profit > 0 && (pos.Long ? push > 0 : push < 0);
|
||||
if (aligned && d.Rng.Chance(Math.Min(1, Market.ManipChance(push) * StoryMods.Current.Enforce(StoreStation.GetDayCounter()))))
|
||||
{
|
||||
int day = StoreStation.GetDayCounter();
|
||||
d.Poinbase.Add(Assets.CRC, -Math.Min(profit, d.Poinbase.Avail(Assets.CRC)));
|
||||
d.Perps.BannedUntil = day + Tuning.ManipFreezeDays;
|
||||
PlayerStore.Instance.secData.CommitCrime("FRAUD", (int)Math.Round(Math.Min(Tuning.PredictFraudCap, profit * Tuning.PredictFraudShare)));
|
||||
double over = d.Poinbase.AddTaintCapped(profit, Session.Price);
|
||||
News.Show("pd_news_manip_" + day, L.T("news.manip.title"), L.T("news.manip.desc"), 3);
|
||||
_message = L.T("perp.manip", Fmt.Credits(profit), Tuning.ManipFreezeDays);
|
||||
Log.Info($"永续操纵被查:盈利 {profit:0} 没收,推价 {push:0.000}");
|
||||
_message = L.T("perp.manip", Fmt.Credits(profit), Fmt.Credits(profit - over)) + TaintCrime.Commit(over);
|
||||
Log.Info($"永续操纵被查:盈利 {profit:0} 记污点 {profit - over:0},超出 {over:0},推价 {push:0.000}");
|
||||
Session.Save();
|
||||
Open();
|
||||
return;
|
||||
|
||||
Reference in new issue
Block a user