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
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
|
ChallengeHallAfterDuel:
ld c, 0
ld a, [wDuelResult]
or a ; cp DUEL_WIN
jr z, .won
ld c, 2
.won
ld b, 0
ld hl, ChallengeHallAfterDuelTable
add hl, bc
ld c, [hl]
inc hl
ld b, [hl]
ld a, NPC_HOST
ld [wTempNPC], a
jp SetNextNPCAndScript
ChallengeHallAfterDuelTable:
dw Script_WonAtChallengeHall
dw Script_LostAtChallengeHall
ChallengeHallLoadMap:
get_event_value EVENT_CHALLENGE_CUP_IN_MENU
or a
ret z
ld a, NPC_HOST
ld [wTempNPC], a
call FindLoadedNPC
ld bc, Script_f433
jp SetNextNPCAndScript
Script_Clerk13:
start_script
print_text_quit_fully Text0525
Preload_Guide:
get_event_value EVENT_CHALLENGE_CUP_STARTING
or a
jr z, .asm_f281
ld a, $1c
ld [wLoadNPCXPos], a
ld a, $02
ld [wLoadNPCYPos], a
.asm_f281
scf
ret
Script_Guide:
start_script
jump_if_event_false EVENT_CHALLENGE_CUP_STARTING, .ows_f28b
print_text_quit_fully Text0526
.ows_f28b
jump_if_event_zero EVENT_CHALLENGE_CUP_1_STATE, .ows_f292
print_text_quit_fully Text0527
.ows_f292
print_text_quit_fully Text0528
Script_Clerk12:
start_script
jump_if_event_equal EVENT_CHALLENGE_CUP_3_STATE, CHALLENGE_CUP_LOST, .ows_f2c4
jump_if_event_equal EVENT_CHALLENGE_CUP_3_STATE, CHALLENGE_CUP_WON, .ows_f2c1
jump_if_event_equal EVENT_CHALLENGE_CUP_2_STATE, CHALLENGE_CUP_LOST, .ows_f2c4
jump_if_event_equal EVENT_CHALLENGE_CUP_2_STATE, CHALLENGE_CUP_WON, .ows_f2c1
jump_if_event_equal EVENT_CHALLENGE_CUP_1_STATE, CHALLENGE_CUP_LOST, .ows_f2c4
jump_if_event_equal EVENT_CHALLENGE_CUP_1_STATE, CHALLENGE_CUP_WON, .ows_f2c1
jump_if_event_equal EVENT_CHALLENGE_CUP_NUMBER, 2, .ows_f2cd
jump_if_event_equal EVENT_CHALLENGE_CUP_NUMBER, 3, .ows_f2d3
script_jump .ows_f2c7
.ows_f2c1
print_text_quit_fully Text0529
.ows_f2c4
print_text_quit_fully Text052a
.ows_f2c7
print_npc_text Text052b
script_jump .ows_f2d6
.ows_f2cd
print_npc_text Text052c
script_jump .ows_f2d6
.ows_f2d3
print_npc_text Text052d
.ows_f2d6
print_npc_text Text052e
ask_question_jump Text052f, .ows_f2e1
print_text_quit_fully Text0530
.ows_f2e1
max_out_event_value EVENT_PLAYER_ENTERED_CHALLENGE_CUP
print_npc_text Text0531
close_text_box
move_active_npc NPCMovement_f349
jump_if_player_coords_match 8, 18, .ows_f2fa
jump_if_player_coords_match 12, 18, .ows_f302
move_player NORTH, 2
script_jump .ows_f307
.ows_f2fa
set_player_direction EAST
move_player EAST, 2
script_jump .ows_f307
.ows_f302
set_player_direction WEST
move_player WEST, 2
.ows_f307
set_player_direction NORTH
move_player NORTH, 1
move_player NORTH, 1
move_player NORTH, 1
move_player NORTH, 1
move_player NORTH, 1
jump_if_event_true EVENT_CHALLENGE_CUP_STAGE_VISITED, .ows_f33a
max_out_event_value EVENT_CHALLENGE_CUP_STAGE_VISITED
move_player NORTH, 1
move_player NORTH, 1
set_player_direction EAST
do_frames 30
set_player_direction SOUTH
do_frames 20
set_player_direction EAST
do_frames 20
set_player_direction SOUTH
do_frames 30
move_player SOUTH, 1
move_player SOUTH, 1
.ows_f33a
set_player_direction EAST
move_player EAST, 1
move_active_npc NPCMovement_f34e
close_advanced_text_box
set_next_npc_and_script NPC_HOST, Script_f353
end_script
ret
NPCMovement_f349:
db NORTH
db NORTH
db EAST
NPCMovement_f34c:
db WEST | NO_MOVE
db $ff
NPCMovement_f34e:
db WEST
db SOUTH
db SOUTH
db $ff
Script_Host:
ret
Script_f353:
start_script
do_frames 20
move_active_npc NPCMovement_f37d
do_frames 20
move_active_npc NPCMovement_f390
load_challenge_hall_npc_into_txram_slot 0
print_npc_text Text0532
close_text_box
move_active_npc NPCMovement_f37f
print_npc_text Text0533
close_text_box
move_active_npc NPCMovement_f388
print_npc_text Text0534
close_text_box
move_active_npc NPCMovement_f38e
print_npc_text Text0535
start_challenge_hall_duel PRIZES_4, SAMS_PRACTICE_DECK_ID, MUSIC_STOP
quit_script_fully
NPCMovement_f37d:
db EAST | NO_MOVE
db $ff
NPCMovement_f37f:
db EAST
db EAST
db SOUTH
db $ff
NPCMovement_f383:
db NORTH
db WEST
db WEST
db SOUTH | NO_MOVE
db $ff
NPCMovement_f388:
db NORTH
db WEST
db WEST
NPCMovement_f38b:
db WEST
db SOUTH
db $ff
NPCMovement_f38e:
db NORTH
db EAST
NPCMovement_f390:
db SOUTH | NO_MOVE
db $ff
Script_LostAtChallengeHall:
start_script
do_frames 20
move_active_npc NPCMovement_f37d
do_frames 20
move_active_npc NPCMovement_f390
jump_if_event_equal EVENT_CHALLENGE_CUP_OPPONENT_NUMBER, 2, Script_f410
jump_if_event_equal EVENT_CHALLENGE_CUP_OPPONENT_NUMBER, 3, Script_f410.ows_f41a
load_challenge_hall_npc_into_txram_slot 0
load_challenge_hall_npc_into_txram_slot 1
print_npc_text Text0536
.ows_f3ae
close_text_box
move_active_npc NPCMovement_f38b
print_npc_text Text0537
close_text_box
move_active_npc NPCMovement_f38e
jump_if_event_equal EVENT_CHALLENGE_CUP_NUMBER, 2, .ows_f3ce
jump_if_event_equal EVENT_CHALLENGE_CUP_NUMBER, 3, .ows_f3d9
set_event EVENT_CHALLENGE_CUP_1_STATE, CHALLENGE_CUP_LOST
set_event EVENT_CHALLENGE_CUP_1_RESULT, CHALLENGE_CUP_LOST
zero_out_event_value EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_2
script_jump .ows_f3e2
.ows_f3ce
set_event EVENT_CHALLENGE_CUP_2_STATE, CHALLENGE_CUP_LOST
set_event EVENT_CHALLENGE_CUP_2_RESULT, CHALLENGE_CUP_LOST
zero_out_event_value EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_6
script_jump .ows_f3e2
.ows_f3d9
set_event EVENT_CHALLENGE_CUP_3_STATE, CHALLENGE_CUP_LOST
set_event EVENT_CHALLENGE_CUP_3_RESULT, CHALLENGE_CUP_LOST
script_jump .ows_f3e2
.ows_f3e2
close_advanced_text_box
set_next_npc_and_script NPC_CLERK12, Script_f3e9
end_script
ret
Script_f3e9:
start_script
move_active_npc NPCMovement_f40a
set_player_direction WEST
move_player WEST, 1
set_player_direction SOUTH
move_player SOUTH, 1
move_player SOUTH, 1
move_player SOUTH, 1
move_player SOUTH, 1
move_player SOUTH, 1
move_player SOUTH, 1
move_active_npc NPCMovement_f40d
quit_script_fully
NPCMovement_f40a:
db WEST
db EAST | NO_MOVE
db $ff
NPCMovement_f40d:
db EAST
db SOUTH | NO_MOVE
db $ff
Script_f410:
load_challenge_hall_npc_into_txram_slot 0
load_challenge_hall_npc_into_txram_slot 1
print_npc_text Text0538
script_jump Script_LostAtChallengeHall.ows_f3ae
.ows_f41a
print_npc_text Text0539
set_dialog_npc NPC_RONALD1
jump_if_event_equal EVENT_CHALLENGE_CUP_NUMBER, 3, .ows_f42e
test_if_event_equal EVENT_CHALLENGE_CUP_NUMBER, 1
print_variable_npc_text Text053a, Text053b
.ows_f42e
set_dialog_npc NPC_HOST
script_jump Script_LostAtChallengeHall.ows_f3ae
Script_f433:
start_script
do_frames 20
move_active_npc NPCMovement_f37d
do_frames 20
move_active_npc NPCMovement_f390
script_jump Script_WonAtChallengeHall.ows_f4a4
Script_WonAtChallengeHall:
start_script
do_frames 20
move_active_npc NPCMovement_f37d
do_frames 20
move_active_npc NPCMovement_f390
jump_if_event_equal EVENT_CHALLENGE_CUP_OPPONENT_NUMBER, 3, Script_f4db
jump_if_event_equal EVENT_CHALLENGE_CUP_OPPONENT_NUMBER, 2, .ows_f456
.ows_f456
test_if_event_equal EVENT_CHALLENGE_CUP_OPPONENT_NUMBER, 1
print_variable_npc_text Text053c, Text053d
move_active_npc NPCMovement_f37f
load_challenge_hall_npc_into_txram_slot 0
print_npc_text Text053e
close_text_box
move_challenge_hall_npc NPCMovement_f4c8
unload_challenge_hall_npc
print_npc_text Text053f
close_text_box
pick_challenge_hall_opponent
set_challenge_hall_npc_coords 20, 20
move_challenge_hall_npc NPCMovement_f4d0
load_challenge_hall_npc_into_txram_slot 0
test_if_event_equal EVENT_CHALLENGE_CUP_OPPONENT_NUMBER, 2
print_variable_npc_text Text0540, Text0541
move_active_npc NPCMovement_f383
jump_if_event_equal EVENT_CHALLENGE_CUP_OPPONENT_NUMBER, 2, .ows_f4a4
jump_if_event_equal EVENT_CHALLENGE_CUP_NUMBER, 3, .ows_f4a1
close_text_box
set_dialog_npc NPC_RONALD1
test_if_event_equal EVENT_CHALLENGE_CUP_NUMBER, 1
print_variable_npc_text Text0542, Text0543
set_dialog_npc NPC_HOST
close_text_box
.ows_f4a1
print_npc_text Text0544
.ows_f4a4
zero_out_event_value EVENT_CHALLENGE_CUP_IN_MENU
print_npc_text Text0545
ask_question_jump_default_yes Text0546, .ows_f4bd
test_if_event_equal EVENT_CHALLENGE_CUP_OPPONENT_NUMBER, 2
print_variable_npc_text Text0547, Text0548
start_challenge_hall_duel PRIZES_4, SAMS_PRACTICE_DECK_ID, MUSIC_STOP
quit_script_fully
.ows_f4bd
print_npc_text Text0549
close_text_box
max_out_event_value EVENT_CHALLENGE_CUP_IN_MENU
open_menu
close_text_box
script_jump .ows_f4a4
NPCMovement_f4c8:
db EAST
NPCMovement_f4c9:
db SOUTH
db SOUTH
db SOUTH
db SOUTH
db SOUTH
db SOUTH
db $ff
NPCMovement_f4d0:
db NORTH
db NORTH
db NORTH
db NORTH
db NORTH
db NORTH
db WEST
db $ff
NPCMovement_f4d8:
db EAST
db SOUTH | NO_MOVE
db $ff
Script_f4db:
print_npc_text Text054a
move_active_npc NPCMovement_f37f
load_challenge_hall_npc_into_txram_slot 0
print_npc_text Text054b
close_text_box
jump_if_event_equal EVENT_CHALLENGE_CUP_NUMBER, 3, .ows_f513
set_dialog_npc NPC_RONALD1
test_if_event_equal EVENT_CHALLENGE_CUP_NUMBER, 1
print_variable_npc_text Text054c, Text054d
move_challenge_hall_npc NPCMovement_f4d8
do_frames 40
move_challenge_hall_npc NPCMovement_f34c
test_if_event_equal EVENT_CHALLENGE_CUP_NUMBER, 1
print_variable_npc_text Text054e, Text054f
set_dialog_npc NPC_HOST
close_text_box
move_challenge_hall_npc NPCMovement_f4c9
script_jump .ows_f516
.ows_f513
move_challenge_hall_npc NPCMovement_f4c8
.ows_f516
unload_challenge_hall_npc
move_active_npc NPCMovement_f383
print_npc_text Text0550
close_text_box
move_active_npc NPCMovement_f38b
pick_challenge_cup_prize_card
print_npc_text Text0551
give_card VARIABLE_CARD
show_card_received_screen VARIABLE_CARD
print_npc_text Text0552
close_text_box
jump_if_event_equal EVENT_CHALLENGE_CUP_NUMBER, 2, .ows_f540
jump_if_event_equal EVENT_CHALLENGE_CUP_NUMBER, 3, .ows_f549
set_event EVENT_CHALLENGE_CUP_1_STATE, CHALLENGE_CUP_WON
set_event EVENT_CHALLENGE_CUP_1_RESULT, CHALLENGE_CUP_WON
script_jump .ows_f552
.ows_f540
set_event EVENT_CHALLENGE_CUP_2_STATE, CHALLENGE_CUP_WON
set_event EVENT_CHALLENGE_CUP_2_RESULT, CHALLENGE_CUP_WON
script_jump .ows_f552
.ows_f549
set_event EVENT_CHALLENGE_CUP_3_STATE, CHALLENGE_CUP_WON
set_event EVENT_CHALLENGE_CUP_3_RESULT, CHALLENGE_CUP_WON
script_jump .ows_f552
.ows_f552
close_advanced_text_box
set_next_npc_and_script NPC_CLERK12, Script_f3e9
end_script
ret
; Loads the NPC to fight at the challenge hall
Preload_ChallengeHallOpponent:
get_event_value EVENT_CHALLENGE_CUP_STARTING
or a
ret z
get_event_value EVENT_CHALLENGE_CUP_OPPONENT_CHOSEN
or a
jr z, .asm_f56e
ld a, [wChallengeHallNPC]
ld [wTempNPC], a
scf
ret
.asm_f56e
call Func_f5db
ld c, 1
set_event_value EVENT_CHALLENGE_CUP_OPPONENT_NUMBER
call Func_f580
max_event_value EVENT_CHALLENGE_CUP_OPPONENT_CHOSEN
scf
ret
Func_f580:
get_event_value EVENT_CHALLENGE_CUP_NUMBER
cp 3
jr z, .pick_challenger_include_ronald
get_event_value EVENT_CHALLENGE_CUP_OPPONENT_NUMBER
cp 3
ld d, ChallengeHallNPCs.end - ChallengeHallNPCs - 1 ; discount Ronald
jr nz, .pick_challenger
ld a, NPC_RONALD1
jr .force_ronald
.pick_challenger_include_ronald
ld d, ChallengeHallNPCs.end - ChallengeHallNPCs
.pick_challenger
ld a, d
call Random
ld c, a
call Func_f5cc
jr c, .pick_challenger
call Func_f5d4
ld b, 0
ld hl, ChallengeHallNPCs
add hl, bc
ld a, [hl]
.force_ronald
ld [wTempNPC], a
ld [wChallengeHallNPC], a
ret
ChallengeHallNPCs:
db NPC_CHRIS
db NPC_MICHAEL
db NPC_JESSICA
db NPC_MATTHEW
db NPC_RYAN
db NPC_ANDREW
db NPC_SARA
db NPC_AMANDA
db NPC_JOSHUA
db NPC_JENNIFER
db NPC_NICHOLAS
db NPC_BRANDON
db NPC_BRITTANY
db NPC_KRISTIN
db NPC_HEATHER
db NPC_ROBERT
db NPC_DANIEL
db NPC_STEPHANIE
db NPC_JOSEPH
db NPC_DAVID
db NPC_ERIK
db NPC_JOHN
db NPC_ADAM
db NPC_JONATHAN
db NPC_RONALD1
.end
Func_f5cc:
call Func_f5e9
ld a, [hl]
and b
ret z
scf
ret
Func_f5d4:
call Func_f5e9
ld a, [hl]
or b
ld [hl], a
ret
Func_f5db:
xor a
ld [wd698 + 0], a
ld [wd698 + 1], a
ld [wd698 + 2], a
ld [wd698 + 3], a
ret
Func_f5e9:
ld hl, wd698
ld a, c
.asm_f5ed
cp $08
jr c, .asm_f5f6
sub $08
inc hl
jr .asm_f5ed
.asm_f5f6
ld b, $80
jr .asm_f5fd
.asm_f5fa
srl b
dec a
.asm_f5fd
cp $00
jr nz, .asm_f5fa
ret
Func_f602:
set_event_false EVENT_CHALLENGE_CUP_OPPONENT_CHOSEN
ret
|