Blue's Lab First Pass

This largely finishes the Blue's Lab commit from last night, adding all the bits and bobs to make the first initial cutscene. This essentially puts all the first plot threads into place: Impostor Oak, the Nihon League, and so on. This stuff is stupid unorthodox, I expect it to be an uphill battle.
This commit is contained in:
Llinos Evans 2024-07-20 12:56:20 +01:00
parent 30e57c9e38
commit 9f29e38e59
5 changed files with 232 additions and 131 deletions

View file

@ -342,8 +342,7 @@ CheckTileEvent:
call RandomEncounter
ret c
jr .ok ; pointless
; pointless jr replaced with fallthrough
.ok
xor a
ret

View file

@ -12,12 +12,16 @@
const BLUELAB_CHIKORITA
const BLUELAB_KEN
const BLUELAB_OAK
const BLUELAB_POKEDEX1
const BLUELAB_POKEDEX2
const BLUELAB_DAISY
const BLUELAB_AIDE
BlueLab_MapScripts:
def_scene_scripts
scene_script EnterLabWithBlue, SCENE_ENTER_LAB_WITH_BLUE
scene_script EnterStarterRoomWithBlue, SCENE_ENTER_STARTER_ROOM_WITH_BLUE
scene_script BlueLabWhereGoing, SCENE_BLUELAB_WHERE_GOING
scene_script BlueLabNoopScene, SCENE_BLUELAB_WHERE_GOING
scene_script BlueLabNoopScene, SCENE_BLUELAB_NOOP
def_callbacks
@ -27,22 +31,12 @@ BlueLabNoopScene:
end
BlueLabSetup:
checkevent EVENT_DRAGGED_BY_BLUE
iffalse .skip1
moveobject BLUELAB_BLUE, 4, 18
.skip1
checkevent EVENT_GONE_THROUGH_STARTER_DOOR
iffalse .skip2
appear BLUELAB_BLUE
appear BLUELAB_KEN
moveobject BLUELAB_BLUE, 20, 2
moveobject BLUELAB_KEN, 19, 4
.skip2
checkevent EVENT_BRIEFED_BY_BLUE
iffalse .skip3
iffalse .skip
moveobject BLUELAB_OAK, 6, 2
moveobject BLUELAB_KEN, 23, 19
.skip3
disappear BLUELAB_POKEDEX2
.skip
endcallback
end
@ -63,20 +57,18 @@ EnterLabWithBlue:
writetext OakAhYesIAmOak
waitbutton
closetext
.No1
opentext
writetext OakStoryAskText
waitbutton
closetext
yesorno
iffalse .No1
iffalse .discerningEye
sjump .Yes1
.No1
.discerningEye
opentext
writetext OakDiscerningEye
waitbutton
closetext
yesorno
iffalse .No1
sjump .No1
.Yes1
opentext
writetext OakStoryText
@ -106,11 +98,27 @@ EnterLabWithBlue:
playsound SFX_ENTER_DOOR
pause 10
applymovement PLAYER, EnterStarterRoomMovement1
setscene SCENE_BLUELAB_NOOP
; So get this: GSC never actually moves you into a warp. You'll be bounced back.
; Here, we use Lance's Room's method: An illusion of it actually happening.
disappear PLAYER
playsound SFX_ENTER_DOOR
special FadeOutPalettes
pause 15
warpfacing UP, BLUE_LAB, 20, 9
moveobject BLUELAB_KEN, 19, 4
setscene SCENE_ENTER_STARTER_ROOM_WITH_BLUE
setevent EVENT_GONE_THROUGH_STARTER_DOOR
end
EnterStarterRoomWithBlue:
appear BLUELAB_KEN
; moveobject BLUELAB_KEN, 19, 4
appear BLUELAB_BLUE
moveobject BLUELAB_BLUE, 20, 2
applymovement PLAYER, EnterStarterRoomMovement2
;turnobject BLUELAB_BLUE, DOWN ; It didn't work the other way, but this makes it kind of sick actually.
opentext
writetext BlueChooseText
waitbutton
@ -121,18 +129,18 @@ EnterStarterRoomWithBlue:
closetext
applymovement BLUELAB_KEN, KenPickMovement1
opentext
writetext KenChikoritaText
writetext KenChikoritaText ; No one wants Chikorita, so...
waitbutton
closetext
disappear BLUELAB_CHIKORITA
opentext
writetext KenReceivedChikoritaText
waitbutton
closetext
playsound SFX_CAUGHT_MON
waitsfx
waitbutton
closetext
applymovement BLUELAB_KEN, KenPickMovement2
moveobject BLUELAB_KEN, 23, 19
disappear BLUELAB_KEN
playsound SFX_ENTER_DOOR
pause 10
opentext
@ -142,16 +150,12 @@ EnterStarterRoomWithBlue:
.goBack
opentext
writetext BlueProposalText
waitbutton
closetext
yesorno
iffalse .No
sjump .Yes
.No
opentext
writetext BlueLabINeedYouText
waitbutton
closetext
yesorno
iffalse .goBack
.Yes
@ -296,6 +300,7 @@ BlueAfterStarterScript:
closetext
moveobject BLUELAB_OAK, 6, 2
setevent EVENT_BRIEFED_BY_BLUE
setevent EVENT_GOT_POKEMON_FROM_BLUE
end
BlueDidntChooseStarterScript:
@ -390,7 +395,10 @@ KenIfItIsntYouText:
line "around!"
done
PCText:
BlueLabPC:
jumptext BlueLabPCText
BlueLabPCText:
text "There's some mail"
line "here!"
@ -421,19 +429,28 @@ PCText:
line "AIDE"
done
ReportText:
BlueLabReport:
jumptext BlueLabReportText
BlueLabReportText:
text "Don't forget to"
line "SAVE!"
done
PokedexText:
BlueLabPokedex:
jumptext BlueLabPokedexText
BlueLabPokedexText:
text "It's a #DEX!"
line "It looks diff-"
cont "erent to the"
cont "ones in JOHTO!"
done
DoorLockedText:
BlueLabDoorLocked:
jumptext BlueLabDoorLockedText
BlueLabDoorLockedText:
text "The door is"
line "locked."
done
@ -495,11 +512,12 @@ OakDiscerningEye:
para "Hmm…"
done
; Mostly translated from the SW97 dialogue, but adapted to KEP/JEP's AU.
OakStoryText:
text "OAK: Right! A year"
text "OAK: Right! A year" ; In the SW demo, this was technically correct. In modern GSC, it's set 3 years later, coinciding with the game's release schedule. Given the storyline, let's keep the original quote, naturally creating an inconsistency.
line "ago, I gave two"
cont "boys #MON so"
cont "they could carry"
cont "they could carry" ; This can surely be expressed in fewer lines...
cont "out my dream of"
cont "filling the"
cont "#DEX!"
@ -510,18 +528,18 @@ OakStoryText:
cont "with aplomb!"
para "They documented"
line "all 190 #MON!"
line "all 190 #MON!" ; Adjusted for KEP. I accidentally made it the RG prototype numbers, but I actually like this.
para "But…the world is"
line "a big place! One"
cont "after another, new"
cont "after another,"
cont "#MON have been"
cont "discovered!"
para "I moved to this"
line "place, SILENT"
cont "HILLS, to cont-"
cont "inue my research!"
cont "HILLS, to conti-"
cont "nue my research!"
para "I must see all"
line "#MON up close!"
@ -530,7 +548,7 @@ OakStoryText:
para "… … …"
para "As you can see,"
line "my nephew is here"
line "my nephew is here" ; He does say this, yes.
cont "to help, as are"
cont "everyone else."
@ -542,6 +560,8 @@ OakStoryText:
para "I need your help!"
done
; Ken often words things like this.
; He seems impressionable and kind, so let's establish him like that.
KenResponseText:
text "KEN: Oh, <PLAYER>!"
line "This is super"
@ -561,8 +581,7 @@ OakThanksText:
BlueChooseText:
text "BLUE: So here we"
line "have 3 #"
cont "BALLS!"
line "have 3 # BALLS!"
para "Haha! They contain"
line "#MON."
@ -596,19 +615,19 @@ KenPickText:
done
KenPickMovement1:
step RIGHT
step RIGHT
step UP
step RIGHT
step RIGHT
turn_head UP
step_end
KenChikoritaText:
text "CHIKORITA!"
line "It's so cute"
cont "and cuddly!"
line "It's so cute and"
cont "cuddly!"
para "Let's go on"
line "an adventure"
cont "together!"
para "Let's go on an"
line "adventure!"
para "I'll show CAL!"
done
@ -619,6 +638,8 @@ KenReceivedChikoritaText:
done
KenPickMovement2:
step DOWN
step DOWN
step LEFT
step DOWN
step DOWN
@ -630,15 +651,12 @@ KenPickMovement2:
BlueWeirdText:
text "BLUE: Such a"
line "starry-eyed"
cont "kid…"
line "starry-eyed kid…"
para "Well, champ…"
para "You saw it too,"
line "right? I mean,"
cont "you have to be"
cont "blind to not."
line "right?"
para "That ain't gramps."
@ -647,7 +665,7 @@ BlueWeirdText:
cont "DAISY! Gramps's"
cont "research is top-"
cont "notch, but this"
cont "one hardly responds"
cont "one hardly replies"
cont "to e-mails!"
para "#MON TALK is"
@ -657,27 +675,25 @@ BlueWeirdText:
done
BlueProposalText:
text "So here's the"
line "deal. I want you"
cont "to search for"
text "So here's the deal."
line "I want you to find"
cont "gramps."
para "In return, I"
line "will give you"
cont "one of these"
cont "#MON. Capische?"
para "In return, I'll"
line "give you one of"
cont "these #MON."
para "Capische?"
done
BlueAcceptText:
text "They're super"
line "rare! I'm sure"
cont "they'll be safe"
cont "with you!"
text "I'm counting on"
line "you, <PLAYER>!"
done
BlueAfterStarterText:
text "Right place at"
line "the right time,"
text "BLUE: Right place"
line "at the right time,"
cont "huh, <PLAYER>?"
para "I don't have any"
@ -685,9 +701,9 @@ BlueAfterStarterText:
cont "has disappeared,"
cont "only a hunch."
para "I don't know"
para "I don't even know"
line "where he could"
cont "have gone, even."
cont "have gone!"
para "The NIHON LEAGUE"
line "is wicked tough,"
@ -701,7 +717,7 @@ BlueAfterStarterText:
line "want my #GEAR"
cont "number? I'll call"
cont "you if anything"
cont "comes up"
cont "comes up."
done
BlueLabWhereAreYouGoingMovement:
@ -748,10 +764,17 @@ KenRegularText:
text "?"
done
; To be expanded on later.
; To be expanded on later, a la Elm.
ProfBlueScript:
faceplayer
opentext
checkevent EVENT_GOT_POKEMON_FROM_BLUE
iftrue .skip
writetext BlueDidntChooseStarterText
sjump .omniSkip
.skip
writetext BlueRegularText
.omniSkip
waitbutton
closetext
end
@ -764,6 +787,39 @@ BlueRegularText:
cont "up."
done
BlueLabBookshelf:
jumpstd DifficultBookshelfScript
BlueLabDaisyScript:
jumptextfaceplayer BlueLabDaisyText
BlueLabDaisyText:
text "DAISY: Yup, this"
line "is my day job."
para "At the same time,"
line "seeing BLUE work"
cont "so hard warms my"
cont "heart!"
para "But I wonder if"
line "the stress gets"
cont "to him?"
done
BlueLabAideScript:
jumptextfaceplayer BlueLabAideText
BlueLabAideText:
text "I'm glad OAK fina-"
line "lly sees the value"
cont "in my research!"
para "Legendary #-"
line "MON need more"
cont "study!"
done
BlueLab_MapEvents:
db 0, 0 ; filler
@ -780,11 +836,34 @@ BlueLab_MapEvents:
coord_event 19, 9, SCENE_BLUELAB_WHERE_GOING, BlueLabWhereGoing
def_bg_events
bg_event 6, 1, BGEVENT_READ, BlueLabPC
bg_event 2, 0, BGEVENT_READ, BlueLabReport
bg_event 22, 0, BGEVENT_READ, BlueLabReport
bg_event 7, 9, BGEVENT_READ, BlueLabBookshelf
bg_event 6, 9, BGEVENT_READ, BlueLabBookshelf
bg_event 5, 9, BGEVENT_READ, BlueLabBookshelf
bg_event 2, 9, BGEVENT_READ, BlueLabBookshelf
bg_event 1, 9, BGEVENT_READ, BlueLabBookshelf
bg_event 0, 9, BGEVENT_READ, BlueLabBookshelf
bg_event 7, 13, BGEVENT_READ, BlueLabBookshelf
bg_event 6, 13, BGEVENT_READ, BlueLabBookshelf
bg_event 19, 1, BGEVENT_READ, BlueLabBookshelf
bg_event 18, 1, BGEVENT_READ, BlueLabBookshelf
bg_event 17, 1, BGEVENT_READ, BlueLabBookshelf
bg_event 16, 1, BGEVENT_READ, BlueLabBookshelf
bg_event 5, 13, BGEVENT_READ, BlueLabBookshelf
bg_event 2, 13, BGEVENT_READ, BlueLabBookshelf
bg_event 1, 13, BGEVENT_READ, BlueLabBookshelf
bg_event 0, 13, BGEVENT_READ, BlueLabBookshelf
def_object_events
object_event 4, 2, SPRITE_BLUE, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ProfBlueScript, -1
object_event 4, 2, SPRITE_BLUE, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ProfBlueScript, -1
object_event 22, 2, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CubburnPokeBallScript, EVENT_CUBBURN_POKEBALL_IN_BLUES_LAB
object_event 23, 2, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, PalssioPokeBallScript, EVENT_PALSSIO_POKEBALL_IN_BLUES_LAB
object_event 21, 2, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BlueChikoritaPokeBallScript, -1
object_event 3, 4, SPRITE_ROCKER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, KenRegularScript, -1
object_event 4, 2, SPRITE_OAK, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, OakRegularScript, -1
object_event 1, 1, SPRITE_POKEDEX, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BlueLabPokedex, -1
object_event 0, 1, SPRITE_POKEDEX, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BlueLabPokedex, -1
object_event 6, 14, SPRITE_DAISY, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BlueLabDaisyScript, -1
object_event 1, 10, SPRITE_SCIENTIST, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BlueLabAideScript, -1

View file

@ -602,9 +602,6 @@ ElmsLabTrashcan:
ElmsLabPC:
jumptext ElmsLabPCText
ElmsLabTrashcan2: ; unreferenced
jumpstd TrashCanScript
ElmsLabBookshelf:
jumpstd DifficultBookshelfScript

View file

@ -1 +1 @@
IJHF|}+BF~E/JIJ !A|}G~E$AAAAAATnnnnUX5555Y
IJHF|}+BF~-/JIJ !A|}G~-$AAAAAATnnnnUX5555Y

View file

@ -8,9 +8,7 @@
SilentHills_MapScripts:
def_scene_scripts
scene_script SilentHillsNoopScene, SCENE_SILENT_HILLS_NOOP
scene_script SilentHillsBlue1, SCENE_SILENT_HILLS_BLUE1
scene_script SilentHillsBlue2, SCENE_SILENT_HILLS_BLUE2
scene_script SilentHillsNoopScene, SCENE_SILENT_HILLS_BLUE
def_callbacks
callback MAPCALLBACK_NEWMAP, SilentHillsFlypointCallback
@ -19,63 +17,83 @@ SilentHillsNoopScene:
end
SilentHillsBlue1:
checkevent EVENT_DRAGGED_BY_BLUE
iftrue .end
moveobject SILENT_HILLS_BLUE, 4, 8
playmusic MUSIC_PROF_OAK
opentext
writetext BlueWaitText1
waitbutton
closetext
pause 15
applymovement PLAYER, KrisWantsLefties
moveobject SILENT_HILLS_BLUE, 6, 9
disappear SILENT_HILLS_BLUE
appear SILENT_HILLS_BLUE
opentext
writetext BlueWaitText2
waitbutton
closetext
opentext
writetext BlueFollowMeText
playmusic MUSIC_SHOW_ME_AROUND
appear SILENT_HILLS_BLUE
turnobject PLAYER, RIGHT
showemote EMOTE_SHOCK, PLAYER, 15
applymovement SILENT_HILLS_BLUE, BlueStrideMovement
opentext
writetext BlueFollowMeText
waitbutton
closetext
follow SILENT_HILLS_BLUE, PLAYER, BlueFollowMeMovement1
follow SILENT_HILLS_BLUE, PLAYER
applymovement SILENT_HILLS_BLUE, BlueFollowMeMovement1A
applymovement SILENT_HILLS_BLUE, BlueFollowMeMovement1
applymovement SILENT_HILLS_BLUE, BlueFollowMeMovement1B
disappear SILENT_HILLS_BLUE
playsound SFX_ENTER_DOOR
stopfollow
pause 10
applymovement PLAYER, KrisWantsUppies
disappear PLAYER
playsound SFX_ENTER_DOOR
special FadeOutPalettes
pause 15
warpfacing UP, BLUE_LAB, 4, 19
setevent EVENT_DRAGGED_BY_BLUE
setevent EVENT_GOT_POKEMON_FROM_BLUE ; It's only for the moment, it gets reset once you're actually picking one. Just handles potentially stupid scenarios.
.end
setscene SCENE_SILENT_HILLS_NOOP
end
SilentHillsBlue2:
checkevent EVENT_DRAGGED_BY_BLUE
iftrue .end
moveobject SILENT_HILLS_BLUE, 4, 8
playmusic MUSIC_PROF_OAK
opentext
writetext BlueWaitText1
waitbutton
closetext
pause 15
applymovement PLAYER, KrisWantsLefties
moveobject SILENT_HILLS_BLUE, 6, 8
disappear SILENT_HILLS_BLUE
appear SILENT_HILLS_BLUE
opentext
writetext BlueWaitText2
waitbutton
closetext
opentext
writetext BlueFollowMeText
playmusic MUSIC_SHOW_ME_AROUND
appear SILENT_HILLS_BLUE
turnobject PLAYER, RIGHT
showemote EMOTE_SHOCK, PLAYER, 15
applymovement SILENT_HILLS_BLUE, BlueStrideMovement
opentext
writetext BlueFollowMeText
waitbutton
closetext
follow SILENT_HILLS_BLUE, PLAYER, BlueFollowMeMovement2
follow SILENT_HILLS_BLUE, PLAYER
applymovement SILENT_HILLS_BLUE, BlueFollowMeMovement1A
applymovement SILENT_HILLS_BLUE, BlueFollowMeMovement2 ; don't need 1B as we use a fallthrough instead
disappear SILENT_HILLS_BLUE
playsound SFX_ENTER_DOOR
stopfollow
pause 10
applymovement PLAYER, KrisWantsUppies
disappear PLAYER
playsound SFX_ENTER_DOOR
special FadeOutPalettes
pause 15
warpfacing UP, BLUE_LAB, 4, 19
setevent EVENT_DRAGGED_BY_BLUE
setevent EVENT_GOT_POKEMON_FROM_BLUE ; It's only for the moment, it gets reset once you're actually picking one. Just handles potentially stupid scenarios.
.end
setscene SCENE_SILENT_HILLS_NOOP
end
SilentHillsFlypointCallback:
@ -142,6 +160,7 @@ SilentHillManText:
BlueWaitText1:
text "Hey! Hey! Wait!"
line "Don't go out!"
done
BlueWaitText2:
@ -153,8 +172,8 @@ BlueFollowMeText:
line "know--"
para "Huh?! It's you!"
line "You wiped the floor"
cont "with me before!"
line "You wiped the flo-"
cont "or with me before!"
para "What are you doing"
line "in NIHON?!"
@ -162,26 +181,44 @@ BlueFollowMeText:
para "…"
para "You may be useful,"
line "actually. Come with"
cont "me!"
line "actually. Come on,"
cont "follow me!"
done
BlueStrideMovement:
step LEFT
step LEFT
step LEFT
step LEFT
step LEFT
step_end
; I got really annoyed at the inefficiency and decided to do things like this.
; There is probably a fallthrough you can use somewhere.
BlueFollowMeMovement1A:
step RIGHT
step RIGHT
step RIGHT
step RIGHT
step RIGHT
step RIGHT
step_end
BlueFollowMeMovement1:
step RIGHT
step RIGHT
step RIGHT
step RIGHT
step RIGHT
step RIGHT
step DOWN
step DOWN
step DOWN
step_end
BlueFollowMeMovement2:
step DOWN
step DOWN
step DOWN
step DOWN
; fallthrough
BlueFollowMeMovement1B:
step RIGHT
step RIGHT
step RIGHT
step RIGHT
step RIGHT
@ -191,25 +228,14 @@ BlueFollowMeMovement1:
step UP
step_end
BlueFollowMeMovement2:
step RIGHT
step RIGHT
step RIGHT
step RIGHT
step RIGHT
step RIGHT
step DOWN
step DOWN
step DOWN
step RIGHT
step RIGHT
step RIGHT
step RIGHT
step RIGHT
step RIGHT
KrisWantsUppies:
step UP
step_end
KrisWantsLefties: ; Wasn't funny enough
step LEFT
step_end
; A little message for the cheaters.
SilentHillsWhatScript:
jumptextfaceplayer SilentHillsWhatText
@ -223,7 +249,7 @@ SilentHillsWhatText:
para "…"
para "Well, you must be"
line "smart…and dedicated."
line "smart…."
para "So, props! Thanks"
line "for playing!"
@ -240,8 +266,8 @@ SilentHills_MapEvents:
warp_event 3, 12, SILVERS_HOUSE, 1
def_coord_events
coord_event 1, 9, SCENE_SILENT_HILLS_BLUE1, SilentHillsBlue1
coord_event 1, 8, SCENE_SILENT_HILLS_BLUE2, SilentHillsBlue2
coord_event 1, 9, SCENE_SILENT_HILLS_BLUE, SilentHillsBlue1
coord_event 1, 8, SCENE_SILENT_HILLS_BLUE, SilentHillsBlue2
def_bg_events
bg_event 8, 4, BGEVENT_READ, SilentHillsSign1
@ -255,4 +281,4 @@ SilentHills_MapEvents:
def_object_events
object_event 8, 7, SPRITE_POKEFAN_F, SPRITEMOVEDATA_WALK_UP_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, SilentHillPokefanF, -1
object_event 9, 13, SPRITE_YOUNGSTER, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, SilentHillYoungster, -1
object_event 0, 0, SPRITE_BLUE, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, SilentHillsWhatText, -1
object_event 0, 0, SPRITE_BLUE, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, SilentHillsWhatScript, -1