1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
|
CeruleanGym_Script:
ld hl, wCurrentMapScriptFlags
bit BIT_CUR_MAP_LOADED_2, [hl]
res BIT_CUR_MAP_LOADED_2, [hl]
call nz, .LoadNames
call EnableAutoTextBoxDrawing
ld hl, CeruleanGymTrainerHeaders
ld de, CeruleanGym_ScriptPointers
ld a, [wCeruleanGymCurScript]
call ExecuteCurMapScriptInTable
ld [wCeruleanGymCurScript], a
ret
.LoadNames:
ld hl, .CityName
ld de, .LeaderName
jp LoadGymLeaderAndCityName
.CityName:
db "CERULEAN CITY@"
.LeaderName:
db "MISTY@"
CeruleanGymResetScripts:
xor a ; SCRIPT_CERULEANGYM_DEFAULT
ld [wJoyIgnore], a
ld [wCeruleanGymCurScript], a
ld [wCurMapScript], a
ret
CeruleanGym_ScriptPointers:
def_script_pointers
dw_const CheckFightingMapTrainers, SCRIPT_CERULEANGYM_DEFAULT
dw_const DisplayEnemyTrainerTextAndStartBattle, SCRIPT_CERULEANGYM_START_BATTLE
dw_const EndTrainerBattle, SCRIPT_CERULEANGYM_END_BATTLE
dw_const CeruleanGymMistyPostBattleScript, SCRIPT_CERULEANGYM_MISTY_POST_BATTLE
CeruleanGymMistyPostBattleScript:
ld a, [wIsInBattle]
cp $ff
jp z, CeruleanGymResetScripts
ld a, PAD_CTRL_PAD
ld [wJoyIgnore], a
CeruleanGymReceiveTM11:
ld a, TEXT_CERULEANGYM_MISTY_CASCADE_BADGE_INFO
ldh [hTextID], a
call DisplayTextID
SetEvent EVENT_BEAT_MISTY
lb bc, TM_BUBBLEBEAM, 1
call GiveItem
jr nc, .BagFull
ld a, TEXT_CERULEANGYM_MISTY_RECEIVED_TM11
ldh [hTextID], a
call DisplayTextID
SetEvent EVENT_GOT_TM11
jr .gymVictory
.BagFull
ld a, TEXT_CERULEANGYM_MISTY_TM11_NO_ROOM
ldh [hTextID], a
call DisplayTextID
.gymVictory
ld hl, wObtainedBadges
set BIT_CASCADEBADGE, [hl]
ld hl, wBeatGymFlags
set BIT_CASCADEBADGE, [hl]
; deactivate gym trainers
SetEvents EVENT_BEAT_CERULEAN_GYM_TRAINER_0, EVENT_BEAT_CERULEAN_GYM_TRAINER_1
jp CeruleanGymResetScripts
CeruleanGym_TextPointers:
def_text_pointers
dw_const CeruleanGymMistyText, TEXT_CERULEANGYM_MISTY
dw_const CeruleanGymCooltrainerFText, TEXT_CERULEANGYM_COOLTRAINER_F
dw_const CeruleanGymSwimmerText, TEXT_CERULEANGYM_SWIMMER
dw_const CeruleanGymGymGuideText, TEXT_CERULEANGYM_GYM_GUIDE
dw_const CeruleanGymMistyCascadeBadgeInfoText, TEXT_CERULEANGYM_MISTY_CASCADE_BADGE_INFO
dw_const CeruleanGymMistyReceivedTM11Text, TEXT_CERULEANGYM_MISTY_RECEIVED_TM11
dw_const CeruleanGymMistyTM11NoRoomText, TEXT_CERULEANGYM_MISTY_TM11_NO_ROOM
CeruleanGymTrainerHeaders:
def_trainers 2
CeruleanGymTrainerHeader0:
trainer EVENT_BEAT_CERULEAN_GYM_TRAINER_0, 3, CeruleanGymBattleText1, CeruleanGymEndBattleText1, CeruleanGymAfterBattleText1
CeruleanGymTrainerHeader1:
trainer EVENT_BEAT_CERULEAN_GYM_TRAINER_1, 3, CeruleanGymBattleText2, CeruleanGymEndBattleText2, CeruleanGymAfterBattleText2
db -1 ; end
CeruleanGymMistyText:
text_asm
CheckEvent EVENT_BEAT_MISTY
jr z, .beforeBeat
CheckEventReuseA EVENT_GOT_TM11
jr nz, .afterBeat
call z, CeruleanGymReceiveTM11
call DisableWaitingAfterTextDisplay
jr .done
.afterBeat
ld hl, .TM11ExplanationText
call PrintText
jr .done
.beforeBeat
ld hl, .PreBattleText
call PrintText
ld hl, wStatusFlags3
set BIT_TALKED_TO_TRAINER, [hl]
set BIT_PRINT_END_BATTLE_TEXT, [hl]
ld hl, CeruleanGymMistyReceivedCascadeBadgeText
ld de, CeruleanGymMistyReceivedCascadeBadgeText
call SaveEndBattleTextPointers
ldh a, [hSpriteIndex]
ld [wSpriteIndex], a
call EngageMapTrainer
call InitBattleEnemyParameters
ld a, $2
ld [wGymLeaderNo], a
xor a
ldh [hJoyHeld], a
ld a, SCRIPT_CERULEANGYM_MISTY_POST_BATTLE
ld [wCeruleanGymCurScript], a
.done
jp TextScriptEnd
.PreBattleText:
text_far _CeruleanGymMistyPreBattleText
text_end
.TM11ExplanationText:
text_far _CeruleanGymMistyTM11ExplanationText
text_end
CeruleanGymMistyCascadeBadgeInfoText:
text_far _CeruleanGymMistyCascadeBadgeInfoText
text_end
CeruleanGymMistyReceivedTM11Text:
text_far _CeruleanGymMistyReceivedTM11Text
sound_get_item_1
text_end
CeruleanGymMistyTM11NoRoomText:
text_far _CeruleanGymMistyTM11NoRoomText
text_end
CeruleanGymMistyReceivedCascadeBadgeText:
text_far _CeruleanGymMistyReceivedCascadeBadgeText
text_end
CeruleanGymCooltrainerFText:
text_asm
ld hl, CeruleanGymTrainerHeader0
call TalkToTrainer
jp TextScriptEnd
CeruleanGymBattleText1:
text_far _CeruleanGymBattleText1
text_end
CeruleanGymEndBattleText1:
text_far _CeruleanGymEndBattleText1
text_end
CeruleanGymAfterBattleText1:
text_far _CeruleanGymAfterBattleText1
text_end
CeruleanGymSwimmerText:
text_asm
ld hl, CeruleanGymTrainerHeader1
call TalkToTrainer
jp TextScriptEnd
CeruleanGymBattleText2:
text_far _CeruleanGymBattleText2
text_end
CeruleanGymEndBattleText2:
text_far _CeruleanGymEndBattleText2
text_end
CeruleanGymAfterBattleText2:
text_far _CeruleanGymAfterBattleText2
text_end
CeruleanGymGymGuideText:
text_asm
CheckEvent EVENT_BEAT_MISTY
jr nz, .afterBeat
ld hl, .ChampInMakingText
call PrintText
jr .done
.afterBeat
ld hl, .BeatMistyText
call PrintText
.done
jp TextScriptEnd
.ChampInMakingText:
text_far _CeruleanGymGymGuideChampInMakingText
text_end
.BeatMistyText:
text_far _CeruleanGymGymGuideBeatMistyText
text_end
|