summaryrefslogtreecommitdiff
path: root/src/scripts/challenge_hall.asm
blob: 8b3e5f20b890ed96c2634af87ae9918c807db8da (plain)
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