SafariZoneGate_Script: call EnableAutoTextBoxDrawing ld hl, SafariZoneGate_ScriptPointers ld a, [wSafariZoneGateCurScript] call CallFunctionInTable ret 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_events/safari_game.asm SafariZoneGateDefaultScript: ld hl, .PlayerNextToSafariZoneWorker1CoordsArray call ArePlayerCoordsInArray ret nc ld a, TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1_1 ldh [hTextID], a call DisplayTextID ld a, PAD_BUTTONS | PAD_CTRL_PAD ld [wJoyIgnore], a xor a ldh [hJoyHeld], a ld a, SPRITE_FACING_RIGHT ld [wSpritePlayerStateData1FacingDirection], a 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 ret .player_not_next_to_worker ld a, PAD_RIGHT ld c, 1 call SafariZoneEntranceAutoWalk ld a, PAD_CTRL_PAD ld [wJoyIgnore], a ld a, SCRIPT_SAFARIZONEGATE_PLAYER_MOVING_RIGHT ld [wSafariZoneGateCurScript], a ret .PlayerNextToSafariZoneWorker1CoordsArray: dbmapcoord 3, 2 dbmapcoord 4, 2 db -1 ; end SafariZoneGatePlayerMovingRightScript: call SafariZoneGateReturnSimulatedJoypadStateScript ret nz SafariZoneGateWouldYouLikeToJoinScript: xor a ldh [hJoyHeld], a ld [wJoyIgnore], a call UpdateSprites ld a, TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1_WOULD_YOU_LIKE_TO_JOIN ldh [hTextID], a call DisplayTextID ld a, PAD_BUTTONS | PAD_CTRL_PAD ld [wJoyIgnore], a ret SafariZoneGatePlayerMovingUpScript: call SafariZoneGateReturnSimulatedJoypadStateScript ret nz xor a ld [wJoyIgnore], a ld a, SCRIPT_SAFARIZONEGATE_LEAVING_SAFARI ld [wSafariZoneGateCurScript], a ret SafariZoneGateLeavingSafariScript: ld a, PLAYER_DIR_DOWN ld [wPlayerMovingDirection], a CheckAndResetEvent EVENT_SAFARI_GAME_OVER jr z, .leaving_early ResetEventReuseHL EVENT_IN_SAFARI_ZONE call UpdateSprites ld a, PAD_CTRL_PAD ld [wJoyIgnore], a ld a, TEXT_SAFARIZONEGATE_SAFARI_ZONE_WORKER1_GOOD_HAUL_COME_AGAIN ldh [hTextID], a call DisplayTextID xor a ld [wNumSafariBalls], a ld [wSafariSteps], a ld [wSafariSteps], a ; ????? ld a, PAD_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 [hTextID], a call DisplayTextID .return ret SafariZoneGatePlayerMovingDownScript: call SafariZoneGateReturnSimulatedJoypadStateScript ret nz xor a ld [wJoyIgnore], a ld a, SCRIPT_SAFARIZONEGATE_DEFAULT ld [wSafariZoneGateCurScript], a ret SafariZoneGateSetScriptAfterMoveScript: call SafariZoneGateReturnSimulatedJoypadStateScript ret nz call Delay3 ld a, [wNextSafariZoneGateScript] ld [wSafariZoneGateCurScript], a ret SafariZoneEntranceAutoWalk: push af ld b, 0 ld a, c ld [wSimulatedJoypadStatesIndex], a ld hl, wSimulatedJoypadStatesEnd pop af call FillMemory jp StartSimulatingJoypadStates SafariZoneGateReturnSimulatedJoypadStateScript: ld a, [wSimulatedJoypadStatesIndex] 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 SafariZoneGateSafariZoneWorker1Text: text_far _SafariZoneGateSafariZoneWorker1Text text_end SafariZoneGateSafariZoneWorker1WouldYouLikeToJoinText: text_asm callfar SafariZoneGatePrintSafariZoneWorker1WouldYouLikeToJoinText jp TextScriptEnd SafariZoneGateSafariZoneWorker1LeavingEarlyText: text_far _SafariZoneGateSafariZoneWorker1LeavingEarlyText text_asm call YesNoChoice ld a, [wCurrentMenuItem] and a jr nz, .not_ready_to_leave ld hl, .ReturnSafariBallsText call PrintText xor a ld [wSpritePlayerStateData1FacingDirection], a ld a, PAD_DOWN ld c, 3 call SafariZoneEntranceAutoWalk 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 call PrintText ld a, SPRITE_FACING_UP ld [wSpritePlayerStateData1FacingDirection], a ld a, PAD_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 jp TextScriptEnd .ReturnSafariBallsText text_far _SafariZoneGateSafariZoneWorker1ReturnSafariBallsText text_end .GoodLuckText text_far _SafariZoneGateSafariZoneWorker1GoodLuckText text_end SafariZoneGateSafariZoneWorker1GoodHaulComeAgainText: text_far _SafariZoneGateSafariZoneWorker1GoodHaulComeAgainText text_end SafariZoneGateSafariZoneWorker2Text: text_asm callfar SafariZoneGatePrintSafariZoneWorker2Text jp TextScriptEnd