Rework CeladonU Trainers

This refactors the Celadon University trainers to ensure that they process properly without the odd memory leak-y thing I did before. Overall works the same, just works for the intended purpose.

I also applied what I learned to Professor Oak, giving a Yes/No prompt and adding some pre-battle music as I originally intended.
This commit is contained in:
May Evans 2023-03-29 17:41:45 +01:00
parent c9b01f2c64
commit c759efdeea
4 changed files with 185 additions and 47 deletions

View file

@ -8,10 +8,10 @@ CeladonUniversityOutside_Object:
def_bg_events def_bg_events
def_object_events def_object_events
object_event 19, 30, SPRITE_COOLTRAINER_F, WALK, RIGHT, 1, OPP_JR_TRAINER_F, 4 object_event 19, 30, SPRITE_COOLTRAINER_F, WALK, RIGHT, 1 ; trainer
object_event 22, 26, SPRITE_SUPER_NERD, WALK, LEFT, 2, OPP_SUPER_NERD, 6 object_event 22, 26, SPRITE_SUPER_NERD, WALK, LEFT, 2 ; trainer
object_event 9, 6, SPRITE_GAMBLER, WALK, DOWN, 3, OPP_ENGINEER, 1 object_event 9, 6, SPRITE_GAMBLER, WALK, DOWN, 3 ; trainer
object_event 25, 20, SPRITE_SUPER_NERD, WALK, DOWN, 4, OPP_SUPER_NERD, 7 object_event 25, 20, SPRITE_SUPER_NERD, WALK, DOWN, 4 ; trainer
object_event 4, 27, SPRITE_ROCKER, WALK, LEFT, 5 object_event 4, 27, SPRITE_ROCKER, WALK, LEFT, 5
object_event 33, 16, SPRITE_BEAUTY, WALK, DOWN, 6 object_event 33, 16, SPRITE_BEAUTY, WALK, DOWN, 6
object_event 7, 22, SPRITE_SEEL, WALK, RIGHT, 7 object_event 7, 22, SPRITE_SEEL, WALK, RIGHT, 7

View file

@ -1,15 +1,12 @@
CeladonUniversityOutside_Script: CeladonUniversityOutside_Script:
call EnableAutoTextBoxDrawing call EnableAutoTextBoxDrawing
ld hl, CeladonUniversityOutsideTrainerHeaders
ld de, CeladonUniversityOutside_ScriptPointers ld de, CeladonUniversityOutside_ScriptPointers
; ld a, [wCeladonUniversityOutsideCurScript] these caused the trainers to have lines of sight? ld a, [wCeladonUniversityOutsideCurScript]
; call ExecuteCurMapScriptInTable call ExecuteCurMapScriptInTable
; ld [wCeladonUniversityOutsideCurScript], a ld [wCeladonUniversityOutsideCurScript], a
ret ret
CeladonUniversityOutside_ScriptPointers: CeladonUniversityOutside_ScriptPointers:
dw CheckFightingMapTrainers
dw DisplayEnemyTrainerTextAndStartBattle
dw EndTrainerBattle dw EndTrainerBattle
CeladonUniversityOutside_TextPointers: CeladonUniversityOutside_TextPointers:
@ -20,17 +17,6 @@ CeladonUniversityOutside_TextPointers:
dw CeladonUniversityOutsideNPC1 dw CeladonUniversityOutsideNPC1
dw CeladonUniversityOutsideNPC2 dw CeladonUniversityOutsideNPC2
dw CeladonMagikarp dw CeladonMagikarp
CeladonUniversityOutsideTrainerHeaders:
def_trainers 2
CeladonUniversityOutsideTrainerHeader0:
trainer EVENT_BEAT_CELADON_UNIVERSITY_OUTSIDE_TRAINER_0, 3, CeladonUniversityOutsideBattleText1, CeladonUniversityOutsideEndBattleText1, CeladonUniversityOutsideAfterBattleText1
CeladonUniversityOutsideTrainerHeader1:
trainer EVENT_BEAT_CELADON_UNIVERSITY_OUTSIDE_TRAINER_1, 3, CeladonUniversityOutsideBattleText1, CeladonUniversityOutsideEndBattleText1, CeladonUniversityOutsideAfterBattleText1
CeladonUniversityOutsideTrainerHeader2:
trainer EVENT_BEAT_CELADON_UNIVERSITY_OUTSIDE_TRAINER_2, 3, CeladonUniversityOutsideBattleText1, CeladonUniversityOutsideEndBattleText1, CeladonUniversityOutsideAfterBattleText1
CeladonUniversityOutsideTrainerHeader3:
trainer EVENT_BEAT_CELADON_UNIVERSITY_OUTSIDE_TRAINER_3, 3, CeladonUniversityOutsideBattleText1, CeladonUniversityOutsideEndBattleText1, CeladonUniversityOutsideAfterBattleText1
db -1 ; end db -1 ; end
CeladonUniversityOutsideText1: ; Starter girl CeladonUniversityOutsideText1: ; Starter girl
@ -41,15 +27,35 @@ CeladonUniversityOutsideText1: ; Starter girl
ld a, [wCurrentMenuItem] ld a, [wCurrentMenuItem]
and a and a
jr nz, .refused jr nz, .refused
ld hl, CeladonUniversityOutsideTrainerHeader0
call TalkToTrainer ld hl, CeladonUniversityOutsideBattleText1
call PrintText
ld c, BANK(Music_MeetFemaleTrainer)
ld a, MUSIC_MEET_FEMALE_TRAINER
call PlayMusic
ld hl, wd72d
set 6, [hl]
set 7, [hl]
call Delay3
ld a, OPP_JR_TRAINER_F
ld [wCurOpponent], a
ld a, 4
ld [wTrainerNo], a
ld [wIsTrainerBattle], a
ld a, $2
ld [wCeladonUniversityOutsideCurScript], a
ld hl, CeladonUniversityOutsideLoseText1
ld de, CeladonUniversityOutsideWinText
call SaveEndBattleTextPointers
jp TextScriptEnd jp TextScriptEnd
jr .done jr .done
.refused .refused
ld hl, CeladonUniversityRefuse ld hl, CeladonUniversityRefuse
jr .done jr .done
.done .done
ld hl, CeladonUniversityOutsideAfterBattleText1 ld hl, CeladonUniversityOutsideAfterBattleText
call PrintText call PrintText
jp TextScriptEnd jp TextScriptEnd
@ -61,15 +67,35 @@ CeladonUniversityOutsideText2: ; Porygon guy
ld a, [wCurrentMenuItem] ld a, [wCurrentMenuItem]
and a and a
jr nz, .refused jr nz, .refused
ld hl, CeladonUniversityOutsideTrainerHeader0
call TalkToTrainer ld hl, CeladonUniversityOutsideBattleText2
call PrintText
ld c, BANK(Music_MeetMaleTrainer)
ld a, MUSIC_MEET_MALE_TRAINER
call PlayMusic
ld hl, wd72d
set 6, [hl]
set 7, [hl]
call Delay3
ld a, OPP_SUPER_NERD
ld [wCurOpponent], a
ld a, 6
ld [wTrainerNo], a
ld [wIsTrainerBattle], a
ld a, $2
ld [wCeladonUniversityOutsideCurScript], a
ld hl, CeladonUniversityOutsideLoseText2
ld de, CeladonUniversityOutsideWinText
call SaveEndBattleTextPointers
jp TextScriptEnd jp TextScriptEnd
jr .done jr .done
.refused .refused
ld hl, CeladonUniversityRefuse ld hl, CeladonUniversityRefuse
jr .done jr .done
.done .done
ld hl, CeladonUniversityOutsideAfterBattleText1 ld hl, CeladonUniversityOutsideAfterBattleText
call PrintText call PrintText
jp TextScriptEnd jp TextScriptEnd
@ -81,15 +107,35 @@ CeladonUniversityOutsideText3: ; Golem guy
ld a, [wCurrentMenuItem] ld a, [wCurrentMenuItem]
and a and a
jr nz, .refused jr nz, .refused
ld hl, CeladonUniversityOutsideTrainerHeader0
call TalkToTrainer ld hl, CeladonUniversityOutsideBattleText3
call PrintText
ld c, BANK(Music_MeetMaleTrainer)
ld a, MUSIC_MEET_MALE_TRAINER
call PlayMusic
ld hl, wd72d
set 6, [hl]
set 7, [hl]
call Delay3
ld a, OPP_ENGINEER
ld [wCurOpponent], a
ld a, 1
ld [wTrainerNo], a
ld [wIsTrainerBattle], a
ld a, $2
ld [wCeladonUniversityOutsideCurScript], a
ld hl, CeladonUniversityOutsideLoseText3
ld de, CeladonUniversityOutsideWinText
call SaveEndBattleTextPointers
jp TextScriptEnd jp TextScriptEnd
jr .done jr .done
.refused .refused
ld hl, CeladonUniversityRefuse ld hl, CeladonUniversityRefuse
jr .done jr .done
.done .done
ld hl, CeladonUniversityOutsideAfterBattleText1 ld hl, CeladonUniversityOutsideAfterBattleText
call PrintText call PrintText
jp TextScriptEnd jp TextScriptEnd
@ -101,15 +147,35 @@ CeladonUniversityOutsideText4: ; Mt Moon guy
ld a, [wCurrentMenuItem] ld a, [wCurrentMenuItem]
and a and a
jr nz, .refused jr nz, .refused
ld hl, CeladonUniversityOutsideTrainerHeader0
call TalkToTrainer ld hl, CeladonUniversityOutsideBattleText4
call PrintText
ld c, BANK(Music_MeetMaleTrainer)
ld a, MUSIC_MEET_MALE_TRAINER
call PlayMusic
ld hl, wd72d
set 6, [hl]
set 7, [hl]
call Delay3
ld a, OPP_SUPER_NERD
ld [wCurOpponent], a
ld a, 7
ld [wTrainerNo], a
ld [wIsTrainerBattle], a
ld a, $2
ld [wCeladonUniversityOutsideCurScript], a
ld hl, CeladonUniversityOutsideLoseText4
ld de, CeladonUniversityOutsideWinText
call SaveEndBattleTextPointers
jp TextScriptEnd jp TextScriptEnd
jr .done jr .done
.refused .refused
ld hl, CeladonUniversityRefuse ld hl, CeladonUniversityRefuse
jr .done jr .done
.done .done
ld hl, CeladonUniversityOutsideAfterBattleText1 ld hl, CeladonUniversityOutsideAfterBattleText
call PrintText call PrintText
jp TextScriptEnd jp TextScriptEnd
@ -125,12 +191,40 @@ CeladonUniversityOutsideBattleText1:
text_far _CeladonUniversityOutsideBattleText1 text_far _CeladonUniversityOutsideBattleText1
text_end text_end
CeladonUniversityOutsideEndBattleText1: CeladonUniversityOutsideBattleText2:
text_far _CeladonUniversityOutsideEndBattleText1 text_far _CeladonUniversityOutsideBattleText2
text_end text_end
CeladonUniversityOutsideAfterBattleText1: CeladonUniversityOutsideBattleText3:
text_far _CeladonUniversityOutsideAfterBattleText1 text_far _CeladonUniversityOutsideBattleText3
text_end
CeladonUniversityOutsideBattleText4:
text_far _CeladonUniversityOutsideBattleText4
text_end
CeladonUniversityOutsideLoseText1:
text_far _CeladonUniversityOutsideLoseText1
text_end
CeladonUniversityOutsideLoseText2:
text_far _CeladonUniversityOutsideLoseText2
text_end
CeladonUniversityOutsideLoseText3:
text_far _CeladonUniversityOutsideLoseText3
text_end
CeladonUniversityOutsideLoseText4:
text_far _CeladonUniversityOutsideLoseText4
text_end
CeladonUniversityOutsideWinText:
text_far _CeladonUniversityOutsideWinText
text_end
CeladonUniversityOutsideAfterBattleText:
text_far _CeladonUniversityOutsideAfterBattleText
text_end text_end
CeladonUniversityOutsideYesNo1: CeladonUniversityOutsideYesNo1:

View file

@ -63,14 +63,16 @@ Route1OakText:
ld hl, OakBeforeBattleText ld hl, OakBeforeBattleText
call PrintText call PrintText
; call YesNoChoice ; this whole bit doesn't work for some reason call YesNoChoice ; this whole bit doesn't work for some reason
; ld a, [wCurrentMenuItem] ld a, [wCurrentMenuItem]
; and a and a
; ld hl, OakYes jr nz, .refused
; jr nz, .got_text
; ld hl, OakNo
;.got_text
ld hl, OakYes
call PrintText
ld c, BANK(Music_MeetMaleTrainer)
ld a, MUSIC_MEET_MALE_TRAINER
call PlayMusic
ld hl, wd72d ld hl, wd72d
set 6, [hl] set 6, [hl]
set 7, [hl] set 7, [hl]
@ -103,6 +105,10 @@ Route1OakText:
.Eevee .Eevee
ld a, $5 ; If Eevee, Gorochu ld a, $5 ; If Eevee, Gorochu
jr .done jr .done
.refused
ld hl, OakNo
call PrintText
jp TextScriptEnd
.done .done
ld [wTrainerNo], a ld [wTrainerNo], a
ld a, 1 ld a, 1

View file

@ -11,13 +11,51 @@ _CeladonUniversityOutsideBattleText1::
text "Ok! Game on!" text "Ok! Game on!"
done done
_CeladonUniversityOutsideEndBattleText1:: _CeladonUniversityOutsideBattleText2::
text "Ok! Go, PORYGON!"
done
_CeladonUniversityOutsideBattleText3::
text "I'm at the top"
line "of my game!"
cont "Go, GOLEM!"
done
_CeladonUniversityOutsideBattleText4::
text "This time, for"
line "sure!"
done
_CeladonUniversityOutsideLoseText1::
text "Darn!" text "Darn!"
line "You beat me!" line "You beat me!"
prompt prompt
_CeladonUniversityOutsideAfterBattleText1:: _CeladonUniversityOutsideLoseText2::
text "Aww! Maybe next" text "It"
line "needs an"
cont "UP-GRADE."
prompt
_CeladonUniversityOutsideLoseText3::
text "Not"
line "enough..."
prompt
_CeladonUniversityOutsideLoseText4::
text "One"
line "day I'll"
cont "beat you!"
prompt
_CeladonUniversityOutsideWinText::
text "Hmm!"
line "Need to brush"
cont "up?"
prompt
_CeladonUniversityOutsideAfterBattleText::
text "I'll get you next"
line "time!" line "time!"
done done