Elite Four + Champion refights

This was an interesting thought exercise.

As you can see, this code adds a scaling function for when you reach the KEP post-game. These teams are very powerful and a strong test of the player's skills.

I did, however, remove the Legendary Pokemon from the first three's teams. They felt a little bit out there and kind of decrease the significance of the player's. Plus, we just went through hell adding conditional Hall of Fame respawns.

The Elite Four use refight text based on their LGPE appearances. It's honestly a little odd, so if it's too much, the FRLG conditional text could be used instead. I like the way Agatha's plays out, though...

Anyway, stupid hacky implementation done, please don't look at how I did the champion's trainer number.
This commit is contained in:
Llinos Evans 2023-07-09 22:16:09 +01:00
parent 0659fb1c65
commit 6c9265f0a2
13 changed files with 325 additions and 21 deletions

View file

@ -818,19 +818,23 @@
DEF INDIGO_PLATEAU_EVENTS_START EQU const_value
const_skip
const EVENT_BEAT_LORELEIS_ROOM_TRAINER_0
const_skip 4
const EVENT_BEAT_LORELEIS_ROOM_TRAINER_1
const_skip 3
const EVENT_AUTOWALKED_INTO_LORELEIS_ROOM
const_skip 2
const EVENT_BEAT_BRUNOS_ROOM_TRAINER_0
const_skip 4
const EVENT_BEAT_BRUNOS_ROOM_TRAINER_1
const_skip 3
const EVENT_AUTOWALKED_INTO_BRUNOS_ROOM
const_skip 2
const EVENT_BEAT_AGATHAS_ROOM_TRAINER_0
const_skip 4
const EVENT_BEAT_AGATHAS_ROOM_TRAINER_1
const_skip 3
const EVENT_AUTOWALKED_INTO_AGATHAS_ROOM
const_skip 2
const EVENT_BEAT_LANCES_ROOM_TRAINER_0
const_skip 4
const EVENT_BEAT_LANCES_ROOM_TRAINER_1
const_skip 3
const EVENT_BEAT_LANCE
const EVENT_LANCES_ROOM_LOCK_DOOR
const_skip

View file

@ -47,14 +47,14 @@ Green3Data:
db $FF, 61, PIDGEOT, 59, ALAKAZAM, 61, RHYPERIOR, 61, ARCANINE, 63, EXEGGUTOR, 65, TOTARTLE, 0
db $FF, 61, PIDGEOT, 59, ALAKAZAM, 61, RHYPERIOR, 61, GYARADOS, 63, ARCANINE, 65, VENUSAUR, 0
db $FF, 61, PIDGEOT, 59, ALAKAZAM, 61, RHYPERIOR, 61, EXEGGUTOR, 63, GYARADOS, 65, CHARIZARD, 0
db $FF, 61, SANDSLASH, 59, ALAKAZAM, 61, EXEGGUTOR, 61, NINETALES, 63, MAGNEZONE, 65, UMBREON, 0 ; could base on trace but eeeeeeeehhhhhhh...
db $FF, 61, SANDSLASH, 59, ALAKAZAM, 61, EXEGGUTOR, 61, NINETALES, 63, MAGNEZONE, 65, UMBREON, 0
db $FF, 61, SANDSLASH, 59, ALAKAZAM, 61, EXEGGUTOR, 61, NINETALES, 63, CLOYSTER, 65, GOROCHU, 0
; post-game rematch teams (currently unused - based on FRLG team
; db $FF, 81, PURAKKUSU, 79, ALAKAZAM, 81, GYAOON, 81, ARCANINE, 83, EXEGGUTOR, 85, TOTARTLE, 0
; db $FF, 81, PURAKKUSU, 79, ALAKAZAM, 81, GYAOON, 81, GYARADOS, 83, ARCANINE, 85, VENUSAUR, 0
; db $FF, 81, PURAKKUSU, 79, ALAKAZAM, 81, GYAOON, 81, EXEGGUTOR, 83, GYARADOS, 85, CHARIZARD, 0
; db $FF, 81, GUARDIA, 79, ALAKAZAM, 81, TANGROWTH, 81, NINETALES, 83, MAGNEZONE, 85, UMBREON, 0
; db $FF, 81, GUARDIA, 79, ALAKAZAM, 81, TANGROWTH, 81, NINETALES, 83, CLOYSTER, 85, GOROCHU, 0
; post-game rematch teams, based on FRLG team
db $FF, 81, PURAKKUSU, 79, ALAKAZAM, 81, GYAOON, 81, ARCANINE, 83, EXEGGUTOR, 85, TOTARTLE, 0
db $FF, 81, PURAKKUSU, 79, ALAKAZAM, 81, GYAOON, 81, GYARADOS, 83, ARCANINE, 85, VENUSAUR, 0
db $FF, 81, PURAKKUSU, 79, ALAKAZAM, 81, GYAOON, 81, EXEGGUTOR, 83, GYARADOS, 85, CHARIZARD, 0
db $FF, 81, GUARDIA, 79, ALAKAZAM, 81, TANGROWTH, 81, NINETALES, 83, MAGNEZONE, 85, UMBREON, 0
db $FF, 81, GUARDIA, 79, ALAKAZAM, 81, TANGROWTH, 81, NINETALES, 83, CLOYSTER, 85, GOROCHU, 0
ProfOakData:
db $FF, 66, TAUROS, 67, GYARADOS, 68, ARCANINE, 68, EXEGGUTOR, 70, NIDOKING, 70, TOTARTLE, 0

View file

@ -87,17 +87,17 @@ GiovanniData: ; is not scaled as he is always fought last
LoreleiData:
db $FF, 54, DEWGONG, 53, CLOYSTER, 54, GLACEON, 55, NINETALES_A, 55, JYNX, 56, LAPRAS, 0
; post-game rematch team (currently unused)
db $FF, 74, JYNX, 73, CLOYSTER, 74, NINETALES_A, 75, GLACEON, 75, LAPRAS, 76, ARTICUNO, 0
db $FF, 74, JYNX, 73, DEWGONG, 73, CLOYSTER, 74, NINETALES_A, 75, GLACEON, 75, LAPRAS, 0
BrunoData:
db $FF, 54, HITMONTOP, 55, STEELIX, 55, POLIWRATH, 56, SIRFETCHD, 56, PURAKKUSU, 58, MACHAMP, 0
; post-game rematch team (currently unused)
db $FF, 74, POLIWRATH, 75, STEELIX, 75, SIRFETCHD, 76, PURAKKUSU, 76, MACHAMP, 78, ZAPDOS_G, 0
db $FF, 74, POLIWRATH, 74, HITMONTOP, 75, STEELIX, 75, SIRFETCHD, 76, PURAKKUSU, 76, MACHAMP, 78, 0
AgathaData:
db $FF, 57, ARBOK, 56, ANNIHILAPE, 56, CROBAT, 58, MAROWAK_A, 58, UMBREON, 60, GENGAR, 0
; post-game rematch team (currently unused)
db $FF, 77, ANNIHILAPE, 76, CROBAT, 76, MAROWAK_A, 78, UMBREON, 78, GENGAR, 80, MOLTRES_G, 0
db $FF, 77, ARBOK, 77, ANNIHILAPE, 76, CROBAT, 76, MAROWAK_A, 78, UMBREON, 78, GENGAR, 80, 0
LanceData:
db $FF, 58, CROCKY, 57, KINGDRA, 57, AERODACTYL, 59, EXEGGUTOR_A, 59, CRYITHAN, 62, DRAGONITE, 0

View file

@ -14,7 +14,7 @@ AgathaShowOrHideExitBlock:
bit 5, [hl]
res 5, [hl]
ret z
CheckEvent EVENT_BEAT_AGATHAS_ROOM_TRAINER_0
CheckEitherEventSet EVENT_BEAT_AGATHAS_ROOM_TRAINER_0, EVENT_BEAT_AGATHAS_ROOM_TRAINER_1
jr z, .blockExitToNextRoom
ld a, $e
jp .setExitBlock
@ -124,12 +124,24 @@ AgathasRoomTrainerHeaders:
def_trainers
AgathasRoomTrainerHeader0:
trainer EVENT_BEAT_AGATHAS_ROOM_TRAINER_0, 0, AgathaBeforeBattleText, AgathaEndBattleText, AgathaAfterBattleText
AgathasRoomTrainerHeader1:
trainer EVENT_BEAT_AGATHAS_ROOM_TRAINER_1, 0, AgathaRematchText, AgathaRematchEndBattleText, AgathaRematchAfterBattleText
db -1 ; end
AgathaText1:
text_asm
ld hl, AgathasRoomTrainerHeader0
CheckEvent EVENT_POST_GAME_ATTAINED
jr z, .skip
ld hl, AgathasRoomTrainerHeader1
.skip
call TalkToTrainer
CheckEvent EVENT_POST_GAME_ATTAINED
jr z, .skip2
ld a, [wTrainerNo]
inc a
ld [wTrainerNo], a
.skip2
jp TextScriptEnd
AgathaBeforeBattleText:
@ -147,3 +159,15 @@ AgathaAfterBattleText:
AgathaDontRunAwayText:
text_far _AgathaDontRunAwayText
text_end
AgathaRematchText:
text_far _AgathaRematchText
text_end
AgathaRematchEndBattleText:
text_far _AgathaRematchEndBattleText
text_end
AgathaRematchAfterBattleText:
text_far _AgathaRematchAfterBattleText
text_end

View file

@ -14,7 +14,7 @@ BrunoShowOrHideExitBlock:
bit 5, [hl]
res 5, [hl]
ret z
CheckEvent EVENT_BEAT_BRUNOS_ROOM_TRAINER_0
CheckEitherEventSet EVENT_BEAT_BRUNOS_ROOM_TRAINER_0, EVENT_BEAT_BRUNOS_ROOM_TRAINER_1
jr z, .blockExitToNextRoom
ld a, $5
jp .setExitBlock
@ -121,12 +121,24 @@ BrunosRoomTrainerHeaders:
def_trainers
BrunosRoomTrainerHeader0:
trainer EVENT_BEAT_BRUNOS_ROOM_TRAINER_0, 0, BrunoBeforeBattleText, BrunoEndBattleText, BrunoAfterBattleText
BrunosRoomTrainerHeader1:
trainer EVENT_BEAT_BRUNOS_ROOM_TRAINER_1, 0, BrunoRematchText, BrunoRematchEndBattleText, BrunoRematchAfterBattleText
db -1 ; end
BrunoText1:
text_asm
ld hl, BrunosRoomTrainerHeader0
CheckEvent EVENT_POST_GAME_ATTAINED
jr z, .skip
ld hl, BrunosRoomTrainerHeader1
.skip
call TalkToTrainer
CheckEvent EVENT_POST_GAME_ATTAINED
jr z, .skip2
ld a, [wTrainerNo]
inc a
ld [wTrainerNo], a
.skip2
jp TextScriptEnd
BrunoBeforeBattleText:
@ -144,3 +156,15 @@ BrunoAfterBattleText:
BrunoDontRunAwayText:
text_far _BrunoDontRunAwayText
text_end
BrunoRematchText:
text_far _BrunoRematchText
text_end
BrunoRematchEndBattleText:
text_far _BrunoRematchEndBattleText
text_end
BrunoRematchAfterBattleText:
text_far _BrunoRematchAfterBattleText
text_end

View file

@ -93,6 +93,18 @@ GaryScript2:
jr .saveTrainerId
.saveTrainerId
ld [wTrainerNo], a
CheckEvent EVENT_POST_GAME_ATTAINED
jr z, .skip
ld a, [wTrainerNo]
inc a
inc a
inc a
inc a
inc a
; surely there is a better way
ld [wTrainerNo], a
.skip
ld a, 1
ld [wIsTrainerBattle], a

View file

@ -132,12 +132,24 @@ LancesRoomTrainerHeaders:
def_trainers
LancesRoomTrainerHeader0:
trainer EVENT_BEAT_LANCES_ROOM_TRAINER_0, 0, LanceBeforeBattleText, LanceEndBattleText, LanceAfterBattleText
LancesRoomTrainerHeader1:
trainer EVENT_BEAT_LANCES_ROOM_TRAINER_1, 0, LanceRematchText, LanceRematchEndBattleText, LanceRematchAfterBattleText
db -1 ; end
LanceText1:
text_asm
ld hl, LancesRoomTrainerHeader0
CheckEvent EVENT_POST_GAME_ATTAINED
jr z, .skip
ld hl, LancesRoomTrainerHeader1
.skip
call TalkToTrainer
CheckEvent EVENT_POST_GAME_ATTAINED
jr z, .skip2
ld a, [wTrainerNo]
inc a
ld [wTrainerNo], a
.skip2
jp TextScriptEnd
LanceBeforeBattleText:
@ -153,3 +165,17 @@ LanceAfterBattleText:
text_asm
SetEvent EVENT_BEAT_LANCE
jp TextScriptEnd
LanceRematchText:
text_far _LanceRematchText
text_end
LanceRematchEndBattleText:
text_far _LanceRematchEndBattleText
text_end
LanceRematchAfterBattleText:
text_far _LanceRematchAfterBattleText
text_asm
SetEvent EVENT_BEAT_LANCE
jp TextScriptEnd

View file

@ -16,7 +16,7 @@ LoreleiShowOrHideExitBlock:
ret z
ld hl, wBeatLorelei
set 1, [hl]
CheckEvent EVENT_BEAT_LORELEIS_ROOM_TRAINER_0
CheckEitherEventSet EVENT_BEAT_LORELEIS_ROOM_TRAINER_0, EVENT_BEAT_LORELEIS_ROOM_TRAINER_1
jr z, .blockExitToNextRoom
ld a, $5
jr .setExitBlock
@ -123,12 +123,24 @@ LoreleisRoomTrainerHeaders:
def_trainers
LoreleisRoomTrainerHeader0:
trainer EVENT_BEAT_LORELEIS_ROOM_TRAINER_0, 0, LoreleiBeforeBattleText, LoreleiEndBattleText, LoreleiAfterBattleText
LoreleisRoomTrainerHeader1:
trainer EVENT_BEAT_LORELEIS_ROOM_TRAINER_1, 0, LoreleiRematchText, LoreleiRematchEndBattleText, LoreleiRematchAfterBattleText
db -1 ; end
LoreleiText1:
text_asm
ld hl, LoreleisRoomTrainerHeader0
CheckEvent EVENT_POST_GAME_ATTAINED
jr z, .skip
ld hl, LoreleisRoomTrainerHeader1
.skip
call TalkToTrainer
CheckEvent EVENT_POST_GAME_ATTAINED
jr z, .skip2
ld a, [wTrainerNo]
inc a
ld [wTrainerNo], a
.skip2
jp TextScriptEnd
LoreleiBeforeBattleText:
@ -146,3 +158,16 @@ LoreleiAfterBattleText:
LoreleiDontRunAwayText:
text_far _LoreleiDontRunAwayText
text_end
LoreleiRematchText:
text_far _LoreleiRematchText
text_end
LoreleiRematchEndBattleText:
text_far _LoreleiRematchEndBattleText
text_end
LoreleiRematchAfterBattleText:
text_far _LoreleiRematchAfterBattleText
text_end

View file

@ -42,3 +42,41 @@ _AgathaDontRunAwayText::
text "Someone's voice:"
line "Don't run away!"
done
_AgathaRematchText::
text "So you've come!"
para "It's not in my"
line "character to"
cont "lose over and"
cont "over."
para "Give this battle"
line "everything you"
cont "have!"
done
_AgathaRematchEndBattleText::
text "Not bad!"
prompt
_AgathaRematchAfterBattleText::
text "Small wonder that"
line "old-timer's taken"
cont "such an interest"
cont "in you."
para "...OAK and I used"
line "to be good rivals"
cont "too, you know."
para "Just like you and"
line "<RIVAL>."
para "What are you"
line "waiting for?"
para "Off to the next"
line "room!"
done

View file

@ -35,3 +35,46 @@ _BrunoDontRunAwayText::
text "Someone's voice:"
line "Don't run away!"
done
_BrunoRematchText::
text "I could feel the"
line "intensity of your"
cont "battle against"
cont "LORELEI, even"
cont "from here!"
para "Now it's time to"
line "show you the"
cont "power of my"
cont "#MON!"
para "They've been"
line "training just"
cont "as hard as"
cont "yours, surely!"
para "Hoo hah!"
para "Hoo! HAH!!!"
done
_BrunoRematchEndBattleText::
text "I have"
line "regrets!"
prompt
_BrunoRematchAfterBattleText::
text "Ugh! No!"
para "So my training is"
line "still lacking..."
para "...Go."
para "Do not trouble"
line "yourself on my"
cont "behalf."
para "Continue to move"
line "forward!"
done

View file

@ -1,7 +1,7 @@
_GaryChampionIntroText::
text "<RIVAL>: Hey!"
para "I was looking"
para "I was looking" ; this just barely works for a refight
line "forward to seeing"
cont "you, <PLAYER>!"
@ -144,3 +144,34 @@ _GaryText_7612a::
para "<PLAYER>!"
line "Come with me!"
done
; this stuff is unused for now the champion room is kinda complicated
; may not use at all as this whole title defence thing was only rly started in gen 7
_BlueRematchText::
text "uhhh"
done
_BlueRematchEndBattleText::
text "Aw man,"
line "what was I"
cont "doing?"
prompt
_BlueRematchAfterBattleText::
text "Tch..."
para "As long as I can"
line "battle strong"
cont "TRAINERs, I don't"
cont "care what happens."
para "You get what I"
line "mean, right?"
cont "You'd better come"
cont "back again!"
para "For now, though..."
line "Go through."
done

View file

@ -62,3 +62,48 @@ _LanceAfterBattleText::
line "#MON LEAGUE"
cont "champion!@"
text_end
_LanceRematchText::
text "I'm glad you've"
line "come."
para "Thanks to you,"
line "the #MON"
cont "LEAGUE's rep has"
cont "really taken off!"
para "I'd feel ashamed"
line "to call myself"
cont "LANCE the dragon"
cont "trainer if I"
cont "didn't challenge"
cont "you to a battle!"
done
_LanceRematchEndBattleText::
text "How could"
line "I be pushed to"
cont "such a point?"
prompt
_LanceRematchAfterBattleText::
text "There's no way my"
line "dragon brigade is"
cont "weak..."
para "Hm? I'm saying"
line "your strength is"
cont "truly incredible!"
para "Now then..."
line "<PLAYER>."
para "You know what's"
line "next, don't you?"
para "That's right!"
line "<RIVAL> awaits"
cont "you on the stage"
cont "of your greatest"
cont "battle yet!@"
text_end

View file

@ -1,5 +1,5 @@
_LoreleiBeforeBattleText::
text "Welcome to"
text "Welcome to the"
line "#MON LEAGUE!"
para "I am LORELEI of"
@ -32,8 +32,40 @@ _LoreleiAfterBattleText::
cont "Go on ahead!"
para "You only got a"
line "taste of #MON"
cont "LEAGUE power!"
line "taste of the"
cont "#MON LEAGUE's"
cont "power!"
done
_LoreleiRematchText::
text "Welcome to the"
line "#MON LEAGUE!"
para "Hey, fantastic"
line "timing! I was"
cont "just thinking"
cont "how I'd like to"
cont "battle you."
para "I hope you're"
line "ready!"
done
_LoreleiRematchEndBattleText::
text "Argh!"
line "How?!"
prompt
_LoreleiRematchAfterBattleText::
text "I may have lost"
line "to you, but I'll"
cont "never give up on"
cont "ice #MON!"
para "You should aim to"
line "win using #MON"
cont "you like best,"
cont "too!"
done
_LoreleiDontRunAwayText::