Play the museum-guy cue during Oak's lab walk in Yellow

Yellow's Pallet Town intro (professor catches the wild Pikachu, then
walks the player to the lab) played the map's default Pallet Town
theme the whole time instead of the dedicated escort cue. Per
pokeyellow's actual scripts: PlayDefaultMusicFadeOutCurrent (run on
every battle exit) legitimately restores Pallet Town's theme after
the Pikachu demo battle for the Whew.../Come with me lines; the
escort cue (MUSIC_MUSEUM_GUY, the same "led by an NPC" theme Pewter's
museum guide uses) only starts in PalletMovementScript_OakMoveLeft,
the first function of the escort script -- but only in pokeyellow's
copy. pokered's copy of that same shared Red/Yellow function only
sets BIT_NO_MAP_MUSIC and leaves whatever was already playing
(MUSIC_MEET_PROF_OAK) running uninterrupted into the lab.

Start Music_MuseumGuy at the top of escortToLab, gated on Yellow so
Red/Blue keeps its unchanged behavior, and fix the Oak-escort warp's
keepMusic comment to say which song rides the warp in each version.
This commit is contained in:
thibautbus
2026-08-11 12:07:07 +02:00
parent 79ed37699e
commit 8e48bb4e32
2 changed files with 19 additions and 3 deletions
+6 -3
View File
@@ -453,9 +453,12 @@ function OverworldState:setMap(mapId, x, y, facing, opts)
-- walks out of the warp, not beside him (#863)
require("src.world.PikachuFollower").onMapEntered(Game, self, opts, true)
-- opts.keepMusic: the Oak-escort warp keeps MUSIC_MEET_PROF_OAK
-- playing into the lab (BIT_NO_MAP_MUSIC in wStatusFlags7);
-- keepMusicOnce is the play_music opts.keep one-shot of the same bit
-- opts.keepMusic: the Oak-escort warp keeps whatever cutscene song is
-- already playing going into the lab instead of cutting to it
-- (BIT_NO_MAP_MUSIC in wStatusFlags7) -- MUSIC_MUSEUM_GUY in Yellow
-- (started in escortToLab when Oak begins walking), MUSIC_MEET_PROF_OAK
-- in Red/Blue (pokered never switches songs for this walk); keepMusicOnce
-- is the play_music opts.keep one-shot of the same bit
local keepMusic = (opts and opts.keepMusic) or self.keepMusicOnce
self.keepMusicOnce = nil
if not keepMusic then