Preserve enemy facing through push and pull slides (#418, #427)

This commit is contained in:
sganggs committed 2026-10-09 17:16:49 +08:00
1 parent 584cedc1b4
commit 4980ee786f
13 files changed
+153 -30

No files matched your search

+2
View File
@@ -195,6 +195,8 @@ test('薄绿 (3_08) 聚能涡旋 pushes the target towards her centre whatever h
fill(u);
assert.ok(h.runUntil(() => u.skill.active, 5));
h.run(3);
assert.ok(h.eventsOf('fx').some((f) => f[1] === 'displace' && f[4]?.keepFacing === true),
`${dir}: Mint S2's inward push inherits the common facing metadata`);
return h.enemy('enemy_d');
};
for (const dir of ['UP', 'RIGHT']) {
+4
View File
@@ -533,6 +533,8 @@ test('歌蕾蒂娅 S1 缺水的大洋裂断: charges; next attack atk_scale (×1
assert.equal(sk.length, 1);
approx(sk[0].amount, u.s.atk * bb.atk_scale * t1.atk_scale, 1e-6, `${id} hit`);
assert.ok(e.x < x0 - 0.5, `${id}: pulled towards her (${x0} → ${e.x})`);
assert.ok(h.eventsOf('fx').some((f) => f[1] === 'displace' && f[4]?.keepFacing === true),
`${id}: S1 pull carries the common facing metadata`);
// 中力 vs weight 1 (受力等级 0): "必定拉至身前" — to the 急停 radius 0.6708 around her centre (PRTS 推与拉), never past it
approx(e.x, u.x + 0.6708, 1e-6, `${id}: stops at her front`);
}
@@ -555,6 +557,8 @@ test('歌蕾蒂娅 S2 缺水的掌握怒海: BAT +0.5 s, wider range, 2 targets
assert.equal(hits.length, bb['attack@max_target']);
for (const c of hits) approx(c.amount, u.s.atk * bb['attack@atk_scale'] * t1.atk_scale, 1e-6);
for (const e of atk.targets) assert.ok(e.x < 6 - 0.4, `pulled (${e.x})`);
assert.ok(h.eventsOf('fx').some((f) => f[1] === 'displace' && f[4]?.keepFacing === true),
`${id}: S2 pull carries the common facing metadata`);
}
});
+2 -1
View File
@@ -609,7 +609,8 @@ test('1_19 野鬃: 夹枪冲锋 wider range, ATK +atk, pushes targets away; elit
approx(u.s.atk, u.base.atk * (1 + bb.atk));
const e = h.enemies()[0];
assert.ok(e.x >= 6.5, `pushed to x=${e.x}`);
assert.ok(h.eventsOf('fx').some((f) => f[1] === 'displace'));
assert.ok(h.eventsOf('fx').some((f) => f[1] === 'displace' && f[4]?.keepFacing === true),
'Wild Mane S2 inherits the common push facing rule');
done(h);
const idb = 'chess_char_1_19_b', t = tal(idb);
+2
View File
@@ -121,6 +121,8 @@ test('莫斯提马 S3: ripple hits every enemy in range, ATK +90 %, knock-back;
assert.ok(es.every((e) => hits.some((c) => c.target === e)), 'all three enemies hit by one ripple');
approx(hits[0].amount, u.s.atk, 1e-6, 'full damage (res 0)');
assert.ok(es.some((e, i) => e.x > x0[i] + 0.2), 'knocked back');
assert.ok(h.eventsOf('fx').some((f) => f[1] === 'displace' && f[4]?.keepFacing === true),
'Mostima S3 inherits the common push facing rule');
checkInvariants(h.b);
});