summaryrefslogtreecommitdiff
path: root/src/scripts/fire_club_lobby.asm
blob: f0567a2326a78f79200ff14204bf267eb810043b (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
FireClubLobbyAfterDuel:
	ld hl, .after_duel_table
	call FindEndOfDuelScript
	ret

.after_duel_table
	db NPC_JESSICA
	db NPC_JESSICA
	dw Script_BeatJessicaInFireClubLobby
	dw Script_LostToJessicaInFireClubLobby
	db $00

FireClubPressedA:
	ld hl, SlowpokePaintingObjectTable
	call FindExtraInteractableObjects
	ret

SlowpokePaintingObjectTable:
	db 16, 2, NORTH
	dw Script_ee76
	db $00

; Given a table with data of the form:
;	X, Y, Dir, Script
; Searches to try to find a match, and starts a Script if possible
FindExtraInteractableObjects:
	ld de, 5
.loop
	ld a, [hl]
	or a
	ret z
	push hl
	ld a, [wPlayerXCoord]
	cp [hl]
	jr nz, .not_match
	inc hl
	ld a, [wPlayerYCoord]
	cp [hl]
	jr nz, .not_match
	inc hl
	ld a, [wPlayerDirection]
	cp [hl]
	jr z, .match
.not_match
	pop hl
	add hl, de
	jr .loop
.match
	inc hl
	ld c, [hl]
	inc hl
	ld b, [hl]
	pop hl
	call SetNextScript
	scf
	ret

Preload_JessicaInFireClubLobby:
	get_event_value EVENT_PUPIL_JESSICA_STATE
	or a ; cp PUPIL_INACTIVE
	ret z
	cp PUPIL_DEFEATED
	ret

Script_Jessica:
	start_script
	jump_if_event_greater_or_equal EVENT_PUPIL_JESSICA_STATE, PUPIL_DEFEATED, Script_dead
	test_if_event_equal EVENT_PUPIL_JESSICA_STATE, PUPIL_ACTIVE
	print_variable_npc_text Text068d, Text068e
	set_event EVENT_PUPIL_JESSICA_STATE, PUPIL_TALKED
	ask_question_jump Text068f, .ows_edb2
	print_npc_text Text0690
	quit_script_fully

.ows_edb2
	print_npc_text Text0691
	start_duel PRIZES_4, LOVE_TO_BATTLE_DECK_ID, MUSIC_DUEL_THEME_1
	quit_script_fully

Script_BeatJessicaInFireClubLobby:
	start_script
	set_event EVENT_PUPIL_JESSICA_STATE, PUPIL_DEFEATED
	print_npc_text Text0692
	give_booster_packs BOOSTER_COLOSSEUM_FIGHTING, BOOSTER_COLOSSEUM_FIGHTING, NO_BOOSTER
	print_npc_text Text0693
	close_text_box
	move_active_npc_by_direction NPCMovementTable_edd2
	unload_active_npc
	quit_script_fully

Script_LostToJessicaInFireClubLobby:
	start_script
	print_text_quit_fully Text0694

NPCMovementTable_edd2:
	dw NPCMovement_edda
	dw NPCMovement_ede4
	dw NPCMovement_edda
	dw NPCMovement_edda

NPCMovement_edda:
	db EAST
	db NORTH
	db EAST
	db EAST
	db EAST
	db EAST
	db EAST
	db EAST
	db EAST
	db $ff

NPCMovement_ede4:
	db NORTH
	db EAST
	db $fe, -11

Script_Chap3:
	start_script
	jump_if_event_greater_or_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADES_COMPLETE, .ows_ee1f
	jump_if_event_true EVENT_ISHIHARA_MET, .ows_edfb
	max_out_event_value EVENT_ISHIHARA_MENTIONED
	max_out_event_value EVENT_ISHIHARAS_HOUSE_MENTIONED
	max_out_event_value EVENT_ISHIHARA_WANTS_TO_TRADE
	print_text_quit_fully Text0695

.ows_edfb
	jump_if_event_true EVENT_TEMP_TRADED_WITH_ISHIHARA, .ows_ee1c
	jump_if_event_greater_or_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_3_RUMORED, .ows_ee13
	jump_if_event_greater_or_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_2_RUMORED, .ows_ee0e
	max_out_event_value EVENT_ISHIHARA_WANTS_TO_TRADE
	print_text_quit_fully Text0696

.ows_ee0e
	max_out_event_value EVENT_ISHIHARA_WANTS_TO_TRADE
	print_text_quit_fully Text0697

.ows_ee13
	jump_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS, .ows_ee1c
	max_out_event_value EVENT_ISHIHARA_WANTS_TO_TRADE
	print_text_quit_fully Text0698

.ows_ee1c
	print_text_quit_fully Text0699

.ows_ee1f
	set_event EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_LEFT
	print_text_quit_fully Text069a

Preload_Lad2:
	get_event_value EVENT_LAD2_STATE
	cp LAD2_SLOWPOKE_AVAILABLE
	ret

Script_Lad2:
	start_script
	try_give_medal_pc_packs
	jump_if_event_greater_or_equal EVENT_MEDAL_COUNT, 3, .ows_ee36
	print_text_quit_fully Text069b

.ows_ee36
	print_npc_text Text069c
	ask_question_jump Text069d, .ows_ee4a
	print_npc_text Text069e
	set_event EVENT_LAD2_STATE, LAD2_SLOWPOKE_GONE
	close_text_box
	move_active_npc_by_direction NPCMovementTable_ee61
	unload_active_npc
	quit_script_fully

.ows_ee4a
	jump_if_any_energy_cards_in_collection .ows_ee51
	print_npc_text Text069f
	quit_script_fully

.ows_ee51
	remove_all_energy_cards_from_collection
	print_text Text06a0
	print_npc_text Text06a1
	set_event EVENT_LAD2_STATE, LAD2_SLOWPOKE_AVAILABLE
	close_text_box
	move_active_npc_by_direction NPCMovementTable_ee61
	unload_active_npc
	quit_script_fully

NPCMovementTable_ee61:
	dw NPCMovement_ee69
	dw NPCMovement_ee72
	dw NPCMovement_ee69
	dw NPCMovement_ee69

NPCMovement_ee69:
	db EAST
	db SOUTH
	db SOUTH
	db SOUTH
	db EAST
	db EAST
	db EAST
	db EAST
	db $ff

NPCMovement_ee72:
	db SOUTH
	db EAST
	db $fe, -10

Script_ee76:
	start_script
	jump_if_event_equal EVENT_LAD2_STATE, LAD2_SLOWPOKE_AVAILABLE, .ows_ee7d
	quit_script_fully

.ows_ee7d
	set_event EVENT_LAD2_STATE, LAD2_SLOWPOKE_GONE
	print_text FoundLv9SlowpokeText
	give_card SLOWPOKE1
	show_card_received_screen SLOWPOKE1
	quit_script_fully

Script_Mania:
	start_script
	test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
	print_variable_npc_text Text06a3, Text06a4
	quit_script_fully