pokered/scripts/VermilionCity.asm

259 lines
6.5 KiB
NASM

VermilionCity_Script:
call EnableAutoTextBoxDrawing
ld hl, wCurrentMapScriptFlags
bit BIT_CUR_MAP_LOADED_2, [hl]
res BIT_CUR_MAP_LOADED_2, [hl]
push hl
call nz, VermilionCityLeftSSAnneCallbackScript
pop hl
bit BIT_CUR_MAP_LOADED_1, [hl]
res BIT_CUR_MAP_LOADED_1, [hl]
call nz, .setFirstLockTrashCanIndex
ld hl, VermilionCity_ScriptPointers
ld a, [wVermilionCityCurScript]
jp CallFunctionInTable
.setFirstLockTrashCanIndex
call Random
ldh a, [hRandomSub]
and $e
ld [wFirstLockTrashCanIndex], a
ret
VermilionCityLeftSSAnneCallbackScript:
CheckEventHL EVENT_SS_ANNE_LEFT
ret z
CheckEventReuseHL EVENT_WALKED_PAST_GUARD_AFTER_SS_ANNE_LEFT
SetEventReuseHL EVENT_WALKED_PAST_GUARD_AFTER_SS_ANNE_LEFT
ret nz
ld a, SCRIPT_VERMILIONCITY_PLAYER_EXIT_SHIP
ld [wVermilionCityCurScript], a
ret
VermilionCity_ScriptPointers:
def_script_pointers
dw_const VermilionCityDefaultScript, SCRIPT_VERMILIONCITY_DEFAULT
dw_const VermilionCityPlayerMovingUp1Script, SCRIPT_VERMILIONCITY_PLAYER_MOVING_UP1
dw_const VermilionCityPlayerExitShipScript, SCRIPT_VERMILIONCITY_PLAYER_EXIT_SHIP
dw_const VermilionCityPlayerMovingUp2Script, SCRIPT_VERMILIONCITY_PLAYER_MOVING_UP2
dw_const VermilionCityPlayerAllowedToPassScript, SCRIPT_VERMILIONCITY_PLAYER_ALLOWED_TO_PASS
VermilionCityDefaultScript:
ld a, [wSpritePlayerStateData1FacingDirection]
and a ; cp SPRITE_FACING_DOWN
ret nz
ld hl, SSAnneTicketCheckCoords
call ArePlayerCoordsInArray
ret nc
xor a
ldh [hJoyHeld], a
ld [wSavedCoordIndex], a ; unnecessary
ld a, TEXT_VERMILIONCITY_SAILOR1
ldh [hTextID], a
call DisplayTextID
CheckEvent EVENT_SS_ANNE_LEFT
jr nz, .ship_departed
ld b, S_S_TICKET
predef GetQuantityOfItemInBag
ld a, b
and a
ret nz
.ship_departed
ld a, D_UP
ld [wSimulatedJoypadStatesEnd], a
ld a, $1
ld [wSimulatedJoypadStatesIndex], a
call StartSimulatingJoypadStates
ld a, SCRIPT_VERMILIONCITY_PLAYER_MOVING_UP1
ld [wVermilionCityCurScript], a
ret
SSAnneTicketCheckCoords:
dbmapcoord 18, 30
db -1 ; end
VermilionCityPlayerAllowedToPassScript:
ld hl, SSAnneTicketCheckCoords
call ArePlayerCoordsInArray
ret c
ld a, SCRIPT_VERMILIONCITY_DEFAULT
ld [wVermilionCityCurScript], a
ret
VermilionCityPlayerExitShipScript:
ld a, A_BUTTON | B_BUTTON | SELECT | START | D_RIGHT | D_LEFT | D_UP | D_DOWN
ld [wJoyIgnore], a
ld a, D_UP
ld [wSimulatedJoypadStatesEnd], a
ld [wSimulatedJoypadStatesEnd + 1], a
ld a, 2
ld [wSimulatedJoypadStatesIndex], a
call StartSimulatingJoypadStates
ld a, SCRIPT_VERMILIONCITY_PLAYER_MOVING_UP2
ld [wVermilionCityCurScript], a
ret
VermilionCityPlayerMovingUp2Script:
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
xor a
ld [wJoyIgnore], a
ldh [hJoyHeld], a
ld a, SCRIPT_VERMILIONCITY_DEFAULT
ld [wVermilionCityCurScript], a
ret
VermilionCityPlayerMovingUp1Script:
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
ld c, 10
call DelayFrames
ld a, SCRIPT_VERMILIONCITY_DEFAULT
ld [wVermilionCityCurScript], a
ret
VermilionCity_TextPointers:
def_text_pointers
dw_const VermilionCityBeautyText, TEXT_VERMILIONCITY_BEAUTY
dw_const VermilionCityGambler1Text, TEXT_VERMILIONCITY_GAMBLER1
dw_const VermilionCitySailor1Text, TEXT_VERMILIONCITY_SAILOR1
dw_const VermilionCityGambler2Text, TEXT_VERMILIONCITY_GAMBLER2
dw_const VermilionCityMachopText, TEXT_VERMILIONCITY_MACHOP
dw_const VermilionCitySailor2Text, TEXT_VERMILIONCITY_SAILOR2
dw_const VermilionCitySignText, TEXT_VERMILIONCITY_SIGN
dw_const VermilionCityNoticeSignText, TEXT_VERMILIONCITY_NOTICE_SIGN
dw_const MartSignText, TEXT_VERMILIONCITY_MART_SIGN
dw_const PokeCenterSignText, TEXT_VERMILIONCITY_POKECENTER_SIGN
dw_const VermilionCityPokemonFanClubSignText, TEXT_VERMILIONCITY_POKEMON_FAN_CLUB_SIGN
dw_const VermilionCityGymSignText, TEXT_VERMILIONCITY_GYM_SIGN
dw_const VermilionCityHarborSignText, TEXT_VERMILIONCITY_HARBOR_SIGN
VermilionCityBeautyText:
text_far _VermilionCityBeautyText
text_end
VermilionCityGambler1Text:
text_asm
CheckEvent EVENT_SS_ANNE_LEFT
jr nz, .ship_departed
ld hl, .DidYouSeeText
call PrintText
jr .text_script_end
.ship_departed
ld hl, .SSAnneDepartedText
call PrintText
.text_script_end
jp TextScriptEnd
.DidYouSeeText:
text_far _VermilionCityGambler1DidYouSeeText
text_end
.SSAnneDepartedText:
text_far _VermilionCityGambler1SSAnneDepartedText
text_end
VermilionCitySailor1Text:
text_asm
CheckEvent EVENT_SS_ANNE_LEFT
jr nz, .ship_departed
ld a, [wSpritePlayerStateData1FacingDirection]
cp SPRITE_FACING_RIGHT
jr z, .greet_player
ld hl, .inFrontOfOrBehindGuardCoords
call ArePlayerCoordsInArray
jr nc, .greet_player_and_check_ticket
.greet_player
ld hl, .WelcomeToSSAnneText
call PrintText
jr .end
.greet_player_and_check_ticket
ld hl, .DoYouHaveATicketText
call PrintText
ld b, S_S_TICKET
predef GetQuantityOfItemInBag
ld a, b
and a
jr nz, .player_has_ticket
ld hl, .YouNeedATicketText
call PrintText
jr .end
.player_has_ticket
ld hl, .FlashedTicketText
call PrintText
ld a, SCRIPT_VERMILIONCITY_PLAYER_ALLOWED_TO_PASS
ld [wVermilionCityCurScript], a
jr .end
.ship_departed
ld hl, .ShipSetSailText
call PrintText
.end
jp TextScriptEnd
.inFrontOfOrBehindGuardCoords
dbmapcoord 19, 29 ; in front of guard
dbmapcoord 19, 31 ; behind guard
db -1 ; end
.WelcomeToSSAnneText:
text_far _VermilionCitySailor1WelcomeToSSAnneText
text_end
.DoYouHaveATicketText:
text_far _VermilionCitySailor1DoYouHaveATicketText
text_end
.FlashedTicketText:
text_far _VermilionCitySailor1FlashedTicketText
text_end
.YouNeedATicketText:
text_far _VermilionCitySailor1YouNeedATicketText
text_end
.ShipSetSailText:
text_far _VermilionCitySailor1ShipSetSailText
text_end
VermilionCityGambler2Text:
text_far _VermilionCityGambler2Text
text_end
VermilionCityMachopText:
text_far _VermilionCityMachopText
text_asm
ld a, MACHOP
call PlayCry
call WaitForSoundToFinish
ld hl, .StompingTheLandFlatText
ret
.StompingTheLandFlatText:
text_far _VermilionCityMachopStompingTheLandFlatText
text_end
VermilionCitySailor2Text:
text_far _VermilionCitySailor2Text
text_end
VermilionCitySignText:
text_far _VermilionCitySignText
text_end
VermilionCityNoticeSignText:
text_far _VermilionCityNoticeSignText
text_end
VermilionCityPokemonFanClubSignText:
text_far _VermilionCityPokemonFanClubSignText
text_end
VermilionCityGymSignText:
text_far _VermilionCityGymSignText
text_end
VermilionCityHarborSignText:
text_far _VermilionCityHarborSignText
text_end