mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-09-16 10:23:34 +12:00
Gym Leader Rematches!
This commit adds a large fundamental change to KEP, that being Gym Rematches. This is achieved alongside a rework to the script that makes those post-game-gating NPCs shift around. If you add a new one, just add its constant to the lists you'll see in the Hall of Fame script. It also fixes a few bugs: - Fixed a bug where Cinnabar Gym loaded a fleet of Blaines. This occurred due to the way he is coded at base, and a misunderstanding I had when implementing his scaling. This is now fixed by standardising his gym script instead, while letting the gym trainers still use the old one. - Fixed a bug where the Up-Grade NPC would not appear after beating Silph Co. 11F. However, Giovanni currently seems to have trouble with his text. This floor needs some re-coding anyway, given we need to add Jessie and James to it. And some misc. changes: - Changed the first Moon Stone in Mt. Moon to a Poison Stone for the Nidoking speedrunners - Debug Mode now has a line of code to set up the post-game easily - Changed Surge's initial battle text to Yellow's - Added Sabrina's more accurate LGPE initial battle text, referring to the spoon she bent by accident
This commit is contained in:
parent
5f8250f0d1
commit
749abc67b7
|
@ -831,7 +831,7 @@ DEF INDIGO_PLATEAU_EVENTS_END EQU const_value - 1
|
|||
|
||||
; Victory Road 1F events
|
||||
const_next $910
|
||||
const_skip
|
||||
const EVENT_POST_GAME_ATTAINED ; Used for Gym Leader rematches, among other things.
|
||||
const EVENT_BEAT_VICTORY_ROAD_1_TRAINER_0
|
||||
const EVENT_BEAT_VICTORY_ROAD_1_TRAINER_1
|
||||
const_skip 4
|
||||
|
|
|
@ -20,7 +20,7 @@ MtMoon1F_Object:
|
|||
object_event 7, 22, SPRITE_YOUNGSTER, STAY, DOWN, 6, OPP_BUG_CATCHER, 7
|
||||
object_event 30, 27, SPRITE_YOUNGSTER, STAY, RIGHT, 7, OPP_BUG_CATCHER, 8
|
||||
object_event 2, 20, SPRITE_POKE_BALL, STAY, NONE, 8, POTION
|
||||
object_event 2, 2, SPRITE_POKE_BALL, STAY, NONE, 9, MOON_STONE
|
||||
object_event 2, 2, SPRITE_POKE_BALL, STAY, NONE, 9, POISON_STONE
|
||||
object_event 35, 31, SPRITE_POKE_BALL, STAY, NONE, 10, RARE_CANDY
|
||||
object_event 36, 23, SPRITE_POKE_BALL, STAY, NONE, 11, ESCAPE_ROPE
|
||||
object_event 20, 33, SPRITE_POKE_BALL, STAY, NONE, 12, POTION
|
||||
|
|
|
@ -7,7 +7,8 @@ RedsHouse2F_Object:
|
|||
;warp_event 5, 1, SILPH_CO_11F, 1 ; - Test Omega & Giovanni
|
||||
;warp_event 5, 1, ROCKET_HIDEOUT_B4F, 2 ; - Test Giovanni 1
|
||||
;warp_event 5, 1, MT_MOON_SQUARE, 1 ; - Test Shop, NPCs, and Crater
|
||||
warp_event 5, 1, CELESTE_HILL, 2 ; - Test Birds
|
||||
;warp_event 5, 1, CELESTE_HILL, 2 ; - Test Birds
|
||||
warp_event 5, 1, INDIGO_PLATEAU_LOBBY, 1 ; easy league access
|
||||
|
||||
def_bg_events
|
||||
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
SaffronGym_Object:
|
||||
db $2e ; border block
|
||||
|
||||
; I tried to add a way to instantly get to the start.
|
||||
; But...it breaks the *entire* puzzle for some reason.
|
||||
; Yes, I tried changing the one in Sabrina's room. No, it didn't accomplish anything.
|
||||
|
||||
def_warp_events
|
||||
warp_event 8, 17, LAST_MAP, 3
|
||||
warp_event 9, 17, LAST_MAP, 3
|
||||
|
@ -34,6 +38,7 @@ SaffronGym_Object:
|
|||
warp_event 19, 15, SAFFRON_GYM, 26
|
||||
warp_event 15, 17, SAFFRON_GYM, 12
|
||||
warp_event 19, 17, SAFFRON_GYM, 20
|
||||
;warp_event 10, 8, SAFFRON_GYM, 20 ; New warp directly to the start of the gym, like later games.
|
||||
|
||||
def_bg_events
|
||||
|
||||
|
|
|
@ -56,6 +56,9 @@ IF DEF(_DEBUG)
|
|||
ld a, MEOWTH
|
||||
ld [wBeautyChoice], a
|
||||
|
||||
; Test Post-Game Functionality.
|
||||
SetEvent EVENT_POST_GAME_ATTAINED
|
||||
|
||||
; Get all badges except Earth Badge.
|
||||
ld a, ~(1 << BIT_EARTHBADGE)
|
||||
ld [wObtainedBadges], a
|
||||
|
@ -180,6 +183,7 @@ DebugItemsList:
|
|||
db FULL_RESTORE, 99
|
||||
db MAX_REPEL, 99
|
||||
db RARE_CANDY, 99
|
||||
db ESCAPE_ROPE, 99
|
||||
db POKE_BALL, 99 ; test ball miss text with this
|
||||
db SECRET_KEY, 1
|
||||
db CARD_KEY, 1
|
||||
|
|
|
@ -103,12 +103,37 @@ CeladonGymTrainerHeader6:
|
|||
|
||||
ErikaText:
|
||||
text_asm
|
||||
CheckEvent EVENT_POST_GAME_ATTAINED ; No need to view previous stuff, technically you can skip Bide this way but I think that's hilarious
|
||||
jr nz, .rematchMode
|
||||
CheckEvent EVENT_BEAT_ERIKA
|
||||
jr z, .beforeBeat
|
||||
CheckEventReuseA EVENT_GOT_TM21
|
||||
jr nz, .afterBeat
|
||||
call z, CeladonGymReceiveTM21
|
||||
call DisableWaitingAfterTextDisplay
|
||||
jp .done ; needed due to the rematch script length.
|
||||
.rematchMode ; Rematch functionality. Just loads pre-battle text and his trainer.
|
||||
ld hl, ErikaRematchPreBattleText
|
||||
call PrintText
|
||||
ld c, BANK(Music_MeetMaleTrainer)
|
||||
ld a, MUSIC_MEET_MALE_TRAINER
|
||||
call PlayMusic
|
||||
set 6, [hl]
|
||||
set 7, [hl]
|
||||
ldh a, [hSpriteIndex]
|
||||
ld [wSpriteIndex], a
|
||||
ld hl, ErikaRematchDefeatedText
|
||||
ld de, ErikaRematchDefeatedText
|
||||
call SaveEndBattleTextPointers
|
||||
call EngageMapTrainer
|
||||
ld a, OPP_ERIKA
|
||||
ld [wCurOpponent], a
|
||||
ld a, 9
|
||||
ld [wTrainerNo], a
|
||||
ld a, 1
|
||||
ld [wIsTrainerBattle], a
|
||||
ld a, $4
|
||||
ld [wGymLeaderNo], a
|
||||
jr .done
|
||||
.afterBeat
|
||||
ld hl, ErikaPostBattleAdviceText
|
||||
|
@ -303,3 +328,11 @@ CeladonGymEndBattleText8:
|
|||
CeladonGymAfterBattleText8:
|
||||
text_far _CeladonGymAfterBattleText8
|
||||
text_end
|
||||
|
||||
ErikaRematchPreBattleText:
|
||||
text_far _ErikaRematchPreBattleText
|
||||
text_end
|
||||
|
||||
ErikaRematchDefeatedText:
|
||||
text_far _ErikaRematchDefeatedText
|
||||
text_end
|
||||
|
|
|
@ -89,12 +89,37 @@ CeruleanGymTrainerHeader1:
|
|||
|
||||
MistyText:
|
||||
text_asm
|
||||
CheckEvent EVENT_POST_GAME_ATTAINED ; No need to view previous stuff, technically you can skip Bide this way but I think that's hilarious
|
||||
jr nz, .rematchMode
|
||||
CheckEvent EVENT_BEAT_MISTY
|
||||
jr z, .beforeBeat
|
||||
CheckEventReuseA EVENT_GOT_TM11
|
||||
jr nz, .afterBeat
|
||||
call z, CeruleanGymReceiveTM11
|
||||
call DisableWaitingAfterTextDisplay
|
||||
jp .done
|
||||
.rematchMode ; Rematch functionality. Just loads pre-battle text and her trainer.
|
||||
ld hl, MistyRematchPreBattleText
|
||||
call PrintText
|
||||
ld c, BANK(Music_MeetMaleTrainer)
|
||||
ld a, MUSIC_MEET_MALE_TRAINER
|
||||
call PlayMusic
|
||||
set 6, [hl]
|
||||
set 7, [hl]
|
||||
ldh a, [hSpriteIndex]
|
||||
ld [wSpriteIndex], a
|
||||
ld hl, MistyRematchDefeatedText
|
||||
ld de, MistyRematchDefeatedText
|
||||
call SaveEndBattleTextPointers
|
||||
call EngageMapTrainer
|
||||
ld a, OPP_MISTY
|
||||
ld [wCurOpponent], a
|
||||
ld a, 9
|
||||
ld [wTrainerNo], a
|
||||
ld a, 1
|
||||
ld [wIsTrainerBattle], a
|
||||
ld a, $2
|
||||
ld [wGymLeaderNo], a
|
||||
jr .done
|
||||
.afterBeat
|
||||
ld hl, TM11ExplanationText
|
||||
|
@ -222,3 +247,11 @@ CeruleanGymGuidePreBattleText:
|
|||
CeruleanGymGuidePostBattleText:
|
||||
text_far _CeruleanGymGuidePostBattleText
|
||||
text_end
|
||||
|
||||
MistyRematchPreBattleText:
|
||||
text_far _MistyRematchPreBattleText
|
||||
text_end
|
||||
|
||||
MistyRematchDefeatedText:
|
||||
text_far _MistyRematchDefeatedText
|
||||
text_end
|
||||
|
|
|
@ -191,24 +191,7 @@ CinnabarGymScript_758b7:
|
|||
ldh a, [hSpriteIndexOrTextID]
|
||||
ld [wSpriteIndex], a
|
||||
call EngageMapTrainer
|
||||
; call InitBattleEnemyParameters ; put this back if you mess up
|
||||
|
||||
; gym scaling spaghetti code begins here - remove initial parameters as we're making our own
|
||||
ld a, OPP_BLAINE
|
||||
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
|
||||
|
||||
call InitBattleEnemyParameters
|
||||
ld hl, wd72d
|
||||
set 6, [hl]
|
||||
set 7, [hl]
|
||||
|
@ -224,15 +207,41 @@ CinnabarGymScript_758b7:
|
|||
ld [wCurMapScript], a
|
||||
jp TextScriptEnd
|
||||
|
||||
; Blaine's gym script has been standardised for gym scaling purposes.
|
||||
BlaineText:
|
||||
text_asm
|
||||
CheckEvent EVENT_POST_GAME_ATTAINED ; No need to view previous stuff, technically you can skip Bide this way but I think that's hilarious
|
||||
jr nz, .rematchMode
|
||||
CheckEvent EVENT_BEAT_BLAINE
|
||||
jr z, .beforeBeat
|
||||
CheckEventReuseA EVENT_GOT_TM38
|
||||
jr nz, .afterBeat
|
||||
call z, CinnabarGymReceiveTM38
|
||||
call DisableWaitingAfterTextDisplay
|
||||
jp TextScriptEnd
|
||||
jp .done ; needed due to the rematch script length.
|
||||
.rematchMode ; Rematch functionality. Just loads pre-battle text and his trainer.
|
||||
ld hl, BlaineRematchPreBattleText
|
||||
call PrintText
|
||||
ld c, BANK(Music_MeetMaleTrainer)
|
||||
ld a, MUSIC_MEET_MALE_TRAINER
|
||||
call PlayMusic
|
||||
set 6, [hl]
|
||||
set 7, [hl]
|
||||
ldh a, [hSpriteIndex]
|
||||
ld [wSpriteIndex], a
|
||||
ld hl, BlaineRematchDefeatedText
|
||||
ld de, BlaineRematchDefeatedText
|
||||
call SaveEndBattleTextPointers
|
||||
call EngageMapTrainer
|
||||
ld a, OPP_BLAINE
|
||||
ld [wCurOpponent], a
|
||||
ld a, 9
|
||||
ld [wTrainerNo], a
|
||||
ld a, 1
|
||||
ld [wIsTrainerBattle], a
|
||||
ld a, $7
|
||||
ld [wGymLeaderNo], a
|
||||
jr .done
|
||||
.afterBeat
|
||||
ld hl, BlainePostBattleAdviceText
|
||||
call PrintText
|
||||
|
@ -243,9 +252,37 @@ BlaineText:
|
|||
ld hl, ReceivedVolcanoBadgeText
|
||||
ld de, ReceivedVolcanoBadgeText
|
||||
call SaveEndBattleTextPointers
|
||||
|
||||
ld hl, wd72d
|
||||
set 6, [hl]
|
||||
set 7, [hl]
|
||||
ld a, [wSpriteIndex]
|
||||
call EngageMapTrainer
|
||||
|
||||
ld a, OPP_BLAINE
|
||||
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, $7
|
||||
ld [wGymLeaderNo], a
|
||||
jp CinnabarGymScript_758b7
|
||||
|
||||
;ends here
|
||||
|
||||
ld a, $3
|
||||
ld [wCinnabarGymCurScript], a
|
||||
ld [wCurMapScript], a
|
||||
|
||||
jr .done
|
||||
.done
|
||||
jp TextScriptEnd
|
||||
|
||||
BlainePreBattleText:
|
||||
text_far _BlainePreBattleText
|
||||
|
@ -490,3 +527,11 @@ CinnabarGymGuidePreBattleText:
|
|||
CinnabarGymGuidePostBattleText:
|
||||
text_far _CinnabarGymGuidePostBattleText
|
||||
text_end
|
||||
|
||||
BlaineRematchPreBattleText:
|
||||
text_far _BlaineRematchPreBattleText
|
||||
text_end
|
||||
|
||||
BlaineRematchDefeatedText:
|
||||
text_far _BlaineRematchDefeatedText
|
||||
text_end
|
||||
|
|
|
@ -103,12 +103,37 @@ FuchsiaGymTrainerHeader5:
|
|||
|
||||
KogaText:
|
||||
text_asm
|
||||
CheckEvent EVENT_POST_GAME_ATTAINED ; No need to view previous stuff, technically you can skip Bide this way but I think that's hilarious
|
||||
jr nz, .rematchMode
|
||||
CheckEvent EVENT_BEAT_KOGA
|
||||
jr z, .beforeBeat
|
||||
CheckEventReuseA EVENT_GOT_TM06
|
||||
jr nz, .afterBeat
|
||||
call z, FuchsiaGymReceiveTM06
|
||||
call DisableWaitingAfterTextDisplay
|
||||
jp .done ; needed due to the rematch script length.
|
||||
.rematchMode ; Rematch functionality. Just loads pre-battle text and his trainer.
|
||||
ld hl, KogaRematchPreBattleText
|
||||
call PrintText
|
||||
ld c, BANK(Music_MeetMaleTrainer)
|
||||
ld a, MUSIC_MEET_MALE_TRAINER
|
||||
call PlayMusic
|
||||
set 6, [hl]
|
||||
set 7, [hl]
|
||||
ldh a, [hSpriteIndex]
|
||||
ld [wSpriteIndex], a
|
||||
ld hl, KogaRematchDefeatedText
|
||||
ld de, KogaRematchDefeatedText
|
||||
call SaveEndBattleTextPointers
|
||||
call EngageMapTrainer
|
||||
ld a, OPP_KOGA
|
||||
ld [wCurOpponent], a
|
||||
ld a, 9
|
||||
ld [wTrainerNo], a
|
||||
ld a, 1
|
||||
ld [wIsTrainerBattle], a
|
||||
ld a, $5
|
||||
ld [wGymLeaderNo], a
|
||||
jr .done
|
||||
.afterBeat
|
||||
ld hl, KogaPostBattleAdviceText
|
||||
|
@ -306,3 +331,12 @@ FuchsiaGymGuidePreBattleText:
|
|||
FuchsiaGymGuidePostBattleText:
|
||||
text_far _FuchsiaGymGuidePostBattleText
|
||||
text_end
|
||||
|
||||
KogaRematchPreBattleText:
|
||||
text_far _KogaRematchPreBattleText
|
||||
text_end
|
||||
|
||||
KogaRematchDefeatedText:
|
||||
text_far _KogaRematchDefeatedText
|
||||
text_end
|
||||
|
||||
|
|
|
@ -93,28 +93,10 @@ HallofFameRoomScript1:
|
|||
ldh [hSpriteIndexOrTextID], a
|
||||
call DisplayTextID
|
||||
ld a, $ff
|
||||
ld [wJoyIgnore], a ; TODO: Make this less awful. See: Giovanni in Silph
|
||||
ld a, HS_CERULEAN_CAVE_GUY
|
||||
ld [wMissableObjectIndex], a
|
||||
predef HideObject
|
||||
ld a, HS_MT_MOON_CRATER_GUARD
|
||||
ld [wMissableObjectIndex], a
|
||||
predef HideObject
|
||||
ld a, HS_ROUTE_1_OAK
|
||||
ld [wMissableObjectIndex], a
|
||||
predef ShowObject
|
||||
ld a, HS_BILLS_NIDORINO
|
||||
ld [wMissableObjectIndex], a
|
||||
predef HideObject
|
||||
ld a, HS_MANSION_GUARD
|
||||
ld [wMissableObjectIndex], a
|
||||
predef HideObject
|
||||
ld a, HS_YUJIROU
|
||||
ld [wMissableObjectIndex], a
|
||||
predef HideObject
|
||||
ld a, HS_YUJIROU_REMATCH
|
||||
ld [wMissableObjectIndex], a
|
||||
predef ShowObject
|
||||
ld [wJoyIgnore], a
|
||||
|
||||
call PostGameSetup
|
||||
|
||||
ld a, $2
|
||||
ld [wHallOfFameCurScript], a
|
||||
ret
|
||||
|
@ -125,3 +107,43 @@ HallOfFame_TextPointers:
|
|||
HallofFameRoomText1:
|
||||
text_far _HallofFameRoomText1
|
||||
text_end
|
||||
|
||||
; Post-Game Functionality
|
||||
; This script is adapted from the Silph Co. 11F script that reforms Saffron City.
|
||||
; It replaces the Cerulean Cave Guard bit, adapting him into the whole ordeal.
|
||||
|
||||
PostGameSetup:
|
||||
SetEvent EVENT_POST_GAME_ATTAINED
|
||||
ld hl, ObjectsToHide
|
||||
.loop1
|
||||
ld a, [hli]
|
||||
cp $ff
|
||||
jr z, .skip
|
||||
push hl
|
||||
ld [wMissableObjectIndex], a
|
||||
predef HideObject
|
||||
pop hl
|
||||
jr .loop1
|
||||
.skip
|
||||
ld hl, ObjectsToShow
|
||||
.loop2
|
||||
ld a, [hli]
|
||||
cp -1
|
||||
ret z
|
||||
push hl
|
||||
ld [wMissableObjectIndex], a
|
||||
predef ShowObject
|
||||
pop hl
|
||||
jr .loop2
|
||||
|
||||
ObjectsToShow:
|
||||
db HS_ROUTE_1_OAK ; Oak post-game fight
|
||||
db HS_YUJIROU_REMATCH ; Yujirou rematch
|
||||
db -1 ; end
|
||||
|
||||
ObjectsToHide:
|
||||
db HS_BILLS_NIDORINO ; Bill's Garden access
|
||||
db HS_MANSION_GUARD ; Pokemon Mansion basement access
|
||||
db HS_MT_MOON_CRATER_GUARD ; Mt. Moon Crater access
|
||||
db HS_CERULEAN_CAVE_GUY ; Cerulean Cave access
|
||||
db -1 ; end
|
||||
|
|
|
@ -95,12 +95,37 @@ PewterGymTrainerHeader0:
|
|||
|
||||
BrockText:
|
||||
text_asm
|
||||
CheckEvent EVENT_POST_GAME_ATTAINED ; No need to view previous stuff, technically you can skip Bide this way but I think that's hilarious
|
||||
jr nz, .rematchMode
|
||||
CheckEvent EVENT_BEAT_BROCK
|
||||
jr z, .beforeBeat
|
||||
CheckEventReuseA EVENT_GOT_TM34
|
||||
jr nz, .afterBeat
|
||||
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, BrockRematchPreBattleText
|
||||
call PrintText
|
||||
ld c, BANK(Music_MeetMaleTrainer)
|
||||
ld a, MUSIC_MEET_MALE_TRAINER
|
||||
call PlayMusic
|
||||
set 6, [hl]
|
||||
set 7, [hl]
|
||||
ldh a, [hSpriteIndex]
|
||||
ld [wSpriteIndex], a
|
||||
ld hl, BrockRematchDefeatedText
|
||||
ld de, BrockRematchDefeatedText
|
||||
call SaveEndBattleTextPointers
|
||||
call EngageMapTrainer
|
||||
ld a, OPP_BROCK
|
||||
ld [wCurOpponent], a
|
||||
ld a, 9
|
||||
ld [wTrainerNo], a
|
||||
ld a, 1
|
||||
ld [wIsTrainerBattle], a
|
||||
ld a, $1
|
||||
ld [wGymLeaderNo], a
|
||||
jr .done
|
||||
.afterBeat
|
||||
ld hl, BrockPostBattleAdviceText
|
||||
|
@ -238,3 +263,11 @@ PewterGymText_5c524:
|
|||
PewterGymGuidePostBattleText:
|
||||
text_far _PewterGymGuidePostBattleText
|
||||
text_end
|
||||
|
||||
BrockRematchPreBattleText:
|
||||
text_far _BrockRematchPreBattleText
|
||||
text_end
|
||||
|
||||
BrockRematchDefeatedText:
|
||||
text_far _BrockRematchDefeatedText
|
||||
text_end
|
||||
|
|
|
@ -104,12 +104,37 @@ SaffronGymTrainerHeader6:
|
|||
|
||||
SabrinaText:
|
||||
text_asm
|
||||
CheckEvent EVENT_POST_GAME_ATTAINED ; No need to view previous stuff, technically you can skip Bide this way but I think that's hilarious
|
||||
jr nz, .rematchMode
|
||||
CheckEvent EVENT_BEAT_SABRINA
|
||||
jr z, .beforeBeat
|
||||
CheckEventReuseA EVENT_GOT_TM46
|
||||
jr nz, .afterBeat
|
||||
call z, SaffronGymReceiveTM46
|
||||
call DisableWaitingAfterTextDisplay
|
||||
jp .done ; needed due to the rematch script length.
|
||||
.rematchMode ; Rematch functionality. Just loads pre-battle text and her trainer.
|
||||
ld hl, SabrinaRematchPreBattleText
|
||||
call PrintText
|
||||
ld c, BANK(Music_MeetMaleTrainer)
|
||||
ld a, MUSIC_MEET_MALE_TRAINER
|
||||
call PlayMusic
|
||||
set 6, [hl]
|
||||
set 7, [hl]
|
||||
ldh a, [hSpriteIndex]
|
||||
ld [wSpriteIndex], a
|
||||
ld hl, SabrinaRematchDefeatedText
|
||||
ld de, SabrinaRematchDefeatedText
|
||||
call SaveEndBattleTextPointers
|
||||
call EngageMapTrainer
|
||||
ld a, OPP_SABRINA
|
||||
ld [wCurOpponent], a
|
||||
ld a, 9
|
||||
ld [wTrainerNo], a
|
||||
ld a, 1
|
||||
ld [wIsTrainerBattle], a
|
||||
ld a, $6
|
||||
ld [wGymLeaderNo], a
|
||||
jr .done
|
||||
.afterBeat
|
||||
ld hl, SabrinaPostBattleAdviceText
|
||||
|
@ -326,3 +351,11 @@ SaffronGymEndBattleText7:
|
|||
SaffronGymAfterBattleText7:
|
||||
text_far _SaffronGymAfterBattleText7
|
||||
text_end
|
||||
|
||||
SabrinaRematchPreBattleText:
|
||||
text_far _SabrinaRematchPreBattleText
|
||||
text_end
|
||||
|
||||
SabrinaRematchDefeatedText:
|
||||
text_far _SabrinaRematchDefeatedText
|
||||
text_end
|
||||
|
|
|
@ -186,6 +186,7 @@ MissableObjectIDs_62194:
|
|||
db HS_SAFFRON_CITY_B
|
||||
db HS_SAFFRON_CITY_C
|
||||
db HS_SAFFRON_CITY_D
|
||||
db HS_SAFFRON_CITY_UP_GRADE
|
||||
db -1 ; end
|
||||
|
||||
MissableObjectIDs_6219b:
|
||||
|
@ -198,7 +199,6 @@ MissableObjectIDs_6219b:
|
|||
db HS_SAFFRON_CITY_7
|
||||
db HS_SAFFRON_CITY_E
|
||||
db HS_SAFFRON_CITY_F
|
||||
db HS_SAFFRON_CITY_UP_GRADE
|
||||
db HS_SILPH_CO_3F_1
|
||||
db HS_SILPH_CO_3F_2
|
||||
db HS_SILPH_CO_4F_1
|
||||
|
|
|
@ -111,12 +111,37 @@ VermilionGymTrainerHeader2:
|
|||
|
||||
LTSurgeText:
|
||||
text_asm
|
||||
CheckEvent EVENT_POST_GAME_ATTAINED ; No need to view previous stuff, technically you can skip Bide this way but I think that's hilarious
|
||||
jr nz, .rematchMode
|
||||
CheckEvent EVENT_BEAT_LT_SURGE
|
||||
jr z, .beforeBeat
|
||||
CheckEventReuseA EVENT_GOT_TM24
|
||||
jr nz, .afterBeat
|
||||
call z, VermilionGymReceiveTM24
|
||||
call DisableWaitingAfterTextDisplay
|
||||
jp .done ; needed due to the rematch script length.
|
||||
.rematchMode ; Rematch functionality. Just loads pre-battle text and his trainer.
|
||||
ld hl, SurgeRematchPreBattleText
|
||||
call PrintText
|
||||
ld c, BANK(Music_MeetMaleTrainer)
|
||||
ld a, MUSIC_MEET_MALE_TRAINER
|
||||
call PlayMusic
|
||||
set 6, [hl]
|
||||
set 7, [hl]
|
||||
ldh a, [hSpriteIndex]
|
||||
ld [wSpriteIndex], a
|
||||
ld hl, SurgeRematchDefeatedText
|
||||
ld de, SurgeRematchDefeatedText
|
||||
call SaveEndBattleTextPointers
|
||||
call EngageMapTrainer
|
||||
ld a, OPP_LT_SURGE
|
||||
ld [wCurOpponent], a
|
||||
ld a, 9
|
||||
ld [wTrainerNo], a
|
||||
ld a, 1
|
||||
ld [wIsTrainerBattle], a
|
||||
ld a, $3
|
||||
ld [wGymLeaderNo], a
|
||||
jr .done
|
||||
.afterBeat
|
||||
ld hl, LTSurgePostBattleAdviceText
|
||||
|
@ -263,3 +288,11 @@ VermilionGymGuidePreBattleText:
|
|||
VermilionGymGuidePostBattleText:
|
||||
text_far _VermilionGymGuidePostBattleText
|
||||
text_end
|
||||
|
||||
SurgeRematchPreBattleText:
|
||||
text_far _SurgeRematchPreBattleText
|
||||
text_end
|
||||
|
||||
SurgeRematchDefeatedText:
|
||||
text_far _SurgeRematchDefeatedText
|
||||
text_end
|
||||
|
|
|
@ -215,3 +215,34 @@ _CeladonGymAfterBattleText8::
|
|||
para "Wait 'til next"
|
||||
line "time!"
|
||||
done
|
||||
|
||||
_ErikaRematchPreBattleText::
|
||||
text "If it isn't the"
|
||||
line "one filling out"
|
||||
cont "the #DEX."
|
||||
|
||||
para "I do hope things"
|
||||
line "have been going"
|
||||
cont "well since our"
|
||||
cont "last encounter."
|
||||
|
||||
para "...I see."
|
||||
|
||||
para "You certainly"
|
||||
line "have been busy."
|
||||
|
||||
para "I'm not fond of"
|
||||
line "those kinds of"
|
||||
cont "public things..."
|
||||
|
||||
para "But battles are"
|
||||
line "different. That's"
|
||||
cont "what you came"
|
||||
cont "for, isn't it?"
|
||||
done
|
||||
|
||||
_ErikaRematchDefeatedText::
|
||||
text "Oh! It"
|
||||
line "appears it is"
|
||||
cont "my loss..."
|
||||
prompt
|
||||
|
|
|
@ -124,3 +124,30 @@ _CeruleanGymGuidePostBattleText::
|
|||
line "we make a pretty"
|
||||
cont "darn good team!"
|
||||
done
|
||||
|
||||
_MistyRematchPreBattleText::
|
||||
text "I heard an"
|
||||
line "interesting"
|
||||
cont "rumor!"
|
||||
|
||||
para "Not only did you"
|
||||
line "beat those TEAM"
|
||||
cont "ROCKET guys, but"
|
||||
cont "you also became"
|
||||
cont "the CHAMPION!"
|
||||
|
||||
para "I can't take it"
|
||||
line "anymore! I just"
|
||||
cont "have to battle"
|
||||
cont "you again!"
|
||||
|
||||
para "You got that?"
|
||||
|
||||
para "No refusing!"
|
||||
|
||||
done
|
||||
|
||||
_MistyRematchDefeatedText::
|
||||
text "Hmph!"
|
||||
line "How annoying!"
|
||||
prompt
|
||||
|
|
|
@ -208,5 +208,40 @@ _CinnabarGymGuidePreBattleText::
|
|||
|
||||
_CinnabarGymGuidePostBattleText::
|
||||
text "<PLAYER>! You beat"
|
||||
line "that fire brand!"
|
||||
line "that firebrand!"
|
||||
done
|
||||
|
||||
_BlaineRematchPreBattleText::
|
||||
text "Hah! Well done"
|
||||
line "returning here!"
|
||||
|
||||
para "You're the one"
|
||||
line "who retrieved the"
|
||||
cont "key from #MON"
|
||||
cont "MANSION!"
|
||||
|
||||
para "Did you see"
|
||||
line "anything while"
|
||||
cont "you were in"
|
||||
cont "there?"
|
||||
|
||||
para "That place holds"
|
||||
line "remnants of my"
|
||||
cont "old friend's re-"
|
||||
cont "search!"
|
||||
|
||||
para "Hmm..."
|
||||
|
||||
para "Well, it's not"
|
||||
line "as though I know"
|
||||
cont "the full story."
|
||||
|
||||
para "Since you're here"
|
||||
line "though, let's"
|
||||
cont "battle!"
|
||||
done
|
||||
|
||||
_BlaineRematchDefeatedText::
|
||||
text "Hah!"
|
||||
line "I'm all fired up!"
|
||||
prompt
|
||||
|
|
|
@ -24,3 +24,26 @@ _ReceivedSoulBadgeText::
|
|||
para "Here! Take the"
|
||||
line "SOULBADGE!"
|
||||
prompt
|
||||
|
||||
_KogaRematchPreBattleText::
|
||||
text "Fwahahaha!"
|
||||
|
||||
para "If it isn't the"
|
||||
line "child."
|
||||
|
||||
para "It seems we are"
|
||||
line "fated to meet"
|
||||
cont "once again."
|
||||
|
||||
para "You have come"
|
||||
line "at a truly"
|
||||
cont "opportune time."
|
||||
|
||||
para "I wanted to test"
|
||||
line "my newly refined"
|
||||
cont "ninja skills..."
|
||||
|
||||
para "In a battle that"
|
||||
line "will end in your"
|
||||
cont "utter defeat!"
|
||||
done
|
||||
|
|
|
@ -192,3 +192,9 @@ _FuchsiaGymGuidePostBattleText::
|
|||
line "ninja can terrify"
|
||||
cont "even now!"
|
||||
done
|
||||
|
||||
_KogaRematchDefeatedText::
|
||||
text "I must"
|
||||
line "hone my skills."
|
||||
prompt
|
||||
|
||||
|
|
|
@ -16,3 +16,23 @@ _BrockPreBattleText::
|
|||
cont "Fine then! Show"
|
||||
cont "me your best!"
|
||||
done
|
||||
|
||||
_BrockRematchPreBattleText::
|
||||
text "You sure look"
|
||||
line "different to"
|
||||
cont "when we first"
|
||||
cont "met!"
|
||||
|
||||
para "The truth is..."
|
||||
|
||||
para "We LEADERs have"
|
||||
line "a right to"
|
||||
cont "challenge the"
|
||||
cont "champ!"
|
||||
|
||||
para "Allow me to show"
|
||||
line "you the true"
|
||||
cont "rock-hard power"
|
||||
cont "of my #MON!"
|
||||
|
||||
done
|
||||
|
|
|
@ -144,3 +144,27 @@ _PewterGymGuidePostBattleText::
|
|||
line "You're #MON"
|
||||
cont "champ material!"
|
||||
done
|
||||
|
||||
_BrockRematchDefeatedText::
|
||||
text "I knew"
|
||||
line "you were strong,"
|
||||
cont "but this..."
|
||||
prompt
|
||||
|
||||
_BrockRematchPostText::
|
||||
text "I've chosen to"
|
||||
line "postpone my"
|
||||
cont "dream of being"
|
||||
cont "a #MON"
|
||||
cont "breeder for a"
|
||||
cont "little longer."
|
||||
|
||||
para "Right now, I'm"
|
||||
line "more interested"
|
||||
cont "training to one"
|
||||
cont "day defeat you!"
|
||||
|
||||
para "Battle me again"
|
||||
line "sometime!"
|
||||
done
|
||||
|
||||
|
|
|
@ -5,10 +5,14 @@ _SabrinaPreBattleText::
|
|||
para "I have had psychic"
|
||||
line "powers since I"
|
||||
cont "was a child."
|
||||
|
||||
para "I first learned"
|
||||
line "to bend spoons"
|
||||
cont "with my mind."
|
||||
|
||||
; LGPE modification. I believe it's a more accurate translation as well.
|
||||
para "It started when I"
|
||||
line "carelessly threw"
|
||||
cont "a spoon aside"
|
||||
cont "and it bent"
|
||||
cont "itself into an"
|
||||
cont "unnatural shape."
|
||||
|
||||
para "I dislike fight-"
|
||||
line "ing, but if you"
|
||||
|
@ -224,3 +228,38 @@ _SaffronGymAfterBattleText7::
|
|||
line "used telepathy to"
|
||||
cont "read your mind!"
|
||||
done
|
||||
|
||||
_SabrinaRematchPreBattleText::
|
||||
text "It is true that"
|
||||
line "PSI is a potent"
|
||||
cont "ability."
|
||||
|
||||
para "However, after I"
|
||||
line "lost to you that"
|
||||
cont "day..."
|
||||
|
||||
para "I realised there"
|
||||
line "are things that"
|
||||
cont "cannot be over-"
|
||||
cont "come with that"
|
||||
cont "power alone."
|
||||
|
||||
para "I won't rely on"
|
||||
line "my psychic"
|
||||
cont "powers this"
|
||||
cont "time."
|
||||
|
||||
para "My true strength."
|
||||
line "My true self."
|
||||
|
||||
para "Allow me to test"
|
||||
line "them against"
|
||||
cont "you!"
|
||||
done
|
||||
|
||||
_SabrinaRematchDefeatedText::
|
||||
text "I doubt"
|
||||
line "I'll encounter"
|
||||
cont "a TRAINER like"
|
||||
cont "you ever again."
|
||||
prompt
|
||||
|
|
|
@ -1,21 +1,43 @@
|
|||
_LTSurgePreBattleText::
|
||||
text "Hey, kid! What do"
|
||||
line "you think you're"
|
||||
cont "doing here?"
|
||||
_LTSurgePreBattleText:: ; Yellow text, which works better with his rematch text.
|
||||
text "Ten-hut! Welcome"
|
||||
line "to VERMILION GYM!"
|
||||
|
||||
para "You won't live"
|
||||
line "long in combat!"
|
||||
cont "That's for sure!"
|
||||
para "Will you look at"
|
||||
line "that, a pint-size"
|
||||
cont "challenger!"
|
||||
|
||||
para "I tell you kid,"
|
||||
line "electric #MON"
|
||||
cont "saved me during"
|
||||
cont "the war!"
|
||||
para "Hahaha! You've got"
|
||||
line "big and brassy"
|
||||
cont "nerves to take me"
|
||||
cont "on with your puny"
|
||||
cont "power!"
|
||||
|
||||
para "They zapped my"
|
||||
line "enemies into"
|
||||
cont "paralysis!"
|
||||
para "A #MON battle"
|
||||
line "is war! I'll show"
|
||||
cont "you, civilian!"
|
||||
|
||||
para "The same as I'll"
|
||||
line "do to you!"
|
||||
para "I'll shock you"
|
||||
line "into surrender!"
|
||||
done
|
||||
|
||||
; I usually use LGPE text, but honestly, Surge's just sucks, so I doctored it a bit.
|
||||
_SurgeRematchPreBattleText::
|
||||
text "Hey there, kid!"
|
||||
line "Pretty shocking"
|
||||
cont "you made it"
|
||||
cont "through the"
|
||||
cont "#MON LEAGUE!"
|
||||
|
||||
para "I can't think"
|
||||
line "of a stronger"
|
||||
cont "TRAINER I've"
|
||||
cont "battled since"
|
||||
cont "first arriving"
|
||||
cont "in KANTO..."
|
||||
|
||||
para "Let's have a"
|
||||
line "rematch, eh?"
|
||||
|
||||
para "I'll zap you"
|
||||
line "into paralysis!"
|
||||
done
|
||||
|
|
|
@ -143,3 +143,8 @@ _VermilionGymGuidePostBattleText::
|
|||
text "Whew! That match"
|
||||
line "was electric!"
|
||||
done
|
||||
|
||||
_SurgeRematchDefeatedText::
|
||||
text "Absolutely"
|
||||
line "shocking!"
|
||||
prompt
|
||||
|
|
Loading…
Reference in a new issue