mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-09-17 02:40:50 +12:00

This commit fixes the following bugs: - A guy in Celadon University was stuck in a tree due to being placed on the wrong tile. - It was possible to walk out of bounds in Mt. Moon Crater due to buggy collision near the bottom of the map - Hi Jump Kick had a slightly glitched animation - It was possible to walk into a specific rock in both Cerulean Cave and Garnet Cavern. This was a vanilla bug too, but I'm fixing it proper now. - There was no signpost outside Bill's Lighthouse where there should've been. - Fixed two errors in the README - The Fissure TM was not purchasable at the Citrine Rocket house - Even if you had picked one of the original starters, you could still get the Charmander and Squirtle gifts as the NPCs would show up regardless. - Trying to get the Squirtle gift with a full party and box would lock you out from getting it - Fixed a text issue in Celadon Uni where the professor states the wrong TM - Fixed two text issues in Silph Co
1401 lines
26 KiB
NASM
1401 lines
26 KiB
NASM
OaksLab_Script:
|
|
CheckEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS_2
|
|
call nz, OaksLabScript_1d076
|
|
ld a, TRUE
|
|
ld [wAutoTextBoxDrawingControl], a
|
|
xor a
|
|
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
|
ld hl, OaksLab_ScriptPointers
|
|
ld a, [wOaksLabCurScript]
|
|
jp CallFunctionInTable
|
|
|
|
OaksLab_ScriptPointers:
|
|
dw OaksLabScript0
|
|
dw OaksLabScript1
|
|
dw OaksLabScript2
|
|
dw OaksLabScript3
|
|
dw OaksLabScript4
|
|
dw OaksLabScript5
|
|
dw OaksLabScript6
|
|
dw OaksLabScript7
|
|
dw OaksLabScript8
|
|
dw OaksLabScript9
|
|
dw OaksLabScript10
|
|
dw OaksLabScript11
|
|
dw OaksLabScript12
|
|
dw OaksLabScript13
|
|
dw OaksLabScript14
|
|
dw OaksLabScript15
|
|
dw OaksLabScript16
|
|
dw OaksLabScript17
|
|
dw OaksLabScript18
|
|
|
|
OaksLabScript0:
|
|
CheckEvent EVENT_OAK_APPEARED_IN_PALLET
|
|
ret z
|
|
ld a, [wNPCMovementScriptFunctionNum]
|
|
and a
|
|
ret nz
|
|
ld a, HS_OAKS_LAB_OAK_2
|
|
ld [wMissableObjectIndex], a
|
|
predef ShowObject
|
|
ld hl, wd72e
|
|
res 4, [hl]
|
|
|
|
ld a, $1
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabScript1:
|
|
ld a, $6 ; accounting for the dex entities being removed
|
|
ldh [hSpriteIndex], a
|
|
ld de, OakEntryMovement
|
|
call MoveSprite
|
|
|
|
ld a, $2
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OakEntryMovement:
|
|
db NPC_MOVEMENT_UP
|
|
db NPC_MOVEMENT_UP
|
|
db NPC_MOVEMENT_UP
|
|
db -1 ; end
|
|
|
|
OaksLabScript2:
|
|
ld a, [wd730]
|
|
bit 0, a
|
|
ret nz
|
|
ld a, HS_OAKS_LAB_OAK_2
|
|
ld [wMissableObjectIndex], a
|
|
predef HideObject
|
|
ld a, HS_OAKS_LAB_OAK_1
|
|
ld [wMissableObjectIndex], a
|
|
predef ShowObject
|
|
|
|
ld a, $3
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabScript3:
|
|
call Delay3
|
|
ld hl, wSimulatedJoypadStatesEnd
|
|
ld de, PlayerEntryMovementRLE
|
|
call DecodeRLEList
|
|
dec a
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
call StartSimulatingJoypadStates
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
xor a
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld a, $5
|
|
ldh [hSpriteIndex], a
|
|
xor a
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
|
|
ld a, $4
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
PlayerEntryMovementRLE:
|
|
db D_UP, 7
|
|
db -1 ; end
|
|
|
|
OaksLabScript4:
|
|
ld a, [wSimulatedJoypadStatesIndex]
|
|
and a
|
|
ret nz
|
|
SetEvent EVENT_FOLLOWED_OAK_INTO_LAB
|
|
SetEvent EVENT_FOLLOWED_OAK_INTO_LAB_2
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
ld a, SPRITE_FACING_UP
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
call UpdateSprites
|
|
ld hl, wFlags_D733
|
|
res 1, [hl]
|
|
call DelayFrame
|
|
call PlayDefaultMusic
|
|
|
|
ld a, $5
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabScript5:
|
|
ld a, $fc
|
|
ld [wJoyIgnore], a
|
|
ld a, $11
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
call Delay3
|
|
ld a, $12
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
call Delay3
|
|
ld a, $13
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
call Delay3
|
|
ld a, $14
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
SetEvent EVENT_OAK_ASKED_TO_CHOOSE_MON
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
|
|
ld a, $6
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabScript6:
|
|
ld a, [wYCoord]
|
|
cp 6
|
|
ret nz
|
|
ld a, $5
|
|
ldh [hSpriteIndex], a
|
|
xor a ; SPRITE_FACING_DOWN
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
xor a
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
call UpdateSprites
|
|
ld a, $c
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
ld a, $1
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
ld a, D_UP
|
|
ld [wSimulatedJoypadStatesEnd], a
|
|
call StartSimulatingJoypadStates
|
|
ld a, PLAYER_DIR_UP
|
|
ld [wPlayerMovingDirection], a
|
|
|
|
ld a, $7
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabScript7:
|
|
ld a, [wSimulatedJoypadStatesIndex]
|
|
and a
|
|
ret nz
|
|
call Delay3
|
|
|
|
ld a, $6
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabScript8:
|
|
ld a, [wPlayerStarter]
|
|
cp STARTER1
|
|
jr z, .Charmander
|
|
cp STARTER2
|
|
jr z, .Squirtle
|
|
cp STARTER3
|
|
jr z, .Bulbasaur ; yes process of elimination is necessary.
|
|
cp STARTER4
|
|
jr z, .Pikachu
|
|
cp STARTER5
|
|
jr z, .Eevee
|
|
|
|
.Charmander
|
|
ld de, .MiddleBallMovement1
|
|
ld a, [wYCoord]
|
|
cp 4 ; is the player standing below the table?
|
|
jr z, .moveBlue
|
|
ld de, .MiddleBallMovement2
|
|
jp .moveBlue
|
|
|
|
.MiddleBallMovement1
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_UP
|
|
db -1 ; end
|
|
|
|
.MiddleBallMovement2
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db -1 ; end
|
|
|
|
.Squirtle
|
|
ld de, .RightBallMovement1
|
|
ld a, [wYCoord]
|
|
cp 4 ; is the player standing below the table?
|
|
jr z, .moveBlue
|
|
ld de, .RightBallMovement2
|
|
jp .moveBlue
|
|
|
|
.RightBallMovement1
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_UP
|
|
db -1 ; end
|
|
|
|
.RightBallMovement2
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db -1 ; end
|
|
|
|
.Bulbasaur
|
|
ld de, .LeftBallMovement
|
|
ld a, [wXCoord]
|
|
cp 9 ; is the player standing to the right of the table?
|
|
jr nz, .moveBlue
|
|
push hl
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
ld a, SPRITESTATEDATA1_YPIXELS
|
|
ldh [hSpriteDataOffset], a
|
|
call GetPointerWithinSpriteStateData1
|
|
push hl
|
|
ld [hl], $4c ; SPRITESTATEDATA1_YPIXELS
|
|
inc hl
|
|
inc hl
|
|
ld [hl], $0 ; SPRITESTATEDATA1_XPIXELS
|
|
pop hl
|
|
inc h
|
|
ld [hl], 8 ; SPRITESTATEDATA2_MAPY
|
|
inc hl
|
|
ld [hl], 9 ; SPRITESTATEDATA2_MAPX
|
|
ld de, .LeftBallMovement ; the rival is not currently onscreen, so account for that
|
|
pop hl
|
|
jp .moveBlue
|
|
|
|
.LeftBallMovement ; with the new layout, LeftBallMovement2 seems unnecessary and can merely be proc'd twice.
|
|
db NPC_MOVEMENT_RIGHT ; if he picks bulbasaur
|
|
db NPC_MOVEMENT_RIGHT
|
|
db -1 ; end
|
|
|
|
|
|
.Pikachu
|
|
ld de, .PikachuMovement1
|
|
jr z, .moveBlue
|
|
.PikachuMovement1
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_DOWN
|
|
db -1 ; end
|
|
|
|
.Eevee
|
|
ld de, .EeveeMovement1
|
|
; ld a, [wYCoord]
|
|
; cp 4 ; is the player standing below the table?
|
|
; jr z, .moveBlue
|
|
; ld de, .EeveeMovement2
|
|
jp .moveBlue
|
|
.EeveeMovement1
|
|
; db NPC_MOVEMENT_DOWN
|
|
; db NPC_MOVEMENT_LEFT
|
|
; db NPC_MOVEMENT_LEFT
|
|
; db NPC_MOVEMENT_UP
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_DOWN
|
|
db -1 ; end
|
|
;.EeveeMovement2
|
|
; db NPC_MOVEMENT_LEFT
|
|
; db NPC_MOVEMENT_LEFT
|
|
db -1 ; end
|
|
|
|
.moveBlue
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
call MoveSprite
|
|
|
|
ld a, $9
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabScript9: ; This is where Blue picks up the ball and removes the sprite.
|
|
ld a, [wd730]
|
|
bit 0, a
|
|
ret nz
|
|
ld a, $fc
|
|
ld [wJoyIgnore], a
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
|
|
; So when using this new table system, we actually need to add cases for when you have the new starters...
|
|
|
|
ld a, [wPlayerStarter]
|
|
cp STARTER4
|
|
jr z, .skip
|
|
cp STARTER5
|
|
jr z, .skip
|
|
; Since he's just moved down, we just need to skip this process. It's actually harder for him to pick up the regular starters!
|
|
ld a, SPRITE_FACING_UP
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
.skip
|
|
|
|
ld a, $d
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
ld a, [wRivalStarterBallSpriteIndex]
|
|
cp $2
|
|
jr nz, .rivalDidNotChoseBall1
|
|
ld a, HS_STARTER_BALL_1
|
|
jr .hideBallAndContinue
|
|
.rivalDidNotChoseBall1
|
|
cp $3
|
|
jr nz, .rivalChoseBall3
|
|
ld a, HS_STARTER_BALL_2
|
|
jr .hideBallAndContinue
|
|
.rivalChoseBall3
|
|
cp $4
|
|
jr nz, .rivalDidNotChoseBall3
|
|
ld a, HS_STARTER_BALL_3
|
|
jr .hideBallAndContinue
|
|
.rivalDidNotChoseBall3
|
|
cp $7
|
|
jr nz, .rivalDidNotChoseBall4
|
|
ld a, HS_STARTER_BALL_4
|
|
ld a, HS_DAMIEN ; This makes the starter gifts show up if you and your rival picked Pikachu and Eevee. It used to be coded differently but for some reason they still showed up if you picked Charmander or Squirtle, so I had to change it.
|
|
ld [wMissableObjectIndex], a
|
|
predef ShowObject
|
|
ld a, HS_VERMILION_JENNY
|
|
ld [wMissableObjectIndex], a
|
|
predef ShowObject
|
|
jr .hideBallAndContinue
|
|
.rivalDidNotChoseBall4
|
|
ld a, HS_STARTER_BALL_5
|
|
ld a, HS_DAMIEN
|
|
ld [wMissableObjectIndex], a
|
|
predef ShowObject
|
|
ld a, HS_VERMILION_JENNY
|
|
ld [wMissableObjectIndex], a
|
|
predef ShowObject
|
|
jr .hideBallAndContinue
|
|
.hideBallAndContinue
|
|
ld [wMissableObjectIndex], a
|
|
predef HideObject
|
|
call Delay3
|
|
ld a, [wRivalStarterTemp]
|
|
ld [wRivalStarter], a
|
|
ld [wcf91], a
|
|
ld [wd11e], a
|
|
call GetMonName
|
|
|
|
; why does he do this twice why does he do this twice why does he do this twice
|
|
ld a, [wPlayerStarter]
|
|
cp STARTER4
|
|
jr z, .skip2
|
|
cp STARTER5
|
|
jr z, .skip2
|
|
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
ld a, SPRITE_FACING_UP
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
|
|
.skip2
|
|
ld a, $e
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
SetEvent EVENT_GOT_STARTER
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
|
|
ld a, $a
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabScript10:
|
|
ld a, [wYCoord]
|
|
cp 6
|
|
ret nz
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
xor a ; SPRITE_FACING_DOWN
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld a, PLAYER_DIR_UP
|
|
ld [wPlayerMovingDirection], a
|
|
ld c, 0 ; BANK(Music_MeetRival)
|
|
ld a, MUSIC_MEET_RIVAL
|
|
call PlayMusic
|
|
ld a, $f
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
ld a, $1
|
|
ldh [hNPCPlayerRelativePosPerspective], a
|
|
ld a, $1
|
|
swap a
|
|
ldh [hNPCSpriteOffset], a
|
|
predef CalcPositionOfPlayerRelativeToNPC
|
|
ldh a, [hNPCPlayerYDistance]
|
|
dec a
|
|
ldh [hNPCPlayerYDistance], a
|
|
predef FindPathToPlayer
|
|
ld de, wNPCMovementDirections2
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
call MoveSprite
|
|
|
|
ld a, $b
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabScript11:
|
|
ld a, [wd730]
|
|
bit 0, a
|
|
ret nz
|
|
|
|
; define which team rival uses, and fight it, by process of elimination
|
|
ld a, 1
|
|
ld [wIsTrainerBattle], a
|
|
ld a, OPP_RIVAL1
|
|
ld [wCurOpponent], a
|
|
ld a, [wRivalStarter]
|
|
cp STARTER2 ; charmander
|
|
jr nz, .NotSquirtle
|
|
ld a, $1 ; squirtle
|
|
jr .done
|
|
.NotSquirtle
|
|
cp STARTER3 ; bulbasaur
|
|
jr nz, .Charmander
|
|
ld a, $2 ; bulbasaur
|
|
jr .done
|
|
.Charmander
|
|
cp STARTER1 ; changes start here
|
|
jr nz, .Pikachu
|
|
ld a, $3 ; charmander
|
|
jr .done
|
|
.Pikachu ;
|
|
cp STARTER5
|
|
ld a, $4
|
|
jr nz, .Eevee
|
|
jr .done
|
|
.Eevee
|
|
ld a, $5
|
|
jr .done ; new code ends here. use as ref for oak.
|
|
|
|
.done
|
|
ld [wTrainerNo], a
|
|
ld a, $1
|
|
ld [wSpriteIndex], a
|
|
call GetSpritePosition1
|
|
ld hl, OaksLabText_1d3be
|
|
ld de, OaksLabText_1d3c3
|
|
call SaveEndBattleTextPointers
|
|
ld hl, wd72d
|
|
set 6, [hl]
|
|
set 7, [hl]
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld a, PLAYER_DIR_UP
|
|
ld [wPlayerMovingDirection], a
|
|
ld a, $c
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabScript12:
|
|
xor a
|
|
ld [wIsTrainerBattle], a
|
|
ld a, $f0
|
|
ld [wJoyIgnore], a
|
|
ld a, PLAYER_DIR_UP
|
|
ld [wPlayerMovingDirection], a
|
|
call UpdateSprites
|
|
ld a, $1
|
|
ld [wSpriteIndex], a
|
|
call SetSpritePosition1
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
xor a ; SPRITE_FACING_DOWN
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
predef HealParty
|
|
SetEvent EVENT_BATTLED_RIVAL_IN_OAKS_LAB
|
|
|
|
ld a, $d
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabScript13:
|
|
ld c, 20
|
|
call DelayFrames
|
|
ld a, $10
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
farcall Music_RivalAlternateStart
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
ld de, .RivalExitMovement
|
|
call MoveSprite
|
|
ld a, [wXCoord]
|
|
cp 6
|
|
; 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, $e
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
.RivalExitMovement
|
|
db NPC_CHANGE_FACING
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db -1 ; end
|
|
|
|
OaksLabScript14:
|
|
ld a, [wd730]
|
|
bit 0, a
|
|
jr nz, .checkRivalPosition
|
|
ld a, HS_OAKS_LAB_RIVAL
|
|
ld [wMissableObjectIndex], a
|
|
predef HideObject
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
call PlayDefaultMusic ; reset to map music
|
|
ld a, $12
|
|
ld [wOaksLabCurScript], a
|
|
jr .done
|
|
; 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
|
|
ld [wSpritePlayerStateData1FacingDirection], a
|
|
jr .done
|
|
.turnPlayerLeft
|
|
ld a, SPRITE_FACING_LEFT
|
|
ld [wSpritePlayerStateData1FacingDirection], a
|
|
jr .done
|
|
.turnPlayerDown
|
|
cp $4
|
|
ret nz
|
|
xor a ; ld a, SPRITE_FACING_DOWN
|
|
ld [wSpritePlayerStateData1FacingDirection], a
|
|
.done
|
|
ret
|
|
|
|
OaksLabScript15:
|
|
xor a
|
|
ldh [hJoyHeld], a
|
|
call EnableAutoTextBoxDrawing
|
|
ld a, SFX_STOP_ALL_MUSIC
|
|
; ld [wNewSoundID], a
|
|
call PlaySound
|
|
farcall Music_RivalAlternateStart
|
|
ld a, $15
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
call OaksLabScript_1d02b
|
|
ld a, HS_OAKS_LAB_RIVAL
|
|
ld [wMissableObjectIndex], 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, $1
|
|
ldh [hSpriteIndex], a
|
|
ld de, wNPCMovementDirections2
|
|
call MoveSprite
|
|
|
|
ld a, $10
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabScript_1cefd:
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
ld a, SPRITE_FACING_UP
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld a, $8
|
|
ldh [hSpriteIndex], a
|
|
xor a ; SPRITE_FACING_DOWN
|
|
ldh [hSpriteFacingDirection], a
|
|
jp SetSpriteFacingDirectionAndDelay
|
|
|
|
OaksLabScript16:
|
|
ld a, [wd730]
|
|
bit 0, a
|
|
ret nz
|
|
call EnableAutoTextBoxDrawing
|
|
call PlayDefaultMusic
|
|
ld a, $fc
|
|
ld [wJoyIgnore], a
|
|
call OaksLabScript_1cefd
|
|
ld a, $16
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
call DelayFrame
|
|
call OaksLabScript_1cefd
|
|
ld a, $17
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
call DelayFrame
|
|
call OaksLabScript_1cefd
|
|
ld a, $18
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
call DelayFrame
|
|
ld a, $19
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
call Delay3
|
|
;ld a, HS_POKEDEX_1; sprite limits
|
|
;ld [wMissableObjectIndex], a
|
|
;predef HideObject
|
|
;ld a, HS_POKEDEX_2
|
|
;ld [wMissableObjectIndex], a
|
|
;predef HideObject
|
|
call OaksLabScript_1cefd
|
|
ld a, $1a
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
ld a, SPRITE_FACING_RIGHT
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
call Delay3
|
|
ld a, $1b
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
SetEvent EVENT_GOT_POKEDEX
|
|
SetEvent EVENT_OAK_GOT_PARCEL
|
|
ld a, HS_LYING_OLD_MAN
|
|
ld [wMissableObjectIndex], a
|
|
predef HideObject
|
|
ld a, HS_OLD_MAN
|
|
ld [wMissableObjectIndex], 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
|
|
ld a, SFX_STOP_ALL_MUSIC
|
|
; ld [wNewSoundID], a
|
|
call PlaySound
|
|
farcall Music_RivalAlternateStart
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
ld de, wNPCMovementDirections2
|
|
call MoveSprite
|
|
|
|
ld a, $11
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabScript17:
|
|
ld a, [wd730]
|
|
bit 0, a
|
|
ret nz
|
|
call PlayDefaultMusic
|
|
ld a, HS_OAKS_LAB_RIVAL
|
|
ld [wMissableObjectIndex], a
|
|
predef HideObject
|
|
SetEvent EVENT_1ST_ROUTE22_RIVAL_BATTLE
|
|
ResetEventReuseHL EVENT_2ND_ROUTE22_RIVAL_BATTLE
|
|
SetEventReuseHL EVENT_ROUTE22_RIVAL_WANTS_BATTLE
|
|
ld a, HS_ROUTE_22_RIVAL_1
|
|
ld [wMissableObjectIndex], a
|
|
predef ShowObject
|
|
ld a, $5
|
|
ld [wPalletTownCurScript], a
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
|
|
ld a, $12
|
|
ld [wOaksLabCurScript], a
|
|
ret
|
|
|
|
OaksLabScript18:
|
|
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
|
|
jp RemoveItemFromInventory
|
|
|
|
OaksLabScript_1d02b:
|
|
ld a, $7c
|
|
ldh [hSpriteScreenYCoord], a
|
|
ld a, 10
|
|
ldh [hSpriteMapXCoord], a
|
|
ld a, [wYCoord]
|
|
cp 3
|
|
jr nz, .asm_1d045
|
|
ld a, $4
|
|
ld [wNPCMovementDirections2Index], a
|
|
ld a, $30
|
|
ld b, 11
|
|
jr .asm_1d068
|
|
.asm_1d045
|
|
cp 1
|
|
jr nz, .asm_1d054
|
|
ld a, $2
|
|
ld [wNPCMovementDirections2Index], a
|
|
ld a, $30
|
|
ld b, 9
|
|
jr .asm_1d068
|
|
.asm_1d054
|
|
ld a, $3
|
|
ld [wNPCMovementDirections2Index], a
|
|
ld b, 10
|
|
ld a, [wXCoord]
|
|
cp 4
|
|
jr nz, .asm_1d066
|
|
ld a, $40
|
|
jr .asm_1d068
|
|
.asm_1d066
|
|
ld a, $20
|
|
.asm_1d068
|
|
ldh [hSpriteScreenXCoord], a
|
|
ld a, b
|
|
ldh [hSpriteMapYCoord], a
|
|
ld a, $1
|
|
ld [wSpriteIndex], a
|
|
call SetSpritePosition1
|
|
ret
|
|
|
|
OaksLabScript_1d076:
|
|
ld hl, OaksLab_TextPointers2
|
|
ld a, l
|
|
ld [wMapTextPtr], a
|
|
ld a, h
|
|
ld [wMapTextPtr + 1], a
|
|
ret
|
|
|
|
OaksLab_TextPointers:
|
|
dw OaksLabText1
|
|
dw OaksLabText2
|
|
dw OaksLabText3
|
|
dw OaksLabText4
|
|
dw OaksLabText5
|
|
dw OaksLabText6
|
|
dw OaksLabText7
|
|
dw OaksLabText8
|
|
dw OaksLabText9
|
|
dw OaksLabText10
|
|
dw OaksLabText11
|
|
dw OaksLabText12
|
|
dw OaksLabText13
|
|
dw OaksLabText14
|
|
dw OaksLabText15
|
|
dw OaksLabText16
|
|
dw OaksLabText17
|
|
dw OaksLabText18
|
|
dw OaksLabText19
|
|
dw OaksLabText20
|
|
dw OaksLabText21
|
|
dw OaksLabText22
|
|
dw OaksLabText23
|
|
dw OaksLabText24
|
|
dw OaksLabText25
|
|
dw OaksLabText26
|
|
dw OaksLabText27
|
|
dw OaksLabTextPikachu
|
|
dw OaksLabTextEevee
|
|
dw OakLabEmailText
|
|
|
|
OaksLab_TextPointers2:
|
|
dw OaksLabText1
|
|
dw OaksLabText2
|
|
dw OaksLabText3
|
|
dw OaksLabText4
|
|
dw OaksLabText5
|
|
dw OaksLabText6
|
|
dw OaksLabText7
|
|
dw OaksLabText8
|
|
dw OaksLabText9
|
|
dw OaksLabText10
|
|
dw OaksLabText11
|
|
|
|
OaksLabText1:
|
|
text_asm
|
|
CheckEvent EVENT_FOLLOWED_OAK_INTO_LAB_2
|
|
jr nz, .beforeChooseMon
|
|
ld hl, OaksLabGaryText1
|
|
call PrintText
|
|
jr .done
|
|
.beforeChooseMon
|
|
bit 2, a
|
|
jr nz, .afterChooseMon
|
|
ld hl, OaksLabText40
|
|
call PrintText
|
|
jr .done
|
|
.afterChooseMon
|
|
ld hl, OaksLabText41
|
|
call PrintText
|
|
.done
|
|
jp TextScriptEnd
|
|
|
|
OaksLabGaryText1:
|
|
text_far _OaksLabGaryText1
|
|
text_end
|
|
|
|
OaksLabText40:
|
|
text_far _OaksLabText40
|
|
text_end
|
|
|
|
OaksLabText41:
|
|
text_far _OaksLabText41
|
|
text_end
|
|
|
|
; These are the starter balls that you're picking.
|
|
; They go in order from left to right; Charmander, Squirtle, Bulbasaur.
|
|
OaksLabText2:
|
|
text_asm
|
|
ld a, STARTER2
|
|
ld [wRivalStarterTemp], a
|
|
ld a, $3
|
|
ld [wRivalStarterBallSpriteIndex], a
|
|
ld a, STARTER1
|
|
ld b, $2
|
|
jr OaksLabScript_1d133
|
|
|
|
OaksLabText3:
|
|
text_asm
|
|
ld a, STARTER3
|
|
ld [wRivalStarterTemp], a
|
|
ld a, $4
|
|
ld [wRivalStarterBallSpriteIndex], a
|
|
ld a, STARTER2
|
|
ld b, $3
|
|
jr OaksLabScript_1d133
|
|
|
|
OaksLabText4:
|
|
text_asm
|
|
ld a, STARTER1
|
|
ld [wRivalStarterTemp], a
|
|
ld a, $2
|
|
ld [wRivalStarterBallSpriteIndex], a
|
|
ld a, STARTER3
|
|
ld b, $4
|
|
jr OaksLabScript_1d133 ; new
|
|
|
|
; So when adding the new starters, we go this way.
|
|
; For Pikachu and Eevee Mode, you only have these two.
|
|
; $5 = Pikachu
|
|
; $6 = Eevee
|
|
OaksLabTextPikachu:
|
|
text_asm
|
|
ld a, STARTER5
|
|
ld [wRivalStarterTemp], a
|
|
ld a, $8
|
|
ld [wRivalStarterBallSpriteIndex], a
|
|
ld a, STARTER4
|
|
ld b, $7
|
|
jr OaksLabScript_1d133
|
|
|
|
OaksLabTextEevee:
|
|
text_asm
|
|
ld a, STARTER4
|
|
ld [wRivalStarterTemp], a
|
|
ld a, $7
|
|
ld [wRivalStarterBallSpriteIndex], a
|
|
ld a, STARTER5
|
|
ld b, $8
|
|
jr OaksLabScript_1d133
|
|
; ends here
|
|
|
|
OaksLabScript_1d133:
|
|
ld [wcf91], a ; STARTER#
|
|
ld [wd11e], a ; STARTER#
|
|
ld a, b ; BALL???
|
|
ld [wSpriteIndex], a
|
|
CheckEvent EVENT_GOT_STARTER
|
|
jp nz, OaksLabScript_1d22d
|
|
CheckEventReuseA EVENT_OAK_ASKED_TO_CHOOSE_MON
|
|
jr nz, OaksLabScript_1d157
|
|
ld hl, OaksLabText39
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
OaksLabText39:
|
|
text_far _OaksLabText39
|
|
text_end
|
|
|
|
OaksLabScript_1d157:
|
|
ld a, $5
|
|
ldh [hSpriteIndex], a
|
|
ld a, SPRITESTATEDATA1_FACINGDIRECTION
|
|
ldh [hSpriteDataOffset], a
|
|
call GetPointerWithinSpriteStateData1
|
|
ld [hl], SPRITE_FACING_DOWN
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
ld a, SPRITESTATEDATA1_FACINGDIRECTION
|
|
ldh [hSpriteDataOffset], a
|
|
call GetPointerWithinSpriteStateData1
|
|
ld [hl], SPRITE_FACING_RIGHT
|
|
ld hl, wd730
|
|
set 6, [hl]
|
|
predef StarterDex
|
|
ld hl, wd730
|
|
res 6, [hl]
|
|
call ReloadMapData
|
|
ld c, 10
|
|
call DelayFrames
|
|
ld a, [wSpriteIndex]
|
|
cp $2
|
|
jr z, OaksLabLookAtCharmander
|
|
cp $3
|
|
jr z, OaksLabLookAtSquirtle
|
|
cp $4
|
|
jr z, OaksLabLookAtBulbasaur
|
|
cp $8
|
|
jr nz, OaksLabLookAtPikachu
|
|
cp $7
|
|
jr nz, OaksLabLookAtEevee
|
|
|
|
|
|
OaksLabLookAtCharmander:
|
|
ld hl, OaksLabCharmanderText
|
|
jr OaksLabMonChoiceMenu
|
|
OaksLabCharmanderText:
|
|
text_far _OaksLabCharmanderText
|
|
text_end
|
|
|
|
OaksLabLookAtSquirtle:
|
|
ld hl, OaksLabSquirtleText
|
|
jr OaksLabMonChoiceMenu
|
|
OaksLabSquirtleText:
|
|
text_far _OaksLabSquirtleText
|
|
text_end
|
|
|
|
OaksLabLookAtBulbasaur:
|
|
ld hl, OaksLabBulbasaurText
|
|
jr OaksLabMonChoiceMenu
|
|
OaksLabBulbasaurText:
|
|
text_far _OaksLabBulbasaurText
|
|
text_end
|
|
|
|
OaksLabLookAtPikachu:
|
|
ld hl, OaksLabPikachuText
|
|
jr OaksLabMonChoiceMenu
|
|
OaksLabPikachuText:
|
|
text_far _OaksLabPikachuText
|
|
text_end
|
|
|
|
OaksLabLookAtEevee:
|
|
ld hl, OaksLabEeveeText
|
|
jr OaksLabMonChoiceMenu
|
|
OaksLabEeveeText:
|
|
text_far _OaksLabEeveeText
|
|
text_end
|
|
|
|
OaksLabMonChoiceMenu:
|
|
call PrintText
|
|
ld a, $1
|
|
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
|
call YesNoChoice ; yes/no menu
|
|
ld a, [wCurrentMenuItem]
|
|
and a
|
|
jr nz, OaksLabMonChoiceEnd
|
|
ld a, [wcf91] ; STARTER#
|
|
ld [wPlayerStarter], a
|
|
ld [wd11e], a ; STARTER#
|
|
call GetMonName
|
|
ld a, [wSpriteIndex]
|
|
cp $2
|
|
jr nz, .asm_1d1db
|
|
ld a, HS_STARTER_BALL_1 ; somewhere the starter balls need removing
|
|
jr .asm_1d1e5
|
|
.asm_1d1db
|
|
cp $3
|
|
jr nz, .asm_1d1e3
|
|
ld a, HS_STARTER_BALL_2
|
|
jr .asm_1d1e5
|
|
.asm_1d1e3
|
|
cp $4
|
|
jr nz, .asm_ldle4
|
|
ld a, HS_STARTER_BALL_3
|
|
jr .asm_1d1e5
|
|
.asm_ldle4
|
|
cp $7
|
|
jr nz, .asm_ldle6
|
|
ld a, HS_STARTER_BALL_4
|
|
jr .asm_1d1e5
|
|
.asm_ldle6
|
|
ld a, HS_STARTER_BALL_5
|
|
jr .asm_1d1e5
|
|
.asm_1d1e5
|
|
ld [wMissableObjectIndex], a
|
|
predef HideObject
|
|
ld a, $1
|
|
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
|
ld hl, OaksLabMonEnergeticText
|
|
call PrintText
|
|
ld hl, OaksLabReceivedMonText
|
|
call PrintText
|
|
xor a ; PLAYER_PARTY_DATA
|
|
ld [wMonDataLocation], a
|
|
ld a, 5
|
|
ld [wCurEnemyLVL], a
|
|
ld a, [wcf91]
|
|
ld [wd11e], a
|
|
call AddPartyMon
|
|
ld hl, wd72e
|
|
set 3, [hl]
|
|
ld a, $fc
|
|
ld [wJoyIgnore], a
|
|
ld a, $8
|
|
ld [wOaksLabCurScript], a
|
|
OaksLabMonChoiceEnd:
|
|
jp TextScriptEnd
|
|
|
|
OaksLabMonEnergeticText:
|
|
text_far _OaksLabMonEnergeticText
|
|
text_end
|
|
|
|
OaksLabReceivedMonText:
|
|
text_far _OaksLabReceivedMonText
|
|
sound_get_key_item
|
|
text_end
|
|
|
|
OaksLabScript_1d22d:
|
|
ld a, $5
|
|
ldh [hSpriteIndex], a
|
|
ld a, SPRITESTATEDATA1_FACINGDIRECTION
|
|
ldh [hSpriteDataOffset], a
|
|
call GetPointerWithinSpriteStateData1
|
|
ld [hl], SPRITE_FACING_DOWN
|
|
ld hl, OaksLabLastMonText
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
OaksLabLastMonText:
|
|
text_far _GreedyBastardText
|
|
text_end
|
|
|
|
OaksLabText32:
|
|
OaksLabText5:
|
|
text_asm
|
|
CheckEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS
|
|
jr nz, .asm_1d266
|
|
ld hl, wPokedexOwned
|
|
ld b, wPokedexOwnedEnd - wPokedexOwned
|
|
call CountSetBits
|
|
ld a, [wNumSetBits]
|
|
cp 2
|
|
jr c, .asm_1d279
|
|
CheckEvent EVENT_GOT_POKEDEX
|
|
jr z, .asm_1d279
|
|
.asm_1d266
|
|
ld hl, OaksLabText_1d31d
|
|
call PrintText
|
|
ld a, $1
|
|
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
|
predef DisplayDexRating
|
|
jp .asm_1d2ed
|
|
.asm_1d279
|
|
ld b, POKE_BALL
|
|
call IsItemInBag
|
|
jr nz, .asm_1d2e7
|
|
CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
|
|
jr nz, .asm_1d2d0
|
|
CheckEvent EVENT_GOT_POKEDEX
|
|
jr nz, .asm_1d2c8
|
|
CheckEventReuseA EVENT_BATTLED_RIVAL_IN_OAKS_LAB
|
|
jr nz, .asm_1d2a9
|
|
ld a, [wd72e]
|
|
bit 3, a
|
|
jr nz, .asm_1d2a1
|
|
ld hl, OaksLabText_1d2f0
|
|
call PrintText
|
|
jr .asm_1d2ed
|
|
.asm_1d2a1
|
|
ld hl, OaksLabText_1d2f5
|
|
call PrintText
|
|
jr .asm_1d2ed
|
|
.asm_1d2a9
|
|
ld b, OAKS_PARCEL
|
|
call IsItemInBag
|
|
jr nz, .asm_1d2b8
|
|
ld hl, OaksLabText_1d2fa
|
|
call PrintText
|
|
jr .asm_1d2ed
|
|
.asm_1d2b8
|
|
ld hl, OaksLabDeliverParcelText
|
|
call PrintText
|
|
call OaksLabScript_RemoveParcel
|
|
ld a, $f
|
|
ld [wOaksLabCurScript], a
|
|
jr .asm_1d2ed
|
|
.asm_1d2c8
|
|
ld hl, OaksLabAroundWorldText
|
|
call PrintText
|
|
jr .asm_1d2ed
|
|
.asm_1d2d0
|
|
CheckAndSetEvent EVENT_GOT_POKEBALLS_FROM_OAK
|
|
jr nz, .asm_1d2e7
|
|
lb bc, POKE_BALL, 5
|
|
call GiveItem
|
|
ld hl, OaksLabGivePokeballsText
|
|
call PrintText
|
|
jr .asm_1d2ed
|
|
.asm_1d2e7
|
|
ld hl, OaksLabPleaseVisitText
|
|
call PrintText
|
|
.asm_1d2ed
|
|
jp TextScriptEnd
|
|
|
|
OaksLabText_1d2f0:
|
|
text_far _OaksLabText_1d2f0
|
|
text_end
|
|
|
|
OaksLabText_1d2f5:
|
|
text_far _OaksLabText_1d2f5
|
|
text_end
|
|
|
|
OaksLabText_1d2fa:
|
|
text_far _OaksLabText_1d2fa
|
|
text_end
|
|
|
|
OaksLabDeliverParcelText:
|
|
text_far _OaksLabDeliverParcelText1
|
|
sound_get_key_item
|
|
text_far _OaksLabDeliverParcelText2
|
|
text_end
|
|
|
|
OaksLabAroundWorldText:
|
|
text_far _OaksLabAroundWorldText
|
|
text_end
|
|
|
|
OaksLabGivePokeballsText:
|
|
text_far _OaksLabGivePokeballsText1
|
|
sound_get_key_item
|
|
text_far _OaksLabGivePokeballsText2
|
|
text_end
|
|
|
|
OaksLabPleaseVisitText:
|
|
text_far _OaksLabPleaseVisitText
|
|
text_end
|
|
|
|
OaksLabText_1d31d:
|
|
text_far _OaksLabText_1d31d
|
|
text_end
|
|
|
|
OaksLabText7:
|
|
OaksLabText6:
|
|
text_asm
|
|
ld hl, OaksLabText_1d32c
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
OaksLabText_1d32c:
|
|
text_far _OaksLabText_1d32c
|
|
text_end
|
|
|
|
OaksLabText8:
|
|
text_far _OaksLabText8
|
|
text_end
|
|
|
|
OaksLabText9:
|
|
text_asm
|
|
ld hl, OaksLabText_1d340
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
OaksLabText_1d340:
|
|
text_far _OaksLabText_1d340
|
|
text_end
|
|
|
|
OaksLabText17:
|
|
text_asm
|
|
ld hl, OaksLabRivalWaitingText
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
OaksLabRivalWaitingText:
|
|
text_far _OaksLabRivalWaitingText
|
|
text_end
|
|
|
|
OaksLabText18:
|
|
text_asm
|
|
ld hl, OaksLabChooseMonText
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
OaksLabChooseMonText:
|
|
text_far _OaksLabChooseMonText
|
|
text_end
|
|
|
|
OaksLabText19:
|
|
text_asm
|
|
ld hl, OaksLabRivalInterjectionText
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
OaksLabRivalInterjectionText:
|
|
text_far _OaksLabRivalInterjectionText
|
|
text_end
|
|
|
|
OaksLabText20:
|
|
text_asm
|
|
ld hl, OaksLabBePatientText
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
OaksLabBePatientText:
|
|
text_far _OaksLabBePatientText
|
|
text_end
|
|
|
|
OaksLabText12:
|
|
text_asm
|
|
ld hl, OaksLabLeavingText
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
OaksLabLeavingText:
|
|
text_far _OaksLabLeavingText
|
|
text_end
|
|
|
|
OaksLabText13:
|
|
text_asm
|
|
ld hl, OaksLabRivalPickingMonText
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
OaksLabRivalPickingMonText:
|
|
text_far _OaksLabRivalPickingMonText
|
|
text_end
|
|
|
|
OaksLabText14:
|
|
text_asm
|
|
ld hl, OaksLabRivalReceivedMonText
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
OaksLabRivalReceivedMonText:
|
|
text_far _OaksLabRivalReceivedMonText
|
|
sound_get_key_item
|
|
text_end
|
|
|
|
OaksLabText15:
|
|
text_asm
|
|
ld hl, OaksLabRivalChallengeText
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
OaksLabRivalChallengeText:
|
|
text_far _OaksLabRivalChallengeText
|
|
text_end
|
|
|
|
OaksLabText_1d3be:
|
|
text_far _OaksLabText_1d3be
|
|
text_end
|
|
|
|
OaksLabText_1d3c3:
|
|
text_far _OaksLabText_1d3c3
|
|
text_end
|
|
|
|
OaksLabText16:
|
|
text_asm
|
|
ld hl, OaksLabRivalToughenUpText
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
OaksLabRivalToughenUpText:
|
|
text_far _OaksLabRivalToughenUpText
|
|
text_end
|
|
|
|
OaksLabText21:
|
|
text_far _OaksLabText21
|
|
text_end
|
|
|
|
OaksLabText22:
|
|
text_far _OaksLabText22
|
|
text_end
|
|
|
|
OaksLabText23:
|
|
text_far _OaksLabText23
|
|
text_end
|
|
|
|
OaksLabText24:
|
|
text_far _OaksLabText24
|
|
text_end
|
|
|
|
OaksLabText25:
|
|
text_far _OaksLabText25
|
|
sound_get_key_item
|
|
text_end
|
|
|
|
OaksLabText26:
|
|
text_far _OaksLabText26
|
|
text_end
|
|
|
|
OaksLabText27:
|
|
text_far _OaksLabText27
|
|
text_end
|
|
|
|
OaksLabText11:
|
|
OaksLabText10:
|
|
text_asm
|
|
ld hl, OaksLabText_1d405
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
OaksLabText_1d405:
|
|
text_far _OaksLabText_1d405
|
|
text_end
|
|
|
|
; Moved here to turn into a new bg event
|
|
OakLabEmailText:
|
|
text_asm
|
|
call EnableAutoTextBoxDrawing
|
|
ld hl, OakLabEmailTextGet
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
OakLabEmailTextGet:
|
|
text_far _OakLabEmailText
|
|
text_end
|