Port field moves from the menu, SEL with Select, and moving Pokémon in Bill's PC
Checks / web (push) Canceled after 0s

Field moves chosen in the party menu run their original checks and the
ROM's from-menu scripts (Cut, Surf, Strength, Flash, Whirlpool, Waterfall,
Sweet Scent), and Softboiled and Milk Drink share HP. SEL registers a key
item that Select then uses, replacing the Key Items shortcut, and Bill's
PC moves Pokémon between the party and every box.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Sébastien QUEROLandClaude Opus 5.5 committed 2026-09-30 17:22:56 +02:00
1 parent 45275ba83b
commit 3456aa4e11
25 files changed
+1129 -186

No files matched your search

+39 -20
View File
@@ -46,25 +46,34 @@ async function backup(page: Page) {
state: JSON.parse(Buffer.from(record.state, "base64").toString("utf8")),
};
}
test("Select opens Key Items, freezes movement, and uses the Bicycle with keyboard and touch", async ({
test("SEL registers the Bicycle, and Select rides it with keyboard and touch", async ({
page,
}) => {
await start(page);
await page.keyboard.press("ShiftLeft");
await expect(page.locator("#field-menu")).toBeVisible();
await page.keyboard.down("ArrowDown");
await page.clock.runFor(1000);
await page.keyboard.up("ArrowDown");
await expect(page.locator("#game-screen")).toHaveAttribute("data-y", "6");
await page
.locator("#field-items")
.getByRole("button", { name: "BICYCLE", exact: true })
.click();
const text = page.locator("#dialogue-text"),
choices = page.locator("#dialogue-choice"),
pack = page.locator("#mart");
await page.keyboard.press("Enter");
await choices.getByRole("option", { name: /^PACK/ }).click();
// Right twice: the Balls pocket, then Key Items.
await page.keyboard.press("ArrowRight");
await page.keyboard.press("ArrowRight");
await pack.getByRole("button", { name: "BICYCLE", exact: true }).click();
await choices.getByRole("option", { name: "SEL", exact: true }).click();
await expect(text).toContainText("Registered the");
await page.keyboard.press("KeyX");
await page.keyboard.press("KeyZ");
await page.keyboard.press("KeyZ");
await expect(choices).toBeHidden();
await page.keyboard.press("ShiftLeft");
await page.clock.runFor(500);
await expect(page.locator("#field-menu")).toBeHidden();
await expect(page.locator("#game-notice")).toHaveText("");
expect((await backup(page)).state.playerState).toBe(1);
await page.locator("#tab-game").click();
await page.locator("#play").click();
await page.getByRole("button", { name: "select", exact: true }).click();
await page.clock.runFor(500);
expect((await backup(page)).state.playerState).toBe(0);
});
test("the bedroom PC puts away a decoration and saves the result", async ({
page,
@@ -91,19 +100,29 @@ test("the bedroom PC puts away a decoration and saves the result", async ({
await expect(page.locator("#game-notice")).toHaveText("");
expect((await backup(page)).state.decorations.bed).toBe(0);
});
test("B cancels the pack and an indoor Bicycle attempt leaves the player walking", async ({
test("Select without a registered item explains SEL, and the Bicycle stays packed indoors", async ({
page,
}) => {
await start(page, true);
const text = page.locator("#dialogue-text"),
choices = page.locator("#dialogue-choice"),
pack = page.locator("#mart");
await page.keyboard.press("ShiftLeft");
await expect(text).toContainText("An item in your");
await page.keyboard.press("KeyX");
await page.keyboard.press("KeyX");
await page.keyboard.press("Enter");
await choices.getByRole("option", { name: /^PACK/ }).click();
await page.keyboard.press("ArrowLeft");
await page.keyboard.press("ArrowLeft");
await pack.getByRole("button", { name: "BICYCLE", exact: true }).click();
await choices.getByRole("option", { name: "USE", exact: true }).click();
await expect(text).toContainText("This isn't the");
await page.keyboard.press("KeyX");
await pack.getByRole("button", { name: "BACK", exact: true }).click();
await page.keyboard.press("KeyZ");
await expect(page.locator("#field-menu")).toBeHidden();
await page.keyboard.press("ShiftLeft");
await page
.locator("#field-items")
.getByRole("button", { name: "BICYCLE", exact: true })
.click();
await expect(page.locator("#game-notice")).toContainText("can’t use");
await page.clock.runFor(500);
await expect(page.locator("#game-notice")).toHaveText("");
expect((await backup(page)).state.playerState).toBe(0);
});