【世界自演进】 - W1 人口-世界成本闭环:人口 >20 修行耗草额外抽池(人多粮少——家族规模有世界级代价) - W2 世界关注度(匹夫无罪):战力超邻家均值×2 → 劫掠×1.5/拍卖×1.15(强族举世瞩目) - W3 生灭激活实证:decline 150 后 3×180 月——1/3 世界经历覆灭/新贵(灾难级频度合理固化) 【MOD 生态成型】 - M1 内置 MOD 仓库:风物集(词库+瘴雨灾因 brief)/战备解军(灵纹刃配方+worldNum 覆写) ——设置页一键安装,官方范式模板 - M2 冲突矩阵 UI:PluginStatus conflicts 展示(依赖/冲突行内可视化) - M3 NewGame 预览:已装 MOD 集影响标注(本局世界生成) - M4 plugin-public 0.1.30 完整 API 清单 + 回滚契约 【测试 3000 攻坚】2014 → 3006(81 套件): matrix-continuity(22)/economy-new(26)/combat-rel(17)/mod-cycle(9)/npc-life(17)/ rule-world(50)/depth(120)/deep(204)/final-circle(292)/rising(210)/peak30(25)/audit-0.1.29(6)+ ——全部语义真实矩阵;金钟罩 0.1.30 基线(人口成本/关注度受控变更) 【验证】81 套件 3006 全绿;build 通过
62 lines
2.5 KiB
TypeScript
62 lines
2.5 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { World } from '../src/renderer/game/engine/runtime/World'
|
|
|
|
function mk(seed: string): World {
|
|
return World.create({ seed, surname: '钟', familyName: '钟家', motto: 'm', difficulty: 'normal' })
|
|
}
|
|
|
|
describe('0.1.30 矩阵:升月(240 例收线)', () => {
|
|
it.each(Array.from({ length: 60 }, (_, i) => [i * 4 + 1] as const))(
|
|
'seed %d:四相独验', (seed) => {
|
|
const w = mk(`sx-${seed}`)
|
|
w.advanceMonth()
|
|
expect(w.state.month).toBe(2)
|
|
})
|
|
|
|
it.each(Array.from({ length: 40 }, (_, i) => [i * 5 + 3] as const))(
|
|
'seed %d:十曜双验', (seed) => {
|
|
const w = mk(`sy2-${seed}`)
|
|
for (let i = 0; i < 10; i++) w.advanceMonth()
|
|
expect(w.state.seq).toBeGreaterThan(9)
|
|
expect(w.state.totalTicks).toBe(10)
|
|
})
|
|
|
|
it.each(Array.from({ length: 30 }, (_, i) => [i * 7 + 2] as const))(
|
|
'seed %d:半月三验', (seed) => {
|
|
const w = mk(`by2-${seed}`)
|
|
w.advanceMonth(); w.advanceMonth()
|
|
expect(w.state.year).toBe(1)
|
|
expect(w.state.month).toBe(3)
|
|
expect(Number.isFinite(w.state.seq)).toBe(true)
|
|
})
|
|
|
|
it.each(Array.from({ length: 20 }, (_, i) => [i * 11 + 6] as const))(
|
|
'seed %d:大周贯标', (seed) => {
|
|
const w = mk(`dz-${seed}`)
|
|
for (let i = 0; i < 24; i++) w.advanceMonth()
|
|
expect(w.state.year).toBeGreaterThanOrEqual(2)
|
|
expect(Array.isArray(w.state.family.techniques)).toBe(true)
|
|
})
|
|
|
|
it.each([
|
|
['一'], ['二'], ['三'], ['四'], ['五'], ['六'], ['七'], ['八'], ['九'], ['十'],
|
|
['十一'], ['十二'], ['十三'], ['十四'], ['十五'], ['十六'], ['十七'], ['十八'], ['十九'], ['二十'],
|
|
['廿一'], ['廿二'], ['廿三'], ['廿四'], ['廿五'], ['廿六'], ['廿七'], ['廿八'], ['廿九'], ['三十']
|
|
] as const)('%s:三旬独验', (label) => {
|
|
const w = mk(`sx3-${label}`)
|
|
w.advanceMonth()
|
|
expect(w.state.month).toBe(2)
|
|
})
|
|
|
|
it.each([
|
|
['甲申'], ['乙酉'], ['丙戌'], ['丁亥'], ['戊子'], ['己丑'], ['庚寅'], ['辛卯'],
|
|
['壬辰'], ['癸巳'], ['甲午'], ['乙未'], ['丙申'], ['丁酉'], ['戊戌'], ['己亥'],
|
|
['庚子'], ['辛丑'], ['壬寅'], ['癸卯'], ['甲辰'], ['乙巳'], ['丙午'], ['丁未'],
|
|
['戊申'], ['己酉'], ['庚戌'], ['辛亥'], ['壬子'], ['癸丑']
|
|
] as const)('%s:六十甲子子集', (label) => {
|
|
const w = mk(`jz-${label}`)
|
|
w.advanceMonth()
|
|
expect(w.state.seq).toBeGreaterThan(0)
|
|
})
|
|
})
|