feedback5: merge WE1 — fidelity (sim rules): 秘术师 store at the attack check (深靛; 维伊 / 黑键 plug into it), enemy attacks land at their damage frame so a short stun / freeze / sleep / 浮空 / 缴械 / 恐惧 before it cancels the swing, 武者 heal per damage instance through 禁疗, 庇护 the strongest only, PHY-X 不高于 50 %, 链愈师 jumps in the 3×3, a summon readied at its owner's redeploy, Misery's duration skills, 伺夜 S2 in 战术点形态, centurions hit up to block-count targets; merge fixes: 黑键's kit keeps the up() import WE2's S2 cast needs (WE1 dropped it with its tick store — the first regeneration had stored 9288 swallowed errors in diy-114), the 自选 refusal names 集成战略 / 生息演算, tools/golden.mjs prints a missing value, test/golden.test.js fails on any stored engine error; golden: vs WE1 only the W4B / WE2 scenarios differ (roster-042, bond-egirShip-high, coop2-ABYSS-10-boosted, coop2-NORMAL-70-diy, diy-045 / 078 / 114 / 115 / 116)

This commit is contained in:
sganggs committed 2026-10-06 16:52:11 +08:00
commit e2bb090f44
60 files changed
+6888 -6103

No files matched your search

+14
View File
@@ -44,6 +44,20 @@ test('golden files list exactly the corpus scenarios (regenerate with npm run go
}
});
// a stored digest that records engine errors means the corpus was regenerated over a crash (0.2.0: a merge dropped an
// import a kit's tick handler used, and `npm run golden:update` stored 9288 swallowed errors as "the expected result")
test('no stored scenario records engine errors (errors.count is 0 everywhere)', () => {
for (const f of FAMILY_NAMES) {
for (const [id, dg] of Object.entries(storedDigests(loadGolden(f)))) {
if (!dg || typeof dg !== 'object' || !dg.errors) continue;
// battles: { count, kinds }; matches: { engine, logged, sim, dispatcher }
const e = dg.errors;
const n = typeof e.count === 'number' ? e.count : Object.values(e).reduce((a, v) => a + (typeof v === 'number' ? v : 0), 0);
assert.equal(n, 0, `${f} ${id}: ${n} engine error(s) ${JSON.stringify(e)} — fix the crash, then regenerate`);
}
}
});
for (const f of FAMILY_NAMES) {
test(`golden ${f}: ${FULL ? 'every scenario' : 'the fast subset (GOLDEN_FULL=1 for all)'} reproduces its stored digest`, () => {
const computed = digests[f];