kep-hack/scripts/ViridianPreGym.asm
2023-12-24 18:52:30 +00:00

219 lines
4.6 KiB
NASM

ViridianPreGym_Script:
call EnableAutoTextBoxDrawing
ld hl, ViridianPreGymTrainerHeaders
ld de, ViridianPreGym_ScriptPointers
ld a, [wViridianPreGymCurScript]
call ExecuteCurMapScriptInTable
ld [wViridianPreGymCurScript], a
ret
ViridianPreGymResetScripts:
xor a
ld [wJoyIgnore], a
ld [wViridianPreGymCurScript], a
ld [wCurMapScript], a
ret
ViridianPreGym_ScriptPointers:
dw CheckFightingMapTrainers
dw DisplayEnemyTrainerTextAndStartBattle
dw EndTrainerBattle
dw ViridianGymYujirouPostBattle
ViridianGymYujirouPostBattle:
ld a, [wIsInBattle]
cp $ff
jp z, ViridianGymResetScripts
ld a, $f0
ld [wJoyIgnore], a
; SetEvents EVENT_BEAT_YUJIROU, EVENT_BEAT_VIRIDIAN_PREGYM_TRAINER_0, EVENT_BEAT_VIRIDIAN_PREGYM_TRAINER_1 ; Needs to be set here for the correct text to pop up.
; ld a, $3
; ld [hSpriteIndex], a
; call DisplayTextID
; xor a
; ld [wViridianPreGymCurScript], a
ViridianPreGym_TextPointers:
dw ViridianPreGymText1
dw ViridianPreGymText2
dw YujirouText
dw ViridianPreGymGuide
dw ViridianPreGymSign1
dw ViridianPreGymSign2
dw ViridianPreGymSign3
dw ViridianPreGymSign4
dw ViridianPreGymStatue1
dw ViridianPreGymStatue2
ViridianPreGymTrainerHeaders:
def_trainers
ViridianPreGymTrainerHeader0:
trainer EVENT_BEAT_VIRIDIAN_PREGYM_TRAINER_0, 3, ViridianPreGymBattleText1, ViridianPreGymEndBattleText1, ViridianPreGymAfterBattleText1
ViridianPreGymTrainerHeader1:
trainer EVENT_BEAT_VIRIDIAN_PREGYM_TRAINER_1, 3, ViridianPreGymBattleText2, ViridianPreGymEndBattleText2, ViridianPreGymAfterBattleText2
db -1 ;end
YujirouText:
text_asm
CheckEvent EVENT_POST_GAME_ATTAINED ; No need to view previous stuff
jr nz, .rematchMode
CheckEvent EVENT_BEAT_YUJIROU
jp nz, .YujirouBeaten
ld hl, YujirouIntro
call PrintText
ld c, BANK(Music_MeetMaleTrainer)
ld a, MUSIC_MEET_MALE_TRAINER
call PlayMusic
ld hl, wd72d
set 6, [hl]
set 7, [hl]
ld hl, YujirouLoseText
ld de, YujirouWinText
call SaveEndBattleTextPointers
ldh a, [hSpriteIndex]
ld [wSpriteIndex], a
call EngageMapTrainer
; gym scaling spaghetti code begins here - remove initial parameters as we're making our own
ld a, OPP_YUJIROU
ld [wCurOpponent], a
ld hl, wObtainedBadges ; Picking the team based on badge count. Need +1 so it loads the right team: remember, you're fighting for the badge! Thanks to Chatot4444 for the help.
ld b, 1
call CountSetBits
ld a, [wNumSetBits]
inc a
ld [wTrainerNo], a
ld a, 1
ld [wIsTrainerBattle], a
ld a, $3
ld [wViridianPreGymCurScript], a
ld [wCurMapScript], a
jr .done
.rematchMode ; Rematch functionality. Just loads pre-battle text and his trainer.
ld hl, YujirouIntro2
call PrintText
ld c, BANK(Music_MeetMaleTrainer)
ld a, MUSIC_MEET_MALE_TRAINER
call PlayMusic
ld hl, wd72d
set 6, [hl]
set 7, [hl]
ldh a, [hSpriteIndex]
ld [wSpriteIndex], a
ld hl, YujirouLoseText2
ld de, YujirouWinText
call SaveEndBattleTextPointers
call EngageMapTrainer
ld a, OPP_YUJIROU
ld [wCurOpponent], a
ld a, 10
ld [wTrainerNo], a
ld a, 1
ld [wIsTrainerBattle], a
ld a, $1
ld [wGymLeaderNo], a
jr .done
.YujirouBeaten
ld hl, YujirouAfterBattleText
call PrintText
.done
jp TextScriptEnd
YujirouIntro::
text_far _YujirouIntro
text_end
YujirouLoseText::
text_far _YujirouLoseText
text_end
YujirouWinText::
text_far _YujirouWinText
text_end
YujirouAfterBattleText::
text_far _YujirouAfterBattleText
text_end
YujirouIntro2::
text_far _YujirouIntro2
text_end
YujirouLoseText2::
text_far _YujirouLoseText2
text_end
YujirouAfterBattleText2::
text_far _YujirouAfterBattleText2
text_end
ViridianPreGymText1:
text_asm
ld hl, ViridianPreGymTrainerHeader0
call TalkToTrainer
jp TextScriptEnd
ViridianPreGymBattleText1:
text_far _ViridianPreGymBattleText1
text_end
ViridianPreGymEndBattleText1:
text_far _ViridianPreGymEndBattleText1
text_end
ViridianPreGymAfterBattleText1:
text_far _ViridianPreGymAfterBattleText1
text_end
ViridianPreGymText2:
text_asm
ld hl, ViridianPreGymTrainerHeader1
call TalkToTrainer
jp TextScriptEnd
ViridianPreGymBattleText2:
text_far _ViridianPreGymBattleText2
text_end
ViridianPreGymEndBattleText2:
text_far _ViridianPreGymEndBattleText2
text_end
ViridianPreGymAfterBattleText2:
text_far _ViridianPreGymAfterBattleText2
text_end
ViridianPreGymGuide:
text_far _ViridianPreGymGuide
text_end
ViridianPreGymSign1:
text_far _ViridianPreGymSign1
text_end
ViridianPreGymSign2:
text_far _ViridianPreGymSign2
text_end
ViridianPreGymSign3:
text_far _ViridianPreGymSign3
text_end
ViridianPreGymSign4:
text_far _ViridianPreGymSign4
text_end
ViridianPreGymStatue1:
text_far _PreGymStatueText
text_end
ViridianPreGymStatue2:
text_far _PreGymStatueText
text_end
text_end ; unused