feedback1 WE: 鸭爵 swaps stay on the player's half of a pair leader field
- A pair Final Assault / Hidden Core field has one spawn list that both
players' handlers edit; each player's 0-2 swaps now come only from the
enemies whose route ends on that player's half (the half rule of the
field's bounties). Match passes the wave's routes and the player's side
('L' / 'R', null on a one-player field) in the boss / hidden
onBattleStart event; docs/META.md documents the two fields.
- The comment justifying elite eligibility was wrong (the leader rounds'
escorts are a mix, about two thirds elites, not all elites); reworded
with the measured numbers and kept [ASSUMED].
- The pair-field test now drives the real match path (Final Assault, then
the Hidden Core it unlocks) instead of dispatching by hand; a unit check
covers the half filter.
This commit is contained in:
1 parent
f1e7f7da1a
commit
e96d2bae17
6 files changed
+83
-40
No files matched your search
@@ -376,6 +376,16 @@ test('鸭爵 “神秘顾客”: from R5, 0–2 ground enemies in the last 40 %
|
||||
const out = duckReplace(ctx, spawns, { ...p.bb, ...p.bbStr }, 'p_0');
|
||||
assert.equal(out.length, 2);
|
||||
assert.equal(spawns.reduce((n, sp) => n + (sp.count || 1), 0), 10);
|
||||
// a pair boss field (`side` + `routes`): only the enemies heading for the player's half (route end left / right of
|
||||
// the middle column), the 60–99 % share taken over that half — here the left half's enemies all come first
|
||||
const routes = [{ motion: 'WALK', end: [1, 3] }, { motion: 'WALK', end: [1, 17] }];
|
||||
for (const [side, route, times] of [['L', 0, [6, 7]], ['R', 1, [16, 17]], [null, 1, [12, 13]]]) {
|
||||
const field = Array.from({ length: 20 }, (_, i) => ({ time: i, enemyKey: normalKey, routeIndex: i < 10 ? 0 : 1, count: 1 }));
|
||||
const got = duckReplace(ctx, field, { ...p.bb, ...p.bbStr }, 'p_0', { routes, side });
|
||||
assert.deepEqual(got.map((d) => d.time), times, `side ${side}`);
|
||||
for (const d of got) assert.equal(d.routeIndex, route);
|
||||
assert.equal(field.length, 20);
|
||||
}
|
||||
cover('band_ducklord');
|
||||
});
|
||||
|
||||
|
||||
Reference in new issue
Block a user