From 6c9265f0a222213cf5aa77820072ccd463c6d665 Mon Sep 17 00:00:00 2001 From: Llinos Evans <36418502+PlagueVonKarma@users.noreply.github.com> Date: Sun, 9 Jul 2023 22:16:09 +0100 Subject: [PATCH] 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. --- constants/event_constants.asm | 12 ++++++--- data/trainers/rival_parties.asm | 14 +++++----- data/trainers/scaled_parties.asm | 6 ++--- scripts/AgathasRoom.asm | 26 +++++++++++++++++- scripts/BrunosRoom.asm | 26 +++++++++++++++++- scripts/ChampionsRoom.asm | 12 +++++++++ scripts/LancesRoom.asm | 26 ++++++++++++++++++ scripts/LoreleisRoom.asm | 27 ++++++++++++++++++- text/AgathasRoom.asm | 38 +++++++++++++++++++++++++++ text/BrunosRoom.asm | 43 ++++++++++++++++++++++++++++++ text/ChampionsRoom.asm | 33 ++++++++++++++++++++++- text/LancesRoom.asm | 45 ++++++++++++++++++++++++++++++++ text/LoreleisRoom.asm | 38 ++++++++++++++++++++++++--- 13 files changed, 325 insertions(+), 21 deletions(-) diff --git a/constants/event_constants.asm b/constants/event_constants.asm index cb66e128..d4114030 100644 --- a/constants/event_constants.asm +++ b/constants/event_constants.asm @@ -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 diff --git a/data/trainers/rival_parties.asm b/data/trainers/rival_parties.asm index d1d4d14a..8cc5462b 100644 --- a/data/trainers/rival_parties.asm +++ b/data/trainers/rival_parties.asm @@ -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 diff --git a/data/trainers/scaled_parties.asm b/data/trainers/scaled_parties.asm index b411b1ed..ddfa44c0 100644 --- a/data/trainers/scaled_parties.asm +++ b/data/trainers/scaled_parties.asm @@ -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 diff --git a/scripts/AgathasRoom.asm b/scripts/AgathasRoom.asm index abe22a4f..edeca685 100644 --- a/scripts/AgathasRoom.asm +++ b/scripts/AgathasRoom.asm @@ -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 diff --git a/scripts/BrunosRoom.asm b/scripts/BrunosRoom.asm index ca8f5418..56ee78b2 100644 --- a/scripts/BrunosRoom.asm +++ b/scripts/BrunosRoom.asm @@ -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 diff --git a/scripts/ChampionsRoom.asm b/scripts/ChampionsRoom.asm index 71b8861b..3cedbbb0 100644 --- a/scripts/ChampionsRoom.asm +++ b/scripts/ChampionsRoom.asm @@ -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 diff --git a/scripts/LancesRoom.asm b/scripts/LancesRoom.asm index 9c316416..020923ba 100644 --- a/scripts/LancesRoom.asm +++ b/scripts/LancesRoom.asm @@ -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 diff --git a/scripts/LoreleisRoom.asm b/scripts/LoreleisRoom.asm index 1f42fa2e..1cc3249a 100644 --- a/scripts/LoreleisRoom.asm +++ b/scripts/LoreleisRoom.asm @@ -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 + diff --git a/text/AgathasRoom.asm b/text/AgathasRoom.asm index 9ef5059a..8177348b 100644 --- a/text/AgathasRoom.asm +++ b/text/AgathasRoom.asm @@ -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 "." + + para "What are you" + line "waiting for?" + + para "Off to the next" + line "room!" + + done diff --git a/text/BrunosRoom.asm b/text/BrunosRoom.asm index 9c493c4a..874ff723 100644 --- a/text/BrunosRoom.asm +++ b/text/BrunosRoom.asm @@ -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 diff --git a/text/ChampionsRoom.asm b/text/ChampionsRoom.asm index 575b7da4..86596504 100644 --- a/text/ChampionsRoom.asm +++ b/text/ChampionsRoom.asm @@ -1,7 +1,7 @@ _GaryChampionIntroText:: text ": Hey!" - para "I was looking" + para "I was looking" ; this just barely works for a refight line "forward to seeing" cont "you, !" @@ -144,3 +144,34 @@ _GaryText_7612a:: para "!" 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 diff --git a/text/LancesRoom.asm b/text/LancesRoom.asm index a5ce1159..079d68b4 100644 --- a/text/LancesRoom.asm +++ b/text/LancesRoom.asm @@ -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 "." + + para "You know what's" + line "next, don't you?" + + para "That's right!" + line " awaits" + cont "you on the stage" + cont "of your greatest" + cont "battle yet!@" + text_end diff --git a/text/LoreleisRoom.asm b/text/LoreleisRoom.asm index fdbb55b4..4ee81c68 100644 --- a/text/LoreleisRoom.asm +++ b/text/LoreleisRoom.asm @@ -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::