【引擎层 P0】 - GameEngine.restore 双重时钟注册(回档后整月双跑)→ restore 重建内核+回置 rng 状态 - engineFromSnapshot 必崩(globalThis.__state 从未设)→ 修正带 seed 重建 - DEV 性能分支二次执行整月管线 → 只读告警(绝不重跑) - 引擎 advance 遇待决事件死锁 → resolvePending(idx) 通道(自动化/测试推进) 【WorldSim 大修】 - NPC 换代文案垃圾(n-danxin行情降50%)→ 换代快讯专属文案 - secretQi 假闭环(纯写无读)→ 全秘境初始化+missions 统一 consumeSecretQi - 快讯节流自锁(lastNewsMonth 恒 1 月)→ totalTicks%24 - power 月度收敛坍塌(1400±3)→ 换代/年首化+年度成长 - relation 双重拉零(4 家全 0)→ 交还外交年度漂移 - 市场基准 5 处重复 → POOL_BASE 单一权威;灾年 stale 清理;drift 各池独立噪声 - worldsim 能力卡补全 + normalize 兜底(worldSim/stats 子字段) 【UI/动效/存储】 - ModalShell 三条 CSS 规则真正落地(close 定位/body 滚动/footer 独立底排)——0.1.12 声明未实施项 - fx-canvas:resize 监听移除/mistTimer 清零/reduced 联动/soft 档无雾 + drift 走 gate(过滤器) - 档位 density 脱钩修复;顶栏“止”钮补 onClick;版本号三处统一 0.1.15 - importAll 清 chronicle 表;自动推进季度落盘(手动逐次) - 性能:LogFeed memo / Genealogy computeGenealogy memo / Chronicle deps 修正;死码清除(lastPhaseStats/clockFromKernel/哨兵函数等 12 处) - 删除误入库的“p”游离文件 【测试】979 全绿(36 套件);金钟罩三档 0.1.15 基线固化; typecheck/build 通过
91 lines
2.3 KiB
TypeScript
91 lines
2.3 KiB
TypeScript
export interface NpcDynamics {
|
||
/** 宗主姓名快照(换代时更新) */
|
||
leaderName: string
|
||
leaderRealmIdx: number
|
||
leaderAge: number
|
||
/** 演化旗标 */
|
||
lastEvent: string
|
||
lastEventYear: number
|
||
relationsWithOthers: Record<string, number>
|
||
}
|
||
|
||
export interface SecretQi {
|
||
qi: number
|
||
peak: number
|
||
}
|
||
|
||
export interface WorldSimState {
|
||
/** 世界库存池(资源循环) */
|
||
marketPool: Record<string, number>
|
||
/** NPC 动力学 */
|
||
npcDyn: Record<string, NpcDynamics>
|
||
/** 秘境灵气条 */
|
||
secretQi: Record<string, number>
|
||
/** 灵气潮汐(0-100 全局系数) */
|
||
tide: number
|
||
tideDir: 1 | -1
|
||
tideTicks: number
|
||
/** 灾年(当年灾因 id) */
|
||
calamity?: string
|
||
calamityYear: number
|
||
/** 天下快讯(滚动 N=120) */
|
||
newsFeed: { year: number; month: number; src: string; text: string }[]
|
||
lastNewsMonth: number
|
||
/** NPC 换代计数 */
|
||
npcSuccessions: number
|
||
}
|
||
|
||
export function makeWorldSimState(): WorldSimState {
|
||
return {
|
||
marketPool: { lingcao: 600, lingkuang: 300, beastcore: 80, 'pill-qiyuan': 90, 'pill-ningyuan': 40 },
|
||
npcDyn: {},
|
||
secretQi: {},
|
||
tide: 0.5,
|
||
tideDir: 1,
|
||
tideTicks: 0,
|
||
calamityYear: -99,
|
||
newsFeed: [],
|
||
lastNewsMonth: -99,
|
||
npcSuccessions: 0
|
||
}
|
||
}
|
||
|
||
/** 市场基准库存(单一权威:WorldSim 再平衡 / Market 行情 / brief 图标 三方共用) */
|
||
export const POOL_BASE: Record<string, number> = {
|
||
lingcao: 600,
|
||
lingkuang: 300,
|
||
beastcore: 80,
|
||
'pill-qiyuan': 90,
|
||
'pill-ningyuan': 40
|
||
}
|
||
|
||
/** 世界演化参数表(全部可调) */
|
||
export const WORLDSIM = {
|
||
marketDriftRate: 0.03,
|
||
marketRebalance: 0.1,
|
||
priceFloor: 0.55,
|
||
priceCeil: 2.3,
|
||
tideCycle: 72, // 月周期(6年)
|
||
tideMin: 0.65,
|
||
tideMax: 1.35,
|
||
secretRecover: 4,
|
||
secretConsume: 0,
|
||
calamityChance: 0.18,
|
||
calamities: ['旱灾', '涝灾', '蝗灾', '疫病', '兽潮', '寒潮'] as const,
|
||
npcEventChance: 0.05,
|
||
newsEvery: 24, // 月
|
||
newsKeep: 120
|
||
}
|
||
|
||
export type CalamityName = (typeof WORLDSIM.calamities)[number]
|
||
|
||
/** 灾因 → 资源方向 */
|
||
export const CALAMITY_EFFECT: Record<CalamityName, Partial<Record<string, number>>> = {
|
||
旱灾: { lingcao: -0.3 },
|
||
涝灾: { lingcao: -0.2, lingkuang: -0.1 },
|
||
蝗灾: { lingcao: -0.45 },
|
||
疫病: { beastcore: -0.25 },
|
||
兽潮: { beastcore: 0.3 },
|
||
寒潮: { lingcao: -0.2, beastcore: -0.15 }
|
||
}
|