pokered/scripts/SafariZoneGate.asm

297 lines
8 KiB
NASM
Raw Normal View History

SafariZoneGate_Script:
2014-05-18 18:19:10 +00:00
call EnableAutoTextBoxDrawing
ld hl, SafariZoneGate_ScriptPointers
ld a, [wSafariZoneGateCurScript]
2014-05-18 18:19:10 +00:00
jp CallFunctionInTable
SafariZoneGate_ScriptPointers:
def_script_pointers
dw_const SafariZoneGateDefaultScript, SCRIPT_SAFARIZONEGATE_DEFAULT
dw_const SafariZoneGatePlayerMovingRightScript, SCRIPT_SAFARIZONEGATE_PLAYER_MOVING_RIGHT
dw_const SafariZoneGateWouldYouLikeToJoinScript, SCRIPT_SAFARIZONEGATE_WOULD_YOU_LIKE_TO_JOIN
dw_const SafariZoneGatePlayerMovingUpScript, SCRIPT_SAFARIZONEGATE_PLAYER_MOVING
dw_const SafariZoneGatePlayerMovingDownScript, SCRIPT_SAFARIZONEGATE_PLAYER_MOVING_DOWN
dw_const SafariZoneGateLeavingSafariScript, SCRIPT_SAFARIZONEGATE_LEAVING_SAFARI
dw_const SafariZoneGateSetScriptAfterMoveScript, SCRIPT_SAFARIZONEGATE_SET_SCRIPT_AFTER_MOVE
EXPORT SCRIPT_SAFARIZONEGATE_LEAVING_SAFARI ; used by engine/events/hidden_objects/safari_game.asm
2014-05-18 18:19:10 +00:00
SafariZoneGateDefaultScript:
ld hl, .PlayerNextToSafariZoneWorker1CoordsArray
2014-05-18 18:19:10 +00:00
call ArePlayerCoordsInArray
ret nc
ld a, TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1_1
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
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2014-05-18 18:19:10 +00:00
xor a
ldh [hJoyHeld], a
ld a, SPRITE_FACING_RIGHT
ld [wSpritePlayerStateData1FacingDirection], a
2015-07-19 03:49:52 +00:00
ld a, [wCoordIndex]
cp 1 ; index of second, lower entry in .PlayerNextToSafariZoneWorker1CoordsArray
jr z, .player_not_next_to_worker
ld a, SCRIPT_SAFARIZONEGATE_WOULD_YOU_LIKE_TO_JOIN
ld [wSafariZoneGateCurScript], a
2014-05-18 18:19:10 +00:00
ret
.player_not_next_to_worker
ld a, D_RIGHT
ld c, 1
call SafariZoneEntranceAutoWalk
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
ld a, SCRIPT_SAFARIZONEGATE_PLAYER_MOVING_RIGHT
ld [wSafariZoneGateCurScript], a
2014-05-18 18:19:10 +00:00
ret
.PlayerNextToSafariZoneWorker1CoordsArray:
dbmapcoord 3, 2
dbmapcoord 4, 2
db -1 ; end
2014-05-18 18:19:10 +00:00
SafariZoneGatePlayerMovingRightScript:
call SafariZoneGateReturnSimulatedJoypadStateScript
2014-05-18 18:19:10 +00:00
ret nz
SafariZoneGateWouldYouLikeToJoinScript:
2014-05-18 18:19:10 +00:00
xor a
ldh [hJoyHeld], a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2014-05-18 18:19:10 +00:00
call UpdateSprites
ld a, TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1_WOULD_YOU_LIKE_TO_JOIN
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
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2014-05-18 18:19:10 +00:00
ret
SafariZoneGatePlayerMovingUpScript:
call SafariZoneGateReturnSimulatedJoypadStateScript
2014-05-18 18:19:10 +00:00
ret nz
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
ld a, SCRIPT_SAFARIZONEGATE_LEAVING_SAFARI
ld [wSafariZoneGateCurScript], a
2014-05-18 18:19:10 +00:00
ret
SafariZoneGateLeavingSafariScript:
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
2015-07-21 01:32:02 +00:00
CheckAndResetEvent EVENT_SAFARI_GAME_OVER
jr z, .leaving_early
2015-07-21 01:32:02 +00:00
ResetEventReuseHL EVENT_IN_SAFARI_ZONE
2014-05-18 18:19:10 +00:00
call UpdateSprites
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
ld a, TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1_GOOD_HAUL_COME_AGAIN
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
xor a
2015-08-31 02:38:41 +00:00
ld [wNumSafariBalls], a
ld a, D_DOWN
ld c, 3
call SafariZoneEntranceAutoWalk
ld a, SCRIPT_SAFARIZONEGATE_PLAYER_MOVING_DOWN
ld [wSafariZoneGateCurScript], a
jr .return
.leaving_early
ld a, TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1_LEAVING_EARLY
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
.return
2014-05-18 18:19:10 +00:00
ret
SafariZoneGatePlayerMovingDownScript:
call SafariZoneGateReturnSimulatedJoypadStateScript
2014-05-18 18:19:10 +00:00
ret nz
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
ld a, SCRIPT_SAFARIZONEGATE_DEFAULT
ld [wSafariZoneGateCurScript], a
2014-05-18 18:19:10 +00:00
ret
SafariZoneGateSetScriptAfterMoveScript:
call SafariZoneGateReturnSimulatedJoypadStateScript
2014-05-18 18:19:10 +00:00
ret nz
call Delay3
ld a, [wNextSafariZoneGateScript]
ld [wSafariZoneGateCurScript], a
2014-05-18 18:19:10 +00:00
ret
SafariZoneEntranceAutoWalk:
2014-05-18 18:19:10 +00:00
push af
ld b, 0
ld a, c
ld [wSimulatedJoypadStatesIndex], a
ld hl, wSimulatedJoypadStatesEnd
2014-05-18 18:19:10 +00:00
pop af
call FillMemory
jp StartSimulatingJoypadStates
2014-05-18 18:19:10 +00:00
SafariZoneGateReturnSimulatedJoypadStateScript:
ld a, [wSimulatedJoypadStatesIndex]
2014-05-18 18:19:10 +00:00
and a
ret
SafariZoneGate_TextPointers:
def_text_pointers
dw_const SafariZoneGateSafariZoneWorker1Text, TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1
dw_const SafariZoneGateSafariZoneWorker2Text, TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER2
dw_const SafariZoneGateSafariZoneWorker1Text, TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1_1
dw_const SafariZoneGateSafariZoneWorker1WouldYouLikeToJoinText, TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1_WOULD_YOU_LIKE_TO_JOIN
dw_const SafariZoneGateSafariZoneWorker1LeavingEarlyText, TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1_LEAVING_EARLY
dw_const SafariZoneGateSafariZoneWorker1GoodHaulComeAgainText, TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1_GOOD_HAUL_COME_AGAIN
2014-05-18 18:19:10 +00:00
SafariZoneGateSafariZoneWorker1Text:
text_far _SafariZoneGateSafariZoneWorker1Text
text_end
2014-05-18 18:19:10 +00:00
SafariZoneGateSafariZoneWorker1WouldYouLikeToJoinText:
text_far _SafariZoneGateSafariZoneWorker1WouldYouLikeToJoinText
text_asm
2015-07-23 13:07:12 +00:00
ld a, MONEY_BOX
ld [wTextBoxID], a
2014-05-18 18:19:10 +00:00
call DisplayTextBoxID
call YesNoChoice
ld a, [wCurrentMenuItem]
2014-05-18 18:19:10 +00:00
and a
jp nz, .PleaseComeAgain
2014-05-18 18:19:10 +00:00
xor a
ldh [hMoney], a
ld a, $05
ldh [hMoney + 1], a
ld a, $00
ldh [hMoney + 2], a
2014-05-18 18:19:10 +00:00
call HasEnoughMoney
jr nc, .success
ld hl, .NotEnoughMoneyText
2014-05-18 18:19:10 +00:00
call PrintText
jr .CantPayWalkDown
.success
2014-05-18 18:19:10 +00:00
xor a
ld [wPriceTemp], a
ld a, $05
ld [wPriceTemp + 1], a
ld a, $00
ld [wPriceTemp + 2], a
ld hl, wPriceTemp + 2
ld de, wPlayerMoney + 2
ld c, 3
predef SubBCDPredef
ld a, MONEY_BOX
ld [wTextBoxID], a
2014-05-18 18:19:10 +00:00
call DisplayTextBoxID
ld hl, .MakePaymentText
2014-05-18 18:19:10 +00:00
call PrintText
ld a, 30
ld [wNumSafariBalls], a
2020-07-07 15:10:29 +00:00
ld a, HIGH(502)
ld [wSafariSteps], a
2020-07-07 15:10:29 +00:00
ld a, LOW(502)
ld [wSafariSteps + 1], a
ld a, D_UP
ld c, 3
call SafariZoneEntranceAutoWalk
2015-07-21 01:32:02 +00:00
SetEvent EVENT_IN_SAFARI_ZONE
ResetEventReuseHL EVENT_SAFARI_GAME_OVER
ld a, SCRIPT_SAFARIZONEGATE_PLAYER_MOVING
ld [wSafariZoneGateCurScript], a
jr .done
.PleaseComeAgain
ld hl, .PleaseComeAgainText
2014-05-18 18:19:10 +00:00
call PrintText
.CantPayWalkDown
ld a, D_DOWN
ld c, 1
call SafariZoneEntranceAutoWalk
ld a, SCRIPT_SAFARIZONEGATE_PLAYER_MOVING_DOWN
ld [wSafariZoneGateCurScript], a
.done
2014-05-18 18:19:10 +00:00
jp TextScriptEnd
.MakePaymentText
text_far _SafariZoneGateSafariZoneWorker1ThatllBe500PleaseText
sound_get_item_1
text_far _SafariZoneGateSafariZoneWorker1CallYouOnThePAText
text_end
2014-05-18 18:19:10 +00:00
.PleaseComeAgainText
text_far _SafariZoneGateSafariZoneWorker1PleaseComeAgainText
text_end
2014-05-18 18:19:10 +00:00
.NotEnoughMoneyText
text_far _SafariZoneGateSafariZoneWorker1NotEnoughMoneyText
text_end
2014-05-18 18:19:10 +00:00
SafariZoneGateSafariZoneWorker1LeavingEarlyText:
text_far _SafariZoneGateSafariZoneWorker1LeavingEarlyText
text_asm
2014-05-18 18:19:10 +00:00
call YesNoChoice
ld a, [wCurrentMenuItem]
2014-05-18 18:19:10 +00:00
and a
jr nz, .not_ready_to_leave
ld hl, .ReturnSafariBallsText
2014-05-18 18:19:10 +00:00
call PrintText
xor a
ld [wSpritePlayerStateData1FacingDirection], a
ld a, D_DOWN
ld c, 3
call SafariZoneEntranceAutoWalk
2015-07-21 01:32:02 +00:00
ResetEvents EVENT_SAFARI_GAME_OVER, EVENT_IN_SAFARI_ZONE
ld a, SCRIPT_SAFARIZONEGATE_DEFAULT
ld [wNextSafariZoneGateScript], a
jr .set_current_script
.not_ready_to_leave
ld hl, .GoodLuckText
2014-05-18 18:19:10 +00:00
call PrintText
ld a, SPRITE_FACING_UP
ld [wSpritePlayerStateData1FacingDirection], a
ld a, D_UP
ld c, 1
call SafariZoneEntranceAutoWalk
ld a, SCRIPT_SAFARIZONEGATE_LEAVING_SAFARI
ld [wNextSafariZoneGateScript], a
.set_current_script
ld a, SCRIPT_SAFARIZONEGATE_SET_SCRIPT_AFTER_MOVE
ld [wSafariZoneGateCurScript], a
2014-05-18 18:19:10 +00:00
jp TextScriptEnd
.ReturnSafariBallsText
text_far _SafariZoneGateSafariZoneWorker1ReturnSafariBallsText
text_end
2014-05-18 18:19:10 +00:00
.GoodLuckText
text_far _SafariZoneGateSafariZoneWorker1GoodLuckText
text_end
2014-05-18 18:19:10 +00:00
SafariZoneGateSafariZoneWorker1GoodHaulComeAgainText:
text_far _SafariZoneGateSafariZoneWorker1GoodHaulComeAgainText
text_end
2014-05-18 18:19:10 +00:00
SafariZoneGateSafariZoneWorker2Text:
text_asm
ld hl, .FirstTimeHereText
2014-05-18 18:19:10 +00:00
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
2014-05-18 18:19:10 +00:00
and a
ld hl, .YoureARegularHereText
jr nz, .print_text
ld hl, .SafariZoneExplanationText
.print_text
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
.FirstTimeHereText
text_far _SafariZoneGateSafariZoneWorker2FirstTimeHereText
text_end
2014-05-18 18:19:10 +00:00
.SafariZoneExplanationText
text_far _SafariZoneGateSafariZoneWorker2SafariZoneExplanationText
text_end
2014-05-18 18:19:10 +00:00
.YoureARegularHereText
text_far _SafariZoneGateSafariZoneWorker2YoureARegularHereText
text_end