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.
This commit is contained in:
Martha Schilling 2023-12-30 22:39:09 +00:00
parent d20207f012
commit 4c0dfdfedd
8 changed files with 208 additions and 16 deletions

View file

@ -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

View file

@ -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