Stop story bosses' rush at the net
Oliver: the strawberry seller as act I's first boss is way too hard, "or it should not cross the net". His charge is the one boss move exempt from the court band: it runs to a strike line in front of you, and contact is death. In the story every boss's rush now stops a metre short of the net and withdraws as before, so the threat is kept and the reach is not. The Physio in act IV is held the same way. Only the Champion's MATCH POINT rush in act V stays, because it is the finale. New test. v385, staging only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
16d0532f97
commit
2c9c7b84fd
6 files changed
+45
-1
No files matched your search
@@ -3812,6 +3812,32 @@ test('THE STORY: the help offer — fresher legs and a longer swing in the cup,
|
||||
G.horde = null;
|
||||
});
|
||||
|
||||
test('THE STORY: a boss never crosses the net — the strawberry seller rushes and stops short (the champion still comes)', () => {
|
||||
intoStory(1, 'chap');
|
||||
for (let g = 0; g < cfg.STORY.midAt; g++) { storyGame(); G.modal = null; }
|
||||
const b = zombies.find(z => z.variant === 'B');
|
||||
assert.equal(b.art.name, 'THE STRAWBERRY SELLER');
|
||||
assert.ok(b.holdNet, 'held to its half');
|
||||
let maxZ = -99, rushes = 0, was = false;
|
||||
for (let i = 0; i < 40 * 60 && zombies.includes(b); i++) {
|
||||
G.modal = null; G.modalQ.length = 0; G.hp = G.hpMax; G.phase = 'pretoss'; G.hurtT = 1;
|
||||
update(DT);
|
||||
maxZ = Math.max(maxZ, b.z);
|
||||
if (b.charging && !was) rushes++;
|
||||
was = !!b.charging;
|
||||
}
|
||||
assert.ok(rushes >= 2, 'it still rushes: ' + rushes);
|
||||
assert.ok(maxZ <= COURT.netZ - TUNE.bossNetStop + 1e-9, `it stops short of the net: max z ${maxZ.toFixed(2)}`);
|
||||
assert.equal(G.mode, 'splatter', 'and it never reached you');
|
||||
zombies.length = 0; endBossFight();
|
||||
// the champion's finale keeps its rush
|
||||
restartRun();
|
||||
intoStory(5, 'mid');
|
||||
for (let g = cfg.STORY.midAt; g < cfg.STORY.length; g++) { storyGame(); G.modal = null; }
|
||||
const c = zombies.find(z => z.variant === 'B');
|
||||
assert.equal(c.art.name, 'THE CHAMPION'); assert.ok(!c.holdNet, 'the champion still comes for you');
|
||||
});
|
||||
|
||||
test('THE STORY: a barrel holds what the act has earned', () => {
|
||||
intoStory(1, 'chap');
|
||||
const seen = new Set();
|
||||
|
||||
Reference in new issue
Block a user