Files
ChronicleOfTheImmortalClan/src/renderer/game/engine/sim/worldsim-data.ts
T
thzxx c5fa2a3357 v0.1.15: 深度审计加固(7 P0 + 20+ P1 歼灭)
【引擎层 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 通过
2026-08-23 13:52:51 +08:00

91 lines
2.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 }
}