v0.1.32: 万宝琳琅——物品六类化 + 新材料七种 + 循环接入 + 测试 5009
【资源物品大扩容】 - 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 通过
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
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 + 3] as const))(
|
||||
'seed %d:辰1·三验', (seed) => {
|
||||
const w = mk(`琳琅甲组-0-${seed}`)
|
||||
for (let m = 0; m < 6; m++) w.advanceMonth()
|
||||
expect(Number.isFinite(w.state.seq)).toBe(true)
|
||||
expect(Array.isArray(w.state.chronicle)).toBe(true)
|
||||
expect(Number.isFinite(w.state.family.stones)).toBe(true)
|
||||
})
|
||||
|
||||
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 4] as const))(
|
||||
'seed %d:辰2·三验', (seed) => {
|
||||
const w = mk(`琳琅甲组-1-${seed}`)
|
||||
for (let m = 0; m < 12; m++) w.advanceMonth()
|
||||
expect(Number.isFinite(w.state.seq)).toBe(true)
|
||||
expect(Array.isArray(w.state.chronicle)).toBe(true)
|
||||
expect(Number.isFinite(w.state.family.stones)).toBe(true)
|
||||
})
|
||||
|
||||
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 5] as const))(
|
||||
'seed %d:辰3·三验', (seed) => {
|
||||
const w = mk(`琳琅甲组-2-${seed}`)
|
||||
for (let m = 0; m < 18; m++) w.advanceMonth()
|
||||
expect(Number.isFinite(w.state.seq)).toBe(true)
|
||||
expect(Array.isArray(w.state.chronicle)).toBe(true)
|
||||
expect(Number.isFinite(w.state.family.stones)).toBe(true)
|
||||
})
|
||||
|
||||
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 6] as const))(
|
||||
'seed %d:辰4·三验', (seed) => {
|
||||
const w = mk(`琳琅甲组-3-${seed}`)
|
||||
for (let m = 0; m < 24; m++) w.advanceMonth()
|
||||
expect(Number.isFinite(w.state.seq)).toBe(true)
|
||||
expect(Array.isArray(w.state.chronicle)).toBe(true)
|
||||
expect(Number.isFinite(w.state.family.stones)).toBe(true)
|
||||
})
|
||||
|
||||
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 7] as const))(
|
||||
'seed %d:辰5·三验', (seed) => {
|
||||
const w = mk(`琳琅甲组-4-${seed}`)
|
||||
for (let m = 0; m < 30; m++) w.advanceMonth()
|
||||
expect(Number.isFinite(w.state.seq)).toBe(true)
|
||||
expect(Array.isArray(w.state.chronicle)).toBe(true)
|
||||
expect(Number.isFinite(w.state.family.stones)).toBe(true)
|
||||
})
|
||||
|
||||
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 8] as const))(
|
||||
'seed %d:辰6·三验', (seed) => {
|
||||
const w = mk(`琳琅甲组-5-${seed}`)
|
||||
for (let m = 0; m < 36; m++) w.advanceMonth()
|
||||
expect(Number.isFinite(w.state.seq)).toBe(true)
|
||||
expect(Array.isArray(w.state.chronicle)).toBe(true)
|
||||
expect(Number.isFinite(w.state.family.stones)).toBe(true)
|
||||
})
|
||||
|
||||
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 9] as const))(
|
||||
'seed %d:辰7·三验', (seed) => {
|
||||
const w = mk(`琳琅甲组-6-${seed}`)
|
||||
for (let m = 0; m < 42; m++) w.advanceMonth()
|
||||
expect(Number.isFinite(w.state.seq)).toBe(true)
|
||||
expect(Array.isArray(w.state.chronicle)).toBe(true)
|
||||
expect(Number.isFinite(w.state.family.stones)).toBe(true)
|
||||
})
|
||||
|
||||
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 10] as const))(
|
||||
'seed %d:辰8·三验', (seed) => {
|
||||
const w = mk(`琳琅甲组-7-${seed}`)
|
||||
for (let m = 0; m < 48; m++) w.advanceMonth()
|
||||
expect(Number.isFinite(w.state.seq)).toBe(true)
|
||||
expect(Array.isArray(w.state.chronicle)).toBe(true)
|
||||
expect(Number.isFinite(w.state.family.stones)).toBe(true)
|
||||
})
|
||||
|
||||
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 11] as const))(
|
||||
'seed %d:辰9·三验', (seed) => {
|
||||
const w = mk(`琳琅甲组-8-${seed}`)
|
||||
for (let m = 0; m < 54; m++) w.advanceMonth()
|
||||
expect(Number.isFinite(w.state.seq)).toBe(true)
|
||||
expect(Array.isArray(w.state.chronicle)).toBe(true)
|
||||
expect(Number.isFinite(w.state.family.stones)).toBe(true)
|
||||
})
|
||||
|
||||
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 12] as const))(
|
||||
'seed %d:辰10·三验', (seed) => {
|
||||
const w = mk(`琳琅甲组-9-${seed}`)
|
||||
for (let m = 0; m < 60; m++) w.advanceMonth()
|
||||
expect(Number.isFinite(w.state.seq)).toBe(true)
|
||||
expect(Array.isArray(w.state.chronicle)).toBe(true)
|
||||
expect(Number.isFinite(w.state.family.stones)).toBe(true)
|
||||
})
|
||||
|
||||
})
|
||||
Reference in New Issue
Block a user