终端窗口可调大小(默认 1200×900)与布局放宽;mod 设置:界面、剧情、难度

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ZHU MINCHAOandClaude Sonnet 5.5 committed 2026-11-04 15:34:38 +08:00
1 parent fa8f416545
commit 861acac240
26 files changed
+302 -45

No files matched your search

+2 -2
View File
@@ -114,7 +114,7 @@ namespace Decentralized.Domain
/// <summary>下单实付(信用点):托管 = 订单价 + 托管费;提前放款 = 订单价打折。</summary>
public static int Pay(int price, PayMode m) => m == PayMode.Escrow ? price + EscrowFee(price) : (int)Math.Round(price * (1 - Tuning.BmAdvanceDiscount));
public double RugChance => Math.Min(Tuning.BmRugMax, Tuning.BmRugBase + Held / 10000.0 * Tuning.BmRugPerTenK);
public double RugChance => Scales.R(Math.Min(Tuning.BmRugMax, Tuning.BmRugBase + Held / 10000.0 * Tuning.BmRugPerTenK));
/// <summary>每周必有的"矿工路线"商家类型(从中抽 2 家),其余按全部类型抽。</summary>
private static readonly MerchantType[] Core = { MerchantType.GpuNew, MerchantType.GpuUsed, MerchantType.Rigs, MerchantType.Modules };
@@ -232,7 +232,7 @@ namespace Decentralized.Domain
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 * Tuning.BmForumRugFactor) Forum.Add("rug");
if (RugChance > Scales.R(Tuning.BmRugBase * Tuning.BmForumRugFactor)) Forum.Add("rug");
}
/// <summary>目录里全部货按订单价算的总值(信用点),用来核对每周周转量。</summary>
+1 -1
View File
@@ -165,7 +165,7 @@ namespace Decentralized.Domain
{
if (playerHash <= 0) return 0;
double total = NpcHash * Availability + playerHash;
return Reward * playerHash / total * (1 - Tuning.PoolFee);
return Reward * playerHash / total * (1 - Tuning.PoolFee) * Scales.Mining;
}
public enum EraStep { None, Warn, Start }
+1 -1
View File
@@ -81,7 +81,7 @@ namespace Decentralized.Domain
var results = new List<MixResult>();
foreach (var d in Pending.ToList())
{
if (rng.Chance(Math.Min(1, Tuning.MixerRugChance * StoryMods.Current.MixerRug)))
if (rng.Chance(Scales.R(Tuning.MixerRugChance * StoryMods.Current.MixerRug)))
{
Pending.Remove(d);
results.Add(new MixResult { Rugged = true, Asset = d.Asset, Amount = d.Amount });
+26
View File
@@ -0,0 +1,26 @@
using System;
namespace Decentralized.Domain
{
/// <summary>mod 设置里的倍率(全局,不随存档)。接入层读设置后写进来;领域层在对应概率和产出处乘上。</summary>
public static class Scales
{
/// <summary>风险倍率:骗局、跑路、钱包投毒、地址劫持、钓鱼的发生概率。</summary>
public static double Risk = 1;
/// <summary>挖矿产出倍率:玩家矿机拿到的区块奖励。</summary>
public static double Mining = 1;
/// <summary>概率乘风险倍率,封顶 1。</summary>
public static double R(double chance) => Math.Min(1, chance * Risk);
/// <summary>设置里的倍率档位(“×1.5”)。</summary>
public static readonly string[] Choices = { "×0.5", "×1", "×1.5", "×2" };
public const string Default = "×1";
public static double Parse(string s)
{
if (s != null && s.StartsWith("×") && double.TryParse(s.Substring(1), System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out var v) && v >= 0) return v;
return 1;
}
}
}
+2 -2
View File
@@ -75,7 +75,7 @@ namespace Decentralized.Domain
/// <summary>新空投。钓鱼的名字常是正规名字的仿冒(一个字符不同),要求对一种币无上限授权,奖励看起来更高。</summary>
public Airdrop NewAirdrop(int day, Rng rng, string[] assets)
{
bool scam = rng.Chance(Tuning.AirdropScam);
bool scam = rng.Chance(Scales.R(Tuning.AirdropScam));
string name = AirdropNames[rng.Range(0, AirdropNames.Length - 1)];
if (scam && rng.Chance(0.6)) name = Typo(name, rng);
string asset = assets[rng.Range(0, assets.Length - 1)];
@@ -183,7 +183,7 @@ namespace Decentralized.Domain
}
foreach (var p in Pools.Where(x => !x.Closed).ToList())
{
if (p.Scam && p.Total > 0 && day > p.OpenDay && rng.Chance(Tuning.YieldRugNightly))
if (p.Scam && p.Total > 0 && day > p.OpenDay && rng.Chance(Scales.R(Tuning.YieldRugNightly)))
{
foreach (var kv in p.Deposits) evs.Add(new ScamEvent { Kind = "rug", Name = p.Name, Wallet = kv.Key, Asset = Assets.CRC, Amount = kv.Value });
foreach (var q in p.Pending) evs.Add(new ScamEvent { Kind = "rug", Name = p.Name, Wallet = q.Wallet, Asset = Assets.CRC, Amount = q.Amount });
+1 -1
View File
@@ -24,7 +24,7 @@ namespace Decentralized.Domain
/// <summary>今天来的贩子的类型:骗子越往后越多。</summary>
public static DealerKind Kind(int day, Rng rng)
{
double scam = Math.Min(Tuning.UsedScamMax, Tuning.UsedScamBase + day * Tuning.UsedScamPerDay);
double scam = Scales.R(Math.Min(Tuning.UsedScamMax, Tuning.UsedScamBase + day * Tuning.UsedScamPerDay));
double r = rng.NextDouble();
return r < scam ? DealerKind.Scammer : r < scam + Tuning.UsedMiddlemanShare ? DealerKind.Middleman : DealerKind.Honest;
}