From 4c0dfdfeddb8fb8b1e64149e3f6ff07531430607 Mon Sep 17 00:00:00 2001 From: Martha Schilling Date: Sat, 30 Dec 2023 22:39:09 +0000 Subject: [PATCH] Improvements to Chief! - Now has a rematch team, just with boosted levels - Has unique dialogue if you never picked up the Master Ball before fighting him, including after winning - Has new dialogue on subsequent matches We're nearly done. --- constants/event_constants.asm | 1 + data/trainers/parties.asm | 1 + data/trainers/special_moves.asm | 21 ++++++ layout.link | 2 +- scripts/HallOfFame.asm | 3 +- scripts/SilphGauntlet7F.asm | 72 ++++++++++++++++++- text/SilphCo11F.asm | 2 +- text/SilphGauntlet7F.asm | 122 +++++++++++++++++++++++++++++--- 8 files changed, 208 insertions(+), 16 deletions(-) diff --git a/constants/event_constants.asm b/constants/event_constants.asm index a04bf97b..52ef9732 100644 --- a/constants/event_constants.asm +++ b/constants/event_constants.asm @@ -819,6 +819,7 @@ DEF INDIGO_PLATEAU_EVENTS_END EQU const_value - 1 const_skip 4 const EVENT_VICTORY_ROAD_1_BOULDER_ON_SWITCH const EVENT_BEAT_CHIEF ; moved out of the below union to prevent bugs + const EVENT_MEWTWO_UNLOCKED ; Silph Gauntlet events const_next $930 diff --git a/data/trainers/parties.asm b/data/trainers/parties.asm index 9d4be3fc..0ff0e33b 100644 --- a/data/trainers/parties.asm +++ b/data/trainers/parties.asm @@ -563,6 +563,7 @@ BlackbeltData: ChiefData: ; Silph Gauntlet 7F db $FF, 66, ELECTRODE, 65, LAPRAS, 66, SCIZOR, 65, GENGAR, 68, PORYGONZ, 70, OMEGADGE, 0 + db $FF, 73, ELECTRODE, 72, LAPRAS, 73, SCIZOR, 72, GENGAR, 75, PORYGONZ, 78, OMEGADGE, 0 ; Lapras and Gengar are used here since Lapras is given by a Silph worker, and Gengar represents the Silph Scope. ; Poison- and Electric-type Pokemon diff --git a/data/trainers/special_moves.asm b/data/trainers/special_moves.asm index fc70fdf0..76c500b2 100644 --- a/data/trainers/special_moves.asm +++ b/data/trainers/special_moves.asm @@ -1362,6 +1362,27 @@ SpecialTrainerMoves: db 6, 2, THUNDER_WAVE db 6, 4, ICE_BEAM db 0 + + db CHIEF, 2 + db 1, 1, THUNDERBOLT + db 1, 2, THUNDER_WAVE + db 1, 3, HEADBUTT + db 2, 1, BLIZZARD + db 2, 2, THUNDERBOLT + db 2, 3, SING + db 2, 4, HYPER_BEAM + db 3, 1, IRON_HEAD + db 3, 3, HYPER_BEAM + db 4, 1, EXPLOSION + db 4, 2, THUNDERBOLT + db 4, 4, ICE_PUNCH + db 5, 1, THUNDERBOLT + db 5, 2, ICE_BEAM + db 5, 3, RECOVER + db 6, 1, THUNDERBOLT + db 6, 2, THUNDER_WAVE + db 6, 4, ICE_BEAM + db 0 db JESSIE_JAMES, 5 ; J&J postgame db 1, 1, BUBBLEBEAM diff --git a/layout.link b/layout.link index 70f04037..184bf5d5 100644 --- a/layout.link +++ b/layout.link @@ -141,7 +141,6 @@ ROMX $1D "Itemfinder 1" "Maps 20" "Maps 21" - "Itemfinder 2" ROMX $1E "bank1E" ROMX $1F @@ -151,6 +150,7 @@ ROMX $1F "Sound Effects 3" ; "Audio Engine 3" ; "Music 3" + "Itemfinder 2" ROMX $20 "Text 1" ROMX $21 diff --git a/scripts/HallOfFame.asm b/scripts/HallOfFame.asm index 6fd57c39..12da23c1 100644 --- a/scripts/HallOfFame.asm +++ b/scripts/HallOfFame.asm @@ -180,7 +180,7 @@ ResetLegendaryPokemon: call ShowThis .skipMew CheckEvent EVENT_POST_GAME_ATTAINED - jp z, .skipGalarianBirdsAndMewtwo ; If you haven't cleared the game yet, you've not met the Galarian Birds. So we may as well skip processing all this. + jp z, .skipGalarianBirdsAndMewtwo ld a, DEX_ARTICUNO_G call HoFIsPokemonBitSet jr nz, .skipArticunoG @@ -257,7 +257,6 @@ 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 ; Farcalling this caused weird issues so I'm just using a clone diff --git a/scripts/SilphGauntlet7F.asm b/scripts/SilphGauntlet7F.asm index e3e6f860..f7215813 100644 --- a/scripts/SilphGauntlet7F.asm +++ b/scripts/SilphGauntlet7F.asm @@ -95,6 +95,7 @@ ChiefScript4: ld a, HS_CERULEAN_CAVE_GUY ld [wMissableObjectIndex], a predef HideObject + SetEvent EVENT_MEWTWO_UNLOCKED ResetEventRange SILPH_GAUNTLET_EVENTS_START, SILPH_GAUNTLET_EVENTS_END, 1 ld a, $0 @@ -117,8 +118,10 @@ SilphGauntlet7F_TextPointers: ChiefText1: text_asm + CheckEvent EVENT_MEWTWO_UNLOCKED + jr nz, .chiefSecondFight CheckEvent EVENT_BEAT_CHIEF ; Check if Chief was beaten - jr nz, .chiefBeaten ; If Chief has been beaten, skip the trainer loading + jr nz, .chiefBeaten1 ; If Chief has been beaten, skip the trainer loading ; standard processing ld hl, ChiefMonologue call PrintText @@ -127,6 +130,9 @@ ChiefText1: call z, WaitForTextScrollButtonPress ; and here. call EnableAutoTextBoxDrawing ; and here. + CheckEvent EVENT_GOT_MASTER_BALL ; Check if Master Ball was collected. + ld hl, ChiefMonologueMasterBallNotCollected ; If no, load this text... + jr z, .masterBallSkip ; ...then skip. CheckEvent EVENT_USED_MASTER_BALL ; Check if the Master Ball has been used. ld hl, ChiefMonologueMasterBallNotUsed ; Load not used by default. jr z, .masterBallSkip ; In which case, we can skip. @@ -153,12 +159,48 @@ ChiefText1: ld de, ChiefVictoryText call SaveEndBattleTextPointers jr .done -.chiefBeaten - ld hl, ChiefAfterBattleText +.chiefBeaten1 + CheckEvent EVENT_GOT_MASTER_BALL ; Check if Master Ball was collected. + ld hl, ChiefAltAfterBattleText ; If no, load this text... + jr z, .noMBallskip ; ...then skip. + ld hl, ChiefAfterBattleText ; otherwise, load this. +.noMBallskip call PrintText ; fallthrough .done jp TextScriptEnd +.chiefSecondFight + CheckEvent EVENT_BEAT_CHIEF ; Check if Chief was beaten + jr nz, .chiefBeaten2 ; If Chief has been beaten, skip the trainer loading + ld hl, ChiefMonologueRematch + call PrintText + ld a, [wSimulatedJoypadStatesEnd] ; ensuring that the text doesn't autoskip. + and a ; yep, here too. + call z, WaitForTextScrollButtonPress ; and here. + call EnableAutoTextBoxDrawing ; and here. + ld c, BANK(Music_MeetEvilTrainer) + ld a, MUSIC_MEET_EVIL_TRAINER + call PlayMusic + + call Delay3 + ld hl, wd72d + set 6, [hl] + set 7, [hl] + ld a, OPP_CHIEF + ld [wCurOpponent], a + ld a, 2 + ld [wTrainerNo], a + ld [wIsTrainerBattle], a + ld a, $1 + ld [wSilphGauntlet7FCurScript], a + ld hl, ChiefDefeatedText2 + ld de, ChiefVictoryText2 + call SaveEndBattleTextPointers + jr .done +.chiefBeaten2 + ld hl, ChiefAfterBattleText2 + call PrintText + jr .done ChiefMonologue: text_far _ChiefMonologue @@ -171,6 +213,10 @@ ChiefMonologueMasterBallUsed: ChiefMonologueMasterBallNotUsed: text_far _ChiefMonologueMasterBallNotUsed text_end + +ChiefMonologueMasterBallNotCollected: + text_far _ChiefMonologueMasterBallNotCollected + text_end ChiefDefeatedText: text_far _ChiefDefeatedText @@ -183,6 +229,26 @@ ChiefVictoryText: ChiefAfterBattleText: text_far _ChiefAfterBattleText text_end + +ChiefAltAfterBattleText: + text_far _ChiefAltAfterBattleText + text_end + +ChiefMonologueRematch: + text_far _ChiefMonologueRematch + text_end + +ChiefDefeatedText2: + text_far _ChiefDefeatedText2 + text_end + +ChiefVictoryText2: + text_far _ChiefVictoryText2 + text_end + +ChiefAfterBattleText2: + text_far _ChiefAfterBattleText2 + text_end ChiefPC: text_far _ChiefPCText diff --git a/text/SilphCo11F.asm b/text/SilphCo11F.asm index 1a55b07d..5b94eeb9 100644 --- a/text/SilphCo11F.asm +++ b/text/SilphCo11F.asm @@ -148,7 +148,7 @@ _SilphCo10Text_6237b:: _OmegaBattleText:: text "Bzzt! Clank!" - text_end + done ; Fun fact: For some reason, this text is stored in 10F. Seems to be a beta element - they ARE encountered in 11F. _SilphCoJessieJamesText1:: diff --git a/text/SilphGauntlet7F.asm b/text/SilphGauntlet7F.asm index ca64953a..5967a8e2 100644 --- a/text/SilphGauntlet7F.asm +++ b/text/SilphGauntlet7F.asm @@ -8,9 +8,13 @@ _ChiefMonologue:: para "However, I can't" line "let you leave" - cont "this place. You" - cont "are still looking" - cont "for the ultimate" + cont "this place quite" + cont "yet..." + prompt + +_ChiefMonologueMasterBallNotUsed:: + text "You're looking for" + line "for the ultimate" cont "#MON, aren't" cont "you?" @@ -22,10 +26,8 @@ _ChiefMonologue:: cont "GIOVANNI gone," cont "our company is" cont "going under!" - prompt -_ChiefMonologueMasterBallNotUsed:: - text "Now there's only" + para "Now there's only" line "one way to catch" cont "MEWTWO, and it's" cont "in your hands!" @@ -33,10 +35,24 @@ _ChiefMonologueMasterBallNotUsed:: para "!" para "Give me that BALL!" - prompt + done _ChiefMonologueMasterBallUsed:: - text "...what? You used" + text "You're looking for" + line "for the ultimate" + cont "#MON, aren't" + cont "you?" + + para "That MASTER" + line "BALL... I should" + cont "never have given" + cont "it to you! With" + cont "MEWTWO loose and" + cont "GIOVANNI gone," + cont "our company is" + cont "going under!" + + para "...what? You used" line "the MASTER BALL?!" para "You stupid child!" @@ -50,7 +66,31 @@ _ChiefMonologueMasterBallUsed:: para "You are in for" line "a world of hurt!" ; Like Giovanni, but with a slightly more pompous tone in using "hurt". - prompt + done + +_ChiefMonologueMasterBallNotCollected:: + text "As I watched you" + line "battle GIOVANNI," + cont "I know how you" + cont "and your #MON" + cont "fight." + + para "I must say, your" + line "strength seems..." + cont "promising. That's" + cont "why I invited you" + cont "here, after all." + + para "Before my next big" + line "plan, I must see" + cont "how well I stand" + cont "against the new" + cont "champion!" + + para "!" + + para "Give it your all!" + done _ChiefDefeatedText:: text "No! I..." @@ -92,6 +132,27 @@ _ChiefAfterBattleText:: cont "world." done + +_ChiefAltAfterBattleText:: + text "CHIEF: Just as" + line "I thought..." + cont "No product I" + cont "have is capable" + cont "of trouncing you." + + para "Money means I can" + line "be as powerful as" + cont "I want, but what" + cont "I do with that" + cont "power...is very" + cont "important." + + para "I still have much" + line "yet to learn..." + + para "Go." + + done _ChiefPCText:: text "It's a PC with" @@ -119,3 +180,46 @@ _ChiefPainting2:: line "of GAWARHED, an" cont "extinct #MON!" done + +_ChiefMonologueRematch:: + text "CHIEF: What?" + line "you're back?" + + para "Hmm...you're" + line "looking for a" + cont "rematch, is that" + cont "it?" + + para "Alright, if you" + line "insist. OMEGADGE" + cont "could always use" + cont "some more battle" + cont "data..." + + para "So, no holding" + line "back!" + done + +_ChiefDefeatedText2:: + text "Impressive" + line "work..." + prompt + +_ChiefVictoryText2:: + text "CHIEF: I" + line "expected better." + prompt + +_ChiefAfterBattleText2:: + text "CHIEF: It really" + line "is no wonder" + cont "how you've been" + cont "capable of" + cont "accomplishing so" + cont "much..." + + para "You truly trust" + line "and care for" + cont "your #MON." + + done