【资源物品大扩容】 - ItemKind 6 值:resource/material/pill/talisman/brew/artifact——市场分群/背包/售卖/modSchema 全链 - 新材料七种:灵玉/灵木/兽皮/灵果(POOL_BASE+MARKET_IDS+worldgen 偏移四同步入世界池)、 灵露/丹砂/符纸(道具料) - 循环接入:新建筑灵果园(灵果)/灵木坊(灵木);productionTick 泛化逐建筑读 produceTable 全键; 秘境掉落材料化(灵玉/兽皮/灵木);材料类同向微漂(物产同源生态) 【新用途】 - 符箓:war 战斗开战武备自动消耗(talismanWarPrep 零 rng) - 灵酿:渡劫伤后自动回气 +5 - 新丹方和灵丹/虚元丹 + 玉澜刃/灵酿铸器配方 【测试 5009】86 套件(+1000:matrix-treasure-a/b 950 + 断链修整); 【金钟罩】0.1.32 基线重算(物品/池/生产泛化受控变更);build 通过
100 lines
4.1 KiB
TypeScript
100 lines
4.1 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.32 矩阵:琳琅乙组', () => {
|
|
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 303] as const))(
|
|
'seed %d:辰11·四验', (seed) => {
|
|
const w = mk(`琳琅乙组-0-${seed}`)
|
|
for (let m = 0; m < 9; m++) w.advanceMonth()
|
|
expect(Number.isFinite(w.state.seq)).toBe(true)
|
|
expect(w.state.family.inventory).toBeTruthy()
|
|
expect(w.state.stats).toBeTruthy()
|
|
expect(Number.isFinite(w.state.totalTicks)).toBe(true)
|
|
})
|
|
|
|
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 304] as const))(
|
|
'seed %d:辰12·四验', (seed) => {
|
|
const w = mk(`琳琅乙组-1-${seed}`)
|
|
for (let m = 0; m < 18; m++) w.advanceMonth()
|
|
expect(Number.isFinite(w.state.seq)).toBe(true)
|
|
expect(w.state.family.inventory).toBeTruthy()
|
|
expect(w.state.stats).toBeTruthy()
|
|
expect(Number.isFinite(w.state.totalTicks)).toBe(true)
|
|
})
|
|
|
|
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 305] as const))(
|
|
'seed %d:辰13·四验', (seed) => {
|
|
const w = mk(`琳琅乙组-2-${seed}`)
|
|
for (let m = 0; m < 27; m++) w.advanceMonth()
|
|
expect(Number.isFinite(w.state.seq)).toBe(true)
|
|
expect(w.state.family.inventory).toBeTruthy()
|
|
expect(w.state.stats).toBeTruthy()
|
|
expect(Number.isFinite(w.state.totalTicks)).toBe(true)
|
|
})
|
|
|
|
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 306] as const))(
|
|
'seed %d:辰14·四验', (seed) => {
|
|
const w = mk(`琳琅乙组-3-${seed}`)
|
|
for (let m = 0; m < 36; m++) w.advanceMonth()
|
|
expect(Number.isFinite(w.state.seq)).toBe(true)
|
|
expect(w.state.family.inventory).toBeTruthy()
|
|
expect(w.state.stats).toBeTruthy()
|
|
expect(Number.isFinite(w.state.totalTicks)).toBe(true)
|
|
})
|
|
|
|
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 307] as const))(
|
|
'seed %d:辰15·四验', (seed) => {
|
|
const w = mk(`琳琅乙组-4-${seed}`)
|
|
for (let m = 0; m < 45; m++) w.advanceMonth()
|
|
expect(Number.isFinite(w.state.seq)).toBe(true)
|
|
expect(w.state.family.inventory).toBeTruthy()
|
|
expect(w.state.stats).toBeTruthy()
|
|
expect(Number.isFinite(w.state.totalTicks)).toBe(true)
|
|
})
|
|
|
|
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 308] as const))(
|
|
'seed %d:辰16·四验', (seed) => {
|
|
const w = mk(`琳琅乙组-5-${seed}`)
|
|
for (let m = 0; m < 54; m++) w.advanceMonth()
|
|
expect(Number.isFinite(w.state.seq)).toBe(true)
|
|
expect(w.state.family.inventory).toBeTruthy()
|
|
expect(w.state.stats).toBeTruthy()
|
|
expect(Number.isFinite(w.state.totalTicks)).toBe(true)
|
|
})
|
|
|
|
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 309] as const))(
|
|
'seed %d:辰17·四验', (seed) => {
|
|
const w = mk(`琳琅乙组-6-${seed}`)
|
|
for (let m = 0; m < 63; m++) w.advanceMonth()
|
|
expect(Number.isFinite(w.state.seq)).toBe(true)
|
|
expect(w.state.family.inventory).toBeTruthy()
|
|
expect(w.state.stats).toBeTruthy()
|
|
expect(Number.isFinite(w.state.totalTicks)).toBe(true)
|
|
})
|
|
|
|
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 310] as const))(
|
|
'seed %d:辰18·四验', (seed) => {
|
|
const w = mk(`琳琅乙组-7-${seed}`)
|
|
for (let m = 0; m < 72; m++) w.advanceMonth()
|
|
expect(Number.isFinite(w.state.seq)).toBe(true)
|
|
expect(w.state.family.inventory).toBeTruthy()
|
|
expect(w.state.stats).toBeTruthy()
|
|
expect(Number.isFinite(w.state.totalTicks)).toBe(true)
|
|
})
|
|
|
|
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 311] as const))(
|
|
'seed %d:辰19·四验', (seed) => {
|
|
const w = mk(`琳琅乙组-8-${seed}`)
|
|
for (let m = 0; m < 81; m++) w.advanceMonth()
|
|
expect(Number.isFinite(w.state.seq)).toBe(true)
|
|
expect(w.state.family.inventory).toBeTruthy()
|
|
expect(w.state.stats).toBeTruthy()
|
|
expect(Number.isFinite(w.state.totalTicks)).toBe(true)
|
|
})
|
|
|
|
})
|