From d5b945f14ba835ebb2ef32c176c31e08d3b99ef0 Mon Sep 17 00:00:00 2001 From: sganggs Date: Sun, 4 Oct 2026 19:53:24 +0800 Subject: [PATCH] =?UTF-8?q?feedback3:=20the=20airborne-=E8=92=82=E6=AF=94?= =?UTF-8?q?=20=E7=83=B9=E6=B3=89=20test=20places=20the=20=E7=83=B9?= =?UTF-8?q?=E6=B3=89=20within=20its=20official=201.25=20blast=20of=20both?= =?UTF-8?q?=20units=20and=20reads=20the=20per-blast=20=E3=80=90=E7=83=B9?= =?UTF-8?q?=E6=B3=89=E5=87=8F=E7=9B=8A=E3=80=91=20layers=20(left=20behind?= =?UTF-8?q?=20by=20the=20W3B=20merge)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/sim/feedback1f-liftoff.test.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/test/sim/feedback1f-liftoff.test.js b/test/sim/feedback1f-liftoff.test.js index 8d01c931..0b5c664a 100644 --- a/test/sim/feedback1f-liftoff.test.js +++ b/test/sim/feedback1f-liftoff.test.js @@ -311,11 +311,14 @@ test('F3 review: one-shot area abilities of ground enemies skip an airborne 蒂 const h = makeBattle({ stageId: 'act2autochess_m02', seed: 3, autoFinish: false, timeLimit: 400, hooks: ['damaged'], captureNoisy: true, units: [{ chessId: TIPPI[0], row: 9, col: 5, carryState: { sp: 999 }, skillIndex: skillIndex(TIPPI[0], S1) }, { chessId: BAIT, row: 10, col: 5 }], - enemies: [{ key: SFHU, pos: [9, 6.5], mods: { hpMul: 0.4, speedMul: 0 } }], + // both within the blast's 1.25 (PRTS 爆炸半径1.25, since 0.1.3): 0.72 from her, 0.85 from 角峰 + enemies: [{ key: SFHU, pos: [9.4, 5.6], mods: { hpMul: 0.4, speedMul: 0 } }], }); const u = h.unit(TIPPI[0]), bait = h.unit(BAIT); let slowAir = false, baitSlow = false; - for (let i = 0; i < 25 * 30; i++) { h.step(); if (u.s.flags.liftoff && u.findBuff('ab:teaBoom')) slowAir = true; if (bait.findBuff('ab:teaBoom')) baitSlow = true; } + // one 【烹泉减益】 layer per blast, keyed `ab:teaBoom:` (each layer its own buff, since 0.1.3) + const teaSlow = (x) => x.buffs.some((bf) => String(bf.key).startsWith('ab:teaBoom')); + for (let i = 0; i < 25 * 30; i++) { h.step(); if (u.s.flags.liftoff && teaSlow(u)) slowAir = true; if (teaSlow(bait)) baitSlow = true; } assert.ok(!h.b.enemies.some((e) => e.alive && e.defId === SFHU), '烹泉 died'); assert.ok(u.s.flags.liftoff, 'she is still airborne'); const blast = (t) => h.hooksOf('damaged').filter((c) => c.target === t && (c.dmg?.tags || []).includes('teaBoom'));