Reprice listed goods; honeypot stays at 1%

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ZHU MINCHAOandClaude Sonnet 5.5 committed 2026-11-03 21:50:26 +08:00
1 parent a76f04c75e
commit a44e4008c1
7 files changed
+64 -6

No files matched your search

+23 -1
View File
@@ -14,6 +14,8 @@ namespace Decentralized.Domain
public double Health;
/// <summary>标价倍率与标价(信用点)。</summary>
public double Mult;
/// <summary>参考价:改价时按它重算标价。</summary>
public long Ref;
public int ListPrice;
public int ListedDay, PayDay;
public SaleState State = SaleState.Listed;
@@ -71,11 +73,31 @@ namespace Decentralized.Domain
double share = total > 0 ? Math.Min(1, ListFee(listPrice) / total) : 0;
w.Taint -= w.Taint * share; w.Basis -= w.Basis * share;
w.Add(feeAsset, -qty);
var s = new BmSale { Item = item, Model = model, FakeOf = fakeOf, Health = health, Mult = m, ListPrice = listPrice, ListedDay = day };
var s = new BmSale { Item = item, Model = model, FakeOf = fakeOf, Health = health, Ref = refValue, Mult = m, ListPrice = listPrice, ListedDay = day };
Sales.Add(s);
return s;
}
public static int RepriceFee(int newPrice) => (int)Math.Ceiling(newPrice * Tuning.BmRepriceFee);
/// <summary>改价:上架中的货换一个倍率,按参考价重算标价,收改价费;不改变上架日。</summary>
public bool Reprice(BmSale s, double m, Wallet w, string feeAsset, int day, Func<string, double> price)
{
if (s == null || s.State != SaleState.Listed || s.Ref <= 0 || Math.Abs(m - s.Mult) < 1e-9 || m < Tuning.BmSellMin - 1e-9 || m > Tuning.BmSellMax + 1e-9 || Closed(day) || feeAsset == Assets.CRC) return false;
int listPrice = ListPriceOf(s.Ref, m);
double p = price(feeAsset);
if (p <= 0) return false;
int fee = RepriceFee(listPrice);
double qty = fee / p;
if (w.Avail(feeAsset) + 1e-9 < qty) return false;
double total = w.Value(price);
double share = total > 0 ? Math.Min(1, fee / total) : 0;
w.Taint -= w.Taint * share; w.Basis -= w.Basis * share;
w.Add(feeAsset, -qty);
s.Mult = m; s.ListPrice = listPrice;
return true;
}
public void Delist(BmSale s) { s.State = SaleState.Delisted; s.Why = "delist"; }
/// <summary>未到账的货款(信用点):跑路时一并归零,也推高跑路概率。</summary>
+2 -2
View File
@@ -102,9 +102,9 @@ namespace Decentralized.Domain
public const double BmTrapShare = 0.4, BmTrapWindowCap = 400;
/// <summary>货架上除违禁品外的两类货:高科技物品(需中档声望)和显卡的出现概率、加价(在现货溢价 / 订单价之外再加),显卡里夹假卡的比例、是全新卡(成色 100、封条完好、不会是假卡)的概率。</summary>
public const double BmTechChance = 0.30, BmGpuChance = 0.30, BmTechMarkup = 0.5, BmGpuMarkup = 0.2, BmGpuFake = 0.20, BmGpuNew = 0.15;
/// <summary>玩家上架出售:标价倍率范围(相对参考价)、上架费、成交抽成、成交后货款托管天数、假卡被买家看穿的概率;
/// <summary>玩家上架出售:标价倍率范围(相对参考价)、上架费、改价费、成交抽成、成交后货款托管天数、假卡被买家看穿的概率;
/// 倍率 ≤0.9 / 1.0 / 1.8 时的期望成交天数(之间插值);货款带污点的概率与比例随倍率从下限涨到上限;卖家好评的初始值、看穿一次扣的点数、同时上架的件数上限。</summary>
public const double BmListFee = 0.05, BmCommission = 0.08, BmSellMin = 0.6, BmSellMax = 1.8, BmFakeDetect = 0.5;
public const double BmListFee = 0.05, BmRepriceFee = 0.02, BmCommission = 0.08, BmSellMin = 0.6, BmSellMax = 1.8, BmFakeDetect = 0.5;
public const double BmSellDaysFast = 1, BmSellDays1 = 2, BmSellDaysMax = 14;
public const double BmSaleTaintChanceMin = 0.2, BmSaleTaintChanceMax = 0.9, BmSaleTaintRatioMin = 0.2, BmSaleTaintRatioMax = 0.8;
public const int BmSaleHold = 3, BmRatingStart = 90, BmRatingFakeLoss = 10, BmMaxListings = 10;