summaryrefslogtreecommitdiff
path: root/src/scripts/challenge_hall_lobby.asm
blob: 847422cc104ef69d0dc78e012ffb215c6c831fbf (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
Preload_ChallengeHallNPCs2:
	call Preload_ChallengeHallNPCs1
	ccf
	ret

Preload_ChallengeHallNPCs1:
	get_event_value EVENT_CHALLENGE_CUP_STARTING
	or a
	jr z, .quit
	ld a, MUSIC_CHALLENGE_HALL
	ld [wDefaultSong], a
	scf
.quit
	ret

ChallengeHallLobbyLoadMap:
	get_event_value EVENT_RONALD_CHALLENGE_HALL_LOBBY_STATE
	or a
	ret z
	ld a, NPC_RONALD1
	ld [wTempNPC], a
	call FindLoadedNPC
	ld bc, Script_f166
	jp SetNextNPCAndScript

Script_Pappy3:
	start_script
	print_text_quit_fully Text050f

Script_Gal4:
	start_script
	print_text_quit_fully Text0510

Script_Champ:
	start_script
	print_text_quit_fully Text0511

Script_Hood2:
	start_script
	print_text_quit_fully Text0512

Script_Lass5:
	start_script
	print_text_quit_fully Text0513

Script_Chap5:
	start_script
	print_text_quit_fully Text0514

Preload_ChallengeHallLobbyRonald1:
	set_event_zero EVENT_RONALD_CHALLENGE_HALL_LOBBY_STATE
	get_event_value EVENT_RECEIVED_LEGENDARY_CARDS
	or a
	jr nz, .challenge_cup_2_ended
	get_event_value EVENT_PLAYER_ENTERED_CHALLENGE_CUP
	or a
	jr nz, .dont_load
	get_event_value EVENT_CHALLENGE_CUP_2_STATE
	cp CHALLENGE_CUP_NOT_STARTED
	jr z, .check_challenge_cup_1
	call .challenge_cup_1_ended
	get_event_value EVENT_CHALLENGE_CUP_2_STATE
	ld e, a
	get_event_value EVENT_CHALLENGE_CUP_2_RESULT
	ld d, a
	ld hl, RonaldChallengeHallLobbyCup2States
	call SetRonaldChallengeHallLobbyState
	jr nc, .dont_load
	jr .load_ronald

.check_challenge_cup_1
	get_event_value EVENT_CHALLENGE_CUP_1_STATE
	ld e, a
	get_event_value EVENT_CHALLENGE_CUP_1_RESULT
	ld d, a
	ld hl, RonaldChallengeHallLobbyCup1States
	call SetRonaldChallengeHallLobbyState
	jr nc, .dont_load
.load_ronald
	ld a, [wPlayerYCoord]
	ld [wLoadNPCYPos], a
	scf
	ret

.challenge_cup_2_ended
	max_event_value EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_5
	max_event_value EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_6
	max_event_value EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_7
	max_event_value EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_8
.challenge_cup_1_ended
	max_event_value EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_1
	max_event_value EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_2
	max_event_value EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_3
	max_event_value EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_4
.dont_load
	or a
	ret

SetRonaldChallengeHallLobbyState:
	ld c, 4
.loop
	ld a, [hli]
	cp e
	jr nz, .next_inc
	ld a, [hli]
	cp d
	jr nz, .next
	ld a, [hl]
	call GetEventValue
	or a
	jr nz, .next
	ld a, [hl]
	call MaxOutEventValue
	inc hl
	ld c, [hl]
	set_event_value EVENT_RONALD_CHALLENGE_HALL_LOBBY_STATE
	scf
	ret

.next_inc
	inc hl
.next
	inc hl
	inc hl
	dec c
	jr nz, .loop
	or a
	ret

; format: cup state, cup result, convo event, convo number
; if the current cup state/result match a row in the table
; and the convo has not already occurred,
;   then load the corresponding conversation
RonaldChallengeHallLobbyCup1States:
	db CHALLENGE_CUP_READY_TO_START, CHALLENGE_CUP_NOT_STARTED, EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_1, 1
	db CHALLENGE_CUP_LOST,           CHALLENGE_CUP_LOST,        EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_2, 2
	db CHALLENGE_CUP_OVER,           CHALLENGE_CUP_LOST,        EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_3, 3
	db CHALLENGE_CUP_OVER,           CHALLENGE_CUP_NOT_STARTED, EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_4, 4

RonaldChallengeHallLobbyCup2States:
	db CHALLENGE_CUP_READY_TO_START, CHALLENGE_CUP_NOT_STARTED, EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_5, 5
	db CHALLENGE_CUP_LOST,           CHALLENGE_CUP_LOST,        EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_6, 6
	db CHALLENGE_CUP_OVER,           CHALLENGE_CUP_LOST,        EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_7, 7
	db CHALLENGE_CUP_OVER,           CHALLENGE_CUP_NOT_STARTED, EVENT_RONALD_CHALLENGE_HALL_LOBBY_CONVO_8, 8

Script_f166:
	start_script
	move_active_npc NPCMovement_f232
	jump_if_event_equal EVENT_RONALD_CHALLENGE_HALL_LOBBY_STATE, 1, .ows_f192
	jump_if_event_equal EVENT_RONALD_CHALLENGE_HALL_LOBBY_STATE, 2, .ows_f1a5
	jump_if_event_equal EVENT_RONALD_CHALLENGE_HALL_LOBBY_STATE, 3, .ows_f1b8
	jump_if_event_equal EVENT_RONALD_CHALLENGE_HALL_LOBBY_STATE, 4, .ows_f1cb
	jump_if_event_equal EVENT_RONALD_CHALLENGE_HALL_LOBBY_STATE, 5, .ows_f1de
	jump_if_event_equal EVENT_RONALD_CHALLENGE_HALL_LOBBY_STATE, 6, .ows_f1f1
	jump_if_event_equal EVENT_RONALD_CHALLENGE_HALL_LOBBY_STATE, 7, .ows_f204
	jump_if_event_equal EVENT_RONALD_CHALLENGE_HALL_LOBBY_STATE, 8, .ows_f217
.ows_f192
	print_npc_text Text0515
	close_text_box
	move_player WEST, 1
	move_player WEST, 1
	move_player WEST, 1
	print_npc_text Text0516
	script_jump .ows_f227

.ows_f1a5
	print_npc_text Text0517
	close_text_box
	move_player WEST, 1
	move_player WEST, 1
	move_player WEST, 1
	print_npc_text Text0518
	script_jump .ows_f227

.ows_f1b8
	print_npc_text Text0519
	close_text_box
	move_player WEST, 1
	move_player WEST, 1
	move_player WEST, 1
	print_npc_text Text051a
	script_jump .ows_f227

.ows_f1cb
	print_npc_text Text051b
	close_text_box
	move_player WEST, 1
	move_player WEST, 1
	move_player WEST, 1
	print_npc_text Text051c
	script_jump .ows_f227

.ows_f1de
	print_npc_text Text051d
	close_text_box
	move_player WEST, 1
	move_player WEST, 1
	move_player WEST, 1
	print_npc_text Text051e
	script_jump .ows_f227

.ows_f1f1
	print_npc_text Text051f
	close_text_box
	move_player WEST, 1
	move_player WEST, 1
	move_player WEST, 1
	print_npc_text Text0520
	script_jump .ows_f227

.ows_f204
	print_npc_text Text0521
	close_text_box
	move_player WEST, 1
	move_player WEST, 1
	move_player WEST, 1
	print_npc_text Text0522
	script_jump .ows_f227

.ows_f217
	print_npc_text Text0523
	close_text_box
	move_player WEST, 1
	move_player WEST, 1
	move_player WEST, 1
	print_npc_text Text0524
.ows_f227
	close_text_box
	set_player_direction SOUTH
	move_player NORTH, 4
	move_active_npc NPCMovement_f232
	unload_active_npc
	quit_script_fully

NPCMovement_f232:
	db EAST
	db EAST
	db EAST
	db EAST
	db EAST
	db EAST
	db $ff