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_object_events
object_event 19, 30, SPRITE_COOLTRAINER_F, WALK, RIGHT, 1, OPP_JR_TRAINER_F, 4
object_event 22, 26, SPRITE_SUPER_NERD, WALK, LEFT, 2, OPP_SUPER_NERD, 6
object_event 9, 6, SPRITE_GAMBLER, WALK, DOWN, 3, OPP_ENGINEER, 1
object_event 25, 20, SPRITE_SUPER_NERD, WALK, DOWN, 4, OPP_SUPER_NERD, 7
object_event 19, 30, SPRITE_COOLTRAINER_F, WALK, RIGHT, 1 ; trainer
object_event 22, 26, SPRITE_SUPER_NERD, WALK, LEFT, 2 ; trainer
object_event 9, 6, SPRITE_GAMBLER, WALK, DOWN, 3 ; trainer
object_event 25, 20, SPRITE_SUPER_NERD, WALK, DOWN, 4 ; trainer
object_event 4, 27, SPRITE_ROCKER, WALK, LEFT, 5
object_event 33, 16, SPRITE_BEAUTY, WALK, DOWN, 6
object_event 7, 22, SPRITE_SEEL, WALK, RIGHT, 7

View file

@ -1,15 +1,12 @@
CeladonUniversityOutside_Script:
call EnableAutoTextBoxDrawing
ld hl, CeladonUniversityOutsideTrainerHeaders
ld de, CeladonUniversityOutside_ScriptPointers
; ld a, [wCeladonUniversityOutsideCurScript] these caused the trainers to have lines of sight?
; call ExecuteCurMapScriptInTable
; ld [wCeladonUniversityOutsideCurScript], a
ld a, [wCeladonUniversityOutsideCurScript]
call ExecuteCurMapScriptInTable
ld [wCeladonUniversityOutsideCurScript], a
ret
CeladonUniversityOutside_ScriptPointers:
dw CheckFightingMapTrainers
dw DisplayEnemyTrainerTextAndStartBattle
dw EndTrainerBattle
CeladonUniversityOutside_TextPointers:
@ -20,17 +17,6 @@ CeladonUniversityOutside_TextPointers:
dw CeladonUniversityOutsideNPC1
dw CeladonUniversityOutsideNPC2
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
CeladonUniversityOutsideText1: ; Starter girl
@ -41,15 +27,35 @@ CeladonUniversityOutsideText1: ; Starter girl
ld a, [wCurrentMenuItem]
and a
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
jr .done
.refused
ld hl, CeladonUniversityRefuse
jr .done
.done
ld hl, CeladonUniversityOutsideAfterBattleText1
ld hl, CeladonUniversityOutsideAfterBattleText
call PrintText
jp TextScriptEnd
@ -61,15 +67,35 @@ CeladonUniversityOutsideText2: ; Porygon guy
ld a, [wCurrentMenuItem]
and a
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
jr .done
.refused
ld hl, CeladonUniversityRefuse
jr .done
.done
ld hl, CeladonUniversityOutsideAfterBattleText1
ld hl, CeladonUniversityOutsideAfterBattleText
call PrintText
jp TextScriptEnd
@ -81,15 +107,35 @@ CeladonUniversityOutsideText3: ; Golem guy
ld a, [wCurrentMenuItem]
and a
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
jr .done
.refused
ld hl, CeladonUniversityRefuse
jr .done
.done
ld hl, CeladonUniversityOutsideAfterBattleText1
ld hl, CeladonUniversityOutsideAfterBattleText
call PrintText
jp TextScriptEnd
@ -101,15 +147,35 @@ CeladonUniversityOutsideText4: ; Mt Moon guy
ld a, [wCurrentMenuItem]
and a
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
jr .done
.refused
ld hl, CeladonUniversityRefuse
jr .done
.done
ld hl, CeladonUniversityOutsideAfterBattleText1
ld hl, CeladonUniversityOutsideAfterBattleText
call PrintText
jp TextScriptEnd
@ -125,12 +191,40 @@ CeladonUniversityOutsideBattleText1:
text_far _CeladonUniversityOutsideBattleText1
text_end
CeladonUniversityOutsideEndBattleText1:
text_far _CeladonUniversityOutsideEndBattleText1
CeladonUniversityOutsideBattleText2:
text_far _CeladonUniversityOutsideBattleText2
text_end
CeladonUniversityOutsideAfterBattleText1:
text_far _CeladonUniversityOutsideAfterBattleText1
CeladonUniversityOutsideBattleText3:
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
CeladonUniversityOutsideYesNo1:

View file

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

View file

@ -11,13 +11,51 @@ _CeladonUniversityOutsideBattleText1::
text "Ok! Game on!"
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!"
line "You beat me!"
prompt
_CeladonUniversityOutsideAfterBattleText1::
text "Aww! Maybe next"
_CeladonUniversityOutsideLoseText2::
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!"
done