kep-hack/scripts/PalletTown.asm

215 lines
4.1 KiB
NASM
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

PalletTown_Script:
CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK
jr z, .next
SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS
.next
call EnableAutoTextBoxDrawing
ld hl, PalletTown_ScriptPointers
ld a, [wPalletTownCurScript]
jp CallFunctionInTable
PalletTown_ScriptPointers:
dw PalletTownScript0
dw PalletTownScript1
dw PalletTownScript2
dw PalletTownScript3
dw PalletTownScript4
dw PalletTownScript5
dw PalletTownScript6
PalletTownScript0:
CheckEvent EVENT_FOLLOWED_OAK_INTO_LAB
ret nz
ld a, [wYCoord]
cp 1 ; is player near north exit?
ret nz
xor a
ld [hJoyHeld], a
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
ld a, SFX_STOP_ALL_MUSIC
call PlaySound
ld a, BANK(Music_MeetProfOak)
ld c, a
ld a, MUSIC_MEET_PROF_OAK ; “oak appears” music
call PlayMusic
ld a, $FC
ld [wJoyIgnore], a
SetEvent EVENT_OAK_APPEARED_IN_PALLET
; trigger the next script
ld a, 1
ld [wPalletTownCurScript], a
ret
PalletTownScript1:
xor a
ld [wcf0d], a
ld a, 1
ld [hSpriteIndexOrTextID], a
call DisplayTextID
ld a, $FF
ld [wJoyIgnore], a
ld a, HS_PALLET_TOWN_OAK
ld [wMissableObjectIndex], a
predef ShowObject
; trigger the next script
ld a, 2
ld [wPalletTownCurScript], a
ret
PalletTownScript2:
ld a, 1
ld [hSpriteIndex], a
ld a, SPRITE_FACING_UP
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
call Delay3
ld a, 1
ld [wYCoord], a
ld a, 1
ld [hNPCPlayerRelativePosPerspective], a
ld a, 1
swap a
ld [hNPCSpriteOffset], a
predef CalcPositionOfPlayerRelativeToNPC
ld hl, hNPCPlayerYDistance
dec [hl]
predef FindPathToPlayer ; load Oaks movement into wNPCMovementDirections2
ld de, wNPCMovementDirections2
ld a, 1 ; oak
ld [hSpriteIndex], a
call MoveSprite
ld a, $FF
ld [wJoyIgnore], a
; trigger the next script
ld a, 3
ld [wPalletTownCurScript], a
ret
PalletTownScript3:
ld a, [wd730]
bit 0, a
ret nz
xor a ; ld a, SPRITE_FACING_DOWN
ld [wSpritePlayerStateData1FacingDirection], a
ld a, 1
ld [wcf0d], a
ld a, $FC
ld [wJoyIgnore], a
ld a, 1
ld [hSpriteIndexOrTextID], a
call DisplayTextID
; set up movement script that causes the player to follow Oak to his lab
ld a, $FF
ld [wJoyIgnore], a
ld a, 1
ld [wSpriteIndex], a
xor a
ld [wNPCMovementScriptFunctionNum], a
ld a, 1
ld [wNPCMovementScriptPointerTableNum], a
ld a, [hLoadedROMBank]
ld [wNPCMovementScriptBank], a
; trigger the next script
ld a, 4
ld [wPalletTownCurScript], a
ret
PalletTownScript4:
ld a, [wNPCMovementScriptPointerTableNum]
and a ; is the movement script over?
ret nz
; trigger the next script
ld a, 5
ld [wPalletTownCurScript], a
ret
PalletTownScript5:
CheckEvent EVENT_DAISY_WALKING
jr nz, .next
CheckBothEventsSet EVENT_GOT_TOWN_MAP, EVENT_ENTERED_BLUES_HOUSE, 1
jr nz, .next
SetEvent EVENT_DAISY_WALKING
ld a, HS_DAISY_SITTING
ld [wMissableObjectIndex], a
predef HideObject
ld a, HS_DAISY_WALKING
ld [wMissableObjectIndex], a
predef_jump ShowObject
.next
CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK
ret z
SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS_2
PalletTownScript6:
ret
PalletTown_TextPointers:
dw PalletTownText1
dw PalletTownText2
dw PalletTownText3
dw PalletTownText4
dw PalletTownText5
dw PalletTownText6
dw PalletTownText7
PalletTownText1:
text_asm
ld a, [wcf0d]
and a
jr nz, .next
ld a, 1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld hl, OakAppearsText
jr .done
.next
ld hl, OakWalksUpText
.done
call PrintText
jp TextScriptEnd
OakAppearsText:
text_far _OakAppearsText
text_asm
ld c, 10
call DelayFrames
xor a
ld [wEmotionBubbleSpriteIndex], a ; player's sprite
ld [wWhichEmotionBubble], a ; EXCLAMATION_BUBBLE
predef EmotionBubble
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
jp TextScriptEnd
OakWalksUpText:
text_far _OakWalksUpText
text_end
PalletTownText2: ; girl
text_far _PalletTownText2
text_end
PalletTownText3: ; fat man
text_far _PalletTownText3
text_end
PalletTownText4: ; sign by lab
text_far _PalletTownText4
text_end
PalletTownText5: ; sign by fence
text_far _PalletTownText5
text_end
PalletTownText6: ; sign by Reds house
text_far _PalletTownText6
text_end
PalletTownText7: ; sign by Blues house
text_far _PalletTownText7
text_end