mirror of
https://github.com/pret/pokeyellow.git
synced 2026-03-22 01:44:23 -05:00
1152 lines
27 KiB
NASM
1152 lines
27 KiB
NASM
OaksLab_Script:
|
|
CheckEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS_2
|
|
call nz, OaksLabLoadTextPointers2Script
|
|
ld a, 1 << BIT_NO_AUTO_TEXT_BOX
|
|
ld [wAutoTextBoxDrawingControl], a
|
|
xor a
|
|
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
|
ld hl, OaksLab_ScriptPointers
|
|
ld a, [wOaksLabCurScript]
|
|
call CallFunctionInTable
|
|
ret
|
|
|
|
OaksLab_ScriptPointers:
|
|
def_script_pointers
|
|
dw_const OaksLabDefaultScript, SCRIPT_OAKSLAB_DEFAULT
|
|
dw_const OaksLabOakEntersLabScript, SCRIPT_OAKSLAB_OAK_ENTERS_LAB
|
|
dw_const OaksLabToggleOaksScript, SCRIPT_OAKSLAB_TOGGLE_OAKS
|
|
dw_const OaksLabPlayerEntersLabScript, SCRIPT_OAKSLAB_PLAYER_ENTERS_LAB
|
|
dw_const OaksLabFollowedOakScript, SCRIPT_OAKSLAB_FOLLOWED_OAK
|
|
dw_const OaksLabOakChooseMonSpeechScript, SCRIPT_OAKSLAB_OAK_CHOOSE_MON_SPEECH
|
|
dw_const OaksLabPlayerDontGoAwayScript, SCRIPT_OAKSLAB_PLAYER_DONT_GO_AWAY_SCRIPT
|
|
dw_const OaksLabPlayerForcedToWalkBackScript, SCRIPT_OAKSLAB_PLAYER_FORCED_TO_WALK_BACK_SCRIPT
|
|
dw_const OaksLabChoseStarterScript, SCRIPT_OAKSLAB_CHOSE_STARTER_SCRIPT
|
|
dw_const OaksLabRivalTakesPokeballScript, SCRIPT_OAKSLAB_RIVAL_TAKES_POKEBALL
|
|
dw_const OaksLabPlayerWalksToOakScript, SCRIPT_OAKSLAB_PLAYER_WALKS_TO_OAK
|
|
dw_const OaksLabPlayerReceivesPikachuScript, SCRIPT_OAKSLAB_PLAYER_RECEIVES_PIKACHU
|
|
dw_const OaksLabRivalChallengesPlayerScript, SCRIPT_OAKSLAB_RIVAL_CHALLENGES_PLAYER
|
|
dw_const OaksLabRivalStartBattleScript, SCRIPT_OAKSLAB_RIVAL_START_BATTLE
|
|
dw_const OaksLabRivalEndBattleScript, SCRIPT_OAKSLAB_RIVAL_END_BATTLE
|
|
dw_const OaksLabRivalStartsExitScript, SCRIPT_OAKSLAB_RIVAL_STARTS_EXIT
|
|
dw_const OaksLabPlayerWatchRivalExitScript, SCRIPT_OAKSLAB_PLAYER_WATCH_RIVAL_EXIT
|
|
dw_const OaksLabPikachuEscapesPokeballScript, SCRIPT_OAKSLAB_PIKACHU_ESCAPES_POKEBALL
|
|
dw_const OaksLabPikachuDislikesPokeballsScript, SCRIPT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS
|
|
dw_const OaksLabRivalArrivesAtOaksRequestScript, SCRIPT_OAKSLAB_RIVAL_ARRIVES_AT_OAKS_REQUEST
|
|
dw_const OaksLabOakGivesPokedexScript, SCRIPT_OAKSLAB_OAK_GIVES_POKEDEX
|
|
dw_const OaksLabRivalLeavesWithPokedexScript, SCRIPT_OAKSLAB_RIVAL_LEAVES_WITH_POKEDEX
|
|
dw_const OaksLabNoopScript, SCRIPT_OAKSLAB_NOOP
|
|
|
|
OaksLabDefaultScript:
|
|
CheckEvent EVENT_OAK_APPEARED_IN_PALLET
|
|
ret z
|
|
ld a, [wNPCMovementScriptFunctionNum]
|
|
and a
|
|
ret nz
|
|
ld a, TOGGLE_OAKS_LAB_OAK_2
|
|
ld [wToggleableObjectIndex], a
|
|
predef ShowObject
|
|
ld hl, wStatusFlags4
|
|
res BIT_NO_BATTLES, [hl]
|
|
|
|
ld a, SCRIPT_OAKSLAB_OAK_ENTERS_LAB
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabOakEntersLabScript:
|
|
ld a, OAKSLAB_OAK2
|
|
ldh [hSpriteIndex], a
|
|
ld de, OakEntryMovement
|
|
call MoveSprite
|
|
|
|
ld a, SCRIPT_OAKSLAB_TOGGLE_OAKS
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OakEntryMovement:
|
|
db NPC_MOVEMENT_UP
|
|
db NPC_MOVEMENT_UP
|
|
db NPC_MOVEMENT_UP
|
|
db -1 ; end
|
|
|
|
OaksLabToggleOaksScript:
|
|
ld a, [wStatusFlags5]
|
|
bit BIT_SCRIPTED_NPC_MOVEMENT, a
|
|
ret nz
|
|
ld a, TOGGLE_OAKS_LAB_OAK_2
|
|
ld [wToggleableObjectIndex], a
|
|
predef HideObject
|
|
ld a, TOGGLE_OAKS_LAB_OAK_1
|
|
ld [wToggleableObjectIndex], a
|
|
predef ShowObject
|
|
|
|
ld a, SCRIPT_OAKSLAB_PLAYER_ENTERS_LAB
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabPlayerEntersLabScript:
|
|
call Delay3
|
|
ld hl, wSimulatedJoypadStatesEnd
|
|
ld de, PlayerEntryMovementRLE
|
|
call DecodeRLEList
|
|
dec a
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
call StartSimulatingJoypadStates
|
|
ld a, OAKSLAB_RIVAL
|
|
ldh [hSpriteIndex], a
|
|
xor a
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld a, OAKSLAB_OAK1
|
|
ldh [hSpriteIndex], a
|
|
xor a
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
|
|
ld a, SCRIPT_OAKSLAB_FOLLOWED_OAK
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
PlayerEntryMovementRLE:
|
|
db PAD_UP, 8
|
|
db -1 ; end
|
|
|
|
OaksLabFollowedOakScript:
|
|
ld a, [wSimulatedJoypadStatesIndex]
|
|
and a
|
|
ret nz
|
|
SetEvent EVENT_FOLLOWED_OAK_INTO_LAB
|
|
SetEvent EVENT_FOLLOWED_OAK_INTO_LAB_2
|
|
ld a, OAKSLAB_RIVAL
|
|
ldh [hSpriteIndex], a
|
|
ld a, SPRITE_FACING_UP
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld hl, wStatusFlags7
|
|
res BIT_NO_MAP_MUSIC, [hl]
|
|
call PlayDefaultMusic
|
|
|
|
ld a, SCRIPT_OAKSLAB_OAK_CHOOSE_MON_SPEECH
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabOakChooseMonSpeechScript:
|
|
SetEvent EVENT_OAK_ASKED_TO_CHOOSE_MON
|
|
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
|
|
ld [wJoyIgnore], a
|
|
ld a, TEXT_OAKSLAB_RIVAL_FED_UP_WITH_WAITING
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
call Delay3
|
|
ld a, TEXT_OAKSLAB_OAK_CHOOSE_MON
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
call Delay3
|
|
ld a, $2
|
|
ld [wSprite01StateData1MovementStatus], a
|
|
ld a, SPRITE_FACING_UP
|
|
ld [wSprite01StateData1FacingDirection], a
|
|
ld a, TEXT_OAKSLAB_RIVAL_WHAT_ABOUT_ME
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
call Delay3
|
|
ld a, TEXT_OAKSLAB_OAK_BE_PATIENT
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
|
|
ld a, SCRIPT_OAKSLAB_PLAYER_DONT_GO_AWAY_SCRIPT
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabPlayerDontGoAwayScript:
|
|
ld a, [wYCoord]
|
|
cp 6
|
|
ret nz
|
|
ld a, OAKSLAB_OAK1
|
|
ldh [hSpriteIndex], a
|
|
xor a ; SPRITE_FACING_DOWN
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld a, OAKSLAB_RIVAL
|
|
ldh [hSpriteIndex], a
|
|
xor a
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
call UpdateSprites
|
|
ld a, TEXT_OAKSLAB_OAK_DONT_GO_AWAY_YET
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
ld a, $1
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
ld a, PAD_UP
|
|
ld [wSimulatedJoypadStatesEnd], a
|
|
call StartSimulatingJoypadStates
|
|
ld a, PLAYER_DIR_UP
|
|
ld [wPlayerMovingDirection], a
|
|
|
|
ld a, SCRIPT_OAKSLAB_PLAYER_FORCED_TO_WALK_BACK_SCRIPT
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabPlayerForcedToWalkBackScript:
|
|
ld a, [wSimulatedJoypadStatesIndex]
|
|
and a
|
|
ret nz
|
|
call Delay3
|
|
|
|
ld a, SCRIPT_OAKSLAB_PLAYER_DONT_GO_AWAY_SCRIPT
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabChoseStarterScript:
|
|
ld a, OAKSLAB_RIVAL
|
|
ldh [hSpriteIndex], a
|
|
ld de, .RivalPushesPlayerAwayFromEeveeBall
|
|
call MoveSprite
|
|
ld a, SCRIPT_OAKSLAB_RIVAL_TAKES_POKEBALL
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
.RivalPushesPlayerAwayFromEeveeBall
|
|
db $00
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $FF
|
|
|
|
OaksLabRivalTakesPokeballScript:
|
|
ld a, [wStatusFlags5]
|
|
bit BIT_SCRIPTED_NPC_MOVEMENT, a
|
|
jr nz, .asm_1c564
|
|
ld a, TOGGLE_STARTER_BALL_1
|
|
ld [wToggleableObjectIndex], a
|
|
predef HideObject
|
|
ld a, OAKSLAB_RIVAL
|
|
ldh [hSpriteIndex], a
|
|
ld a, SPRITE_FACING_UP
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld a, RIVAL_STARTER_JOLTEON
|
|
ld [wRivalStarter], a
|
|
ld a, EEVEE
|
|
ld [wNamedObjectIndex], a
|
|
call GetMonName
|
|
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
|
|
ld [wJoyIgnore], a
|
|
ld a, TEXT_OAKSLAB_RIVAL_RECEIVED_MON
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
|
|
ld a, SCRIPT_OAKSLAB_PLAYER_WALKS_TO_OAK
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
.asm_1c564
|
|
ld a, [wYCoord]
|
|
cp 4
|
|
ret nz
|
|
ld a, [wNPCNumScriptedSteps]
|
|
cp 1
|
|
ret nz
|
|
ld a, PLAYER_DIR_LEFT
|
|
ld [wPlayerMovingDirection], a
|
|
ld a, $2
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
ld a, PAD_RIGHT
|
|
ld [wSimulatedJoypadStatesEnd], a
|
|
ld [wSimulatedJoypadStatesEnd + 1], a
|
|
call StartSimulatingJoypadStates
|
|
ret
|
|
|
|
OaksLabPlayerWalksToOakScript:
|
|
ld a, [wYCoord]
|
|
cp 4
|
|
jr z, .asm_1c599
|
|
ld a, $1
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
ld a, PAD_LEFT
|
|
ld [wSimulatedJoypadStatesEnd], a
|
|
jr .asm_1c5a6
|
|
|
|
.asm_1c599
|
|
ld hl, wSimulatedJoypadStatesEnd
|
|
ld de, OaksLabRLE_PlayerWalksToOak
|
|
call DecodeRLEList
|
|
dec a
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
.asm_1c5a6
|
|
call StartSimulatingJoypadStates
|
|
ld a, SCRIPT_OAKSLAB_PLAYER_RECEIVES_PIKACHU
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabRLE_PlayerWalksToOak:
|
|
db PAD_UP, 2
|
|
db PAD_LEFT, 3
|
|
db PAD_DOWN, 1
|
|
db PAD_LEFT, 1
|
|
db $FF
|
|
|
|
OaksLabPlayerReceivesPikachuScript:
|
|
ld a, [wSimulatedJoypadStatesIndex]
|
|
and a
|
|
ret nz
|
|
ld a, TEXT_OAKSLAB_PLAYER_RECEIVED_MON
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
|
|
ld a, SCRIPT_OAKSLAB_RIVAL_CHALLENGES_PLAYER
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabRivalChallengesPlayerScript:
|
|
ld a, [wYCoord]
|
|
cp 6
|
|
ret nz
|
|
ld a, PLAYER_DIR_UP
|
|
ld [wPlayerMovingDirection], a
|
|
ld a, OAKSLAB_RIVAL
|
|
ldh [hSpriteIndex], a
|
|
xor a ; SPRITE_FACING_DOWN
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld c, BANK(Music_MeetRival)
|
|
ld a, MUSIC_MEET_RIVAL
|
|
call PlayMusic
|
|
ld a, TEXT_OAKSLAB_RIVAL_ILL_TAKE_YOU_ON
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
ld a, $1
|
|
ldh [hNPCPlayerRelativePosPerspective], a
|
|
ld a, $1
|
|
swap a
|
|
ldh [hNPCPlayerYDistance], a
|
|
predef CalcPositionOfPlayerRelativeToNPC
|
|
ldh a, [hNPCPlayerYDistance]
|
|
dec a
|
|
ldh [hNPCPlayerYDistance], a
|
|
predef FindPathToPlayer
|
|
ld de, wNPCMovementDirections2
|
|
ld a, OAKSLAB_RIVAL
|
|
ldh [hSpriteIndex], a
|
|
call MoveSprite
|
|
ld a, SCRIPT_OAKSLAB_RIVAL_START_BATTLE
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabRivalStartBattleScript:
|
|
ld a, [wStatusFlags5]
|
|
bit BIT_SCRIPTED_NPC_MOVEMENT, a
|
|
ret nz
|
|
|
|
ld a, OAKSLAB_RIVAL
|
|
ld [wSpriteIndex], a
|
|
call GetSpritePosition1
|
|
ld a, OPP_RIVAL1
|
|
ld [wCurOpponent], a
|
|
ld a, $1
|
|
ld [wTrainerNo], a
|
|
ld hl, OaksLabRivalIPickedTheWrongPokemonText
|
|
ld de, OaksLabRivalAmIGreatOrWhatText
|
|
call SaveEndBattleTextPointers
|
|
ld hl, wStatusFlags3
|
|
set BIT_TALKED_TO_TRAINER, [hl]
|
|
set BIT_PRINT_END_BATTLE_TEXT, [hl]
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld a, PLAYER_DIR_UP
|
|
ld [wPlayerMovingDirection], a
|
|
ld a, SCRIPT_OAKSLAB_RIVAL_END_BATTLE
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabRivalEndBattleScript:
|
|
ld a, PAD_BUTTONS | PAD_CTRL_PAD
|
|
ld [wJoyIgnore], a
|
|
|
|
; If you beat your rival here, his Eevee will evolve into
|
|
; Jolteon if you beat him on Route 22, or Flareon if you
|
|
; skip or lose that battle.
|
|
; Otherwise, it will evolve into Vaporeon.
|
|
ld a, [wBattleResult]
|
|
and a
|
|
ld b, RIVAL_STARTER_VAPOREON
|
|
jr nz, .got_rival_starter
|
|
ld b, RIVAL_STARTER_FLAREON
|
|
.got_rival_starter
|
|
ld a, b
|
|
ld [wRivalStarter], a
|
|
|
|
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
|
|
ld [wJoyIgnore], a
|
|
ld a, PLAYER_DIR_UP
|
|
ld [wPlayerMovingDirection], a
|
|
call UpdateSprites
|
|
ld a, OAKSLAB_RIVAL
|
|
ld [wSpriteIndex], a
|
|
call SetSpritePosition1
|
|
ld a, $2
|
|
ld [wSprite01StateData1MovementStatus], a
|
|
xor a
|
|
ld [wSprite01StateData1FacingDirection], a
|
|
predef HealParty
|
|
SetEvent EVENT_BATTLED_RIVAL_IN_OAKS_LAB
|
|
|
|
ld a, SCRIPT_OAKSLAB_RIVAL_STARTS_EXIT
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabRivalStartsExitScript:
|
|
ld c, 20
|
|
call DelayFrames
|
|
ld a, TEXT_OAKSLAB_RIVAL_SMELL_YOU_LATER
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
farcall Music_RivalAlternateStart
|
|
ld a, OAKSLAB_RIVAL
|
|
ldh [hSpriteIndex], a
|
|
ld de, .RivalExitMovement
|
|
call MoveSprite
|
|
ld a, [wXCoord]
|
|
cp 4
|
|
; move left or right depending on where the player is standing
|
|
jr nz, .moveLeft
|
|
ld a, NPC_MOVEMENT_RIGHT
|
|
jr .next
|
|
.moveLeft
|
|
ld a, NPC_MOVEMENT_LEFT
|
|
.next
|
|
ld [wNPCMovementDirections], a
|
|
|
|
ld a, SCRIPT_OAKSLAB_PLAYER_WATCH_RIVAL_EXIT
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
.RivalExitMovement
|
|
db NPC_CHANGE_FACING
|
|
db NPC_MOVEMENT_DOWN
|
|
db $04
|
|
db $04
|
|
db $04
|
|
db $04
|
|
db $04
|
|
db -1 ; end
|
|
|
|
OaksLabPlayerWatchRivalExitScript:
|
|
ld a, [wStatusFlags5]
|
|
bit BIT_SCRIPTED_NPC_MOVEMENT, a
|
|
jr nz, .checkRivalPosition
|
|
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
|
|
ld [wJoyIgnore], a
|
|
ld a, TOGGLE_OAKS_LAB_RIVAL
|
|
ld [wToggleableObjectIndex], a
|
|
predef HideObject
|
|
call PlayDefaultMusic
|
|
ld a, SCRIPT_OAKSLAB_PIKACHU_ESCAPES_POKEBALL
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
; make the player keep facing the rival as he walks away
|
|
.checkRivalPosition
|
|
ld a, [wNPCNumScriptedSteps]
|
|
cp $5
|
|
jr nz, .turnPlayerDown
|
|
ld a, [wXCoord]
|
|
cp 4
|
|
jr nz, .turnPlayerLeft
|
|
ld a, SPRITE_FACING_RIGHT
|
|
jr .done
|
|
.turnPlayerLeft
|
|
ld a, SPRITE_FACING_LEFT
|
|
jr .done
|
|
.turnPlayerDown
|
|
cp $4
|
|
ret nz
|
|
xor a ; ld a, SPRITE_FACING_DOWN
|
|
.done
|
|
ld [wSpritePlayerStateData1FacingDirection], a
|
|
ret
|
|
|
|
OaksLabPikachuEscapesPokeballScript:
|
|
; Pikachu comes out
|
|
ld a, SPRITE_FACING_UP
|
|
ld [wSpritePlayerStateData1FacingDirection], a
|
|
ld a, $2
|
|
ld [wPikachuSpawnState], a
|
|
farcall SchedulePikachuSpawnForAfterText
|
|
call EnablePikachuOverworldSpriteDrawing
|
|
ld a, TEXT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS1
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
ld a, SCRIPT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabPikachuDislikesPokeballsScript:
|
|
ld a, TEXT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS2
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld a, SCRIPT_OAKSLAB_NOOP
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabRivalArrivesAtOaksRequestScript:
|
|
xor a
|
|
ldh [hJoyHeld], a
|
|
call EnableAutoTextBoxDrawing
|
|
call StopAllMusic
|
|
farcall Music_RivalAlternateStart
|
|
ld a, TEXT_OAKSLAB_RIVAL_GRAMPS
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
callfar OaksLabPikachuMovementScript
|
|
call OaksLabCalcRivalMovementScript
|
|
ld a, TOGGLE_OAKS_LAB_RIVAL
|
|
ld [wToggleableObjectIndex], a
|
|
predef ShowObject
|
|
ld a, [wNPCMovementDirections2Index]
|
|
ld [wSavedNPCMovementDirections2Index], a
|
|
ld b, 0
|
|
ld c, a
|
|
ld hl, wNPCMovementDirections2
|
|
ld a, NPC_MOVEMENT_UP
|
|
call FillMemory
|
|
ld [hl], $ff
|
|
ld a, OAKSLAB_RIVAL
|
|
ldh [hSpriteIndex], a
|
|
ld de, wNPCMovementDirections2
|
|
call MoveSprite
|
|
|
|
ld a, SCRIPT_OAKSLAB_OAK_GIVES_POKEDEX
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabRivalFaceUpOakFaceDownScript:
|
|
ld a, OAKSLAB_RIVAL
|
|
ldh [hSpriteIndex], a
|
|
ld a, SPRITE_FACING_UP
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld a, OAKSLAB_OAK2
|
|
ldh [hSpriteIndex], a
|
|
xor a ; SPRITE_FACING_DOWN
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ret
|
|
|
|
OaksLabOakGivesPokedexScript:
|
|
ld a, [wStatusFlags5]
|
|
bit BIT_SCRIPTED_NPC_MOVEMENT, a
|
|
ret nz
|
|
call EnableAutoTextBoxDrawing
|
|
call PlayDefaultMusic
|
|
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
|
|
ld [wJoyIgnore], a
|
|
call OaksLabRivalFaceUpOakFaceDownScript
|
|
ld a, TEXT_OAKSLAB_RIVAL_MY_POKEMON_HAS_GROWN_STRONGER
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
call DelayFrame
|
|
call OaksLabRivalFaceUpOakFaceDownScript
|
|
ld a, TEXT_OAKSLAB_OAK_I_HAVE_A_REQUEST
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
call DelayFrame
|
|
call OaksLabRivalFaceUpOakFaceDownScript
|
|
ld a, TEXT_OAKSLAB_OAK_MY_INVENTION_POKEDEX
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
call DelayFrame
|
|
ld a, TEXT_OAKSLAB_OAK_GOT_POKEDEX
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
call Delay3
|
|
ld a, TOGGLE_POKEDEX_1
|
|
ld [wToggleableObjectIndex], a
|
|
predef HideObject
|
|
ld a, TOGGLE_POKEDEX_2
|
|
ld [wToggleableObjectIndex], a
|
|
predef HideObject
|
|
call OaksLabRivalFaceUpOakFaceDownScript
|
|
ld a, TEXT_OAKSLAB_OAK_THAT_WAS_MY_DREAM
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
ld a, OAKSLAB_RIVAL
|
|
ldh [hSpriteIndex], a
|
|
ld a, SPRITE_FACING_RIGHT
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
call Delay3
|
|
ld a, TEXT_OAKSLAB_RIVAL_LEAVE_IT_ALL_TO_ME
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
SetEvent EVENT_GOT_POKEDEX
|
|
ld a, SCRIPT_VIRIDIANCITY_AFTER_POKEDEX
|
|
ld [wViridianCityCurScript], a
|
|
SetEvent EVENT_OAK_GOT_PARCEL
|
|
ld a, TOGGLE_LYING_OLD_MAN
|
|
ld [wToggleableObjectIndex], a
|
|
predef HideObject
|
|
ld a, TOGGLE_OLD_MAN_2
|
|
ld [wToggleableObjectIndex], a
|
|
predef ShowObject
|
|
ld a, [wSavedNPCMovementDirections2Index]
|
|
ld b, 0
|
|
ld c, a
|
|
ld hl, wNPCMovementDirections2
|
|
xor a ; NPC_MOVEMENT_DOWN
|
|
call FillMemory
|
|
ld [hl], $ff
|
|
call StopAllMusic
|
|
farcall Music_RivalAlternateStart
|
|
ld a, OAKSLAB_RIVAL
|
|
ldh [hSpriteIndex], a
|
|
ld de, wNPCMovementDirections2
|
|
call MoveSprite
|
|
|
|
ld a, SCRIPT_OAKSLAB_RIVAL_LEAVES_WITH_POKEDEX
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabRivalLeavesWithPokedexScript:
|
|
ld a, [wStatusFlags5]
|
|
bit BIT_SCRIPTED_NPC_MOVEMENT, a
|
|
ret nz
|
|
call PlayDefaultMusic
|
|
ld a, TOGGLE_OAKS_LAB_RIVAL
|
|
ld [wToggleableObjectIndex], a
|
|
predef HideObject
|
|
SetEvent EVENT_1ST_ROUTE22_RIVAL_BATTLE
|
|
ResetEventReuseHL EVENT_2ND_ROUTE22_RIVAL_BATTLE
|
|
SetEventReuseHL EVENT_ROUTE22_RIVAL_WANTS_BATTLE
|
|
ld a, TOGGLE_ROUTE_22_RIVAL_1
|
|
ld [wToggleableObjectIndex], a
|
|
predef ShowObject
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
|
|
ld a, SCRIPT_OAKSLAB_NOOP
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabNoopScript:
|
|
ret
|
|
|
|
OaksLabScript_RemoveParcel:
|
|
ld hl, wBagItems
|
|
ld bc, 0
|
|
.loop
|
|
ld a, [hli]
|
|
cp $ff
|
|
ret z
|
|
cp OAKS_PARCEL
|
|
jr z, .foundParcel
|
|
inc hl
|
|
inc c
|
|
jr .loop
|
|
.foundParcel
|
|
ld hl, wNumBagItems
|
|
ld a, c
|
|
ld [wWhichPokemon], a
|
|
ld a, 1
|
|
ld [wItemQuantity], a
|
|
call RemoveItemFromInventory
|
|
ret
|
|
|
|
OaksLabCalcRivalMovementScript:
|
|
ld a, $7c
|
|
ldh [hSpriteScreenYCoord], a
|
|
ld a, 8
|
|
ldh [hSpriteMapXCoord], a
|
|
ld a, [wYCoord]
|
|
cp 3
|
|
jr nz, .not_below_oak
|
|
ld a, $4
|
|
ld [wNPCMovementDirections2Index], a
|
|
ld a, $30
|
|
ld b, 11
|
|
jr .done
|
|
.not_below_oak
|
|
cp 1
|
|
jr nz, .not_above_oak
|
|
ld a, $2
|
|
ld [wNPCMovementDirections2Index], a
|
|
ld a, $30
|
|
ld b, 9
|
|
jr .done
|
|
.not_above_oak
|
|
ld a, $3
|
|
ld [wNPCMovementDirections2Index], a
|
|
ld b, 10
|
|
ld a, [wXCoord]
|
|
cp 4
|
|
jr nz, .not_left_of_oak
|
|
ld a, $40
|
|
jr .done
|
|
.not_left_of_oak
|
|
ld a, $20
|
|
.done
|
|
ldh [hSpriteScreenXCoord], a
|
|
ld a, b
|
|
ldh [hSpriteMapYCoord], a
|
|
ld a, OAKSLAB_RIVAL
|
|
ld [wSpriteIndex], a
|
|
call SetSpritePosition1
|
|
ret
|
|
|
|
OaksLabLoadTextPointers2Script:
|
|
ld hl, OaksLab_TextPointers2
|
|
ld a, l
|
|
ld [wCurMapTextPtr], a
|
|
ld a, h
|
|
ld [wCurMapTextPtr + 1], a
|
|
ret
|
|
|
|
OaksLab_TextPointers:
|
|
def_text_pointers
|
|
dw_const OaksLabRivalText, TEXT_OAKSLAB_RIVAL
|
|
dw_const OaksLabEeveePokeBallText, TEXT_OAKSLAB_EEVEE_POKE_BALL
|
|
dw_const OaksLabOak1Text, TEXT_OAKSLAB_OAK1
|
|
dw_const OaksLabPokedexText, TEXT_OAKSLAB_POKEDEX1
|
|
dw_const OaksLabPokedexText, TEXT_OAKSLAB_POKEDEX2
|
|
dw_const OaksLabOak2Text, TEXT_OAKSLAB_OAK2
|
|
dw_const OaksLabGirlText, TEXT_OAKSLAB_GIRL
|
|
dw_const OaksLabScientistText, TEXT_OAKSLAB_SCIENTIST1
|
|
dw_const OaksLabScientistText, TEXT_OAKSLAB_SCIENTIST2
|
|
dw_const OaksLabOakDontGoAwayYetText, TEXT_OAKSLAB_OAK_DONT_GO_AWAY_YET
|
|
dw_const OaksLabRivalIllTakeYouOnText, TEXT_OAKSLAB_RIVAL_ILL_TAKE_YOU_ON
|
|
dw_const OaksLabRivalSmellYouLaterText, TEXT_OAKSLAB_RIVAL_SMELL_YOU_LATER
|
|
dw_const OaksLabRivalFedUpWithWaitingText, TEXT_OAKSLAB_RIVAL_FED_UP_WITH_WAITING
|
|
dw_const OaksLabOakChooseMonText, TEXT_OAKSLAB_OAK_CHOOSE_MON
|
|
dw_const OaksLabRivalWhatAboutMeText, TEXT_OAKSLAB_RIVAL_WHAT_ABOUT_ME
|
|
dw_const OaksLabOakBePatientText, TEXT_OAKSLAB_OAK_BE_PATIENT
|
|
dw_const OaksLabRivalReceivedMonText, TEXT_OAKSLAB_RIVAL_RECEIVED_MON
|
|
dw_const OaksLabPlayerReceivedMonText, TEXT_OAKSLAB_PLAYER_RECEIVED_MON
|
|
dw_const OaksLabRivalGrampsText, TEXT_OAKSLAB_RIVAL_GRAMPS
|
|
dw_const OaksLabRivalMyPokemonHasGrownStrongerText, TEXT_OAKSLAB_RIVAL_MY_POKEMON_HAS_GROWN_STRONGER
|
|
dw_const OaksLabOakIHaveARequestText, TEXT_OAKSLAB_OAK_I_HAVE_A_REQUEST
|
|
dw_const OaksLabOakMyInventionPokedexText, TEXT_OAKSLAB_OAK_MY_INVENTION_POKEDEX
|
|
dw_const OaksLabOakGotPokedexText, TEXT_OAKSLAB_OAK_GOT_POKEDEX
|
|
dw_const OaksLabOakThatWasMyDreamText, TEXT_OAKSLAB_OAK_THAT_WAS_MY_DREAM
|
|
dw_const OaksLabRivalLeaveItAllToMeText, TEXT_OAKSLAB_RIVAL_LEAVE_IT_ALL_TO_ME
|
|
dw_const OaksLabPikachuDislikesPokeballsText1, TEXT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS1
|
|
dw_const OaksLabPikachuDislikesPokeballsText2, TEXT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS2
|
|
|
|
OaksLab_TextPointers2:
|
|
dw OaksLabRivalText
|
|
dw OaksLabEeveePokeBallText
|
|
dw OaksLabOak1Text
|
|
dw OaksLabPokedexText
|
|
dw OaksLabPokedexText
|
|
dw OaksLabOak2Text
|
|
dw OaksLabGirlText
|
|
dw OaksLabScientistText
|
|
dw OaksLabScientistText
|
|
|
|
OaksLabRivalText:
|
|
text_asm
|
|
CheckEvent EVENT_FOLLOWED_OAK_INTO_LAB_2
|
|
jr nz, .beforeChooseMon
|
|
ld hl, .GrampsIsntAroundText
|
|
call PrintText
|
|
jr .done
|
|
.beforeChooseMon
|
|
CheckEventReuseA EVENT_GOT_STARTER
|
|
jr nz, .afterChooseMon
|
|
ld hl, .IllGetABetterPokemonThanYou
|
|
call PrintText
|
|
jr .done
|
|
.afterChooseMon
|
|
ld hl, .MyPokemonLooksStrongerText
|
|
call PrintText
|
|
.done
|
|
jp TextScriptEnd
|
|
|
|
.GrampsIsntAroundText:
|
|
text_far _OaksLabRivalGrampsIsntAroundText
|
|
text_end
|
|
|
|
.IllGetABetterPokemonThanYou:
|
|
text_far _OaksLabRivalIllGetABetterPokemonThanYou
|
|
text_end
|
|
|
|
.MyPokemonLooksStrongerText:
|
|
text_far _OaksLabRivalMyPokemonLooksStrongerText
|
|
text_end
|
|
|
|
OaksLabEeveePokeBallText:
|
|
text_asm
|
|
ld a, $1
|
|
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
|
CheckEvent EVENT_OAK_ASKED_TO_CHOOSE_MON
|
|
jr nz, OaksLabRivalExclamationScript
|
|
ld a, $0
|
|
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
|
ld hl, .Text
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
.Text:
|
|
text_far _OaksLabThatsAPokeball
|
|
text_end
|
|
|
|
OaksLabRivalExclamationScript:
|
|
ld a, OAKSLAB_RIVAL
|
|
ld [wEmotionBubbleSpriteIndex], a
|
|
xor a ; EXCLAMATION_BUBBLE
|
|
ld [wWhichEmotionBubble], a
|
|
predef EmotionBubble
|
|
ld a, SCRIPT_OAKSLAB_CHOSE_STARTER_SCRIPT
|
|
ld [wOaksLabCurScript], a
|
|
jp TextScriptEnd
|
|
|
|
OaksLabOak1Text:
|
|
text_asm
|
|
CheckEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS
|
|
jr nz, .already_got_poke_balls
|
|
ld hl, wPokedexOwned
|
|
ld b, wPokedexOwnedEnd - wPokedexOwned
|
|
call CountSetBits
|
|
ld a, [wNumSetBits]
|
|
cp 2
|
|
jr c, .check_for_poke_balls
|
|
.already_got_poke_balls
|
|
ld hl, .HowIsYourPokedexComingText
|
|
call PrintText
|
|
ld a, $1
|
|
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
|
predef DisplayDexRating
|
|
jp .done
|
|
.check_for_poke_balls
|
|
ld b, POKE_BALL
|
|
call IsItemInBag
|
|
jr nz, .come_see_me_sometimes
|
|
ld hl, wPokedexOwned
|
|
ld b, wPokedexOwnedEnd - wPokedexOwned
|
|
call CountSetBits
|
|
ld a, [wNumSetBits]
|
|
cp 2
|
|
jr nc, .come_see_me_sometimes
|
|
CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
|
|
jr nz, .give_poke_balls
|
|
CheckEvent EVENT_GOT_POKEDEX
|
|
jr nz, .mon_around_the_world
|
|
CheckEventReuseA EVENT_BATTLED_RIVAL_IN_OAKS_LAB
|
|
jr nz, .check_got_parcel
|
|
ld a, [wStatusFlags4]
|
|
bit BIT_GOT_STARTER, a
|
|
jr nz, .already_got_pokemon
|
|
ld hl, .GoAheadItsYours
|
|
call PrintText
|
|
jr .done
|
|
.already_got_pokemon
|
|
ld hl, .YourPokemonCanFightText
|
|
call PrintText
|
|
jr .done
|
|
.check_got_parcel
|
|
ld b, OAKS_PARCEL
|
|
call IsItemInBag
|
|
jr nz, .got_parcel
|
|
ld hl, .YouShouldTalkToIt
|
|
call PrintText
|
|
jr .done
|
|
.got_parcel
|
|
ld hl, .DeliverParcelText
|
|
call PrintText
|
|
call OaksLabScript_RemoveParcel
|
|
ld a, SCRIPT_OAKSLAB_RIVAL_ARRIVES_AT_OAKS_REQUEST
|
|
ld [wOaksLabCurScript], a
|
|
jr .done
|
|
.mon_around_the_world
|
|
ld hl, .PokemonAroundTheWorldText
|
|
call PrintText
|
|
jr .done
|
|
.give_poke_balls
|
|
CheckAndSetEvent EVENT_GOT_POKEBALLS_FROM_OAK
|
|
jr nz, .come_see_me_sometimes
|
|
lb bc, POKE_BALL, 5
|
|
call GiveItem
|
|
ld hl, .GivePokeballsText
|
|
call PrintText
|
|
jr .done
|
|
.come_see_me_sometimes
|
|
ld hl, .ComeSeeMeSometimesText
|
|
call PrintText
|
|
.done
|
|
jp TextScriptEnd
|
|
|
|
.GoAheadItsYours:
|
|
text_far _OaksLabOak1GoAheadItsYours
|
|
text_end
|
|
|
|
.YourPokemonCanFightText:
|
|
text_far _OaksLabOak1YourPokemonCanFightText
|
|
text_end
|
|
|
|
.YouShouldTalkToIt:
|
|
text_far _OaksLabOak1YouShouldTalkToIt
|
|
text_end
|
|
|
|
.DeliverParcelText:
|
|
text_far _OaksLabOak1DeliverParcelText
|
|
sound_get_key_item
|
|
text_far _OaksLabOak1ParcelThanksText
|
|
text_end
|
|
|
|
.PokemonAroundTheWorldText:
|
|
text_far _OaksLabOak1PokemonAroundTheWorldText
|
|
text_end
|
|
|
|
.GivePokeballsText:
|
|
text_far _OaksLabOak1ReceivedPokeballsText
|
|
sound_get_key_item
|
|
text_far _OaksLabGivePokeballsExplanationText
|
|
text_end
|
|
|
|
.ComeSeeMeSometimesText:
|
|
text_far _OaksLabOak1ComeSeeMeSometimesText
|
|
text_end
|
|
|
|
.HowIsYourPokedexComingText:
|
|
text_far _OaksLabOak1HowIsYourPokedexComingText
|
|
text_end
|
|
|
|
OaksLabPokedexText:
|
|
text_asm
|
|
ld hl, .Text
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
.Text:
|
|
text_far _OaksLabPokedexText
|
|
text_end
|
|
|
|
OaksLabOak2Text:
|
|
text_far _OaksLabOak2Text
|
|
text_end
|
|
|
|
OaksLabGirlText:
|
|
text_asm
|
|
ld hl, .Text
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
.Text:
|
|
text_far _OaksLabGirlText
|
|
text_end
|
|
|
|
OaksLabRivalFedUpWithWaitingText:
|
|
text_asm
|
|
ld hl, .Text
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
.Text:
|
|
text_far _OaksLabRivalFedUpWithWaitingText
|
|
text_end
|
|
|
|
OaksLabOakChooseMonText:
|
|
text_asm
|
|
ld hl, .Text
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
.Text:
|
|
text_far _OaksLabOakChooseMonText
|
|
text_end
|
|
|
|
OaksLabRivalWhatAboutMeText:
|
|
text_asm
|
|
ld hl, .Text
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
.Text:
|
|
text_far _OaksLabRivalWhatAboutMeText
|
|
text_end
|
|
|
|
OaksLabOakBePatientText:
|
|
text_asm
|
|
ld hl, .Text
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
.Text:
|
|
text_far _OaksLabOakBePatientText
|
|
text_end
|
|
|
|
OaksLabRivalReceivedMonText:
|
|
text_asm
|
|
ld hl, OaksLabRivalTakesText1
|
|
call PrintText
|
|
ld hl, OaksLabRivalTakesText2
|
|
call PrintText
|
|
ld hl, OaksLabRivalTakesText3
|
|
call PrintText
|
|
ld hl, OaksLabRivalTakesText4
|
|
call PrintText
|
|
ld hl, OaksLabRivalTakesText5
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
OaksLabRivalTakesText1:
|
|
text_far _OaksLabRivalTakesText1
|
|
text_end
|
|
|
|
OaksLabRivalTakesText2:
|
|
text_far _OaksLabRivalTakesText2
|
|
sound_get_key_item
|
|
text_end
|
|
|
|
OaksLabRivalTakesText3:
|
|
text_far _OaksLabRivalTakesText3
|
|
text_end
|
|
|
|
OaksLabRivalTakesText4:
|
|
text_far _OaksLabRivalTakesText4
|
|
text_end
|
|
|
|
OaksLabRivalTakesText5:
|
|
text_far _OaksLabRivalTakesText5
|
|
text_end
|
|
|
|
OaksLabPlayerReceivedMonText:
|
|
text_asm
|
|
ld a, STARTER_PIKACHU
|
|
ld [wPlayerStarter], a
|
|
ld [wNamedObjectIndex], a
|
|
call GetMonName
|
|
ld a, $1
|
|
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
|
ld hl, OaksLabOakGivesText
|
|
call PrintText
|
|
ld hl, OaksLabReceivedText
|
|
call PrintText
|
|
xor a
|
|
ld [wMonDataLocation], a
|
|
ld a, 5
|
|
ld [wCurEnemyLevel], a
|
|
ld a, STARTER_PIKACHU
|
|
ld [wPokedexNum], a
|
|
ld [wCurPartySpecies], a
|
|
call AddPartyMon
|
|
ld a, LIGHT_BALL_GSC
|
|
ld [wPartyMon1CatchRate], a
|
|
call DisablePikachuOverworldSpriteDrawing
|
|
SetEvent EVENT_GOT_STARTER
|
|
ld hl, wStatusFlags4
|
|
set BIT_GOT_STARTER, [hl]
|
|
jp TextScriptEnd
|
|
|
|
OaksLabOakGivesText:
|
|
text_far _OaksLabOakGivesText
|
|
text_end
|
|
|
|
OaksLabReceivedText:
|
|
text_far _OaksLabReceivedText
|
|
sound_get_key_item
|
|
text_end
|
|
|
|
OaksLabOakDontGoAwayYetText:
|
|
text_asm
|
|
ld hl, .Text
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
.Text:
|
|
text_far _OaksLabOakDontGoAwayYetText
|
|
text_end
|
|
|
|
OaksLabRivalIllTakeYouOnText:
|
|
text_asm
|
|
ld hl, .Text
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
.Text:
|
|
text_far _OaksLabRivalIllTakeYouOnText
|
|
text_end
|
|
|
|
OaksLabRivalIPickedTheWrongPokemonText:
|
|
text_far _OaksLabRivalIPickedTheWrongPokemonText
|
|
text_end
|
|
|
|
OaksLabRivalAmIGreatOrWhatText:
|
|
text_far _OaksLabRivalAmIGreatOrWhatText
|
|
text_end
|
|
|
|
OaksLabRivalSmellYouLaterText:
|
|
text_asm
|
|
ld hl, .Text
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
.Text:
|
|
text_far _OaksLabRivalSmellYouLaterText
|
|
text_end
|
|
|
|
OaksLabPikachuDislikesPokeballsText1:
|
|
text_asm
|
|
ldpikacry e, PikachuCry2
|
|
callfar PlayPikachuSoundClip
|
|
ld hl, .Text
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
.Text:
|
|
text_far _OaksLabPikachuDislikesPokeballsText1
|
|
text_end
|
|
|
|
OaksLabPikachuDislikesPokeballsText2:
|
|
text_asm
|
|
ld hl, .Text
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
.Text:
|
|
text_far _OaksLabPikachuDislikesPokeballsText2
|
|
text_end
|
|
|
|
OaksLabRivalGrampsText:
|
|
text_far _OaksLabRivalGrampsText
|
|
text_end
|
|
|
|
OaksLabRivalMyPokemonHasGrownStrongerText:
|
|
text_far _OaksLabRivalMyPokemonHasGrownStrongerText
|
|
text_end
|
|
|
|
OaksLabOakIHaveARequestText:
|
|
text_far _OaksLabOakIHaveARequestText
|
|
text_end
|
|
|
|
OaksLabOakMyInventionPokedexText:
|
|
text_far _OaksLabOakMyInventionPokedexText
|
|
text_end
|
|
|
|
OaksLabOakGotPokedexText:
|
|
text_far _OaksLabOakGotPokedexText
|
|
sound_get_key_item
|
|
text_end
|
|
|
|
OaksLabOakThatWasMyDreamText:
|
|
text_far _OaksLabOakThatWasMyDreamText
|
|
text_end
|
|
|
|
OaksLabRivalLeaveItAllToMeText:
|
|
text_far _OaksLabRivalLeaveItAllToMeText
|
|
text_end
|
|
|
|
OaksLabScientistText:
|
|
text_asm
|
|
ld hl, .Text
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
.Text:
|
|
text_far _OaksLabScientistText
|
|
text_end
|