Port field moves from the menu, SEL with Select, and moving Pokémon in Bill's PC
Checks / web (push) Canceled after 0s
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:
1 parent
45275ba83b
commit
3456aa4e11
25 files changed
+1129
-186
No files matched your search
@@ -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);
|
||||
});
|
||||
|
||||
|
||||
Reference in new issue
Block a user