This repository has been archived by the owner on Aug 26, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
fightingdojo.asm
323 lines (284 loc) · 6.71 KB
/
fightingdojo.asm
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
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
FightingDojoScript:
call EnableAutoTextBoxDrawing
ld hl, FightingDojoTrainerHeader0
ld de, FightingDojoScriptPointers
ld a, [wFightingDojoCurScript]
call ExecuteCurMapScriptInTable
ld [wFightingDojoCurScript], a
ret
FightingDojoScript_5cd70:
xor a
ld [wJoyIgnore], a
ld [wFightingDojoCurScript], a
ld [wCurMapScript], a
ret
FightingDojoScriptPointers:
dw FightingDojoScript1
dw DisplayEnemyTrainerTextAndStartBattle
dw EndTrainerBattle
dw FightingDojoScript3
FightingDojoScript1:
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
ld [hJoyHeld], a
ld [wcf0d], a
ld a, [wYCoord]
cp $3
ret nz
ld a, [wXCoord]
cp $4
ret nz
ld a, $1
ld [wcf0d], a
ld a, PLAYER_DIR_RIGHT
ld [wPlayerMovingDirection], a
ld a, $1
ld [H_SPRITEINDEX], a
ld a, SPRITE_FACING_LEFT
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
ld a, $1
ld [hSpriteIndexOrTextID], a
call DisplayTextID
ret
FightingDojoScript3:
ld a, [wIsInBattle]
cp $ff
jp z, FightingDojoScript_5cd70
ld a, [wcf0d]
and a
jr z, .asm_5cde4
ld a, PLAYER_DIR_RIGHT
ld [wPlayerMovingDirection], a
ld a, $1
ld [H_SPRITEINDEX], a
ld a, SPRITE_FACING_LEFT
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
.asm_5cde4
ld a, $f0
ld [wJoyIgnore], a
SetEventRange EVENT_BEAT_KARATE_MASTER, EVENT_BEAT_FIGHTING_DOJO_TRAINER_3
ld a, $8
ld [hSpriteIndexOrTextID], a
call DisplayTextID
xor a
ld [wJoyIgnore], a
ld [wFightingDojoCurScript], a
ld [wCurMapScript], a
ret
FightingDojoTextPointers:
dw FightingDojoText1
dw FightingDojoText2
dw FightingDojoText3
dw FightingDojoText4
dw FightingDojoText5
dw FightingDojoText6
dw FightingDojoText7
dw FightingDojoText8
FightingDojoTrainerHeader0:
dbEventFlagBit EVENT_BEAT_FIGHTING_DOJO_TRAINER_0
db ($4 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_FIGHTING_DOJO_TRAINER_0
dw FightingDojoBattleText1 ; TextBeforeBattle
dw FightingDojoAfterBattleText1 ; TextAfterBattle
dw FightingDojoEndBattleText1 ; TextEndBattle
dw FightingDojoEndBattleText1 ; TextEndBattle
FightingDojoTrainerHeader1:
dbEventFlagBit EVENT_BEAT_FIGHTING_DOJO_TRAINER_1
db ($4 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_FIGHTING_DOJO_TRAINER_1
dw FightingDojoBattleText2 ; TextBeforeBattle
dw FightingDojoAfterBattleText2 ; TextAfterBattle
dw FightingDojoEndBattleText2 ; TextEndBattle
dw FightingDojoEndBattleText2 ; TextEndBattle
FightingDojoTrainerHeader2:
dbEventFlagBit EVENT_BEAT_FIGHTING_DOJO_TRAINER_2
db ($3 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_FIGHTING_DOJO_TRAINER_2
dw FightingDojoBattleText3 ; TextBeforeBattle
dw FightingDojoAfterBattleText3 ; TextAfterBattle
dw FightingDojoEndBattleText3 ; TextEndBattle
dw FightingDojoEndBattleText3 ; TextEndBattle
FightingDojoTrainerHeader3:
dbEventFlagBit EVENT_BEAT_FIGHTING_DOJO_TRAINER_3
db ($3 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_FIGHTING_DOJO_TRAINER_3
dw FightingDojoBattleText4 ; TextBeforeBattle
dw FightingDojoAfterBattleText4 ; TextAfterBattle
dw FightingDojoEndBattleText4 ; TextEndBattle
dw FightingDojoEndBattleText4 ; TextEndBattle
db $ff
FightingDojoText1:
TX_ASM
CheckEvent EVENT_DEFEATED_FIGHTING_DOJO
jp nz, .continue1
CheckEventReuseA EVENT_BEAT_KARATE_MASTER
jp nz, .continue2
ld hl, FightingDojoText_5ce8e
call PrintText
ld hl, wd72d
set 6, [hl]
set 7, [hl]
ld hl, FightingDojoText_5ce93
ld de, FightingDojoText_5ce93
call SaveEndBattleTextPointers
ld a, [hSpriteIndexOrTextID]
ld [wSpriteIndex], a
call EngageMapTrainer
call InitBattleEnemyParameters
ld a, $3
ld [wFightingDojoCurScript], a
ld [wCurMapScript], a
jr .asm_9dba4
.continue1
ld hl, FightingDojoText_5ce9d
call PrintText
jr .asm_9dba4
.continue2
ld hl, FightingDojoText8
call PrintText
.asm_9dba4
jp TextScriptEnd
FightingDojoText_5ce8e:
TX_FAR _FightingDojoText_5ce8e
db "@"
FightingDojoText_5ce93:
TX_FAR _FightingDojoText_5ce93
db "@"
FightingDojoText8:
TX_FAR _FightingDojoText_5ce98
db "@"
FightingDojoText_5ce9d:
TX_FAR _FightingDojoText_5ce9d
db "@"
FightingDojoText2:
TX_ASM
ld hl, FightingDojoTrainerHeader0
call TalkToTrainer
jp TextScriptEnd
FightingDojoBattleText1:
TX_FAR _FightingDojoBattleText1
db "@"
FightingDojoEndBattleText1:
TX_FAR _FightingDojoEndBattleText1
db "@"
FightingDojoAfterBattleText1:
TX_FAR _FightingDojoAfterBattleText1
db "@"
FightingDojoText3:
TX_ASM
ld hl, FightingDojoTrainerHeader1
call TalkToTrainer
jp TextScriptEnd
FightingDojoBattleText2:
TX_FAR _FightingDojoBattleText2
db "@"
FightingDojoEndBattleText2:
TX_FAR _FightingDojoEndBattleText2
db "@"
FightingDojoAfterBattleText2:
TX_FAR _FightingDojoAfterBattleText2
db "@"
FightingDojoText4:
TX_ASM
ld hl, FightingDojoTrainerHeader2
call TalkToTrainer
jp TextScriptEnd
FightingDojoBattleText3:
TX_FAR _FightingDojoBattleText3
db "@"
FightingDojoEndBattleText3:
TX_FAR _FightingDojoEndBattleText3
db "@"
FightingDojoAfterBattleText3:
TX_FAR _FightingDojoAfterBattleText3
db "@"
FightingDojoText5:
TX_ASM
ld hl, FightingDojoTrainerHeader3
call TalkToTrainer
jp TextScriptEnd
FightingDojoBattleText4:
TX_FAR _FightingDojoBattleText4
db "@"
FightingDojoEndBattleText4:
TX_FAR _FightingDojoEndBattleText4
db "@"
FightingDojoAfterBattleText4:
TX_FAR _FightingDojoAfterBattleText4
db "@"
FightingDojoText6:
; Hitmonlee Poké Ball
TX_ASM
CheckEitherEventSet EVENT_GOT_HITMONLEE, EVENT_GOT_HITMONCHAN
jr z, .GetMon
ld hl, OtherHitmonText
call PrintText
jr .done
.GetMon
ld a, HITMONLEE
call DisplayPokedex
ld hl, WantHitmonleeText
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
and a
jr nz, .done
ld a, [wcf91]
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
WantHitmonleeText:
TX_FAR _WantHitmonleeText
db "@"
FightingDojoText7:
; Hitmonchan Poké Ball
TX_ASM
CheckEitherEventSet EVENT_GOT_HITMONLEE, EVENT_GOT_HITMONCHAN
jr z, .GetMon
ld hl, OtherHitmonText
call PrintText
jr .done
.GetMon
ld a, HITMONCHAN
call DisplayPokedex
ld hl, WantHitmonchanText
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
and a
jr nz, .done
ld a, [wcf91]
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
WantHitmonchanText:
TX_FAR _WantHitmonchanText
db "@"
OtherHitmonText:
TX_FAR _OtherHitmonText
db "@"