Open Goldenrod City, Whitney's gym and the Radio Tower quiz (#32)
Enable Goldenrod City and its buildings, the department store with its elevator and rooftop, the Underground and its rooms, the Radio Tower floors and the Route 35 gate. Port what their scripts need: the herb shop, bargain shop, pharmacy and rooftop sale marts with ROM stock, prices and text; the Name Rater; the haircut brothers' happiness tables; the Lucky Number show over the party and boxes with its saved number and Friday countdown (RTC day timers with the 140-day wrap); coin and money balance boxes; Game Corner prize registration through NewPokedexEntry; gift Pokémon to the box when the party is full, with OT, nickname and MAIL (Kenya's 15-letter first line now stores). Saves gain hallOfFame, timers and luckyNumber, with defaults for older saves, and wUndergroundSwitchPositions joins the saved script bytes. The playthrough continues to the Bicycle, Whitney, the PLAINBADGE and the radio card. SlotMachine and CardFlip are still refused. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f4ef244fc7
commit
0930b780fc
19 files changed
+1596
-126
No files matched your search
@@ -36,16 +36,26 @@ const ROUTE_32 = "10:1",
|
||||
SLOWPOKE_WELL_B1F = "3:40",
|
||||
ILEX_GATE = "11:22",
|
||||
ILEX_FOREST = "3:52",
|
||||
ROUTE_34_GATE = "11:23";
|
||||
ROUTE_34_GATE = "11:23",
|
||||
ROUTE_34 = "11:1",
|
||||
GOLDENROD = "11:2",
|
||||
GOLDENROD_CENTER = "11:20",
|
||||
GOLDENROD_GYM = "11:3",
|
||||
BIKE_SHOP = "11:4",
|
||||
RADIO_TOWER_1F = "3:17";
|
||||
const MIRACLE_SEED = 0x75,
|
||||
LURE_BALL = 0xa0,
|
||||
HM01 = 0xf3,
|
||||
CUT = 15;
|
||||
CUT = 15,
|
||||
BICYCLE = 7;
|
||||
const EVENT_CLEARED_SLOWPOKE_WELL = 0x2b,
|
||||
EVENT_BEAT_BUGSY = 0x4be,
|
||||
EVENT_RIVAL_AZALEA_TOWN = 0x6bf,
|
||||
EVENT_HERDED_FARFETCHD = 0x29,
|
||||
ENGINE_HIVEBADGE = 0x1c;
|
||||
ENGINE_HIVEBADGE = 0x1c,
|
||||
ENGINE_PLAINBADGE = 0x1d,
|
||||
ENGINE_RADIO_CARD = 0,
|
||||
EVENT_BEAT_WHITNEY = 0x4bf;
|
||||
const PHONE_BUG_CATCHER_WADE = 16;
|
||||
const FLASH = 148,
|
||||
HM05 = 0xf7;
|
||||
@@ -498,5 +508,56 @@ describe.skipIf(!existsSync(romPath))(
|
||||
stairs(ROUTE_34_GATE);
|
||||
reload();
|
||||
}, 120_000);
|
||||
|
||||
it("reaches Goldenrod City and gets a Bicycle", () => {
|
||||
traceFailures();
|
||||
stairs(ROUTE_34);
|
||||
cross("up", GOLDENROD);
|
||||
heal(GOLDENROD_CENTER, GOLDENROD);
|
||||
enter(BIKE_SHOP, "up");
|
||||
talkTo(p.world.map.objects[0].id); // the clerk, across the counter
|
||||
play([1]);
|
||||
expect(p.world.state.bag.keyItems).toContain(BICYCLE);
|
||||
exit(GOLDENROD);
|
||||
reload();
|
||||
}, 120_000);
|
||||
|
||||
it("trains on Route 34 and beats Whitney for the PLAINBADGE", () => {
|
||||
traceFailures();
|
||||
const restInGoldenrod = () => {
|
||||
cross("up", GOLDENROD);
|
||||
heal(GOLDENROD_CENTER, GOLDENROD);
|
||||
cross("down", ROUTE_34);
|
||||
};
|
||||
cross("down", ROUTE_34);
|
||||
train(30, restInGoldenrod);
|
||||
restInGoldenrod();
|
||||
cross("up", GOLDENROD);
|
||||
enter(GOLDENROD_GYM, "up");
|
||||
const whitney = p.world.map.objects[0].id;
|
||||
talkTo(whitney);
|
||||
play();
|
||||
expect(p.world.state.events.has(EVENT_BEAT_WHITNEY)).toBe(true);
|
||||
// She cries; Bridget explains on the way out, then the badge.
|
||||
exit(GOLDENROD);
|
||||
expect(p.log.join(" ")).toContain("WHITNEY cry.");
|
||||
enter(GOLDENROD_GYM, "up");
|
||||
talkTo(whitney);
|
||||
play();
|
||||
expect(p.world.state.flags.has(ENGINE_PLAINBADGE)).toBe(true);
|
||||
expect(p.world.state.bag.tmsHms[44]).toBe(1); // TM45 ATTRACT
|
||||
exit(GOLDENROD);
|
||||
reload();
|
||||
}, 240_000);
|
||||
|
||||
it("answers the Radio Tower quiz for the radio card", () => {
|
||||
traceFailures();
|
||||
enter(RADIO_TOWER_1F, "up");
|
||||
talkTo(p.world.map.objects[5].id);
|
||||
play([1, 1, 1, 0, 1, 0]);
|
||||
expect(p.world.state.flags.has(ENGINE_RADIO_CARD)).toBe(true);
|
||||
exit(GOLDENROD);
|
||||
reload();
|
||||
}, 120_000);
|
||||
},
|
||||
);
|
||||
Reference in new issue
Block a user