pokered/scripts/SilphCo11F.asm

396 lines
8.9 KiB
NASM
Raw Permalink Normal View History

SilphCo11F_Script:
call SilphCo11FGateCallbackScript
2014-05-18 18:19:10 +00:00
call EnableAutoTextBoxDrawing
ld hl, SilphCo11TrainerHeaders
ld de, SilphCo11F_ScriptPointers
ld a, [wSilphCo11FCurScript]
2014-05-18 18:19:10 +00:00
call ExecuteCurMapScriptInTable
ld [wSilphCo11FCurScript], a
2014-05-18 18:19:10 +00:00
ret
SilphCo11FGateCallbackScript:
2016-01-03 19:17:10 +00:00
ld hl, wCurrentMapScriptFlags
bit BIT_CUR_MAP_LOADED_1, [hl]
res BIT_CUR_MAP_LOADED_1, [hl]
2014-05-18 18:19:10 +00:00
ret z
2015-08-05 21:20:29 +00:00
ld hl, SilphCo11GateCoords
call SilphCo11F_SetCardKeyDoorYScript
call SilphCo11FSetUnlockedDoorEventScript
2015-07-21 17:36:03 +00:00
CheckEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR
2014-05-18 18:19:10 +00:00
ret nz
ld a, $20
2015-07-24 21:39:45 +00:00
ld [wNewTileBlockID], a
2015-08-05 21:20:29 +00:00
lb bc, 6, 3
2014-09-14 18:29:18 +00:00
predef_jump ReplaceTileBlock
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
SilphCo11GateCoords:
dbmapcoord 3, 6
db -1 ; end
2014-05-18 18:19:10 +00:00
SilphCo11F_SetCardKeyDoorYScript:
2014-05-18 18:19:10 +00:00
push hl
2014-09-14 18:29:18 +00:00
ld hl, wCardKeyDoorY
2014-05-18 18:19:10 +00:00
ld a, [hli]
ld b, a
ld a, [hl]
ld c, a
xor a
ldh [hUnlockedSilphCoDoors], a
2014-05-18 18:19:10 +00:00
pop hl
.loop_check_doors
2014-05-18 18:19:10 +00:00
ld a, [hli]
cp $ff
jr z, .exit_loop
2014-05-18 18:19:10 +00:00
push hl
ld hl, hUnlockedSilphCoDoors
2014-05-18 18:19:10 +00:00
inc [hl]
pop hl
cp b
jr z, .check_y_coord
2014-05-18 18:19:10 +00:00
inc hl
jr .loop_check_doors
.check_y_coord
2014-05-18 18:19:10 +00:00
ld a, [hli]
cp c
jr nz, .loop_check_doors
2014-09-14 18:29:18 +00:00
ld hl, wCardKeyDoorY
2014-05-18 18:19:10 +00:00
xor a
ld [hli], a
ld [hl], a
ret
.exit_loop
2014-05-18 18:19:10 +00:00
xor a
ldh [hUnlockedSilphCoDoors], a
2014-05-18 18:19:10 +00:00
ret
SilphCo11FSetUnlockedDoorEventScript:
ldh a, [hUnlockedSilphCoDoors]
2014-05-18 18:19:10 +00:00
and a
ret z
2015-07-21 17:36:03 +00:00
SetEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR
2014-05-18 18:19:10 +00:00
ret
SilphCo11FTeamRocketLeavesScript:
ld hl, .HideMissableObjectIDs
.hide_loop
2014-05-18 18:19:10 +00:00
ld a, [hli]
cp $ff
jr z, .done_hiding
2014-05-18 18:19:10 +00:00
push hl
2015-07-25 03:27:59 +00:00
ld [wMissableObjectIndex], a
predef HideObject
2014-05-18 18:19:10 +00:00
pop hl
jr .hide_loop
.done_hiding
ld hl, .ShowMissableObjectIDs
.show_loop
2014-05-18 18:19:10 +00:00
ld a, [hli]
cp -1
2014-05-18 18:19:10 +00:00
ret z
push hl
2015-07-25 03:27:59 +00:00
ld [wMissableObjectIndex], a
predef ShowObject
2014-05-18 18:19:10 +00:00
pop hl
jr .show_loop
2014-05-18 18:19:10 +00:00
.ShowMissableObjectIDs:
db HS_SAFFRON_CITY_8
db HS_SAFFRON_CITY_9
db HS_SAFFRON_CITY_A
db HS_SAFFRON_CITY_B
db HS_SAFFRON_CITY_C
db HS_SAFFRON_CITY_D
db -1 ; end
2014-05-18 18:19:10 +00:00
.HideMissableObjectIDs:
db HS_SAFFRON_CITY_1
db HS_SAFFRON_CITY_2
db HS_SAFFRON_CITY_3
db HS_SAFFRON_CITY_4
db HS_SAFFRON_CITY_5
db HS_SAFFRON_CITY_6
db HS_SAFFRON_CITY_7
db HS_SAFFRON_CITY_E
db HS_SAFFRON_CITY_F
db HS_SILPH_CO_2F_2
db HS_SILPH_CO_2F_3
db HS_SILPH_CO_2F_4
db HS_SILPH_CO_2F_5
db HS_SILPH_CO_3F_1
db HS_SILPH_CO_3F_2
db HS_SILPH_CO_4F_1
db HS_SILPH_CO_4F_2
db HS_SILPH_CO_4F_3
db HS_SILPH_CO_5F_1
db HS_SILPH_CO_5F_2
db HS_SILPH_CO_5F_3
db HS_SILPH_CO_5F_4
db HS_SILPH_CO_6F_1
db HS_SILPH_CO_6F_2
db HS_SILPH_CO_6F_3
db HS_SILPH_CO_7F_1
db HS_SILPH_CO_7F_2
db HS_SILPH_CO_7F_3
db HS_SILPH_CO_7F_4
db HS_SILPH_CO_8F_1
db HS_SILPH_CO_8F_2
db HS_SILPH_CO_8F_3
db HS_SILPH_CO_9F_1
db HS_SILPH_CO_9F_2
db HS_SILPH_CO_9F_3
db HS_SILPH_CO_10F_1
db HS_SILPH_CO_10F_2
db HS_SILPH_CO_11F_1
db HS_SILPH_CO_11F_2
db HS_SILPH_CO_11F_3
db -1 ; end
2014-05-18 18:19:10 +00:00
SilphCo11FResetCurScript:
2014-05-18 18:19:10 +00:00
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
; fallthrough
SilphCo11FSetCurScript:
ld [wSilphCo11FCurScript], a
2015-08-31 02:38:41 +00:00
ld [wCurMapScript], a
2014-05-18 18:19:10 +00:00
ret
SilphCo11F_ScriptPointers:
def_script_pointers
dw_const SilphCo11FDefaultScript, SCRIPT_SILPHCO11F_DEFAULT
dw_const DisplayEnemyTrainerTextAndStartBattle, SCRIPT_SILPHCO11F_START_BATTLE
dw_const EndTrainerBattle, SCRIPT_SILPHCO11F_END_BATTLE
dw_const SilphCo11FGiovanniBattleFacingScript, SCRIPT_SILPHCO11F_GIOVANNI_FACING
dw_const SilphCo11FGiovanniStartBattleScript, SCRIPT_SILPHCO11F_GIOVANNI_START_BATTLE
dw_const SilphCo11FGiovanniAfterBattleScript, SCRIPT_SILPHCO11F_GIOVANNI_AFTER_BATTLE
SilphCo11FDefaultScript:
2015-07-21 17:36:03 +00:00
CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
2014-05-18 18:19:10 +00:00
ret nz
ld hl, .PlayerCoordsArray
2014-05-18 18:19:10 +00:00
call ArePlayerCoordsInArray
jp nc, CheckFightingMapTrainers
2015-07-18 15:17:29 +00:00
ld a, [wCoordIndex]
ld [wSavedCoordIndex], a
2014-05-18 18:19:10 +00:00
xor a
ldh [hJoyHeld], a
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
ld a, TEXT_SILPHCO11F_GIOVANNI
ldh [hTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
ld a, SILPHCO11F_GIOVANNI
ldh [hSpriteIndex], a
2014-05-18 18:19:10 +00:00
call SetSpriteMovementBytesToFF
ld de, .GiovanniMovement
2014-05-18 18:19:10 +00:00
call MoveSprite
ld a, SCRIPT_SILPHCO11F_GIOVANNI_FACING
jp SilphCo11FSetCurScript
2014-05-18 18:19:10 +00:00
.PlayerCoordsArray:
dbmapcoord 6, 13
dbmapcoord 7, 12
db -1 ; end
2014-05-18 18:19:10 +00:00
.GiovanniMovement:
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db -1 ; end
2014-05-18 18:19:10 +00:00
SilphCo11FSetPlayerAndSpriteFacingDirectionScript:
2015-07-20 00:52:26 +00:00
ld [wPlayerMovingDirection], a
ld a, SILPHCO11F_GIOVANNI
ldh [hSpriteIndex], a
2014-05-18 18:19:10 +00:00
ld a, b
ldh [hSpriteFacingDirection], a
jp SetSpriteFacingDirectionAndDelay
2014-05-18 18:19:10 +00:00
SilphCo11FGiovanniAfterBattleScript:
2015-08-31 02:38:41 +00:00
ld a, [wIsInBattle]
2014-05-18 18:19:10 +00:00
cp $ff
jp z, SilphCo11FResetCurScript
ld a, [wSavedCoordIndex]
cp 1 ; index of second, upper-right entry in SilphCo11FDefaultScript.PlayerCoordsArray
jr z, .face_player_up
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_LEFT
2015-07-18 15:17:29 +00:00
ld b, SPRITE_FACING_RIGHT
jr .continue
.face_player_up
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_UP
2015-07-18 15:17:29 +00:00
ld b, SPRITE_FACING_DOWN
.continue
call SilphCo11FSetPlayerAndSpriteFacingDirectionScript
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
ld a, TEXT_SILPHCO11F_GIOVANNI_YOU_RUINED_OUR_PLANS
ldh [hTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
2014-09-13 07:50:56 +00:00
call GBFadeOutToBlack
call SilphCo11FTeamRocketLeavesScript
2014-05-18 18:19:10 +00:00
call UpdateSprites
call Delay3
2014-09-13 07:50:56 +00:00
call GBFadeInFromBlack
2015-07-21 17:36:03 +00:00
SetEvent EVENT_BEAT_SILPH_CO_GIOVANNI
2014-05-18 18:19:10 +00:00
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
jp SilphCo11FSetCurScript
2014-05-18 18:19:10 +00:00
SilphCo11FGiovanniBattleFacingScript:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
2014-05-18 18:19:10 +00:00
ret nz
ld a, SILPHCO11F_GIOVANNI
ldh [hSpriteIndex], a
2014-05-18 18:19:10 +00:00
call SetSpriteMovementBytesToFF
ld a, [wSavedCoordIndex]
cp 1 ; index of second, upper-right entry in SilphCo11FDefaultScript.PlayerCoordsArray
jr z, .face_player_up
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_LEFT
2015-07-18 15:17:29 +00:00
ld b, SPRITE_FACING_RIGHT
jr .continue
.face_player_up
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_UP
2015-07-18 15:17:29 +00:00
ld b, SPRITE_FACING_DOWN
.continue
call SilphCo11FSetPlayerAndSpriteFacingDirectionScript
2014-05-18 18:19:10 +00:00
call Delay3
ld a, SCRIPT_SILPHCO11F_GIOVANNI_START_BATTLE
jp SilphCo11FSetCurScript
2014-05-18 18:19:10 +00:00
SilphCo11FGiovanniStartBattleScript:
ld hl, wStatusFlags3
set BIT_TALKED_TO_TRAINER, [hl]
set BIT_PRINT_END_BATTLE_TEXT, [hl]
ld hl, SilphCo10FGiovanniILostAgainText
ld de, SilphCo10FGiovanniILostAgainText
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
ldh a, [hSpriteIndex]
2014-09-13 07:50:56 +00:00
ld [wSpriteIndex], a
2014-05-18 18:19:10 +00:00
call EngageMapTrainer
call InitBattleEnemyParameters
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
ld a, SCRIPT_SILPHCO11F_GIOVANNI_AFTER_BATTLE
jp SilphCo11FSetCurScript
2014-05-18 18:19:10 +00:00
SilphCo11F_TextPointers:
def_text_pointers
dw_const SilphCo11FSilphPresidentText, TEXT_SILPHCO11F_SILPH_PRESIDENT
dw_const SilphCo11FBeautyText, TEXT_SILPHCO11F_BEAUTY
dw_const SilphCo11FGiovanniText, TEXT_SILPHCO11F_GIOVANNI
dw_const SilphCo11FRocket1Text, TEXT_SILPHCO11F_ROCKET1
dw_const SilphCo11FRocket2Text, TEXT_SILPHCO11F_ROCKET2
dw_const SilphCo11FGiovanniYouRuinedOurPlansText, TEXT_SILPHCO11F_GIOVANNI_YOU_RUINED_OUR_PLANS
2014-05-18 18:19:10 +00:00
SilphCo11TrainerHeaders:
def_trainers 4
2016-06-12 00:24:04 +00:00
SilphCo11TrainerHeader0:
trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_0, 4, SilphCo11FRocket1BattleText, SilphCo11FRocket1EndBattleText, SilphCo11FRocket1AfterBattleText
2016-06-12 00:24:04 +00:00
SilphCo11TrainerHeader1:
trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_1, 3, SilphCo11FRocket2BattleText, SilphCo11FRocket2EndBattleText, SilphCo11FRocket2AfterBattleText
db -1 ; end
2014-05-18 18:19:10 +00:00
SilphCo11FSilphPresidentText:
text_asm
2015-07-21 17:36:03 +00:00
CheckEvent EVENT_GOT_MASTER_BALL
jp nz, .got_item
ld hl, .Text
2014-05-18 18:19:10 +00:00
call PrintText
2015-08-05 21:20:29 +00:00
lb bc, MASTER_BALL, 1
2014-05-18 18:19:10 +00:00
call GiveItem
jr nc, .bag_full
ld hl, .ReceivedMasterBallText
2014-05-18 18:19:10 +00:00
call PrintText
2015-07-21 17:36:03 +00:00
SetEvent EVENT_GOT_MASTER_BALL
jr .done
.bag_full
ld hl, .NoRoomText
2014-05-18 18:19:10 +00:00
call PrintText
jr .done
.got_item
ld hl, .MasterBallDescriptionText
2014-05-18 18:19:10 +00:00
call PrintText
.done
2014-05-18 18:19:10 +00:00
jp TextScriptEnd
.Text:
text_far _SilphCo11FSilphPresidentText
text_end
2014-05-18 18:19:10 +00:00
.ReceivedMasterBallText:
text_far _SilphCo11FSilphPresidentReceivedMasterBallText
sound_get_key_item
text_end
2014-05-18 18:19:10 +00:00
.MasterBallDescriptionText:
text_far _SilphCo11FSilphPresidentMasterBallDescriptionText
text_end
2014-05-18 18:19:10 +00:00
.NoRoomText:
text_far _SilphCo11FSilphPresidentNoRoomText
text_end
2014-05-18 18:19:10 +00:00
SilphCo11FBeautyText:
text_far _SilphCo11FBeautyText
text_end
2014-05-18 18:19:10 +00:00
SilphCo11FGiovanniText:
text_far _SilphCo11FGiovanniText
text_end
2014-05-18 18:19:10 +00:00
SilphCo10FGiovanniILostAgainText:
text_far _SilphCo10FGiovanniILostAgainText
text_end
2014-05-18 18:19:10 +00:00
SilphCo11FGiovanniYouRuinedOurPlansText:
text_far _SilphCo11FGiovanniYouRuinedOurPlansText
text_end
2014-05-18 18:19:10 +00:00
SilphCo11FRocket1Text:
text_asm
2014-05-18 18:19:10 +00:00
ld hl, SilphCo11TrainerHeader0
call TalkToTrainer
jp TextScriptEnd
SilphCo11FRocket1BattleText:
text_far _SilphCo11FRocket1BattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo11FRocket1EndBattleText:
text_far _SilphCo11FRocket1EndBattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo11FRocket1AfterBattleText:
text_far _SilphCo11FRocket1AfterBattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo11FRocket2Text:
text_asm
2014-05-18 18:19:10 +00:00
ld hl, SilphCo11TrainerHeader1
call TalkToTrainer
jp TextScriptEnd
SilphCo11FRocket2BattleText:
text_far _SilphCo11FRocket2BattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo11FRocket2EndBattleText:
text_far _SilphCo11FRocket2EndBattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo11FRocket2AfterBattleText:
text_far _SilphCo11FRocket2AfterBattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo10FPorygonText: ; unreferenced
text_asm
ld hl, .Text
2014-05-18 18:19:10 +00:00
call PrintText
ld a, PORYGON
call DisplayPokedex
jp TextScriptEnd
.Text:
text_far _SilphCo10FPorygonText
text_end