pokered/scripts/VermilionGym.asm
vulcandth d001ced41b
Add macros, constants, and labels for map scripts and text (#367)
This introduces `def_script_pointers`, `def_text_pointers`, and `object_const_def` macros, and applies them to all maps. Most other map labels have also been identified.
2023-07-13 21:27:56 -04:00

250 lines
6.4 KiB
NASM

VermilionGym_Script:
ld hl, wCurrentMapScriptFlags
bit 5, [hl]
res 5, [hl]
push hl
call nz, .LoadNames
pop hl
bit 6, [hl]
res 6, [hl]
call nz, VermilionGymSetDoorTile
call EnableAutoTextBoxDrawing
ld hl, VermilionGymTrainerHeaders
ld de, VermilionGym_ScriptPointers
ld a, [wVermilionGymCurScript]
call ExecuteCurMapScriptInTable
ld [wVermilionGymCurScript], a
ret
.LoadNames:
ld hl, .CityName
ld de, .LeaderName
jp LoadGymLeaderAndCityName
.CityName:
db "VERMILION CITY@"
.LeaderName:
db "LT.SURGE@"
VermilionGymSetDoorTile:
CheckEvent EVENT_2ND_LOCK_OPENED
jr nz, .doorsOpen
ld a, $24 ; double door tile ID
jr .replaceTile
.doorsOpen
ld a, SFX_GO_INSIDE
call PlaySound
ld a, $5 ; clear floor tile ID
.replaceTile
ld [wNewTileBlockID], a
lb bc, 2, 2
predef_jump ReplaceTileBlock
VermilionGymResetScripts:
xor a
ld [wJoyIgnore], a
ld [wVermilionGymCurScript], a
ld [wCurMapScript], a
ret
VermilionGym_ScriptPointers:
def_script_pointers
dw_const CheckFightingMapTrainers, SCRIPT_VERMILIONGYM_DEFAULT
dw_const DisplayEnemyTrainerTextAndStartBattle, SCRIPT_VERMILIONGYM_START_BATTLE
dw_const EndTrainerBattle, SCRIPT_VERMILIONGYM_END_BATTLE
dw_const VermilionGymLTSurgeAfterBattleScript, SCRIPT_VERMILIONGYM_LT_SURGE_AFTER_BATTLE
VermilionGymLTSurgeAfterBattleScript:
ld a, [wIsInBattle]
cp $ff ; did we lose?
jp z, VermilionGymResetScripts
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
ld [wJoyIgnore], a
VermilionGymLTSurgeReceiveTM24Script:
ld a, TEXT_VERMILIONGYM_LT_SURGE_THUNDER_BADGE_INFO
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
SetEvent EVENT_BEAT_LT_SURGE
lb bc, TM_THUNDERBOLT, 1
call GiveItem
jr nc, .bag_full
ld a, TEXT_VERMILIONGYM_LT_SURGE_RECEIVED_TM24
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
SetEvent EVENT_GOT_TM24
jr .gym_victory
.bag_full
ld a, TEXT_VERMILIONGYM_LT_SURGE_TM24_NO_ROOM
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
.gym_victory
ld hl, wObtainedBadges
set BIT_THUNDERBADGE, [hl]
ld hl, wBeatGymFlags
set BIT_THUNDERBADGE, [hl]
; deactivate gym trainers
SetEventRange EVENT_BEAT_VERMILION_GYM_TRAINER_0, EVENT_BEAT_VERMILION_GYM_TRAINER_2
jp VermilionGymResetScripts
VermilionGym_TextPointers:
def_text_pointers
dw_const VermilionGymLTSurgeText, TEXT_VERMILIONGYM_LT_SURGE
dw_const VermilionGymGentlemanText, TEXT_VERMILIONGYM_GENTLEMAN
dw_const VermilionGymSuperNerdText, TEXT_VERMILIONGYM_SUPER_NERD
dw_const VermilionGymSailorText, TEXT_VERMILIONGYM_SAILOR
dw_const VermilionGymGymGuideText, TEXT_VERMILIONGYM_GYM_GUIDE
dw_const VermilionGymLTSurgeThunderBadgeInfoText, TEXT_VERMILIONGYM_LT_SURGE_THUNDER_BADGE_INFO
dw_const VermilionGymLTSurgeReceivedTM24Text, TEXT_VERMILIONGYM_LT_SURGE_RECEIVED_TM24
dw_const VermilionGymLTSurgeTM24NoRoomText, TEXT_VERMILIONGYM_LT_SURGE_TM24_NO_ROOM
VermilionGymTrainerHeaders:
def_trainers 2
VermilionGymTrainerHeader0:
trainer EVENT_BEAT_VERMILION_GYM_TRAINER_0, 3, VermilionGymGentlemanBattleText, VermilionGymGentlemanEndBattleText, VermilionGymGentlemanAfterBattleText
VermilionGymTrainerHeader1:
trainer EVENT_BEAT_VERMILION_GYM_TRAINER_1, 2, VermilionGymSuperNerdBattleText, VermilionGymSuperNerdEndBattleText, VermilionGymSuperNerdAfterBattleText
VermilionGymTrainerHeader2:
trainer EVENT_BEAT_VERMILION_GYM_TRAINER_2, 3, VermilionGymSailorBattleText, VermilionGymSailorEndBattleText, VermilionGymSailorAfterBattleText
db -1 ; end
VermilionGymLTSurgeText:
text_asm
CheckEvent EVENT_BEAT_LT_SURGE
jr z, .before_beat
CheckEventReuseA EVENT_GOT_TM24
jr nz, .got_tm24_already
call z, VermilionGymLTSurgeReceiveTM24Script
call DisableWaitingAfterTextDisplay
jr .text_script_end
.got_tm24_already
ld hl, .PostBattleAdviceText
call PrintText
jr .text_script_end
.before_beat
ld hl, .PreBattleText
call PrintText
ld hl, wd72d
set 6, [hl]
set 7, [hl]
ld hl, VermilionGymLTSurgeReceivedThunderBadgeText
ld de, VermilionGymLTSurgeReceivedThunderBadgeText
call SaveEndBattleTextPointers
ldh a, [hSpriteIndex]
ld [wSpriteIndex], a
call EngageMapTrainer
call InitBattleEnemyParameters
ld a, $3
ld [wGymLeaderNo], a
xor a
ldh [hJoyHeld], a
ld a, SCRIPT_VERMILIONGYM_LT_SURGE_AFTER_BATTLE
ld [wVermilionGymCurScript], a
ld [wCurMapScript], a
.text_script_end
jp TextScriptEnd
.PreBattleText:
text_far _VermilionGymLTSurgePreBattleText
text_end
.PostBattleAdviceText:
text_far _VermilionGymLTSurgePostBattleAdviceText
text_end
VermilionGymLTSurgeThunderBadgeInfoText:
text_far _VermilionGymLTSurgeThunderBadgeInfoText
text_end
VermilionGymLTSurgeReceivedTM24Text:
text_far _VermilionGymLTSurgeReceivedTM24Text
sound_get_key_item
text_far _TM24ExplanationText
text_end
VermilionGymLTSurgeTM24NoRoomText:
text_far _VermilionGymLTSurgeTM24NoRoomText
text_end
VermilionGymLTSurgeReceivedThunderBadgeText:
text_far _VermilionGymLTSurgeReceivedThunderBadgeText
text_end
VermilionGymGentlemanText:
text_asm
ld hl, VermilionGymTrainerHeader0
call TalkToTrainer
jp TextScriptEnd
VermilionGymGentlemanBattleText:
text_far _VermilionGymGentlemanBattleText
text_end
VermilionGymGentlemanEndBattleText:
text_far _VermilionGymGentlemanEndBattleText
text_end
VermilionGymGentlemanAfterBattleText:
text_far _VermilionGymGentlemanAfterBattleText
text_end
VermilionGymSuperNerdText:
text_asm
ld hl, VermilionGymTrainerHeader1
call TalkToTrainer
jp TextScriptEnd
VermilionGymSuperNerdBattleText:
text_far _VermilionGymSuperNerdBattleText
text_end
VermilionGymSuperNerdEndBattleText:
text_far _VermilionGymSuperNerdEndBattleText
text_end
VermilionGymSuperNerdAfterBattleText:
text_far _VermilionGymSuperNerdAfterBattleText
text_end
VermilionGymSailorText:
text_asm
ld hl, VermilionGymTrainerHeader2
call TalkToTrainer
jp TextScriptEnd
VermilionGymSailorBattleText:
text_far _VermilionGymSailorBattleText
text_end
VermilionGymSailorEndBattleText:
text_far _VermilionGymSailorEndBattleText
text_end
VermilionGymSailorAfterBattleText:
text_far _VermilionGymSailorAfterBattleText
text_end
VermilionGymGymGuideText:
text_asm
ld a, [wBeatGymFlags]
bit BIT_THUNDERBADGE, a
jr nz, .got_thunderbadge
ld hl, .ChampInMakingText
call PrintText
jr .text_script_end
.got_thunderbadge
ld hl, .BeatLTSurgeText
call PrintText
.text_script_end
jp TextScriptEnd
.ChampInMakingText:
text_far _VermilionGymGymGuideChampInMakingText
text_end
.BeatLTSurgeText:
text_far _VermilionGymGymGuideBeatLTSurgeText
text_end