Move black market random-detail constants into Tuning
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a44e4008c1
commit
ce02773738
3 files changed
+18
-12
No files matched your search
@@ -123,7 +123,7 @@ namespace Decentralized.Domain
|
||||
|
||||
private static List<BmEntry> AllEntries() => Merchants.Table.Values.SelectMany(x => x).GroupBy(x => x.Id).Select(g => g.First()).ToList();
|
||||
|
||||
private static string[] HighGpus => Hardware.Specs.Values.Where(x => !x.Asic && !x.Scrap && x.Tier >= 3).Select(x => x.Model).ToArray();
|
||||
private static string[] HighGpus => Hardware.Specs.Values.Where(x => !x.Asic && !x.Scrap && x.Tier >= Tuning.BmEliteGpuTier).Select(x => x.Model).ToArray();
|
||||
|
||||
/// <summary>商家类型对应的货(含货种、库存),违禁品按声望放开等级。个人卖家什么都卖、每件各自定价;尖端店铺只卖贵货。</summary>
|
||||
private List<BmListing> MerchantGoods(int idx, BmSeller s, int day, int rep, Rng rng, Func<string, long> value)
|
||||
@@ -139,14 +139,14 @@ namespace Decentralized.Domain
|
||||
int qty = s.Type == MerchantType.Bulk ? rng.Range(Tuning.BmBulkQtyMin, Tuning.BmBulkQtyMax)
|
||||
: s.Type == MerchantType.Elite ? rng.Range(1, Tuning.BmEliteQtyMax)
|
||||
: s.Type == MerchantType.Personal ? rng.Range(1, Tuning.BmPersonalQtyMax)
|
||||
: s.Type == MerchantType.GpuNew ? rng.Range(Math.Max(1, Tuning.BmQtyMin - 1), Tuning.BmQtyMax - 2) : rng.Range(Tuning.BmQtyMin, Tuning.BmQtyMax);
|
||||
double factor = s.Type == MerchantType.Personal ? F(rng, Tuning.BmPersonalFactorMin, Tuning.BmPersonalFactorMax) : s.Factor * F(rng, 0.97, 1.03);
|
||||
: s.Type == MerchantType.GpuNew ? rng.Range(Math.Max(1, Tuning.BmQtyMin - Tuning.BmNewGpuQtyMinCut), Tuning.BmQtyMax - Tuning.BmNewGpuQtyMaxCut) : rng.Range(Tuning.BmQtyMin, Tuning.BmQtyMax);
|
||||
double factor = s.Type == MerchantType.Personal ? F(rng, Tuning.BmPersonalFactorMin, Tuning.BmPersonalFactorMax) : s.Factor * F(rng, 1 - Tuning.BmPriceJitter, 1 + Tuning.BmPriceJitter);
|
||||
BmListing l = null;
|
||||
bool eliteGpu = s.Type == MerchantType.Elite && rng.Chance(0.4);
|
||||
bool personalGpu = s.Type == MerchantType.Personal && rng.Chance(0.15);
|
||||
bool eliteGpu = s.Type == MerchantType.Elite && rng.Chance(Tuning.BmEliteGpuChance);
|
||||
bool personalGpu = s.Type == MerchantType.Personal && rng.Chance(Tuning.BmPersonalGpuChance);
|
||||
if (gpuKind || eliteGpu || personalGpu)
|
||||
{
|
||||
bool fresh = s.Type == MerchantType.GpuNew || eliteGpu || (personalGpu && rng.Chance(0.3));
|
||||
bool fresh = s.Type == MerchantType.GpuNew || eliteGpu || (personalGpu && rng.Chance(Tuning.BmPersonalGpuNew));
|
||||
var pool = eliteGpu ? HighGpus : gpus;
|
||||
var c = UsedDealers.Card(pool, fresh ? 0 : Tuning.BmGpuFake, 0, rng);
|
||||
if (fresh) c.Health = 100;
|
||||
@@ -193,21 +193,21 @@ namespace Decentralized.Domain
|
||||
bool personal = t == MerchantType.Personal;
|
||||
bool scam = rng.Chance(personal ? Tuning.BmPersonalScam : Tuning.BmScamSellerShare);
|
||||
// 骗子多半是新号,也有刷过好评的老号;个人卖家都是新号
|
||||
bool fresh = personal || (scam ? rng.Chance(0.6) : rng.Chance(0.25));
|
||||
bool fresh = personal || (scam ? rng.Chance(Tuning.BmScamFresh) : rng.Chance(Tuning.BmHonestFresh));
|
||||
double lo = t == MerchantType.Elite ? Tuning.BmFactorEliteMin : t == MerchantType.GpuNew ? Tuning.BmFactorNewMin : t == MerchantType.GpuUsed ? Tuning.BmFactorUsedMin : t == MerchantType.Bulk ? Tuning.BmFactorBulkMin : Tuning.BmFactorMin;
|
||||
double hi = t == MerchantType.Elite ? Tuning.BmFactorEliteMax : t == MerchantType.GpuNew ? Tuning.BmFactorNewMax : t == MerchantType.GpuUsed ? Tuning.BmFactorUsedMax : t == MerchantType.Bulk ? Tuning.BmFactorBulkMax : Tuning.BmFactorMax;
|
||||
var s = new BmSeller
|
||||
{
|
||||
Name = "0x" + rng.NextUInt().ToString("x8").Substring(0, 6),
|
||||
Scam = scam, Type = t, Factor = personal ? 1.0 : F(rng, lo, hi),
|
||||
Trades = fresh ? rng.Range(0, 12) : rng.Range(25, 220),
|
||||
Rating = scam && !fresh ? rng.Range(94, 99) : fresh ? rng.Range(70, 100) : rng.Range(90, 99),
|
||||
Trades = fresh ? rng.Range(0, Tuning.BmFreshTradesMax) : rng.Range(Tuning.BmOldTradesMin, Tuning.BmOldTradesMax),
|
||||
Rating = scam && !fresh ? rng.Range(Tuning.BmScamOldRatingMin, Tuning.BmScamOldRatingMax) : fresh ? rng.Range(Tuning.BmFreshRatingMin, Tuning.BmFreshRatingMax) : rng.Range(Tuning.BmOldRatingMin, Tuning.BmOldRatingMax),
|
||||
};
|
||||
Sellers.Add(s);
|
||||
if (scam && rng.Chance(0.5)) Forum.Add("scam:" + s.Name);
|
||||
if (scam && rng.Chance(Tuning.BmForumScamHint)) Forum.Add("scam:" + s.Name);
|
||||
}
|
||||
for (int i = 0; i < Sellers.Count; i++) Catalog.AddRange(MerchantGoods(i, Sellers[i], day, rep, rng, value));
|
||||
if (RugChance > Tuning.BmRugBase * 3) Forum.Add("rug");
|
||||
if (RugChance > Tuning.BmRugBase * Tuning.BmForumRugFactor) Forum.Add("rug");
|
||||
}
|
||||
|
||||
/// <summary>目录里全部货按订单价算的总值(信用点),用来核对每周周转量。</summary>
|
||||
|
||||
Reference in new issue
Block a user