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