Wallets: expected-days drain, copy/paste, three-column selectable balances, rename and destroy
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
783f73989d
commit
2b781acd82
10 files changed
+178
-22
No files matched your search
@@ -18,19 +18,23 @@ namespace Decentralized.Domain
|
||||
public double Basis;
|
||||
/// <summary>被执法标记。</summary>
|
||||
public bool Flagged;
|
||||
/// <summary>显示名(终端钱包页、硬件钱包标题)。</summary>
|
||||
/// <summary>钱包编号("钱包 n"),添加时定下,销毁别的钱包也不变。</summary>
|
||||
public string Name;
|
||||
/// <summary>玩家起的名字;空时用默认名。</summary>
|
||||
public string Label;
|
||||
/// <summary>硬件钱包被动过手脚(供应链投毒):别人手里有助记词。玩家看不到。</summary>
|
||||
public bool Poisoned;
|
||||
|
||||
/// <summary>被投毒的钱包今晚被转空的概率:总价值不到门槛时为 0,越多越高(1–7 天)。</summary>
|
||||
public static double DrainChance(double value)
|
||||
/// <summary>被投毒的钱包被转空前的期望天数:门槛处 7 天,按价值线性降到满额处 1 天;不到门槛不会被转。</summary>
|
||||
public static double DrainDays(double value)
|
||||
{
|
||||
if (value < Tuning.WalletDrainMin) return 0;
|
||||
double slow = 1 / Tuning.WalletDrainSlowDays, t = Math.Min(1, (value - Tuning.WalletDrainMin) / (Tuning.WalletDrainFull - Tuning.WalletDrainMin));
|
||||
return slow + (1 - slow) * t;
|
||||
double t = Math.Min(1, (value - Tuning.WalletDrainMin) / (Tuning.WalletDrainFull - Tuning.WalletDrainMin));
|
||||
return Tuning.WalletDrainSlowDays - (Tuning.WalletDrainSlowDays - 1) * t;
|
||||
}
|
||||
|
||||
/// <summary>被投毒的钱包今晚被转空的概率 = 1 / 期望天数(每晚独立掷一次)。</summary>
|
||||
public static double DrainChance(double value) => value < Tuning.WalletDrainMin ? 0 : 1 / DrainDays(value);
|
||||
|
||||
/// <summary>转空:全部余额(含冻结的)连同污点、成本一起转走,返回转走的价值(信用点)。</summary>
|
||||
public double Drain(Func<string, double> price)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user