Skip to content

Commit b11072c

Browse files
committed
Stabilize Mission Run finale gate
1 parent 22df1be commit b11072c

2 files changed

Lines changed: 33 additions & 7 deletions

File tree

‎src/scripts/game.ts‎

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -773,6 +773,14 @@ export function createMascotGame(): Game {
773773
setPlaying(false);
774774
hideMsg();
775775
}
776+
function parkPlayerAtCastleDoor() {
777+
player.x = CASTLE_X + CASTLE_W / 2 - player.w / 2;
778+
player.y = GROUND_TOP - player.h;
779+
player.vx = 0;
780+
player.vy = 0;
781+
player.onGround = true;
782+
camX = Math.max(0, Math.min(WORLD_W - VIEW_W, player.x + player.w / 2 - VIEW_W / 2));
783+
}
776784
function showWin() {
777785
state = 'win';
778786
setPlaying(false);
@@ -2266,6 +2274,7 @@ export function createMascotGame(): Game {
22662274
__mgameEnterPipe?: () => void;
22672275
__mgameAdvanceVoid?: (frames?: number) => void;
22682276
__mgameTriggerWin?: () => void;
2277+
__mgameAdvanceEnding?: (frames?: number) => void;
22692278
__mgameTriggerGameOver?: () => void;
22702279
};
22712280
const debugWindow = window as DebugWindow;
@@ -2311,13 +2320,16 @@ export function createMascotGame(): Game {
23112320
for (let i = 0; i < frames && state === 'void'; i++) updateVoidChase();
23122321
};
23132322
debugWindow.__mgameTriggerWin = () => {
2314-
player.x = CASTLE_X + 18 - player.w;
2315-
player.y = GROUND_TOP - player.h;
2316-
player.vx = 0;
2317-
player.vy = 0;
2318-
player.onGround = true;
23192323
startEnding();
2320-
camX = Math.max(0, Math.min(WORLD_W - VIEW_W, player.x + player.w / 2 - VIEW_W / 2));
2324+
parkPlayerAtCastleDoor();
2325+
};
2326+
debugWindow.__mgameAdvanceEnding = (frames = WIN_CARD_DELAY_FRAMES) => {
2327+
if (state !== 'ending') {
2328+
startEnding();
2329+
parkPlayerAtCastleDoor();
2330+
}
2331+
for (let i = 0; i < frames && state === 'ending'; i++) updateEnding();
2332+
render();
23212333
};
23222334
debugWindow.__mgameTriggerGameOver = () => {
23232335
lives = 0;

‎tests/functional.spec.ts‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -638,11 +638,25 @@ test.describe('Mission Run mini-game', () => {
638638
await expect.poll(async () => (await readGame())?.state, { timeout: 1000 }).toBe('ending');
639639
expect((await readGame())?.messageVisible).toBe(false);
640640

641-
await page.waitForTimeout(900);
641+
await page.evaluate(() => {
642+
(
643+
window as Window & {
644+
__mgameAdvanceEnding?: (frames?: number) => void;
645+
}
646+
).__mgameAdvanceEnding?.(54);
647+
});
642648
const midWin = await readGame();
643649
expect(midWin?.state).toBe('ending');
644650
expect(midWin?.messageVisible).toBe(false);
645651

652+
await page.evaluate(() => {
653+
(
654+
window as Window & {
655+
__mgameAdvanceEnding?: (frames?: number) => void;
656+
}
657+
).__mgameAdvanceEnding?.(100);
658+
});
659+
646660
await expect
647661
.poll(
648662
async () => {

0 commit comments

Comments
 (0)