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
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
|
FightingDojo_Script:
call EnableAutoTextBoxDrawing
ld hl, FightingDojoTrainerHeaders
ld de, FightingDojo_ScriptPointers
ld a, [wFightingDojoCurScript]
call ExecuteCurMapScriptInTable
ld [wFightingDojoCurScript], a
ret
FightingDojoResetScripts:
xor a ; SCRIPT_FIGHTINGDOJO_DEFAULT
ld [wJoyIgnore], a
ld [wFightingDojoCurScript], a
ld [wCurMapScript], a
ret
FightingDojo_ScriptPointers:
def_script_pointers
dw_const FightingDojoDefaultScript, SCRIPT_FIGHTINGDOJO_DEFAULT
dw_const DisplayEnemyTrainerTextAndStartBattle, SCRIPT_FIGHTINGDOJO_START_BATTLE
dw_const EndTrainerBattle, SCRIPT_FIGHTINGDOJO_END_BATTLE
dw_const FightingDojoKarateMasterPostBattleScript, SCRIPT_FIGHTINGDOJO_KARATE_MASTER_POST_BATTLE
FightingDojoDefaultScript:
CheckEvent EVENT_DEFEATED_FIGHTING_DOJO
ret nz
call CheckFightingMapTrainers
ld a, [wTrainerHeaderFlagBit]
and a
ret nz
CheckEvent EVENT_BEAT_KARATE_MASTER
ret nz
xor a
ldh [hJoyHeld], a
ld [wSavedCoordIndex], a
ld a, [wYCoord]
cp 3
ret nz
ld a, [wXCoord]
cp 4
ret nz
ld a, 1
ld [wSavedCoordIndex], a
ld a, PLAYER_DIR_RIGHT
ld [wPlayerMovingDirection], a
ld a, FIGHTINGDOJO_KARATE_MASTER
ldh [hSpriteIndex], a
ld a, SPRITE_FACING_LEFT
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
ld a, TEXT_FIGHTINGDOJO_KARATE_MASTER
ldh [hTextID], a
call DisplayTextID
ret
FightingDojoKarateMasterPostBattleScript:
ld a, [wIsInBattle]
cp $ff
jp z, FightingDojoResetScripts
ld a, [wSavedCoordIndex]
and a ; nz if the player was at (4, 3), left of the Karate Master
jr z, .already_facing
ld a, PLAYER_DIR_RIGHT
ld [wPlayerMovingDirection], a
ld a, FIGHTINGDOJO_KARATE_MASTER
ldh [hSpriteIndex], a
ld a, SPRITE_FACING_LEFT
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
.already_facing
ld a, PAD_CTRL_PAD
ld [wJoyIgnore], a
SetEventRange EVENT_BEAT_KARATE_MASTER, EVENT_BEAT_FIGHTING_DOJO_TRAINER_3
ld a, TEXT_FIGHTINGDOJO_KARATE_MASTER_I_WILL_GIVE_YOU_A_POKEMON
ldh [hTextID], a
call DisplayTextID
xor a ; SCRIPT_FIGHTINGDOJO_DEFAULT
ld [wJoyIgnore], a
ld [wFightingDojoCurScript], a
ld [wCurMapScript], a
ret
FightingDojo_TextPointers:
def_text_pointers
dw_const FightingDojoKarateMasterText, TEXT_FIGHTINGDOJO_KARATE_MASTER
dw_const FightingDojoBlackbelt1Text, TEXT_FIGHTINGDOJO_BLACKBELT1
dw_const FightingDojoBlackbelt2Text, TEXT_FIGHTINGDOJO_BLACKBELT2
dw_const FightingDojoBlackbelt3Text, TEXT_FIGHTINGDOJO_BLACKBELT3
dw_const FightingDojoBlackbelt4Text, TEXT_FIGHTINGDOJO_BLACKBELT4
dw_const FightingDojoHitmonleePokeBallText, TEXT_FIGHTINGDOJO_HITMONLEE_POKE_BALL
dw_const FightingDojoHitmonchanPokeBallText, TEXT_FIGHTINGDOJO_HITMONCHAN_POKE_BALL
dw_const FightingDojoKarateMasterText.IWillGiveYouAPokemonText, TEXT_FIGHTINGDOJO_KARATE_MASTER_I_WILL_GIVE_YOU_A_POKEMON
FightingDojoTrainerHeaders:
def_trainers 2
FightingDojoTrainerHeader0:
trainer EVENT_BEAT_FIGHTING_DOJO_TRAINER_0, 4, FightingDojoBlackbelt1BattleText, FightingDojoBlackbelt1EndBattleText, FightingDojoBlackbelt1AfterBattleText
FightingDojoTrainerHeader1:
trainer EVENT_BEAT_FIGHTING_DOJO_TRAINER_1, 4, FightingDojoBlackbelt2BattleText, FightingDojoBlackbelt2EndBattleText, FightingDojoBlackbelt2AfterBattleText
FightingDojoTrainerHeader2:
trainer EVENT_BEAT_FIGHTING_DOJO_TRAINER_2, 3, FightingDojoBlackbelt3BattleText, FightingDojoBlackbelt3EndBattleText, FightingDojoBlackbelt3AfterBattleText
FightingDojoTrainerHeader3:
trainer EVENT_BEAT_FIGHTING_DOJO_TRAINER_3, 3, FightingDojoBlackbelt4BattleText, FightingDojoBlackbelt4EndBattleText, FightingDojoBlackbelt4AfterBattleText
db -1 ; end
FightingDojoKarateMasterText:
text_asm
CheckEvent EVENT_DEFEATED_FIGHTING_DOJO
jp nz, .defeated_dojo
CheckEventReuseA EVENT_BEAT_KARATE_MASTER
jp nz, .defeated_master
ld hl, .Text
call PrintText
ld hl, wStatusFlags3
set BIT_TALKED_TO_TRAINER, [hl]
set BIT_PRINT_END_BATTLE_TEXT, [hl]
ld hl, .DefeatedText
ld de, .DefeatedText
call SaveEndBattleTextPointers
ldh a, [hSpriteIndex]
ld [wSpriteIndex], a
call EngageMapTrainer
call InitBattleEnemyParameters
ld a, SCRIPT_FIGHTINGDOJO_KARATE_MASTER_POST_BATTLE
ld [wFightingDojoCurScript], a
ld [wCurMapScript], a
jr .end
.defeated_dojo
ld hl, .StayAndTrainWithUsText
call PrintText
jr .end
.defeated_master
ld hl, .IWillGiveYouAPokemonText
call PrintText
.end
jp TextScriptEnd
.Text:
text_far _FightingDojoKarateMasterText
text_end
.DefeatedText:
text_far _FightingDojoKarateMasterDefeatedText
text_end
.IWillGiveYouAPokemonText:
text_far _FightingDojoKarateMasterIWillGiveYouAPokemonText
text_end
.StayAndTrainWithUsText:
text_far _FightingDojoKarateMasterStayAndTrainWithUsText
text_end
FightingDojoBlackbelt1Text:
text_asm
ld hl, FightingDojoTrainerHeader0
call TalkToTrainer
jp TextScriptEnd
FightingDojoBlackbelt1BattleText:
text_far _FightingDojoBlackbelt1BattleText
text_end
FightingDojoBlackbelt1EndBattleText:
text_far _FightingDojoBlackbelt1EndBattleText
text_end
FightingDojoBlackbelt1AfterBattleText:
text_far _FightingDojoBlackbelt1AfterBattleText
text_end
FightingDojoBlackbelt2Text:
text_asm
ld hl, FightingDojoTrainerHeader1
call TalkToTrainer
jp TextScriptEnd
FightingDojoBlackbelt2BattleText:
text_far _FightingDojoBlackbelt2BattleText
text_end
FightingDojoBlackbelt2EndBattleText:
text_far _FightingDojoBlackbelt2EndBattleText
text_end
FightingDojoBlackbelt2AfterBattleText:
text_far _FightingDojoBlackbelt2AfterBattleText
text_end
FightingDojoBlackbelt3Text:
text_asm
ld hl, FightingDojoTrainerHeader2
call TalkToTrainer
jp TextScriptEnd
FightingDojoBlackbelt3BattleText:
text_far _FightingDojoBlackbelt3BattleText
text_end
FightingDojoBlackbelt3EndBattleText:
text_far _FightingDojoBlackbelt3EndBattleText
text_end
FightingDojoBlackbelt3AfterBattleText:
text_far _FightingDojoBlackbelt3AfterBattleText
text_end
FightingDojoBlackbelt4Text:
text_asm
ld hl, FightingDojoTrainerHeader3
call TalkToTrainer
jp TextScriptEnd
FightingDojoBlackbelt4BattleText:
text_far _FightingDojoBlackbelt4BattleText
text_end
FightingDojoBlackbelt4EndBattleText:
text_far _FightingDojoBlackbelt4EndBattleText
text_end
FightingDojoBlackbelt4AfterBattleText:
text_far _FightingDojoBlackbelt4AfterBattleText
text_end
FightingDojoHitmonleePokeBallText:
text_asm
CheckEitherEventSet EVENT_GOT_HITMONLEE, EVENT_GOT_HITMONCHAN
jr z, .GetMon
ld hl, FightingDojoBetterNotGetGreedyText
call PrintText
jr .done
.GetMon
ld a, HITMONLEE
call DisplayPokedex
ld hl, .Text
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
and a
jr nz, .done
ld a, [wCurPartySpecies]
ld b, a
ld c, 30
call GivePokemon
jr nc, .done
; once Poké Ball is taken, hide sprite
ld a, HS_FIGHTING_DOJO_GIFT_1
ld [wMissableObjectIndex], a
predef HideObject
SetEvents EVENT_GOT_HITMONLEE, EVENT_DEFEATED_FIGHTING_DOJO
.done
jp TextScriptEnd
.Text:
text_far _FightingDojoHitmonleePokeBallText
text_end
FightingDojoHitmonchanPokeBallText:
text_asm
CheckEitherEventSet EVENT_GOT_HITMONLEE, EVENT_GOT_HITMONCHAN
jr z, .GetMon
ld hl, FightingDojoBetterNotGetGreedyText
call PrintText
jr .done
.GetMon
ld a, HITMONCHAN
call DisplayPokedex
ld hl, .Text
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
and a
jr nz, .done
ld a, [wCurPartySpecies]
ld b, a
ld c, 30
call GivePokemon
jr nc, .done
SetEvents EVENT_GOT_HITMONCHAN, EVENT_DEFEATED_FIGHTING_DOJO
; once Poké Ball is taken, hide sprite
ld a, HS_FIGHTING_DOJO_GIFT_2
ld [wMissableObjectIndex], a
predef HideObject
.done
jp TextScriptEnd
.Text:
text_far _FightingDojoHitmonchanPokeBallText
text_end
FightingDojoBetterNotGetGreedyText:
text_far _FightingDojoBetterNotGetGreedyText
text_end
|