v0.1.27: 活水长流——生灭盘活 + 修为回环 + 世鉴 + MOD 生态闭环(1054 全绿)

【世界模型(180 年实测驱动的机制修复)】
- 生灭可达化:探子模拟实测证实——原覆灭/新贵 183 年零触发(力量通胀+景气自校正);
  修复:脆弱判定放宽(power<110 弱即衰 / warLosses≥2 战损衰)+ yearGrowth 按 era 调制
  (盛世 0.7/平世 1/乱世 -0.8/末法 -1.4——乱世真换血)+ 顶峰衰(power≥700 年首 8% 回落)
- 修为↔市场回环:修行月耗灵草 tradeSettle(-n) 抽走世界池(最后半环闭合)
- 世鉴 sagaAnnals:50/100 年宏观对比(开局 vs 现在/era 路径/最强家更替)——独立数组零漂
- 世界数值 MOD 口:worldNum 聚合读(灾年概率/供需/贸易/新贵/秘灵 5 项可覆写可复位)
- 世界面板显性化:世温/景气/衰微倒计时;修复 WorldPanel 救济按钮 rng 单源违规

【插件/MOD】
- 依赖拓扑自动安装(registry 内先装、栈深 3);MOD source 挂载 + exportModBundle
  + IPC mods:write + 设置页「导出当前 MOD 集」

【测试】1054 全绿(47 套件,+7:乱世压力覆灭/顶峰衰/era 负增/世鉴/数值口/导出/拓扑);
【金钟罩】0.1.27 基线重算(双基线 18 值,生灭/回环受控变更);build 通过
This commit is contained in:
2026-08-23 17:02:46 +08:00
parent d941df5c3d
commit 8b6f2f7189
23 changed files with 261 additions and 41 deletions
+23 -1
View File
@@ -6,8 +6,10 @@ export interface NpcDynamics {
/** 战略姿态:守成/扩张/隐忍/结盟(年首评估) */
stance: NpcStance
stanceSinceYear: number
/** 衰微连续年数(power<45 起计) */
/** 衰微连续年数(power<58 起计) */
declineYears?: number
/** 互攻败仗累计(0.1.27 残衰减判定) */
warLosses?: number
/** 宗主姓名快照(换代时更新) */
leaderName: string
leaderRealmIdx: number
@@ -52,6 +54,8 @@ export interface WorldSimState {
distress?: { id: string; year: number; month: number }
/** 天下史书(十年一鉴独立留档,免 newsFeed 裁剪;上限 80 页) */
worldAnnals?: { year: number; text: string }[]
/** 世鉴(50/100 年宏观:开局 vs 现在/era 路径/最强家更替——独立数组零漂) */
sagaAnnals?: { year: number; kind: 'quinquagenary' | 'centennial'; text: string }[]
}
export function makeWorldSimState(): WorldSimState {
@@ -116,6 +120,24 @@ export const REGION_TIDE: Record<string, Record<'shengshi' | 'pingshi' | 'luansh
'n-nulei': { shengshi: 0.02, pingshi: 0, luanshi: 0.05, mofa: -0.03 }
}
/** 0.1.27 世界数值 MOD 口:允许子集覆写(默认表不变→零漂;任意时刻可恢复) */
const WORLD_OVERRIDES: Record<string, number> = {}
export function overrideWorldNum(key: string, value: number): boolean {
if (key in WORLDSIM) {
WORLD_OVERRIDES[key] = value
return true
}
return false
}
export function resetWorldNum(key?: string): void {
if (key) delete WORLD_OVERRIDES[key]
else for (const k of Object.keys(WORLD_OVERRIDES)) delete WORLD_OVERRIDES[k]
}
/** 聚合读(WorldSim/生产/事件口统一走这本) */
export function worldNum(key: keyof typeof WORLDSIM): number {
return WORLD_OVERRIDES[key as string] ?? ((WORLDSIM as unknown as Record<string, number>)[key as string] ?? 0)
}
/** 世界演化参数表(全部可调) */
export const WORLDSIM = {
marketDriftRate: 0.03,