mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-09-17 02:40:50 +12:00

This makes it so you don't miss the Bottle Cap gift that Yujirou gives you, even if you beat the Elite 4 before him. There's a similar issue with the Fighting Dojo where the same thing happens but I'm less sure on how to fix that one...
249 lines
5.2 KiB
NASM
249 lines
5.2 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
|
|
ViridianPreGymScriptReceiveBottleCap:
|
|
ld a, $b
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
SetEvent EVENT_BEAT_YUJIROU
|
|
lb bc, BOTTLE_CAP, 1
|
|
call GiveItem
|
|
jr nc, .BagFull
|
|
ld a, $c
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
SetEvent EVENT_GOT_YUJIROU_BOTTLE_CAP
|
|
jp ViridianPreGymResetScripts
|
|
.BagFull
|
|
ld a, $d
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
jp ViridianPreGymResetScripts
|
|
|
|
ViridianPreGym_TextPointers:
|
|
dw ViridianPreGymText1
|
|
dw ViridianPreGymText2
|
|
dw YujirouText
|
|
dw ViridianPreGymGuide
|
|
dw ViridianPreGymSign1
|
|
dw ViridianPreGymSign2
|
|
dw ViridianPreGymSign3
|
|
dw ViridianPreGymSign4
|
|
dw ViridianPreGymStatue1
|
|
dw ViridianPreGymStatue2
|
|
dw BeforeReceivedBottleCapText
|
|
dw ReceivedBottleCapText
|
|
dw BottleCapNoRoomText
|
|
|
|
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_BEAT_YUJIROU
|
|
jp z, .yujirouNotBeaten
|
|
CheckEvent EVENT_POST_GAME_ATTAINED ; No need to view previous stuff
|
|
jr nz, .rematchMode
|
|
CheckEventReuseA EVENT_GOT_YUJIROU_BOTTLE_CAP
|
|
jr nz, .yujirouBeaten
|
|
call z, PewterGymScriptReceiveTM34
|
|
call DisableWaitingAfterTextDisplay
|
|
jp .done ; needed due to the rematch script length.
|
|
.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, YujirouLoseText2
|
|
call SaveEndBattleTextPointers
|
|
call EngageMapTrainer
|
|
ld a, OPP_YUJIROU
|
|
ld [wCurOpponent], a
|
|
ld a, 10
|
|
ld [wTrainerNo], a
|
|
ld a, 1
|
|
ld [wIsTrainerBattle], a
|
|
jr .done
|
|
.yujirouBeaten
|
|
ld hl, YujirouAfterBattleText
|
|
call PrintText
|
|
jr .done
|
|
.yujirouNotBeaten
|
|
ld hl, YujirouIntro
|
|
call PrintText
|
|
ld hl, wd72d
|
|
set 6, [hl]
|
|
set 7, [hl]
|
|
ld hl, YujirouLoseText
|
|
ld de, YujirouLoseText
|
|
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
|
|
|
|
;ends here
|
|
|
|
xor a
|
|
ldh [hJoyHeld], a
|
|
ld a, $3
|
|
ld [wViridianPreGymCurScript], a
|
|
ld [wCurMapScript], a
|
|
.done
|
|
jp TextScriptEnd
|
|
|
|
YujirouIntro::
|
|
text_far _YujirouIntro
|
|
text_end
|
|
|
|
YujirouLoseText::
|
|
text_far _YujirouLoseText
|
|
text_end
|
|
|
|
YujirouAfterBattleText::
|
|
text_far _YujirouAfterBattleText
|
|
text_end
|
|
|
|
BeforeReceivedBottleCapText:
|
|
text_far _BeforeReceivedBottleCapText
|
|
text_end
|
|
|
|
ReceivedBottleCapText:
|
|
text_far _ReceivedBottleCapText
|
|
sound_get_item_1
|
|
text_far _BottleCapExplanationText
|
|
text_end
|
|
|
|
BottleCapNoRoomText:
|
|
text_far _BottleCapNoRoomText
|
|
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
|