feat(0.1.14-P3): 世界自进化 WorldSim(五大闭环)+ 引擎时钟合一
- WorldSim(engine/sim/WorldSim.ts + worldsim-data.ts): A 资源循环市场(库存池/再平衡/价格弹性——Market 行情联动 sim.mult) B NPC 聚合演化(宗主换代/境界成长/势力=境界+财力+兵员;换代计数) C 秘境灵气(探索消耗/恢复)+ 灵气潮汐(6年周期×修炼倍率) D 灾年签(旱涝蝗疫兽寒,联动市场池) E 天下快讯(节流 24 月滚动 120 条,世界动态 feed) - 相位:新增 worldsim(diplomacy 后 epilogue 前);capabilities 加「天下演序」卡可停用 - 时钟合一:World.clock = Kernel.clock(单一时钟驱动,消除双时钟漂移) - 发现并修复:worldsim 注册被文件搬迁覆盖丢失(修改纪律验证中招——已补回); WorldSim 内 Math.random 根除(改 w.rng) - fingerprint 纳入 worldSim 概要(市场/灵脉/潮汐/换代/快讯数) - 金钟罩三档重固化(0.1.14 正式基线,受控变更) - 验证:35 套件/967 测试全绿;typecheck 0 error
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
/** 世界演化参数表(全部可调) */
|
||||
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 }
|
||||
}
|
||||
Reference in New Issue
Block a user