pokered/scripts/PalletTown.asm

217 lines
5.5 KiB
NASM
Raw Normal View History

PalletTown_Script:
2015-07-21 01:32:02 +00:00
CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK
jr z, .next
2015-07-21 17:36:03 +00:00
SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS
2014-05-18 18:19:10 +00:00
.next
call EnableAutoTextBoxDrawing
ld hl, PalletTown_ScriptPointers
ld a, [wPalletTownCurScript]
2014-05-18 18:19:10 +00:00
jp CallFunctionInTable
PalletTown_ScriptPointers:
def_script_pointers
dw_const PalletTownDefaultScript, SCRIPT_PALLETTOWN_DEFAULT
dw_const PalletTownOakHeyWaitScript, SCRIPT_PALLETTOWN_OAK_HEY_WAIT
dw_const PalletTownOakWalksToPlayerScript, SCRIPT_PALLETTOWN_OAK_WALKS_TO_PLAYER
dw_const PalletTownOakNotSafeComeWithMeScript, SCRIPT_PALLETTOWN_OAK_NOT_SAFE_COME_WITH_ME
dw_const PalletTownPlayerFollowsOakScript, SCRIPT_PALLETTOWN_PLAYER_FOLLOWS_OAK
dw_const PalletTownDaisyScript, SCRIPT_PALLETTOWN_DAISY
dw_const PalletTownNoopScript, SCRIPT_PALLETTOWN_NOOP
PalletTownDefaultScript:
2015-07-21 17:36:03 +00:00
CheckEvent EVENT_FOLLOWED_OAK_INTO_LAB
2014-05-18 18:19:10 +00:00
ret nz
ld a, [wYCoord]
2014-05-18 18:19:10 +00:00
cp 1 ; is player near north exit?
ret nz
xor a
ldh [hJoyHeld], a
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
ld a, SFX_STOP_ALL_MUSIC
call PlaySound
2014-05-18 18:19:10 +00:00
ld a, BANK(Music_MeetProfOak)
ld c, a
2020-07-07 01:15:12 +00:00
ld a, MUSIC_MEET_PROF_OAK ; "oak appears" music
call PlayMusic
ld a, SELECT | START | D_RIGHT | D_LEFT | D_UP | D_DOWN
ld [wJoyIgnore], a
2015-07-21 17:36:03 +00:00
SetEvent EVENT_OAK_APPEARED_IN_PALLET
2014-05-18 18:19:10 +00:00
; trigger the next script
ld a, SCRIPT_PALLETTOWN_OAK_HEY_WAIT
ld [wPalletTownCurScript], a
2014-05-18 18:19:10 +00:00
ret
PalletTownOakHeyWaitScript:
2014-05-18 18:19:10 +00:00
xor a
ld [wcf0d], a
ld a, TEXT_PALLETTOWN_OAK
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
ld a, A_BUTTON | B_BUTTON | SELECT | START | D_RIGHT | D_LEFT | D_UP | D_DOWN
ld [wJoyIgnore], a
ld a, HS_PALLET_TOWN_OAK
ld [wMissableObjectIndex], a
predef ShowObject
2014-05-18 18:19:10 +00:00
; trigger the next script
ld a, SCRIPT_PALLETTOWN_OAK_WALKS_TO_PLAYER
ld [wPalletTownCurScript], a
2014-05-18 18:19:10 +00:00
ret
PalletTownOakWalksToPlayerScript:
ld a, PALLETTOWN_OAK
ldh [hSpriteIndex], a
ld a, SPRITE_FACING_UP
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
2014-05-18 18:19:10 +00:00
call Delay3
ld a, 1
ld [wYCoord], a
ld a, 1
ldh [hNPCPlayerRelativePosPerspective], a
ld a, 1
2014-05-18 18:19:10 +00:00
swap a
ldh [hNPCSpriteOffset], a
predef CalcPositionOfPlayerRelativeToNPC
ld hl, hNPCPlayerYDistance
2014-05-18 18:19:10 +00:00
dec [hl]
2020-07-07 01:15:12 +00:00
predef FindPathToPlayer ; load Oak's movement into wNPCMovementDirections2
ld de, wNPCMovementDirections2
ld a, PALLETTOWN_OAK
ldh [hSpriteIndex], a
2014-05-18 18:19:10 +00:00
call MoveSprite
ld a, A_BUTTON | B_BUTTON | SELECT | START | D_RIGHT | D_LEFT | D_UP | D_DOWN
ld [wJoyIgnore], a
2014-05-18 18:19:10 +00:00
; trigger the next script
ld a, SCRIPT_PALLETTOWN_OAK_NOT_SAFE_COME_WITH_ME
ld [wPalletTownCurScript], a
2014-05-18 18:19:10 +00:00
ret
PalletTownOakNotSafeComeWithMeScript:
ld a, [wd730]
bit 0, a
2014-05-18 18:19:10 +00:00
ret nz
xor a ; ld a, SPRITE_FACING_DOWN
ld [wSpritePlayerStateData1FacingDirection], a
ld a, 1
ld [wcf0d], a
ld a, SELECT | START | D_RIGHT | D_LEFT | D_UP | D_DOWN
ld [wJoyIgnore], a
ld a, TEXT_PALLETTOWN_OAK
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
2015-07-15 20:58:21 +00:00
; set up movement script that causes the player to follow Oak to his lab
ld a, A_BUTTON | B_BUTTON | SELECT | START | D_RIGHT | D_LEFT | D_UP | D_DOWN
ld [wJoyIgnore], a
ld a, PALLETTOWN_OAK
ld [wSpriteIndex], a
2014-05-18 18:19:10 +00:00
xor a
ld [wNPCMovementScriptFunctionNum], a
ld a, 1
ld [wNPCMovementScriptPointerTableNum], a
ldh a, [hLoadedROMBank]
ld [wNPCMovementScriptBank], a
2014-05-18 18:19:10 +00:00
; trigger the next script
ld a, SCRIPT_PALLETTOWN_PLAYER_FOLLOWS_OAK
ld [wPalletTownCurScript], a
2014-05-18 18:19:10 +00:00
ret
PalletTownPlayerFollowsOakScript:
ld a, [wNPCMovementScriptPointerTableNum]
2015-07-15 20:58:21 +00:00
and a ; is the movement script over?
2014-05-18 18:19:10 +00:00
ret nz
; trigger the next script
ld a, SCRIPT_PALLETTOWN_DAISY
ld [wPalletTownCurScript], a
2014-05-18 18:19:10 +00:00
ret
PalletTownDaisyScript:
2015-07-21 17:36:03 +00:00
CheckEvent EVENT_DAISY_WALKING
jr nz, .next
2015-07-21 17:36:03 +00:00
CheckBothEventsSet EVENT_GOT_TOWN_MAP, EVENT_ENTERED_BLUES_HOUSE, 1
jr nz, .next
2015-07-21 17:36:03 +00:00
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
2014-05-18 18:19:10 +00:00
.next
2015-07-21 01:32:02 +00:00
CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK
2014-05-18 18:19:10 +00:00
ret z
2015-07-21 17:36:03 +00:00
SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS_2
PalletTownNoopScript:
2014-05-18 18:19:10 +00:00
ret
PalletTown_TextPointers:
def_text_pointers
dw_const PalletTownOakText, TEXT_PALLETTOWN_OAK
dw_const PalletTownGirlText, TEXT_PALLETTOWN_GIRL
dw_const PalletTownFisherText, TEXT_PALLETTOWN_FISHER
dw_const PalletTownOaksLabSignText, TEXT_PALLETTOWN_OAKSLAB_SIGN
dw_const PalletTownSignText, TEXT_PALLETTOWN_SIGN
dw_const PalletTownPlayersHouseSignText, TEXT_PALLETTOWN_PLAYERSHOUSE_SIGN
dw_const PalletTownRivalsHouseSignText, TEXT_PALLETTOWN_RIVALSHOUSE_SIGN
PalletTownOakText:
text_asm
ld a, [wcf0d]
2014-05-18 18:19:10 +00:00
and a
jr nz, .next
ld a, 1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld hl, .HeyWaitDontGoOutText
2014-05-18 18:19:10 +00:00
jr .done
.next
ld hl, .ItsUnsafeText
2014-05-18 18:19:10 +00:00
.done
call PrintText
jp TextScriptEnd
.HeyWaitDontGoOutText:
text_far _PalletTownOakHeyWaitDontGoOutText
text_asm
ld c, 10
2014-05-18 18:19:10 +00:00
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
2014-05-18 18:19:10 +00:00
jp TextScriptEnd
.ItsUnsafeText:
text_far _PalletTownOakItsUnsafeText
text_end
2014-05-18 18:19:10 +00:00
PalletTownGirlText:
text_far _PalletTownGirlText
text_end
2014-05-18 18:19:10 +00:00
PalletTownFisherText:
text_far _PalletTownFisherText
text_end
2014-05-18 18:19:10 +00:00
PalletTownOaksLabSignText:
text_far _PalletTownOaksLabSignText
text_end
2014-05-18 18:19:10 +00:00
PalletTownSignText:
text_far _PalletTownSignText
text_end
2014-05-18 18:19:10 +00:00
PalletTownPlayersHouseSignText:
text_far _PalletTownPlayersHouseSignText
text_end
2014-05-18 18:19:10 +00:00
PalletTownRivalsHouseSignText:
text_far _PalletTownRivalsHouseSignText
text_end