0.1.40 FINAL: 版本号统一更新(7处) + 金钟罩基线重算(18指纹) + 4测试文件基线同步(版本号/指纹/顶峰衰概率容错)
This commit is contained in:
@@ -82,8 +82,8 @@ describe('审计回归:P0 修复固化', () => {
|
||||
})
|
||||
|
||||
it('防御性修补后金钟罩不变(行为等价确认)', () => {
|
||||
// 0.1.37 因果/奇观/飞升逻辑变更,指纹受控重算
|
||||
expect(stateFingerprint(longRun('bell-seed-1').state)).toBe('45b0c17a')
|
||||
expect(stateFingerprint(longRun('bell-seed-3').state)).toBe('f24480f4')
|
||||
// 0.1.40 天命·裂痕:天命系统+NPC宗主更替四模式+势力分裂+灰烬重生——全线受控变更重算
|
||||
expect(stateFingerprint(longRun('bell-seed-1').state)).toBe('b050ad28')
|
||||
expect(stateFingerprint(longRun('bell-seed-3').state)).toBe('0b56c19b')
|
||||
})
|
||||
})
|
||||
|
||||
+8
-8
@@ -7,20 +7,20 @@ import { World } from '../src/renderer/game/engine/runtime/World'
|
||||
* 任何改动(重构日程/调平衡/加系统)若改变了确定性序列或结果,此测试立刻报红。
|
||||
* 更新规则:仅当**有意**变更序列逻辑时,三枚 seed 指纹同版更新并注明原因。
|
||||
*/
|
||||
// 0.1.39 淬体·洗髓基线:purgeNpc 清理 worldGen.npcs/relations 僵尸定义(存档体积精简——时序内更改)。
|
||||
// 受控变更重算(bell-seed-2 三档:NPC 灭亡后 worldGen 摘要缩小→指纹变;其余 seed 无 NPC 灭亡→零漂)。
|
||||
// 0.1.40 天命·裂痕基线:天命系统+NPC宗主更替四模式+NPC势力分裂+灰烬重生新贵补位+建筑专精——
|
||||
// 全线受控变更重算(NPC演化逻辑增强+天命epilogue注册改变了时序/确定性序列)。
|
||||
const GOLDEN: Record<string, Record<number, string>> = {
|
||||
'bell-seed-1': { 560: '45b0c17a', 1200: '62e037c1', 2160: 'b85dd7c7' },
|
||||
'bell-seed-2': { 560: 'be278aba', 1200: '01126e70', 2160: 'fd03f9b2' },
|
||||
'bell-seed-3': { 560: 'f24480f4', 1200: 'e52bed85', 2160: 'abb2a5d2' }
|
||||
'bell-seed-1': { 560: 'b050ad28', 1200: '379ad2e1', 2160: '2fada283' },
|
||||
'bell-seed-2': { 560: 'e3b4d40b', 1200: '5fb3aa1f', 2160: '50ad6832' },
|
||||
'bell-seed-3': { 560: '0b56c19b', 1200: '4737eedf', 2160: 'f597c050' }
|
||||
}
|
||||
|
||||
/** 第二金钟罩:自动 resolve 长跑("现实"世界——每 tick 处理待决事件;
|
||||
* 锁事件闸/事件流全程,防"冻结世界"指纹漏锁)。 */
|
||||
const GOLDEN_RESOLVED: Record<string, Record<number, string>> = {
|
||||
'bell-seed-1': { 560: '2837ad55', 1200: 'f6798d97', 2160: 'bc713cca' },
|
||||
'bell-seed-2': { 560: '9c5eddc5', 1200: '6a3c8522', 2160: '0791881d' },
|
||||
'bell-seed-3': { 560: '79e8126e', 1200: '21d9c804', 2160: '95de644d' }
|
||||
'bell-seed-1': { 560: '88f28074', 1200: 'd6b9cc85', 2160: 'c5b9b102' },
|
||||
'bell-seed-2': { 560: '5ca6b6a9', 1200: '6a66a750', 2160: 'c8e8e982' },
|
||||
'bell-seed-3': { 560: 'fb5bc0e8', 1200: '3e09f864', 2160: 'fae786ae' }
|
||||
}
|
||||
|
||||
const TIERS = [
|
||||
|
||||
@@ -122,14 +122,18 @@ describe('0.1.27 生灭可达化', () => {
|
||||
})
|
||||
|
||||
it('顶峰衰:power≥700 年首可回落(非贴顶硬化)', () => {
|
||||
// 0.1.40 修正:rng 序列变更后 60 月(5 年首) 8% × 5 ≈ 34% 命中率太低。
|
||||
// 根治方案:扩展至 1200 月(100 年首),每年首重钉 power=880 保证持续触发条件,
|
||||
// 同时跟踪任何 power 回落迹象——100 次 × 8% → P(至少一次) ≈ 99.97%。
|
||||
const w = worldAt('wl-2', 24)
|
||||
const ws = w.state.worldSim as WorldSimState
|
||||
const top = Object.keys(w.state.npcFamilies).sort((a, b) => w.state.npcFamilies[b].power - w.state.npcFamilies[a].power)[0]!
|
||||
w.state.npcFamilies[top].power = 880
|
||||
let fell = false
|
||||
for (let i = 0; i < 60 && !fell; i++) {
|
||||
for (let i = 0; i < 1200 && !fell; i++) {
|
||||
// 每年首前重钉 power,防止回落后又涨回 880 导致 fell 被覆盖
|
||||
if (w.state.month === 12) w.state.npcFamilies[top].power = 880
|
||||
w.advanceMonth()
|
||||
if (w.state.npcFamilies[top]!.power < 880) fell = true
|
||||
if (w.state.npcFamilies[top] && w.state.npcFamilies[top]!.power < 880) fell = true
|
||||
}
|
||||
expect(fell).toBe(true)
|
||||
})
|
||||
|
||||
@@ -170,8 +170,8 @@ describe('GameFacade 门面', () => {
|
||||
|
||||
it('默认配置金钟罩不受门面化影响', () => {
|
||||
PACK.reset()
|
||||
// 0.1.37 因果/奇观/飞升逻辑变更,指纹受控重算
|
||||
expect(stateFingerprint(longRun('bell-seed-1').state)).toBe('45b0c17a')
|
||||
expect(stateFingerprint(longRun('bell-seed-3').state)).toBe('f24480f4')
|
||||
// 0.1.40 天命·裂痕:天命系统+NPC宗主更替四模式+势力分裂+灰烬重生——全线受控变更重算
|
||||
expect(stateFingerprint(longRun('bell-seed-1').state)).toBe('b050ad28')
|
||||
expect(stateFingerprint(longRun('bell-seed-3').state)).toBe('0b56c19b')
|
||||
})
|
||||
})
|
||||
|
||||
@@ -261,18 +261,18 @@ describe('0.1.38 存档根治 · 存储链路回归(hybrid memory backend)',
|
||||
})
|
||||
})
|
||||
|
||||
describe('0.1.38 存档根治 · 版本号一致性', () => {
|
||||
it('slots.ts GAME_VERSION = 0.1.38', async () => {
|
||||
describe('0.1.40 存档根治 · 版本号一致性', () => {
|
||||
it('slots.ts GAME_VERSION = 0.1.40', async () => {
|
||||
const { buildSimpleMeta } = await import('../src/renderer/game/storage/slots')
|
||||
const w = World.create({ seed: 'ver-1', surname: '周', familyName: '周家', motto: 'm', difficulty: 'normal' })
|
||||
const meta = buildSimpleMeta(w.state, 1, 5)
|
||||
expect(meta.version).toBe('0.1.38')
|
||||
expect(meta.version).toBe('0.1.40')
|
||||
})
|
||||
|
||||
it('storeHelper metaFromState version = 0.1.38', async () => {
|
||||
it('storeHelper metaFromState version = 0.1.40', async () => {
|
||||
const { metaFromState } = await import('../src/renderer/ui/storeHelper')
|
||||
const w = World.create({ seed: 'ver-2', surname: '吴', familyName: '吴家', motto: 'm', difficulty: 'normal' })
|
||||
const meta = metaFromState(w.state, 1)
|
||||
expect(meta.version).toBe('0.1.38')
|
||||
expect(meta.version).toBe('0.1.40')
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user