pokered/scripts/SilphCo7F.asm

504 lines
12 KiB
NASM
Raw Normal View History

SilphCo7F_Script:
call SilphCo7F_GateCallbackScript
2014-05-18 18:19:10 +00:00
call EnableAutoTextBoxDrawing
ld hl, SilphCo7TrainerHeaders
ld de, SilphCo7F_ScriptPointers
ld a, [wSilphCo7FCurScript]
2014-05-18 18:19:10 +00:00
call ExecuteCurMapScriptInTable
ld [wSilphCo7FCurScript], a
2014-05-18 18:19:10 +00:00
ret
SilphCo7F_GateCallbackScript:
2016-01-03 19:17:10 +00:00
ld hl, wCurrentMapScriptFlags
2014-05-18 18:19:10 +00:00
bit 5, [hl]
res 5, [hl]
ret z
ld hl, .GateCoordinates
call SilphCo7F_SetCardKeyDoorYScript
call SilphCo7F_UnlockedDoorEventScript
2015-07-21 17:36:03 +00:00
CheckEvent EVENT_SILPH_CO_7_UNLOCKED_DOOR1
jr nz, .unlock_door1
2014-05-18 18:19:10 +00:00
push af
ld a, $54
2015-07-24 21:39:45 +00:00
ld [wNewTileBlockID], a
2015-08-05 21:20:29 +00:00
lb bc, 3, 5
2014-09-14 18:29:18 +00:00
predef ReplaceTileBlock
2014-05-18 18:19:10 +00:00
pop af
.unlock_door1
2015-07-21 17:36:03 +00:00
CheckEventAfterBranchReuseA EVENT_SILPH_CO_7_UNLOCKED_DOOR2, EVENT_SILPH_CO_7_UNLOCKED_DOOR1
jr nz, .unlock_door2
2014-05-18 18:19:10 +00:00
push af
ld a, $54
2015-07-24 21:39:45 +00:00
ld [wNewTileBlockID], a
2015-08-05 21:20:29 +00:00
lb bc, 2, 10
2014-09-14 18:29:18 +00:00
predef ReplaceTileBlock
2014-05-18 18:19:10 +00:00
pop af
.unlock_door2
2015-07-21 17:36:03 +00:00
CheckEventAfterBranchReuseA EVENT_SILPH_CO_7_UNLOCKED_DOOR3, EVENT_SILPH_CO_7_UNLOCKED_DOOR2
2014-05-18 18:19:10 +00:00
ret nz
ld a, $54
2015-07-24 21:39:45 +00:00
ld [wNewTileBlockID], a
2015-08-05 21:20:29 +00:00
lb bc, 6, 10
2014-09-14 18:29:18 +00:00
predef_jump ReplaceTileBlock
2014-05-18 18:19:10 +00:00
.GateCoordinates:
dbmapcoord 5, 3
dbmapcoord 10, 2
dbmapcoord 10, 6
db -1 ; end
2014-05-18 18:19:10 +00:00
SilphCo7F_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
SilphCo7F_UnlockedDoorEventScript:
2015-07-21 17:36:03 +00:00
EventFlagAddress hl, EVENT_SILPH_CO_7_UNLOCKED_DOOR1
ldh a, [hUnlockedSilphCoDoors]
2014-05-18 18:19:10 +00:00
and a
ret z
cp $1
jr nz, .unlock_door1
2015-07-21 17:36:03 +00:00
SetEventReuseHL EVENT_SILPH_CO_7_UNLOCKED_DOOR1
2014-05-18 18:19:10 +00:00
ret
.unlock_door1
2014-05-18 18:19:10 +00:00
cp $2
jr nz, .unlock_door2
2015-07-21 17:36:03 +00:00
SetEventAfterBranchReuseHL EVENT_SILPH_CO_7_UNLOCKED_DOOR2, EVENT_SILPH_CO_7_UNLOCKED_DOOR1
2014-05-18 18:19:10 +00:00
ret
.unlock_door2
2015-07-21 17:36:03 +00:00
SetEventAfterBranchReuseHL EVENT_SILPH_CO_7_UNLOCKED_DOOR3, EVENT_SILPH_CO_7_UNLOCKED_DOOR1
2014-05-18 18:19:10 +00:00
ret
SilphCo7FSetDefaultScript:
2014-05-18 18:19:10 +00:00
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2014-05-18 18:19:10 +00:00
SilphCo7FSetCurScript:
ld [wSilphCo7FCurScript], a
2015-08-31 02:38:41 +00:00
ld [wCurMapScript], a
2014-05-18 18:19:10 +00:00
ret
SilphCo7F_ScriptPointers:
def_script_pointers
dw_const SilphCo7FDefaultScript, SCRIPT_SILPHCO7F_DEFAULT
dw_const DisplayEnemyTrainerTextAndStartBattle, SCRIPT_SILPHCO7F_START_BATTLE
dw_const EndTrainerBattle, SCRIPT_SILPHCO7F_END_BATTLE
dw_const SilphCo7FRivalStartBattleScript, SCRIPT_SILPHCO7F_RIVAL_START_BATTLE
dw_const SilphCo7FRivalAfterBattleScript, SCRIPT_SILPHCO7F_RIVAL_AFTER_BATTLE
dw_const SilphCo7FRivalExitScript, SCRIPT_SILPHCO7F_RIVAL_EXIT
SilphCo7FDefaultScript:
2015-07-21 17:36:03 +00:00
CheckEvent EVENT_BEAT_SILPH_CO_RIVAL
2014-05-18 18:19:10 +00:00
jp nz, CheckFightingMapTrainers
ld hl, .RivalEncounterCoordinates
2014-05-18 18:19:10 +00:00
call ArePlayerCoordsInArray
jp nc, CheckFightingMapTrainers
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
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
ld a, SFX_STOP_ALL_MUSIC
2015-08-09 05:32:44 +00:00
ld [wNewSoundID], a
2014-05-18 18:19:10 +00:00
call PlaySound
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
call PlayMusic
ld a, TEXT_SILPHCO7F_RIVAL
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
ld a, SILPHCO7F_RIVAL
ldh [hSpriteIndex], a
2014-05-18 18:19:10 +00:00
call SetSpriteMovementBytesToFF
ld de, .RivalMovementUp
2015-07-19 03:49:52 +00:00
ld a, [wCoordIndex]
ld [wSavedCoordIndex], a
cp 1 ; index of second, lower entry in .RivalEncounterCoordinates
jr z, .full_rival_movement
2014-05-18 18:19:10 +00:00
inc de
.full_rival_movement
ld a, SILPHCO7F_RIVAL
ldh [hSpriteIndex], a
2014-05-18 18:19:10 +00:00
call MoveSprite
ld a, SCRIPT_SILPHCO7F_RIVAL_START_BATTLE
jp SilphCo7FSetCurScript
2014-05-18 18:19:10 +00:00
.RivalEncounterCoordinates:
dbmapcoord 3, 2
dbmapcoord 3, 3
db -1 ; end
2014-05-18 18:19:10 +00:00
.RivalMovementUp:
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db -1 ; end
2014-05-18 18:19:10 +00:00
SilphCo7FRivalStartBattleScript:
ld a, [wd730]
2014-05-18 18:19:10 +00:00
bit 0, a
ret nz
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
ld a, TEXT_SILPHCO7F_RIVAL_WAITED_HERE
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
call Delay3
ld hl, wd72d
2014-05-18 18:19:10 +00:00
set 6, [hl]
set 7, [hl]
ld hl, SilphCo7FRivalDefeatedText
ld de, SilphCo7FRivalVictoryText
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
2020-07-17 17:27:27 +00:00
ld a, OPP_RIVAL2
2015-08-31 02:38:41 +00:00
ld [wCurOpponent], a
ld a, [wRivalStarter]
2014-05-21 12:48:30 +00:00
cp STARTER2
jr nz, .not_starter_2
2014-05-18 18:19:10 +00:00
ld a, $7
jr .set_trainer_no
.not_starter_2
2014-05-21 12:48:30 +00:00
cp STARTER3
jr nz, .no_starter_3
2014-05-18 18:19:10 +00:00
ld a, $8
jr .set_trainer_no
.no_starter_3
2014-05-18 18:19:10 +00:00
ld a, $9
.set_trainer_no
2015-08-31 02:38:41 +00:00
ld [wTrainerNo], a
ld a, SCRIPT_SILPHCO7F_RIVAL_AFTER_BATTLE
jp SilphCo7FSetCurScript
2014-05-18 18:19:10 +00:00
SilphCo7FRivalAfterBattleScript:
2015-08-31 02:38:41 +00:00
ld a, [wIsInBattle]
2014-05-18 18:19:10 +00:00
cp $ff
jp z, SilphCo7FSetDefaultScript
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2015-07-21 17:36:03 +00:00
SetEvent EVENT_BEAT_SILPH_CO_RIVAL
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
ld a, SILPHCO7F_RIVAL
ldh [hSpriteIndex], a
2015-07-18 15:17:29 +00:00
ld a, SPRITE_FACING_UP
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
ld a, TEXT_SILPHCO7F_RIVAL_GOOD_LUCK_TO_YOU
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
ld a, SFX_STOP_ALL_MUSIC
2015-08-09 05:32:44 +00:00
ld [wNewSoundID], a
2014-05-18 18:19:10 +00:00
call PlaySound
farcall Music_RivalAlternateStart
ld de, .RivalWalkAroundPlayerMovement
ld a, [wSavedCoordIndex]
cp 1 ; index of second, lower entry in SilphCo7FDefaultScript.RivalEncounterCoordinates
jr nz, .walk_around_player
ld de, .RivalExitRightMovement
.walk_around_player
ld a, SILPHCO7F_RIVAL
ldh [hSpriteIndex], a
2014-05-18 18:19:10 +00:00
call MoveSprite
ld a, SCRIPT_SILPHCO7F_RIVAL_EXIT
jp SilphCo7FSetCurScript
2014-05-18 18:19:10 +00:00
.RivalExitRightMovement:
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
db -1 ; end
2014-05-18 18:19:10 +00:00
.RivalWalkAroundPlayerMovement:
db NPC_MOVEMENT_LEFT
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_DOWN
db -1 ; end
2014-05-18 18:19:10 +00:00
SilphCo7FRivalExitScript:
ld a, [wd730]
2014-05-18 18:19:10 +00:00
bit 0, a
ret nz
2014-09-26 11:37:21 +00:00
ld a, HS_SILPH_CO_7F_RIVAL
2015-07-25 03:27:59 +00:00
ld [wMissableObjectIndex], a
predef HideObject
call PlayDefaultMusic
2014-05-18 18:19:10 +00:00
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
jp SilphCo7FSetCurScript
2014-05-18 18:19:10 +00:00
SilphCo7F_TextPointers:
def_text_pointers
dw_const SilphCo7FSilphWorkerM1Text, TEXT_SILPHCO7F_SILPH_WORKER_M1
dw_const SilphCo7FSilphWorkerM2Text, TEXT_SILPHCO7F_SILPH_WORKER_M2
dw_const SilphCo7FSilphWorkerM3Text, TEXT_SILPHCO7F_SILPH_WORKER_M3
dw_const SilphCo7FSilphWorkerM4Text, TEXT_SILPHCO7F_SILPH_WORKER_M4
dw_const SilphCo7FRocket1Text, TEXT_SILPHCO7F_ROCKET1
dw_const SilphCo7FScientistText, TEXT_SILPHCO7F_SCIENTIST
dw_const SilphCo7FRocket2Text, TEXT_SILPHCO7F_ROCKET2
dw_const SilphCo7FRocket3Text, TEXT_SILPHCO7F_ROCKET3
dw_const SilphCo7FRivalText, TEXT_SILPHCO7F_RIVAL
dw_const PickUpItemText, TEXT_SILPHCO7F_CALCIUM
dw_const PickUpItemText, TEXT_SILPHCO7F_TM_SWORDS_DANCE
dw_const PickUpItemText, TEXT_SILPHCO7F_UNREFERENCED_ITEM ; unreferenced
dw_const SilphCo7FRivalWaitedHereText, TEXT_SILPHCO7F_RIVAL_WAITED_HERE
dw_const SilphCo7FRivalDefeatedText, TEXT_SILPHCO7F_RIVAL_DEFEATED
dw_const SilphCo7FRivalGoodLuckToYouText, TEXT_SILPHCO7F_RIVAL_GOOD_LUCK_TO_YOU
2014-05-18 18:19:10 +00:00
SilphCo7TrainerHeaders:
def_trainers 5
2016-06-12 00:24:04 +00:00
SilphCo7TrainerHeader0:
trainer EVENT_BEAT_SILPH_CO_7F_TRAINER_0, 2, SilphCo7FRocket1BattleText, SilphCo7FRocket1EndBattleText, SilphCo7FRocket1AfterBattleText
SilphCo7TrainerHeader1:
trainer EVENT_BEAT_SILPH_CO_7F_TRAINER_1, 3, SilphCo7FScientistBattleText, SilphCo7FScientistEndBattleText, SilphCo7FScientistAfterBattleText
SilphCo7TrainerHeader2:
trainer EVENT_BEAT_SILPH_CO_7F_TRAINER_2, 3, SilphCo7FRocket2BattleText, SilphCo7FRocket2EndBattleText, SilphCo7FRocket2AfterBattleText
SilphCo7TrainerHeader3:
trainer EVENT_BEAT_SILPH_CO_7F_TRAINER_3, 4, SilphCo7FRocket3BattleText, SilphCo7FRocket3EndBattleText, SilphCo7FRocket3AfterBattleText
db -1 ; end
2014-05-18 18:19:10 +00:00
SilphCo7FSilphWorkerM1Text:
2014-05-18 18:19:10 +00:00
; lapras guy
text_asm
ld a, [wd72e]
2014-05-18 18:19:10 +00:00
bit 0, a ; got lapras?
jr z, .give_lapras
2015-07-21 17:36:03 +00:00
CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
jr nz, .saved_silph
ld hl, .IsOurPresidentOkText
2014-05-18 18:19:10 +00:00
call PrintText
jr .done
.give_lapras
ld hl, .HaveThisPokemonText
2014-05-18 18:19:10 +00:00
call PrintText
2015-08-05 21:20:29 +00:00
lb bc, LAPRAS, 15
2014-05-18 18:19:10 +00:00
call GivePokemon
jr nc, .done
ld a, [wSimulatedJoypadStatesEnd]
2014-05-18 18:19:10 +00:00
and a
call z, WaitForTextScrollButtonPress
call EnableAutoTextBoxDrawing
ld hl, .LaprasDescriptionText
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, wd72e
2014-05-18 18:19:10 +00:00
set 0, [hl]
jr .done
.saved_silph
ld hl, .SavedText
2014-05-18 18:19:10 +00:00
call PrintText
.done
jp TextScriptEnd
.HaveThisPokemonText
text_far _SilphCo7FSilphWorkerM1HaveThisPokemonText
text_end
2014-05-18 18:19:10 +00:00
.LaprasDescriptionText
text_far _SilphCo7FSilphWorkerM1LaprasDescriptionText
text_end
2014-05-18 18:19:10 +00:00
.IsOurPresidentOkText
text_far _SilphCo7FSilphWorkerM1IsOurPresidentOkText
text_end
2014-05-18 18:19:10 +00:00
.SavedText
text_far _SilphCo7FSilphWorkerM1SavedText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FSilphWorkerM2Text:
text_asm
2015-07-21 17:36:03 +00:00
CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
jr nz, .saved_silph
ld hl, .AfterTheMasterBallText
2014-05-18 18:19:10 +00:00
call PrintText
jr .done
.saved_silph
ld hl, .CancelledTheMasterBallText
2014-05-18 18:19:10 +00:00
call PrintText
.done
jp TextScriptEnd
.AfterTheMasterBallText
text_far _SilphCo7FSilphWorkerM2AfterTheMasterBallText
text_end
2014-05-18 18:19:10 +00:00
.CancelledTheMasterBallText
text_far _SilphCo7FSilphWorkerM2CancelledMasterBallText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FSilphWorkerM3Text:
text_asm
2015-07-21 17:36:03 +00:00
CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
jr nz, .saved_silph
ld hl, .ItWouldBeBadText
2014-05-18 18:19:10 +00:00
call PrintText
jr .done
.saved_silph
ld hl, .YouChasedOffTeamRocketText
2014-05-18 18:19:10 +00:00
call PrintText
.done
jp TextScriptEnd
.ItWouldBeBadText
text_far _SilphCo7FSilphWorkerM3ItWouldBeBadText
text_end
2014-05-18 18:19:10 +00:00
.YouChasedOffTeamRocketText
text_far _SilphCo7FSilphWorkerM3YouChasedOffTeamRocketText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FSilphWorkerM4Text:
text_asm
2015-07-21 17:36:03 +00:00
CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
jr nz, .saved_silph
ld hl, .ItsReallyDangerousHereText
2014-05-18 18:19:10 +00:00
call PrintText
jr .done
.saved_silph
ld hl, .SafeAtLastText
2014-05-18 18:19:10 +00:00
call PrintText
.done
jp TextScriptEnd
.ItsReallyDangerousHereText
text_far _SilphCo7FSilphWorkerM4ItsReallyDangerousHereText
text_end
2014-05-18 18:19:10 +00:00
.SafeAtLastText
text_far _SilphCo7FSilphWorkerM4SafeAtLastText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FRocket1Text:
text_asm
2014-05-18 18:19:10 +00:00
ld hl, SilphCo7TrainerHeader0
call TalkToTrainer
jp TextScriptEnd
SilphCo7FRocket1BattleText:
text_far _SilphCo7FRocket1BattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FRocket1EndBattleText:
text_far _SilphCo7FRocket1EndBattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FRocket1AfterBattleText:
text_far _SilphCo7FRocket1AfterBattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FScientistText:
text_asm
ld hl, SilphCo7TrainerHeader1
2014-05-18 18:19:10 +00:00
call TalkToTrainer
jp TextScriptEnd
SilphCo7FScientistBattleText:
text_far _SilphCo7FScientistBattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FScientistEndBattleText:
text_far _SilphCo7FScientistEndBattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FScientistAfterBattleText:
text_far _SilphCo7FScientistAfterBattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FRocket2Text:
text_asm
ld hl, SilphCo7TrainerHeader2
2014-05-18 18:19:10 +00:00
call TalkToTrainer
jp TextScriptEnd
SilphCo7FRocket2BattleText:
text_far _SilphCo7FRocket2BattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FRocket2EndBattleText:
text_far _SilphCo7FRocket2EndBattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FRocket2AfterBattleText:
text_far _SilphCo7FRocket2AfterBattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FRocket3Text:
text_asm
ld hl, SilphCo7TrainerHeader3
2014-05-18 18:19:10 +00:00
call TalkToTrainer
jp TextScriptEnd
SilphCo7FRocket3BattleText:
text_far _SilphCo7FRocket3BattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FRocket3EndBattleText:
text_far _SilphCo7FRocket3EndBattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FRocket3AfterBattleText:
text_far _SilphCo7FRocket3AfterBattleText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FRivalText:
text_asm
ld hl, .Text
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
.Text:
text_far _SilphCo7FRivalText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FRivalWaitedHereText:
text_far _SilphCo7FRivalWaitedHereText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FRivalDefeatedText:
text_far _SilphCo7FRivalDefeatedText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FRivalVictoryText:
text_far _SilphCo7FRivalVictoryText
text_end
2014-05-18 18:19:10 +00:00
SilphCo7FRivalGoodLuckToYouText:
text_far _SilphCo7FRivalGoodLuckToYouText
text_end