Stage 9.1: story links (Serpico, Eleanor, Officer Lun) and newspaper importance fix

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ZHU MINCHAOandClaude Opus 5.5 committed 2026-11-04 09:04:50 +08:00
1 parent 96e91a4884
commit 62bd641283
15 files changed
+240 -17

No files matched your search

+6 -6
View File
@@ -34,13 +34,13 @@ namespace Decentralized.Domain
/// <summary>减记发生时返回 CRC 持有量要乘的系数(其余情况为 1)。</summary>
public double OnEventStart(MarketEvent ev, int day, Rng rng)
{
if (ev == MarketEvent.RevRaidUpper && CrcDepegEnd < 0 && rng.Chance(Tuning.CrcDepegChance))
if (ev == MarketEvent.RevRaidUpper && CrcDepegEnd < 0 && rng.Chance(Tuning.CrcDepegChance * StoryMods.Current.CrcDepeg))
{
Crc = rng.Range(Tuning.CrcDepegMin, Tuning.CrcDepegMax);
CrcDepegEnd = day + rng.Range(Tuning.CrcDepegDaysMin, Tuning.CrcDepegDaysMax);
CrcHaircutPending = rng.Chance(Tuning.CrcHaircutChance);
CrcHaircutPending = rng.Chance(Math.Min(1, Tuning.CrcHaircutChance * StoryMods.Current.CrcHaircut));
}
if ((ev == MarketEvent.GangWar || ev == MarketEvent.Crackdown) && CrtDepegEnd < 0 && rng.Chance(Tuning.CrtDepegChance))
if ((ev == MarketEvent.GangWar || ev == MarketEvent.Crackdown) && CrtDepegEnd < 0 && rng.Chance(Tuning.CrtDepegChance * StoryMods.Current.CrtDepeg))
{
Crt = rng.Range(Tuning.CrtDepegMin, Tuning.CrtDepegMax);
CrtDepegEnd = day + rng.Range(Tuning.CrtDepegDaysMin, Tuning.CrtDepegDaysMax);
@@ -52,7 +52,7 @@ namespace Decentralized.Domain
/// <summary>镇压开始时,玩家持有的 CRT 被冻结一半的概率:黑市声望 0 时 40%,50 以上为 0。</summary>
public static double CrtFreezeChance(double blackMarketRep) =>
Math.Max(0, Tuning.CrtFreezeBase - blackMarketRep * Tuning.CrtFreezePerRep);
Math.Max(0, Tuning.CrtFreezeBase - blackMarketRep * Tuning.CrtFreezePerRep) * StoryMods.Current.CrtFreeze;
/// <summary>镇压开始时是否冻结玩家的 CRT:按黑市声望,声望越低越容易被黑市"出卖"。</summary>
public static bool CrtFrozenByCrackdown(double blackMarketRep, Rng rng) => rng.Chance(CrtFreezeChance(blackMarketRep));
@@ -111,7 +111,7 @@ namespace Decentralized.Domain
{
CraSubsidy -= (Tuning.CraNpcStake + playerStaked) * CraRate;
bool revFalling = RevHistory.Count == 7 && RevPower < RevHistory[0] - 5;
double weekly = Tuning.CraSpiralWeekly * (revFalling ? 3 : 1);
double weekly = Tuning.CraSpiralWeekly * (revFalling ? 3 : 1) * StoryMods.Current.CraSpiral(day);
double daily = 1 - Math.Pow(1 - weekly, 1.0 / 7);
if (CraWarnDay < 0 && (rng.Chance(daily) || CraSubsidy <= 0))
{
@@ -128,7 +128,7 @@ namespace Decentralized.Domain
}
else
{
Spark *= Math.Exp(rng.Gauss() * Tuning.SparkVol);
Spark *= Math.Exp(rng.Gauss() * Tuning.SparkVol) * StoryMods.Current.TakeSparkPush();
Spark += (Tuning.SparkStart - Spark) * Tuning.SparkRevert;
Spark = Math.Max(Tuning.SparkStart * Tuning.SparkMinMult, Math.Min(Tuning.SparkStart * Tuning.SparkMaxMult, Spark));
}