summaryrefslogtreecommitdiff
path: root/src/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/scripts')
-rw-r--r--src/scripts/battle_center.asm46
-rw-r--r--src/scripts/challenge_hall.asm562
-rw-r--r--src/scripts/challenge_hall_entrance.asm106
-rw-r--r--src/scripts/challenge_hall_lobby.asm242
-rw-r--r--src/scripts/deck_machine_room.asm354
-rw-r--r--src/scripts/fighting_club.asm183
-rw-r--r--src/scripts/fighting_club_entrance.asm3
-rw-r--r--src/scripts/fighting_club_lobby.asm189
-rw-r--r--src/scripts/fire_club.asm150
-rw-r--r--src/scripts/fire_club_entrance.asm3
-rw-r--r--src/scripts/fire_club_lobby.asm224
-rw-r--r--src/scripts/gift_center.asm73
-rw-r--r--src/scripts/grass_club.asm136
-rw-r--r--src/scripts/grass_club_entrance.asm114
-rw-r--r--src/scripts/grass_club_lobby.asm140
-rw-r--r--src/scripts/hall_of_honor.asm48
-rw-r--r--src/scripts/ishiharas_house.asm219
-rw-r--r--src/scripts/lightning_club.asm184
-rw-r--r--src/scripts/lightning_club_entrance.asm3
-rw-r--r--src/scripts/lightning_club_lobby.asm72
-rw-r--r--src/scripts/mason_laboratory.asm509
-rw-r--r--src/scripts/pokemon_dome.asm754
-rw-r--r--src/scripts/pokemon_dome_entrance.asm110
-rw-r--r--src/scripts/psychic_club.asm159
-rw-r--r--src/scripts/psychic_club_entrance.asm228
-rw-r--r--src/scripts/psychic_club_lobby.asm138
-rw-r--r--src/scripts/rock_club.asm122
-rw-r--r--src/scripts/rock_club_entrance.asm3
-rw-r--r--src/scripts/rock_club_lobby.asm156
-rw-r--r--src/scripts/science_club.asm203
-rw-r--r--src/scripts/science_club_entrance.asm3
-rw-r--r--src/scripts/science_club_lobby.asm100
-rw-r--r--src/scripts/water_club.asm321
-rw-r--r--src/scripts/water_club_entrance.asm3
-rw-r--r--src/scripts/water_club_lobby.asm92
35 files changed, 5952 insertions, 0 deletions
diff --git a/src/scripts/battle_center.asm b/src/scripts/battle_center.asm
new file mode 100644
index 0000000..a55d553
--- /dev/null
+++ b/src/scripts/battle_center.asm
@@ -0,0 +1,46 @@
+Func_fc2b:
+ ld a, [wDuelResult]
+ cp DUEL_LOSS + 1
+ jr c, .win_or_loss
+ ld a, 2 ; transmission error
+.win_or_loss
+ rlca
+ ld c, a
+ ld b, 0
+ ld hl, PointerTable_fc4c
+ add hl, bc
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, LOW(ClerkNPCName_)
+ ld [wCurrentNPCNameTx], a
+ ld a, HIGH(ClerkNPCName_)
+ ld [wCurrentNPCNameTx + 1], a
+ jp SetNextScript
+
+PointerTable_fc4c:
+ dw Script_fc64
+ dw Script_fc68
+ dw Script_fc60
+
+Script_fc52:
+ start_script
+ print_npc_text Text06c8
+ ask_question_jump_default_yes NULL, .ows_fc5e
+ print_text_quit_fully Text06c9
+
+.ows_fc5e
+ battle_center
+ quit_script_fully
+
+Script_fc60:
+ start_script
+ print_text_quit_fully Text06ca
+
+Script_fc64:
+ start_script
+ print_text_quit_fully Text06cb
+
+Script_fc68:
+ start_script
+ print_text_quit_fully Text06cc
diff --git a/src/scripts/challenge_hall.asm b/src/scripts/challenge_hall.asm
new file mode 100644
index 0000000..8b3e5f2
--- /dev/null
+++ b/src/scripts/challenge_hall.asm
@@ -0,0 +1,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
diff --git a/src/scripts/challenge_hall_entrance.asm b/src/scripts/challenge_hall_entrance.asm
new file mode 100644
index 0000000..dc81746
--- /dev/null
+++ b/src/scripts/challenge_hall_entrance.asm
@@ -0,0 +1,106 @@
+Preload_Clerk9:
+ call TryGiveMedalPCPacks
+ get_event_value EVENT_MEDAL_COUNT
+ ld hl, .jump_table
+ cp 9
+ jp c, JumpToFunctionInTable
+ debug_nop
+ jr .less_than_three_medals
+
+.jump_table
+ dw .less_than_three_medals
+ dw .less_than_three_medals
+ dw .less_than_three_medals
+ dw .three_medals
+ dw .four_medals
+ dw .five_medals
+ dw .more_than_five_medals
+ dw .more_than_five_medals
+ dw .more_than_five_medals
+
+.three_medals
+ get_event_value EVENT_CHALLENGE_CUP_1_STATE
+ or a ; cp CHALLENGE_CUP_NOT_STARTED
+ jr nz, .less_than_three_medals
+ ld c, CHALLENGE_CUP_READY_TO_START
+ set_event_value EVENT_CHALLENGE_CUP_1_STATE
+ jr .less_than_three_medals
+
+.five_medals
+ get_event_value EVENT_CHALLENGE_CUP_2_STATE
+ or a ; cp CHALLENGE_CUP_NOT_STARTED
+ jr nz, .four_medals
+ ld c, CHALLENGE_CUP_READY_TO_START
+ set_event_value EVENT_CHALLENGE_CUP_2_STATE
+ jr .four_medals
+
+.more_than_five_medals
+ ld c, CHALLENGE_CUP_OVER
+ set_event_value EVENT_CHALLENGE_CUP_2_STATE
+.four_medals
+ ld c, CHALLENGE_CUP_OVER
+ set_event_value EVENT_CHALLENGE_CUP_1_STATE
+.less_than_three_medals
+ set_event_false EVENT_CHALLENGE_CUP_STARTING
+ get_event_value EVENT_CHALLENGE_CUP_1_STATE
+ cp CHALLENGE_CUP_NOT_STARTED
+ jr z, .check_challenge_cup_two
+ cp CHALLENGE_CUP_OVER
+ jr z, .check_challenge_cup_two
+ ld c, 1
+ jr .start_challenge_cup
+
+.check_challenge_cup_two
+ get_event_value EVENT_CHALLENGE_CUP_2_STATE
+ cp CHALLENGE_CUP_NOT_STARTED
+ jr z, .check_challenge_cup_three
+ cp CHALLENGE_CUP_OVER
+ jr z, .check_challenge_cup_three
+ ld c, 2
+ jr .start_challenge_cup
+
+.check_challenge_cup_three
+ get_event_value EVENT_CHALLENGE_CUP_3_STATE
+ cp CHALLENGE_CUP_NOT_STARTED
+ jr z, .no_challenge_cup
+ cp CHALLENGE_CUP_OVER
+ jr z, .no_challenge_cup
+ ld c, 3
+.start_challenge_cup
+ set_event_value EVENT_CHALLENGE_CUP_NUMBER
+ max_event_value EVENT_CHALLENGE_CUP_STARTING
+ ld a, MUSIC_CHALLENGE_HALL
+ ld [wDefaultSong], a
+.no_challenge_cup
+ scf
+ ret
+
+Script_Clerk9:
+ start_script
+ jump_if_event_zero EVENT_CHALLENGE_CUP_1_STATE, .ows_f066
+ jump_if_event_equal EVENT_CHALLENGE_CUP_3_STATE, CHALLENGE_CUP_OVER, .ows_f069
+ jump_if_event_equal EVENT_CHALLENGE_CUP_3_STATE, CHALLENGE_CUP_LOST, .ows_f06f
+ jump_if_event_equal EVENT_CHALLENGE_CUP_3_STATE, CHALLENGE_CUP_WON, .ows_f072
+ jump_if_event_equal EVENT_CHALLENGE_CUP_3_STATE, CHALLENGE_CUP_READY_TO_START, .ows_f06c
+ jump_if_event_equal EVENT_CHALLENGE_CUP_2_STATE, CHALLENGE_CUP_OVER, .ows_f069
+ jump_if_event_equal EVENT_CHALLENGE_CUP_2_STATE, CHALLENGE_CUP_LOST, .ows_f06f
+ jump_if_event_equal EVENT_CHALLENGE_CUP_2_STATE, CHALLENGE_CUP_WON, .ows_f072
+ jump_if_event_equal EVENT_CHALLENGE_CUP_2_STATE, CHALLENGE_CUP_READY_TO_START, .ows_f06c
+ jump_if_event_equal EVENT_CHALLENGE_CUP_1_STATE, CHALLENGE_CUP_OVER, .ows_f069
+ jump_if_event_equal EVENT_CHALLENGE_CUP_1_STATE, CHALLENGE_CUP_LOST, .ows_f06f
+ jump_if_event_equal EVENT_CHALLENGE_CUP_1_STATE, CHALLENGE_CUP_WON, .ows_f072
+ jump_if_event_equal EVENT_CHALLENGE_CUP_1_STATE, CHALLENGE_CUP_READY_TO_START, .ows_f06c
+.ows_f066
+ print_text_quit_fully Text050a
+
+.ows_f069
+ print_text_quit_fully Text050b
+
+.ows_f06c
+ print_text_quit_fully Text050c
+
+.ows_f06f
+ print_text_quit_fully Text050d
+
+.ows_f072
+ print_text_quit_fully Text050e
diff --git a/src/scripts/challenge_hall_lobby.asm b/src/scripts/challenge_hall_lobby.asm
new file mode 100644
index 0000000..847422c
--- /dev/null
+++ b/src/scripts/challenge_hall_lobby.asm
@@ -0,0 +1,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
diff --git a/src/scripts/deck_machine_room.asm b/src/scripts/deck_machine_room.asm
new file mode 100644
index 0000000..db9ec04
--- /dev/null
+++ b/src/scripts/deck_machine_room.asm
@@ -0,0 +1,354 @@
+DeckMachineRoomAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_AARON
+ db NPC_AARON
+ dw Script_BeatAaron
+ dw Script_LostToAaron
+ db $00
+
+DeckMachineRoomCloseTextBox:
+ ld a, MAP_EVENT_FIGHTING_DECK_MACHINE
+.asm_d8af
+ push af
+ farcall Func_80b89
+ pop af
+ inc a
+ cp MAP_EVENT_FIRE_DECK_MACHINE + 1
+ jr c, .asm_d8af
+ ret
+
+Script_Tech6:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text05f7, Text05f8
+ quit_script_fully
+
+Script_Tech7:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text05f9, Text05fa
+ quit_script_fully
+
+Script_Tech8:
+ start_script
+ test_if_event_not_equal EVENT_ALL_DECK_MACHINE_FLAGS, $ff
+ print_variable_npc_text Text05fb, Text05fc
+ quit_script_fully
+
+Script_Aaron:
+ start_script
+ print_npc_text Text05fd
+ ask_question_jump Text05fe, .ows_d8e9
+.ows_d8e6
+ print_text_quit_fully Text05ff
+
+.ows_d8e9
+ print_npc_text Text0600
+ choose_deck_to_duel_against
+ close_text_box
+ jump_if_event_equal EVENT_AARON_DECK_MENU_CHOICE, AARON_DECK_MENU_CANCEL, .ows_d8e6
+ ask_question_jump Text0601, .ows_d8fb
+ script_jump .ows_d8e6
+
+.ows_d8fb
+ print_npc_text Text0602
+ start_duel PRIZES_4, $ff, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatAaron:
+ ld a, [wMultichoiceTextboxResult_ChooseDeckToDuelAgainst]
+ ld c, a
+ set_event_value EVENT_AARON_BOOSTER_REWARD
+
+ start_script
+ print_npc_text Text0603
+ jump_if_event_equal EVENT_AARON_BOOSTER_REWARD, 1, .ows_d920
+ jump_if_event_equal EVENT_AARON_BOOSTER_REWARD, 2, .ows_d927
+ give_booster_packs BOOSTER_ENERGY_RANDOM, NO_BOOSTER, NO_BOOSTER
+ script_jump Script_LostToAaron.ows_d92f
+
+.ows_d920
+ give_booster_packs BOOSTER_ENERGY_RANDOM, NO_BOOSTER, NO_BOOSTER
+ script_jump Script_LostToAaron.ows_d92f
+
+.ows_d927
+ give_booster_packs BOOSTER_ENERGY_RANDOM, NO_BOOSTER, NO_BOOSTER
+ script_jump Script_LostToAaron.ows_d92f
+
+Script_LostToAaron:
+ start_script
+.ows_d92f
+ print_text_quit_fully Text0604
+
+Script_d932:
+ start_script
+ print_text Text0605
+ ask_question_jump_default_yes Text0606, .ows_d93c
+ quit_script_fully
+
+.ows_d93c
+ open_deck_machine $09
+ quit_script_fully
+
+Script_d93f:
+ ld a, $02
+ call Func_d96c
+
+ start_script
+ print_text Text0607
+ jump_if_event_true EVENT_FIGHTING_DECK_MACHINE_ACTIVE, .ows_d963
+ print_text Text0608
+ jump_if_event_true EVENT_BEAT_MITCH, .ows_d954
+ quit_script_fully
+
+.ows_d954
+ ask_question_jump_default_yes Text0609, .ows_d95a
+ quit_script_fully
+
+.ows_d95a
+ play_sfx SFX_5A
+ max_out_event_value EVENT_FIGHTING_DECK_MACHINE_ACTIVE
+ replace_map_blocks MAP_EVENT_FIGHTING_DECK_MACHINE
+ print_text Text060a
+.ows_d963
+ ask_question_jump_default_yes Text060b, .ows_d969
+ quit_script_fully
+
+.ows_d969
+ open_deck_machine $01
+ quit_script_fully
+
+Func_d96c:
+ sub 2
+ add a
+ ld c, a
+ ld b, 0
+ ld hl, ClubMapNames
+ add hl, bc
+ ld a, [hli]
+ ld [wTxRam2], a
+ ld [wTxRam2_b], a
+ ld a, [hl]
+ ld [wTxRam2 + 1], a
+ ld [wTxRam2_b + 1], a
+ ret
+
+ClubMapNames:
+ tx FightingClubMapNameText
+ tx RockClubMapNameText
+ tx WaterClubMapNameText
+ tx LightningClubMapNameText
+ tx GrassClubMapNameText
+ tx PsychicClubMapNameText
+ tx ScienceClubMapNameText
+ tx FireClubMapNameText
+
+Script_d995:
+ ld a, $03
+ call Func_d96c
+
+ start_script
+ print_text Text0607
+ jump_if_event_true EVENT_ROCK_DECK_MACHINE_ACTIVE, .ows_d9b9
+ print_text Text0608
+ jump_if_event_true EVENT_BEAT_GENE, .ows_d9aa
+ quit_script_fully
+
+.ows_d9aa
+ ask_question_jump_default_yes Text0609, .ows_d9b0
+ quit_script_fully
+
+.ows_d9b0
+ play_sfx SFX_5A
+ max_out_event_value EVENT_ROCK_DECK_MACHINE_ACTIVE
+ replace_map_blocks MAP_EVENT_ROCK_DECK_MACHINE
+ print_text Text060a
+.ows_d9b9
+ ask_question_jump_default_yes Text060b, .ows_d9bf
+ quit_script_fully
+
+.ows_d9bf
+ open_deck_machine $02
+ quit_script_fully
+
+Script_d9c2:
+ ld a, $04
+ call Func_d96c
+
+ start_script
+ print_text Text0607
+ jump_if_event_true EVENT_WATER_DECK_MACHINE_ACTIVE, .ows_d9e6
+ print_text Text0608
+ jump_if_event_true EVENT_BEAT_AMY, .ows_d9d7
+ quit_script_fully
+
+.ows_d9d7
+ ask_question_jump_default_yes Text0609, .ows_d9dd
+ quit_script_fully
+
+.ows_d9dd
+ play_sfx SFX_5A
+ max_out_event_value EVENT_WATER_DECK_MACHINE_ACTIVE
+ replace_map_blocks MAP_EVENT_WATER_DECK_MACHINE
+ print_text Text060a
+.ows_d9e6
+ ask_question_jump_default_yes Text060b, .ows_d9ec
+ quit_script_fully
+
+.ows_d9ec
+ open_deck_machine $03
+ quit_script_fully
+
+Script_d9ef:
+ ld a, $05
+ call Func_d96c
+
+ start_script
+ print_text Text0607
+ jump_if_event_true EVENT_LIGHTNING_DECK_MACHINE_ACTIVE, .ows_da13
+ print_text Text0608
+ jump_if_event_true EVENT_BEAT_ISAAC, .ows_da04
+ quit_script_fully
+
+.ows_da04
+ ask_question_jump_default_yes Text0609, .ows_da0a
+ quit_script_fully
+
+.ows_da0a
+ play_sfx SFX_5A
+ max_out_event_value EVENT_LIGHTNING_DECK_MACHINE_ACTIVE
+ replace_map_blocks MAP_EVENT_LIGHTNING_DECK_MACHINE
+ print_text Text060a
+.ows_da13
+ ask_question_jump_default_yes Text060b, .ows_da19
+ quit_script_fully
+
+.ows_da19
+ open_deck_machine $04
+ quit_script_fully
+
+Script_da1c:
+ ld a, $06
+ call Func_d96c
+
+ start_script
+ print_text Text0607
+ jump_if_event_true EVENT_GRASS_DECK_MACHINE_ACTIVE, .ows_da40
+ print_text Text0608
+ jump_if_event_true EVENT_BEAT_NIKKI, .ows_da31
+ quit_script_fully
+
+.ows_da31
+ ask_question_jump_default_yes Text0609, .ows_da37
+ quit_script_fully
+
+.ows_da37
+ play_sfx SFX_5A
+ max_out_event_value EVENT_GRASS_DECK_MACHINE_ACTIVE
+ replace_map_blocks MAP_EVENT_GRASS_DECK_MACHINE
+ print_text Text060a
+.ows_da40
+ ask_question_jump_default_yes Text060b, .ows_da46
+ quit_script_fully
+
+.ows_da46
+ open_deck_machine $05
+ quit_script_fully
+
+Script_da49:
+ ld a, $07
+ call Func_d96c
+
+ start_script
+ print_text Text0607
+ jump_if_event_true EVENT_PSYCHIC_DECK_MACHINE_ACTIVE, .ows_da6d
+ print_text Text0608
+ jump_if_event_true EVENT_BEAT_MURRAY, .ows_da5e
+ quit_script_fully
+
+.ows_da5e
+ ask_question_jump_default_yes Text0609, .ows_da64
+ quit_script_fully
+
+.ows_da64
+ play_sfx SFX_5A
+ max_out_event_value EVENT_PSYCHIC_DECK_MACHINE_ACTIVE
+ replace_map_blocks MAP_EVENT_PSYCHIC_DECK_MACHINE
+ print_text Text060a
+.ows_da6d
+ ask_question_jump_default_yes Text060b, .ows_da73
+ quit_script_fully
+
+.ows_da73
+ open_deck_machine $06
+ quit_script_fully
+
+Script_da76:
+ ld a, $08
+ call Func_d96c
+
+ start_script
+ print_text Text0607
+ jump_if_event_true EVENT_SCIENCE_DECK_MACHINE_ACTIVE, .ows_da9a
+ print_text Text0608
+ jump_if_event_true EVENT_BEAT_RICK, .ows_da8b
+ quit_script_fully
+
+.ows_da8b
+ ask_question_jump_default_yes Text0609, .ows_da91
+ quit_script_fully
+
+.ows_da91
+ play_sfx SFX_5A
+ max_out_event_value EVENT_SCIENCE_DECK_MACHINE_ACTIVE
+ replace_map_blocks MAP_EVENT_SCIENCE_DECK_MACHINE
+ print_text Text060a
+.ows_da9a
+ ask_question_jump_default_yes Text060b, .ows_daa0
+ quit_script_fully
+
+.ows_daa0
+ open_deck_machine $07
+ quit_script_fully
+
+Script_daa3:
+ ld a, $09
+ call Func_d96c
+
+ start_script
+ print_text Text0607
+ jump_if_event_true EVENT_FIRE_DECK_MACHINE_ACTIVE, .ows_dac7
+ print_text Text0608
+ jump_if_event_true EVENT_BEAT_KEN, .ows_dab8
+ quit_script_fully
+
+.ows_dab8
+ ask_question_jump_default_yes Text0609, .ows_dabe
+ quit_script_fully
+
+.ows_dabe
+ play_sfx SFX_5A
+ max_out_event_value EVENT_FIRE_DECK_MACHINE_ACTIVE
+ replace_map_blocks MAP_EVENT_FIRE_DECK_MACHINE
+ print_text Text060a
+.ows_dac7
+ ask_question_jump_default_yes Text060b, .ows_dacd
+ quit_script_fully
+
+.ows_dacd
+ open_deck_machine $08
+ quit_script_fully
+
+Script_dad0:
+ start_script
+ print_text Text060c
+ ask_question_jump_default_yes Text060d, .ows_dada
+ quit_script_fully
+
+.ows_dada
+ open_deck_machine $00
+ quit_script_fully
diff --git a/src/scripts/fighting_club.asm b/src/scripts/fighting_club.asm
new file mode 100644
index 0000000..6f6014b
--- /dev/null
+++ b/src/scripts/fighting_club.asm
@@ -0,0 +1,183 @@
+FightingClubAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_CHRIS
+ db NPC_CHRIS
+ dw Script_BeatChrisInFightingClub
+ dw Script_LostToChrisInFightingClub
+
+ db NPC_MICHAEL
+ db NPC_MICHAEL
+ dw Script_BeatMichaelInFightingClub
+ dw Script_LostToMichaelInFightingClub
+
+ db NPC_JESSICA
+ db NPC_JESSICA
+ dw Script_BeatJessicaInFightingClub
+ dw Script_LostToJessicaInFightingClub
+
+ db NPC_MITCH
+ db NPC_MITCH
+ dw Script_BeatMitch
+ dw Script_LostToMitch
+ db $00
+
+Script_Mitch:
+ start_script
+ try_give_pc_pack $02
+ jump_if_event_true EVENT_BEAT_MITCH, Script_Mitch_AlreadyHaveMedal
+ fight_club_pupil_jump .first_interaction, .three_pupils_remaining, \
+ .two_pupils_remaining, .one_pupil_remaining, .all_pupils_defeated
+.first_interaction
+ print_npc_text Text0477
+ set_event EVENT_PUPIL_MICHAEL_STATE, PUPIL_ACTIVE
+ set_event EVENT_PUPIL_CHRIS_STATE, PUPIL_ACTIVE
+ set_event EVENT_PUPIL_JESSICA_STATE, PUPIL_ACTIVE
+ quit_script_fully
+
+.three_pupils_remaining
+ print_text_quit_fully Text0478
+
+.two_pupils_remaining
+ print_text_quit_fully Text0479
+
+.one_pupil_remaining
+ print_text_quit_fully Text047a
+
+.all_pupils_defeated
+ print_npc_text Text047b
+ ask_question_jump Text047c, .start_duel
+ print_npc_text Text047d
+ quit_script_fully
+
+.start_duel
+ print_npc_text Text047e
+ start_duel PRIZES_6, FIRST_STRIKE_DECK_ID, MUSIC_DUEL_THEME_2
+ quit_script_fully
+
+Script_BeatMitch:
+ start_script
+ jump_if_event_true EVENT_BEAT_MITCH, Script_Mitch_GiveBoosters
+ print_npc_text Text047f
+ max_out_event_value EVENT_BEAT_MITCH
+ try_give_medal_pc_packs
+ show_medal_received_screen EVENT_BEAT_MITCH
+ record_master_win $01
+ print_npc_text Text0480
+ give_booster_packs BOOSTER_LABORATORY_NEUTRAL, BOOSTER_LABORATORY_NEUTRAL, NO_BOOSTER
+ print_npc_text Text0481
+ quit_script_fully
+
+Script_LostToMitch:
+ start_script
+ jump_if_event_true EVENT_BEAT_MITCH, Script_Mitch_PrintTrainHarderText
+ print_text_quit_fully Text0482
+
+Script_Mitch_AlreadyHaveMedal:
+ print_npc_text Text0483
+ ask_question_jump Text047c, .start_duel
+ print_npc_text Text0484
+ quit_script_fully
+
+.start_duel
+ print_npc_text Text0485
+ start_duel PRIZES_6, FIRST_STRIKE_DECK_ID, MUSIC_DUEL_THEME_2
+ quit_script_fully
+
+Script_Mitch_GiveBoosters:
+ print_npc_text Text0486
+ give_booster_packs BOOSTER_LABORATORY_NEUTRAL, BOOSTER_LABORATORY_NEUTRAL, NO_BOOSTER
+ print_npc_text Text0487
+ quit_script_fully
+
+Script_Mitch_PrintTrainHarderText:
+ print_text_quit_fully Text0488
+
+Preload_ChrisInFightingClub:
+ get_event_value EVENT_PUPIL_CHRIS_STATE
+ cp PUPIL_DEFEATED
+ ccf
+ ret
+
+Script_de4b:
+ test_if_event_equal EVENT_PUPIL_CHRIS_STATE, PUPIL_DEFEATED
+ print_variable_npc_text Text0489, Text048a
+ set_event EVENT_PUPIL_CHRIS_STATE, PUPIL_REVISITED
+ ask_question_jump Text048b, .ows_de61
+ print_npc_text Text048c
+ quit_script_fully
+
+.ows_de61
+ print_npc_text Text048d
+ start_duel PRIZES_4, MUSCLES_FOR_BRAINS_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatChrisInFightingClub:
+ start_script
+ print_npc_text Text048e
+ give_booster_packs BOOSTER_EVOLUTION_FIGHTING, BOOSTER_EVOLUTION_FIGHTING, NO_BOOSTER
+ print_npc_text Text048f
+ quit_script_fully
+
+Script_LostToChrisInFightingClub:
+ start_script
+ print_text_quit_fully Text0490
+
+Preload_MichaelInFightingClub:
+ get_event_value EVENT_PUPIL_MICHAEL_STATE
+ cp PUPIL_DEFEATED
+ ccf
+ ret
+
+Script_MichaelRematch:
+ print_npc_text Text0491
+ ask_question_jump Text0492, .ows_de8d
+ print_npc_text Text0493
+ quit_script_fully
+
+.ows_de8d
+ print_npc_text Text0494
+ start_duel PRIZES_4, HEATED_BATTLE_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatMichaelInFightingClub:
+ start_script
+ print_npc_text Text0495
+ give_booster_packs BOOSTER_COLOSSEUM_FIGHTING, BOOSTER_COLOSSEUM_FIGHTING, NO_BOOSTER
+ print_npc_text Text0496
+ quit_script_fully
+
+Script_LostToMichaelInFightingClub:
+ start_script
+ print_text_quit_fully Text0497
+
+Preload_JessicaInFightingClub:
+ get_event_value EVENT_PUPIL_JESSICA_STATE
+ cp PUPIL_DEFEATED
+ ccf
+ ret
+
+Script_dead:
+ print_npc_text Text0498
+ ask_question_jump Text0499, .ows_deb9
+ print_npc_text Text049a
+ quit_script_fully
+
+.ows_deb9
+ print_npc_text Text049b
+ start_duel PRIZES_4, LOVE_TO_BATTLE_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatJessicaInFightingClub:
+ start_script
+ print_npc_text Text049c
+ give_booster_packs BOOSTER_COLOSSEUM_FIGHTING, BOOSTER_COLOSSEUM_FIGHTING, NO_BOOSTER
+ print_npc_text Text049d
+ quit_script_fully
+
+Script_LostToJessicaInFightingClub:
+ start_script
+ print_text_quit_fully Text049e
diff --git a/src/scripts/fighting_club_entrance.asm b/src/scripts/fighting_club_entrance.asm
new file mode 100644
index 0000000..d778fb6
--- /dev/null
+++ b/src/scripts/fighting_club_entrance.asm
@@ -0,0 +1,3 @@
+Script_Clerk1:
+ start_script
+ print_text_quit_fully Text045a
diff --git a/src/scripts/fighting_club_lobby.asm b/src/scripts/fighting_club_lobby.asm
new file mode 100644
index 0000000..ea7a4eb
--- /dev/null
+++ b/src/scripts/fighting_club_lobby.asm
@@ -0,0 +1,189 @@
+FightingClubLobbyAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_IMAKUNI
+ db NPC_IMAKUNI
+ dw Script_BeatImakuni
+ dw Script_LostToImakuni
+ db $00
+
+Script_Man1:
+ start_script
+ jump_if_event_equal EVENT_MAN1_GIFT_SEQUENCE_STATE, MAN1_GIFT_SEQUENCE_COMPLETE, .ows_dce8
+ jump_if_event_true EVENT_TEMP_GIFTED_TO_MAN1, .ows_dce5
+ jump_if_event_true EVENT_MAN1_TALKED, .ows_dc91
+ max_out_event_value EVENT_MAN1_TALKED
+ pick_next_man1_requested_card
+ load_man1_requested_card_into_txram_slot 0
+ print_npc_text Text045b
+ max_out_event_value EVENT_MAN1_WAITING_FOR_CARD
+ script_jump .ows_dca5
+
+.ows_dc91
+ jump_if_event_false EVENT_MAN1_WAITING_FOR_CARD, .ows_dc9d
+ load_man1_requested_card_into_txram_slot 0
+ print_npc_text Text045c
+ script_jump .ows_dca5
+
+.ows_dc9d
+ pick_next_man1_requested_card
+ load_man1_requested_card_into_txram_slot 0
+ print_npc_text Text045d
+ max_out_event_value EVENT_MAN1_WAITING_FOR_CARD
+.ows_dca5
+ load_man1_requested_card_into_txram_slot 0
+ ask_question_jump Text045e, .ows_dcaf
+ print_text_quit_fully Text045f
+
+.ows_dcaf
+ jump_if_man1_requested_card_owned .ows_dcb9
+ load_man1_requested_card_into_txram_slot 0
+ load_man1_requested_card_into_txram_slot 1
+ print_text_quit_fully Text0460
+
+.ows_dcb9
+ jump_if_man1_requested_card_in_collection .ows_dcc3
+ load_man1_requested_card_into_txram_slot 0
+ load_man1_requested_card_into_txram_slot 1
+ print_text_quit_fully Text0461
+
+.ows_dcc3
+ load_man1_requested_card_into_txram_slot 0
+ load_man1_requested_card_into_txram_slot 1
+ print_npc_text Text0462
+ remove_man1_requested_card_from_collection
+ max_out_event_value EVENT_TEMP_GIFTED_TO_MAN1
+ zero_out_event_value EVENT_MAN1_WAITING_FOR_CARD
+ increment_event_value EVENT_MAN1_GIFT_SEQUENCE_STATE
+ jump_if_event_equal EVENT_MAN1_GIFT_SEQUENCE_STATE, 5, .ows_dcd7
+ quit_script_fully
+
+.ows_dcd7
+ print_npc_text Text0463
+ give_card PIKACHU4
+ show_card_received_screen PIKACHU4
+ print_npc_text Text0464
+ set_event EVENT_MAN1_GIFT_SEQUENCE_STATE, MAN1_GIFT_SEQUENCE_COMPLETE
+ quit_script_fully
+
+.ows_dce5
+ print_text_quit_fully Text0465
+
+.ows_dce8
+ print_text_quit_fully Text0466
+
+Preload_ImakuniInFightingClubLobby:
+ get_event_value EVENT_IMAKUNI_STATE
+ cp IMAKUNI_MENTIONED
+ jr z, .load_imakuni
+ or a ; cp IMAKUNI_NOT_MENTIONED
+ jr z, .dont_load
+ get_event_value EVENT_TEMP_DUELED_IMAKUNI
+ jr nz, .dont_load
+ get_event_value EVENT_IMAKUNI_ROOM
+ cp IMAKUNI_FIGHTING_CLUB
+ jr z, .load_imakuni
+.dont_load
+ or a
+ ret
+
+.load_imakuni
+ ld a, MUSIC_IMAKUNI
+ ld [wDefaultSong], a
+ scf
+ ret
+
+Script_Imakuni:
+ start_script
+ set_event EVENT_IMAKUNI_STATE, IMAKUNI_TALKED
+ test_if_event_false EVENT_TEMP_TALKED_TO_IMAKUNI
+ print_variable_npc_text Text0467, Text0468
+ max_out_event_value EVENT_TEMP_TALKED_TO_IMAKUNI
+ ask_question_jump Text0469, .start_duel
+ print_npc_text Text046a
+ quit_script_fully
+
+.start_duel
+ print_npc_text Text046b
+ start_duel PRIZES_6, IMAKUNI_DECK_ID, MUSIC_IMAKUNI
+ quit_script_fully
+
+Script_BeatImakuni:
+ start_script
+ jump_if_event_equal EVENT_IMAKUNI_WIN_COUNT, 7, .give_boosters
+ increment_event_value EVENT_IMAKUNI_WIN_COUNT
+ jump_if_event_equal EVENT_IMAKUNI_WIN_COUNT, 3, .three_wins
+ jump_if_event_equal EVENT_IMAKUNI_WIN_COUNT, 6, .six_wins
+.give_boosters
+ print_npc_text Text046c
+ give_one_of_each_trainer_booster
+ script_jump .done
+
+.three_wins
+ print_npc_text Text046d
+ script_jump .give_imakuni_card
+
+.six_wins
+ print_npc_text Text046e
+.give_imakuni_card
+ print_npc_text Text046f
+ give_card IMAKUNI_CARD
+ show_card_received_screen IMAKUNI_CARD
+.done
+ print_npc_text Text0470
+ script_jump Script_LostToImakuni.imakuni_common
+
+Script_LostToImakuni:
+ start_script
+ print_npc_text Text0471
+.imakuni_common
+ close_text_box
+ jump_if_player_coords_match 18, 4, .ows_dd69
+ script_jump .ows_dd6e
+
+.ows_dd69
+ set_player_direction EAST
+ move_player WEST, 1
+.ows_dd6e
+ move_active_npc NPCMovement_dd78
+ unload_active_npc
+ max_out_event_value EVENT_TEMP_DUELED_IMAKUNI
+ set_default_song MUSIC_OVERWORLD
+ play_default_song
+ quit_script_fully
+
+NPCMovement_dd78:
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db EAST
+ db EAST
+ db EAST
+ db EAST
+ db EAST
+ db $ff
+
+Script_Specs1:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0472, Text0473
+ quit_script_fully
+
+Script_Butch:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0474, Text0475
+ quit_script_fully
+
+Preload_Granny1:
+ get_event_value EVENT_RECEIVED_LEGENDARY_CARDS
+ cp TRUE
+ ret
+
+Script_Granny1:
+ start_script
+ print_text_quit_fully Text0476
diff --git a/src/scripts/fire_club.asm b/src/scripts/fire_club.asm
new file mode 100644
index 0000000..56b589e
--- /dev/null
+++ b/src/scripts/fire_club.asm
@@ -0,0 +1,150 @@
+FireClubAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_JOHN
+ db NPC_JOHN
+ dw Script_BeatJohn
+ dw Script_LostToJohn
+
+ db NPC_ADAM
+ db NPC_ADAM
+ dw Script_BeatAdam
+ dw Script_LostToAdam
+
+ db NPC_JONATHAN
+ db NPC_JONATHAN
+ dw Script_BeatJonathan
+ dw Script_LostToJonathan
+
+ db NPC_KEN
+ db NPC_KEN
+ dw Script_BeatKen
+ dw Script_LostToKen
+ db $00
+
+Script_John:
+ start_script
+ print_npc_text Text06a5
+ ask_question_jump Text06a6, .ows_eec0
+ print_npc_text Text06a7
+ quit_script_fully
+
+.ows_eec0
+ print_npc_text Text06a8
+ start_duel PRIZES_4, ANGER_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatJohn:
+ start_script
+ print_npc_text Text06a9
+ give_booster_packs BOOSTER_EVOLUTION_FIRE, BOOSTER_EVOLUTION_FIRE, NO_BOOSTER
+ print_npc_text Text06aa
+ quit_script_fully
+
+Script_LostToJohn:
+ start_script
+ print_text_quit_fully Text06ab
+
+Script_Adam:
+ start_script
+ print_npc_text Text06ac
+ ask_question_jump Text06ad, .ows_eee5
+ print_npc_text Text06ae
+ quit_script_fully
+
+.ows_eee5
+ print_npc_text Text06af
+ start_duel PRIZES_4, FLAMETHROWER_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatAdam:
+ start_script
+ print_npc_text Text06b0
+ give_booster_packs BOOSTER_COLOSSEUM_FIRE, BOOSTER_COLOSSEUM_FIRE, NO_BOOSTER
+ print_npc_text Text06b1
+ quit_script_fully
+
+Script_LostToAdam:
+ start_script
+ print_text_quit_fully Text06b2
+
+Script_Jonathan:
+ start_script
+ print_npc_text Text06b3
+ ask_question_jump Text06b4, .ows_ef0a
+ print_npc_text Text06b5
+ quit_script_fully
+
+.ows_ef0a
+ print_npc_text Text06b6
+ start_duel PRIZES_4, RESHUFFLE_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatJonathan:
+ start_script
+ print_npc_text Text06b7
+ give_booster_packs BOOSTER_COLOSSEUM_FIRE, BOOSTER_COLOSSEUM_FIRE, NO_BOOSTER
+ print_npc_text Text06b8
+ quit_script_fully
+
+Script_LostToJonathan:
+ start_script
+ print_text_quit_fully Text06b9
+
+Script_Ken:
+ start_script
+ try_give_pc_pack $09
+ jump_if_event_true EVENT_KEN_HAD_ENOUGH_CARDS, .have_300_cards
+ jump_if_enough_cards_owned 300, .have_300_cards
+ test_if_event_zero EVENT_KEN_TALKED
+ print_variable_npc_text Text06ba, Text06bb
+ set_event EVENT_KEN_TALKED, TRUE
+ quit_script_fully
+
+.have_300_cards
+ max_out_event_value EVENT_KEN_HAD_ENOUGH_CARDS
+ jump_if_event_true EVENT_BEAT_KEN, Script_Ken_AlreadyHaveMedal
+ test_if_event_zero EVENT_KEN_TALKED
+ print_variable_npc_text Text06bc, Text06bd
+ set_event EVENT_KEN_TALKED, TRUE
+ ask_question_jump Text06be, .start_duel
+ print_npc_text Text06bf
+ quit_script_fully
+
+.start_duel
+ print_npc_text Text06c0
+ start_duel PRIZES_6, FIRE_CHARGE_DECK_ID, MUSIC_DUEL_THEME_2
+ quit_script_fully
+
+Script_BeatKen:
+ start_script
+ print_npc_text Text06c1
+ jump_if_event_true EVENT_BEAT_KEN, .give_booster_packs
+ max_out_event_value EVENT_BEAT_KEN
+ try_give_medal_pc_packs
+ show_medal_received_screen EVENT_BEAT_KEN
+ record_master_win $08
+ print_npc_text Text06c2
+.give_booster_packs
+ give_booster_packs BOOSTER_MYSTERY_NEUTRAL, BOOSTER_MYSTERY_NEUTRAL, NO_BOOSTER
+ print_npc_text Text06c3
+ quit_script_fully
+
+Script_LostToKen:
+ start_script
+ test_if_event_false EVENT_BEAT_KEN
+ print_variable_npc_text Text06c4, Text06c5
+ quit_script_fully
+
+Script_Ken_AlreadyHaveMedal:
+ print_npc_text Text06c6
+ ask_question_jump Text06be, .start_duel
+ print_text_quit_fully Text06bf
+
+.start_duel
+ print_npc_text Text06c7
+ start_duel PRIZES_6, FIRE_CHARGE_DECK_ID, MUSIC_DUEL_THEME_2
+ quit_script_fully
diff --git a/src/scripts/fire_club_entrance.asm b/src/scripts/fire_club_entrance.asm
new file mode 100644
index 0000000..db05bcb
--- /dev/null
+++ b/src/scripts/fire_club_entrance.asm
@@ -0,0 +1,3 @@
+Script_Clerk8:
+ start_script
+ print_text_quit_fully Text068c
diff --git a/src/scripts/fire_club_lobby.asm b/src/scripts/fire_club_lobby.asm
new file mode 100644
index 0000000..f0567a2
--- /dev/null
+++ b/src/scripts/fire_club_lobby.asm
@@ -0,0 +1,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
diff --git a/src/scripts/gift_center.asm b/src/scripts/gift_center.asm
new file mode 100644
index 0000000..c119403
--- /dev/null
+++ b/src/scripts/gift_center.asm
@@ -0,0 +1,73 @@
+; Clerk looks away from you if you can't use infrared
+; This is one of the preloads that does not change whether or not they appear
+Preload_GiftCenterClerk:
+ ld a, [wConsole]
+ cp CONSOLE_CGB
+ jr z, .cgb
+ ld a, NORTH
+ ld [wLoadNPCDirection], a
+.cgb
+ scf
+ ret
+
+Func_fc7a:
+ ld a, [wConsole]
+ ld c, a
+ set_event_value EVENT_CONSOLE
+
+ start_script
+ jump_if_event_not_equal EVENT_CONSOLE, CONSOLE_CGB, Func_fcad.ows_fcd5
+ print_npc_text Text06cd
+ gift_center 0
+ jump_if_event_greater_or_equal EVENT_GIFT_CENTER_MENU_CHOICE, GIFT_CENTER_MENU_EXIT, .ows_fcaa
+ print_npc_text Text06ce
+ ask_question_jump_default_yes Text06cf, .ows_fca0
+ print_npc_text Text06d0
+ script_jump .ows_fcaa
+
+.ows_fca0
+ save_game 0
+ play_sfx SFX_56
+ print_text Text06d1
+ gift_center 1
+ quit_script_fully
+
+.ows_fcaa
+ print_text_quit_fully Text06d2
+
+Func_fcad:
+ ld a, [wd10e]
+ ld c, a
+ set_event_value EVENT_GIFT_CENTER_MENU_CHOICE
+
+ start_script
+ play_sfx SFX_56
+ save_game 0
+ jump_if_event_equal EVENT_GIFT_CENTER_MENU_CHOICE, GIFT_CENTER_MENU_SEND_CARD, .ows_fccc
+ jump_if_event_equal EVENT_GIFT_CENTER_MENU_CHOICE, GIFT_CENTER_MENU_SEND_DECK, .ows_fccf
+ jump_if_event_equal EVENT_GIFT_CENTER_MENU_CHOICE, GIFT_CENTER_MENU_RECEIVE_DECK, .ows_fcd2
+; GIFT_CENTER_MENU_RECEIVE_CARD
+ script_jump Func_fc7a.ows_fcaa
+
+.ows_fccc
+ print_text_quit_fully Text06d3
+
+.ows_fccf
+ print_text_quit_fully Text06d4
+
+.ows_fcd2
+ print_text_quit_fully Text06d5
+
+.ows_fcd5
+ move_npc NPC_GIFT_CENTER_CLERK, NPCMovement_fce1
+ print_npc_text Text06d6
+ move_npc NPC_GIFT_CENTER_CLERK, NPCMovement_fce3
+ quit_script_fully
+
+NPCMovement_fce1:
+ db SOUTH | NO_MOVE
+ db $ff
+
+NPCMovement_fce3:
+ db NORTH | NO_MOVE
+ db $ff
diff --git a/src/scripts/grass_club.asm b/src/scripts/grass_club.asm
new file mode 100644
index 0000000..23a1c9c
--- /dev/null
+++ b/src/scripts/grass_club.asm
@@ -0,0 +1,136 @@
+GrassClubAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_KRISTIN
+ db NPC_KRISTIN
+ dw Script_BeatKristin
+ dw Script_LostToKristin
+
+ db NPC_HEATHER
+ db NPC_HEATHER
+ dw Script_BeatHeather
+ dw Script_LostToHeather
+
+ db NPC_NIKKI
+ db NPC_NIKKI
+ dw Script_BeatNikki
+ dw Script_LostToNikki
+ db $00
+
+Script_Kristin:
+ start_script
+ test_if_event_less_than EVENT_NIKKI_STATE, NIKKI_IN_ISHIHARAS_HOUSE
+ print_variable_npc_text Text0704, Text0705
+ ask_question_jump Text0706, .ows_e714
+ print_text_quit_fully Text0707
+
+.ows_e714
+ print_npc_text Text0708
+ start_duel PRIZES_4, FLOWER_GARDEN_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatKristin:
+ start_script
+ try_give_pc_pack $06
+ print_npc_text Text0709
+ give_booster_packs BOOSTER_EVOLUTION_GRASS, BOOSTER_EVOLUTION_GRASS, NO_BOOSTER
+ print_npc_text Text070a
+ max_out_event_value EVENT_BEAT_KRISTIN
+ jump_if_event_greater_or_equal EVENT_NIKKI_STATE, NIKKI_IN_GRASS_CLUB, .ows_e740
+ jump_if_event_false EVENT_BEAT_BRITTANY, .ows_e740
+ jump_if_event_false EVENT_BEAT_HEATHER, .ows_e740
+ set_event EVENT_NIKKI_STATE, NIKKI_IN_ISHIHARAS_HOUSE
+ max_out_event_value EVENT_ISHIHARAS_HOUSE_MENTIONED
+ print_npc_text Text070b
+.ows_e740
+ quit_script_fully
+
+Script_LostToKristin:
+ start_script
+ print_text_quit_fully Text070c
+
+Script_Heather:
+ start_script
+ test_if_event_less_than EVENT_NIKKI_STATE, NIKKI_IN_ISHIHARAS_HOUSE
+ print_variable_npc_text Text070d, Text070e
+ ask_question_jump Text070f, .ows_e758
+ print_text_quit_fully Text0710
+
+.ows_e758
+ print_npc_text Text0711
+ start_duel PRIZES_4, KALEIDOSCOPE_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatHeather:
+ start_script
+ test_if_event_less_than EVENT_NIKKI_STATE, NIKKI_IN_GRASS_CLUB
+ print_variable_npc_text Text0712, Text0713
+ give_booster_packs BOOSTER_COLOSSEUM_GRASS, BOOSTER_COLOSSEUM_GRASS, NO_BOOSTER
+ print_npc_text Text0714
+ max_out_event_value EVENT_BEAT_HEATHER
+ jump_if_event_greater_or_equal EVENT_NIKKI_STATE, NIKKI_IN_GRASS_CLUB, .ows_e789
+ jump_if_event_false EVENT_BEAT_BRITTANY, .ows_e789
+ jump_if_event_false EVENT_BEAT_KRISTIN, .ows_e789
+ set_event EVENT_NIKKI_STATE, NIKKI_IN_ISHIHARAS_HOUSE
+ max_out_event_value EVENT_ISHIHARAS_HOUSE_MENTIONED
+ print_npc_text Text0715
+.ows_e789
+ quit_script_fully
+
+Script_LostToHeather:
+ start_script
+ test_if_event_less_than EVENT_NIKKI_STATE, NIKKI_IN_GRASS_CLUB
+ print_variable_npc_text Text0716, Text0717
+ quit_script_fully
+
+Preload_NikkiInGrassClub:
+ get_event_value EVENT_NIKKI_STATE
+ cp NIKKI_IN_GRASS_CLUB
+ ccf
+ ret
+
+Script_Nikki:
+ ld a, [wCurMap]
+ cp ISHIHARAS_HOUSE
+ jp z, Script_NikkiInIshiharasHouse
+
+ start_script
+ test_if_event_false EVENT_BEAT_NIKKI
+ print_variable_npc_text Text0718, Text0719
+ ask_question_jump Text071a, .ows_e7bf
+ test_if_event_false EVENT_BEAT_NIKKI
+ print_variable_npc_text Text071b, Text071c
+ quit_script_fully
+
+.ows_e7bf
+ jump_if_event_true EVENT_BEAT_NIKKI, .ows_e7cb
+ print_npc_text Text071d
+ start_duel PRIZES_6, FLOWER_POWER_DECK_ID, MUSIC_DUEL_THEME_2
+ quit_script_fully
+
+.ows_e7cb
+ print_npc_text Text071e
+ start_duel PRIZES_6, FLOWER_POWER_DECK_ID, MUSIC_DUEL_THEME_2
+ quit_script_fully
+
+Script_BeatNikki:
+ start_script
+ test_if_event_false EVENT_BEAT_NIKKI
+ print_variable_npc_text Text071f, Text0720
+ jump_if_event_true EVENT_BEAT_NIKKI, .ows_e7eb
+ max_out_event_value EVENT_BEAT_NIKKI
+ try_give_medal_pc_packs
+ show_medal_received_screen EVENT_BEAT_NIKKI
+ record_master_win $05
+ print_npc_text Text0721
+.ows_e7eb
+ give_booster_packs BOOSTER_LABORATORY_NEUTRAL, BOOSTER_LABORATORY_NEUTRAL, NO_BOOSTER
+ script_jump Script_LostToNikki.ows_e7f3
+
+Script_LostToNikki:
+ start_script
+.ows_e7f3
+ print_text_quit_fully Text0722
diff --git a/src/scripts/grass_club_entrance.asm b/src/scripts/grass_club_entrance.asm
new file mode 100644
index 0000000..b101ec7
--- /dev/null
+++ b/src/scripts/grass_club_entrance.asm
@@ -0,0 +1,114 @@
+GrassClubEntranceAfterDuel:
+ ld hl, GrassClubEntranceAfterDuelTable
+ call FindEndOfDuelScript
+ ret
+
+FindEndOfDuelScript:
+ ld c, 0
+ ld a, [wDuelResult]
+ or a ; cp DUEL_WIN
+ jr z, .player_won
+ ld c, 2
+
+.player_won
+ ld a, [wNPCDuelist]
+ ld b, a
+ ld de, 5
+.check_enemy_byte_loop
+ ld a, [hli]
+ or a
+ ret z
+ cp b
+ jr z, .found_enemy
+ add hl, de
+ jr .check_enemy_byte_loop
+
+.found_enemy
+ ld a, [hli]
+ ld [wTempNPC], a
+ ld b, 0
+ add hl, bc
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ jp SetNextNPCAndScript
+
+GrassClubEntranceAfterDuelTable:
+ db NPC_MICHAEL
+ db NPC_MICHAEL
+ dw Script_BeatMichaelInGrassClubEntrance
+ dw Script_LostToMichaelInGrassClubEntrance
+
+ db NPC_RONALD2
+ db NPC_RONALD2
+ dw Script_BeatFirstRonaldDuel
+ dw Script_LostToFirstRonaldDuel
+
+ db NPC_RONALD3
+ db NPC_RONALD3
+ dw Script_BeatSecondRonaldDuel
+ dw Script_LostToSecondRonaldDuel
+ db $00
+
+Script_Clerk5:
+ start_script
+ print_text_quit_fully Text06d7
+
+Preload_MichaelInGrassClubEntrance:
+ get_event_value EVENT_PUPIL_MICHAEL_STATE
+ or a ; cp PUPIL_INACTIVE
+ ret z
+ cp PUPIL_DEFEATED
+ ret
+
+Script_Michael:
+ start_script
+ jump_if_event_greater_or_equal EVENT_PUPIL_MICHAEL_STATE, PUPIL_DEFEATED, Script_MichaelRematch
+ test_if_event_equal EVENT_PUPIL_MICHAEL_STATE, PUPIL_ACTIVE
+ print_variable_npc_text Text06d8, Text06d9
+ set_event EVENT_PUPIL_MICHAEL_STATE, PUPIL_TALKED
+ ask_question_jump Text06da, .ows_e58f
+ print_npc_text Text06db
+ quit_script_fully
+
+.ows_e58f
+ print_npc_text Text06dc
+ start_duel PRIZES_4, HEATED_BATTLE_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatMichaelInGrassClubEntrance:
+ start_script
+ set_event EVENT_PUPIL_MICHAEL_STATE, PUPIL_DEFEATED
+ print_npc_text Text06dd
+ give_booster_packs BOOSTER_COLOSSEUM_FIGHTING, BOOSTER_COLOSSEUM_FIGHTING, NO_BOOSTER
+ print_npc_text Text06de
+ close_text_box
+ move_active_npc_by_direction NPCMovementTable_e5af
+ unload_active_npc
+ quit_script_fully
+
+Script_LostToMichaelInGrassClubEntrance:
+ start_script
+ print_text_quit_fully Text06df
+
+NPCMovementTable_e5af:
+ dw NPCMovement_e5b7
+ dw NPCMovement_e5b7
+ dw NPCMovement_e5b7
+ dw NPCMovement_e5bf
+
+NPCMovement_e5b7:
+ db WEST
+ db WEST
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db $ff
+
+NPCMovement_e5bf:
+ db SOUTH
+ db WEST
+ db WEST
+ db $fe, -9
diff --git a/src/scripts/grass_club_lobby.asm b/src/scripts/grass_club_lobby.asm
new file mode 100644
index 0000000..b6ca7a2
--- /dev/null
+++ b/src/scripts/grass_club_lobby.asm
@@ -0,0 +1,140 @@
+GrassClubLobbyAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_BRITTANY
+ db NPC_BRITTANY
+ dw Script_BeatBrittany
+ dw Script_LostToBrittany
+ db $00
+
+Script_Brittany:
+ start_script
+ test_if_event_less_than EVENT_NIKKI_STATE, NIKKI_IN_ISHIHARAS_HOUSE
+ print_variable_npc_text Text06e0, Text06e1
+ ask_question_jump Text06e2, .start_duel
+ print_npc_text Text06e3
+ quit_script_fully
+
+.start_duel
+ print_npc_text Text06e4
+ start_duel PRIZES_4, ETCETERA_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatBrittany:
+ start_script
+ print_npc_text Text06e5
+ give_booster_packs BOOSTER_MYSTERY_GRASS_COLORLESS, BOOSTER_MYSTERY_GRASS_COLORLESS, NO_BOOSTER
+ test_if_event_less_than EVENT_NIKKI_STATE, NIKKI_IN_GRASS_CLUB
+ print_variable_npc_text Text06e6, Text06e7
+ max_out_event_value EVENT_BEAT_BRITTANY
+ jump_if_event_greater_or_equal EVENT_NIKKI_STATE, NIKKI_IN_GRASS_CLUB, .quit
+ jump_if_event_false EVENT_BEAT_KRISTIN, .quit
+ jump_if_event_false EVENT_BEAT_HEATHER, .quit
+ set_event EVENT_NIKKI_STATE, NIKKI_IN_ISHIHARAS_HOUSE
+ max_out_event_value EVENT_ISHIHARAS_HOUSE_MENTIONED
+ print_npc_text Text06e8
+.quit
+ quit_script_fully
+
+Script_LostToBrittany:
+ start_script
+ print_text_quit_fully Text06e9
+
+Script_e61c:
+ print_text_quit_fully Text06ea
+
+Script_Lass2:
+ start_script
+ jump_if_event_true EVENT_TEMP_TRADED_WITH_LASS2, Script_e61c
+ jump_if_event_greater_or_equal EVENT_LASS2_TRADE_STATE, LASS2_TRADES_COMPLETE, Script_e61c
+ jump_if_event_greater_or_equal EVENT_LASS2_TRADE_STATE, LASS2_TRADE_3_AVAILABLE, .ows_e6a1
+ jump_if_event_greater_or_equal EVENT_LASS2_TRADE_STATE, LASS2_TRADE_2_AVAILABLE, .ows_e66a
+ test_if_event_equal EVENT_LASS2_TRADE_STATE, LASS2_TRADE_1_AVAILABLE
+ print_variable_npc_text Text06eb, Text06ec
+ set_event EVENT_LASS2_TRADE_STATE, LASS2_TRADE_1_OFFERED
+ ask_question_jump Text06ed, .ows_e648
+ print_text_quit_fully Text06ee
+
+.ows_e648
+ jump_if_card_owned ODDISH, .ows_e64f
+ print_text_quit_fully Text06ef
+
+.ows_e64f
+ jump_if_card_in_collection ODDISH, .ows_e656
+ print_text_quit_fully Text06f0
+
+.ows_e656
+ max_out_event_value EVENT_TEMP_TRADED_WITH_LASS2
+ set_event EVENT_LASS2_TRADE_STATE, LASS2_TRADE_2_AVAILABLE
+ print_npc_text Text06f1
+ print_text Text06f2
+ take_card ODDISH
+ give_card VILEPLUME
+ show_card_received_screen VILEPLUME
+ print_text_quit_fully Text06f3
+
+.ows_e66a
+ test_if_event_equal EVENT_LASS2_TRADE_STATE, LASS2_TRADE_2_AVAILABLE
+ print_variable_npc_text Text06f4, Text06f5
+ set_event EVENT_LASS2_TRADE_STATE, LASS2_TRADE_2_OFFERED
+ ask_question_jump Text06ed, .ows_e67f
+ print_text_quit_fully Text06f6
+
+.ows_e67f
+ jump_if_card_owned CLEFAIRY, .ows_e686
+ print_text_quit_fully Text06f7
+
+.ows_e686
+ jump_if_card_in_collection CLEFAIRY, .ows_e68d
+ print_text_quit_fully Text06f8
+
+.ows_e68d
+ max_out_event_value EVENT_TEMP_TRADED_WITH_LASS2
+ set_event EVENT_LASS2_TRADE_STATE, LASS2_TRADE_3_AVAILABLE
+ print_npc_text Text06f9
+ print_text Text06fa
+ take_card CLEFAIRY
+ give_card PIKACHU3
+ show_card_received_screen PIKACHU3
+ print_text_quit_fully Text06f3
+
+.ows_e6a1
+ test_if_event_equal EVENT_LASS2_TRADE_STATE, LASS2_TRADE_3_AVAILABLE
+ print_variable_npc_text Text06fb, Text06fc
+ set_event EVENT_LASS2_TRADE_STATE, LASS2_TRADE_3_OFFERED
+ ask_question_jump Text06ed, .ows_e6b6
+ print_text_quit_fully Text06fd
+
+.ows_e6b6
+ jump_if_card_owned CHARIZARD, .ows_e6bd
+ print_text_quit_fully Text06fe
+
+.ows_e6bd
+ jump_if_card_in_collection CHARIZARD, .ows_e6c4
+ print_text_quit_fully Text06ff
+
+.ows_e6c4
+ max_out_event_value EVENT_TEMP_TRADED_WITH_LASS2
+ set_event EVENT_LASS2_TRADE_STATE, LASS2_TRADES_COMPLETE
+ print_npc_text Text0700
+ print_text Text0701
+ take_card CHARIZARD
+ give_card BLASTOISE
+ show_card_received_screen BLASTOISE
+ print_text_quit_fully Text06f3
+
+Script_Granny2:
+ start_script
+ print_text_quit_fully Text0702
+
+Preload_Gal2:
+ get_event_value EVENT_RECEIVED_LEGENDARY_CARDS
+ cp TRUE
+ ret
+
+Script_Gal2:
+ start_script
+ print_text_quit_fully Text0703
diff --git a/src/scripts/hall_of_honor.asm b/src/scripts/hall_of_honor.asm
new file mode 100644
index 0000000..7f5647a
--- /dev/null
+++ b/src/scripts/hall_of_honor.asm
@@ -0,0 +1,48 @@
+HallOfHonorLoadMap:
+ ld a, SFX_10
+ call PlaySFX
+ ret
+
+Script_fbe1:
+ start_script
+ print_text Text05b5
+ ask_question_jump_default_yes Text05b6, .ows_fbee
+ print_text Text05b7
+ quit_script_fully
+
+.ows_fbee
+ open_deck_machine $0a
+ quit_script_fully
+
+Script_fbf1:
+ start_script
+ jump_if_event_true EVENT_RECEIVED_LEGENDARY_CARDS, .ows_fc10
+ max_out_event_value EVENT_RECEIVED_LEGENDARY_CARDS
+ print_text Text05b8
+ give_card ZAPDOS3
+ give_card MOLTRES2
+ give_card ARTICUNO2
+ give_card DRAGONITE1
+ show_card_received_screen $ff
+.ows_fc05
+ flash_screen 0
+ print_text Text05b9
+.ows_fc0a
+ flash_screen 1
+ save_game 1
+ play_credits
+ quit_script_fully
+
+.ows_fc10
+ jump_if_event_equal EVENT_LEGENDARY_CARDS_RECEIVED_FLAGS, %1111, .ows_fc20
+ pick_legendary_card
+ print_text Text05ba
+ give_card VARIABLE_CARD
+ show_card_received_screen VARIABLE_CARD
+ script_jump .ows_fc05
+
+.ows_fc20
+ print_text Text05bb
+ flash_screen 0
+ print_text Text05bc
+ script_jump .ows_fc0a
diff --git a/src/scripts/ishiharas_house.asm b/src/scripts/ishiharas_house.asm
new file mode 100644
index 0000000..d369363
--- /dev/null
+++ b/src/scripts/ishiharas_house.asm
@@ -0,0 +1,219 @@
+Preload_NikkiInIshiharasHouse:
+ get_event_value EVENT_NIKKI_STATE
+ cp NIKKI_IN_ISHIHARAS_HOUSE
+ jr nz, .dont_load
+ scf
+ ret
+.dont_load
+ or a
+ ret
+
+Script_NikkiInIshiharasHouse:
+ start_script
+ print_npc_text Text0723
+ set_event EVENT_NIKKI_STATE, NIKKI_IN_GRASS_CLUB
+ close_text_box
+ jump_if_npc_loaded NPC_ISHIHARA, .ows_dafb
+ move_active_npc_by_direction NPCMovementTable_db24
+ script_jump .ows_db0f
+
+.ows_dafb
+ move_active_npc_by_direction NPCMovementTable_db11
+ print_npc_text Text0724
+ set_dialog_npc NPC_ISHIHARA
+ print_npc_text Text0725
+ set_dialog_npc NPC_NIKKI
+ print_npc_text Text0726
+ close_text_box
+ move_active_npc NPCMovement_db31
+.ows_db0f
+ unload_active_npc
+ quit_script_fully
+
+NPCMovementTable_db11:
+ dw NPCMovement_db19
+ dw NPCMovement_db20
+ dw NPCMovement_db19
+ dw NPCMovement_db19
+
+NPCMovement_db19:
+ db EAST
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db EAST
+ db NORTH | NO_MOVE
+ db $ff
+
+NPCMovement_db20:
+ db SOUTH
+ db EAST
+ db $fe, -8
+
+NPCMovementTable_db24:
+ dw NPCMovement_db2c
+ dw NPCMovement_db39
+ dw NPCMovement_db2c
+ dw NPCMovement_db2c
+
+NPCMovement_db2c:
+ db EAST
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db EAST
+NPCMovement_db31:
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db $ff
+
+NPCMovement_db39:
+ db SOUTH
+ db EAST
+ db $fe, -14
+
+Preload_IshiharaInIshiharasHouse:
+ get_event_value EVENT_ISHIHARA_MENTIONED
+ or a
+ ret z
+ get_event_value EVENT_ISHIHARA_TRADE_STATE
+ cp ISHIHARA_LEFT
+ ret
+
+Script_Ishihara:
+ start_script
+ max_out_event_value EVENT_ISHIHARA_MET
+ jump_if_event_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_INTRODUCTION, .ows_db80
+ jump_if_event_true EVENT_ISHIHARA_CONGRATULATED_PLAYER, .ows_db5a
+ jump_if_event_true EVENT_RECEIVED_LEGENDARY_CARDS, .ows_dc3e
+.ows_db5a
+ jump_if_event_true EVENT_TEMP_TRADED_WITH_ISHIHARA, .ows_db90
+ jump_if_event_false EVENT_ISHIHARA_WANTS_TO_TRADE, .ows_db90
+ jump_if_event_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_1_RUMORED, .ows_db93
+ jump_if_event_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_1_OFFERED, .ows_db93
+ jump_if_event_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_2_RUMORED, .ows_dbcc
+ jump_if_event_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_2_OFFERED, .ows_dbcc
+ jump_if_event_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_3_RUMORED, .ows_dc05
+ jump_if_event_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_3_OFFERED, .ows_dc05
+.ows_db80
+ max_out_event_value EVENT_TEMP_TRADED_WITH_ISHIHARA
+ set_event EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_1_RUMORED
+ zero_out_event_value EVENT_ISHIHARA_WANTS_TO_TRADE
+ jump_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS, .ows_db8d
+ max_out_event_value EVENT_ISHIHARA_CONGRATULATED_PLAYER
+.ows_db8d
+ print_text_quit_fully Text0727
+
+.ows_db90
+ print_text_quit_fully Text0728
+
+.ows_db93
+ test_if_event_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_1_RUMORED
+ print_variable_npc_text Text0729, Text072a
+ set_event EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_1_OFFERED
+ ask_question_jump Text072b, .check_if_clefable_owned
+ print_text_quit_fully Text072c
+
+.check_if_clefable_owned
+ jump_if_card_owned CLEFABLE, .check_if_clefable_in_collection
+ print_text_quit_fully Text072d
+
+.check_if_clefable_in_collection
+ jump_if_card_in_collection CLEFABLE, .do_clefable_trade
+ print_text_quit_fully Text072e
+
+.do_clefable_trade
+ max_out_event_value EVENT_TEMP_TRADED_WITH_ISHIHARA
+ set_event EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_2_RUMORED
+ zero_out_event_value EVENT_ISHIHARA_WANTS_TO_TRADE
+ print_npc_text Text072f
+ print_text Text0730
+ take_card CLEFABLE
+ give_card SURFING_PIKACHU1
+ show_card_received_screen SURFING_PIKACHU1
+ print_text_quit_fully Text0731
+
+.ows_dbcc
+ test_if_event_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_2_RUMORED
+ print_variable_npc_text Text0732, Text0733
+ set_event EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_2_OFFERED
+ ask_question_jump Text072b, .check_if_ditto_owned
+ print_text_quit_fully Text072c
+
+.check_if_ditto_owned
+ jump_if_card_owned DITTO, .check_if_ditto_in_collection
+ print_text_quit_fully Text0734
+
+.check_if_ditto_in_collection
+ jump_if_card_in_collection DITTO, .do_ditto_trade
+ print_text_quit_fully Text0735
+
+.do_ditto_trade
+ max_out_event_value EVENT_TEMP_TRADED_WITH_ISHIHARA
+ set_event EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_3_RUMORED
+ zero_out_event_value EVENT_ISHIHARA_WANTS_TO_TRADE
+ print_npc_text Text072f
+ print_text Text0736
+ take_card DITTO
+ give_card FLYING_PIKACHU
+ show_card_received_screen FLYING_PIKACHU
+ print_text_quit_fully Text0737
+
+.ows_dc05
+ test_if_event_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_3_RUMORED
+ print_variable_npc_text Text0738, Text0739
+ set_event EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_3_OFFERED
+ ask_question_jump Text072b, .check_if_chansey_owned
+ print_text_quit_fully Text072c
+
+.check_if_chansey_owned
+ jump_if_card_owned CHANSEY, .check_if_chansey_in_collection
+ print_text_quit_fully Text073a
+
+.check_if_chansey_in_collection
+ jump_if_card_in_collection CHANSEY, .do_chansey_trade
+ print_text_quit_fully Text073b
+
+.do_chansey_trade
+ max_out_event_value EVENT_TEMP_TRADED_WITH_ISHIHARA
+ set_event EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADES_COMPLETE
+ zero_out_event_value EVENT_ISHIHARA_WANTS_TO_TRADE
+ print_npc_text Text072f
+ print_text Text073c
+ take_card CHANSEY
+ give_card SURFING_PIKACHU2
+ show_card_received_screen SURFING_PIKACHU2
+ print_text_quit_fully Text073d
+
+.ows_dc3e
+ max_out_event_value EVENT_ISHIHARA_CONGRATULATED_PLAYER
+ print_text_quit_fully Text073e
+
+Preload_Ronald1InIshiharasHouse:
+ get_event_value EVENT_RECEIVED_LEGENDARY_CARDS
+ cp TRUE
+ ccf
+ ret
+
+Script_Ronald:
+ start_script
+ jump_if_event_true EVENT_RONALD_TALKED, .ows_dc55
+ max_out_event_value EVENT_RONALD_TALKED
+ print_text_quit_fully Text073f
+
+.ows_dc55
+ print_npc_text Text0740
+ ask_question_jump Text0741, .ows_dc60
+ print_text_quit_fully Text0742
+
+.ows_dc60
+ print_text_quit_fully Text0743
+
+ ; could be a commented function, or could be placed by mistake from
+ ; someone thinking that the Ronald script ended with more code execution
+ ret
diff --git a/src/scripts/lightning_club.asm b/src/scripts/lightning_club.asm
new file mode 100644
index 0000000..ab06ffe
--- /dev/null
+++ b/src/scripts/lightning_club.asm
@@ -0,0 +1,184 @@
+LightningClubAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_JENNIFER
+ db NPC_JENNIFER
+ dw Script_BeatJennifer
+ dw Script_LostToJennifer
+
+ db NPC_NICHOLAS
+ db NPC_NICHOLAS
+ dw Script_BeatNicholas
+ dw Script_LostToNicholas
+
+ db NPC_BRANDON
+ db NPC_BRANDON
+ dw Script_BeatBrandon
+ dw Script_LostToBrandon
+
+ db NPC_ISAAC
+ db NPC_ISAAC
+ dw Script_BeatIsaac
+ dw Script_LostToIsaac
+ db $00
+
+Script_Jennifer:
+ start_script
+ print_npc_text Text061b
+ ask_question_jump Text061c, .ows_e415
+ print_npc_text Text061d
+ quit_script_fully
+
+.ows_e415
+ print_npc_text Text061e
+ start_duel PRIZES_4, PIKACHU_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatJennifer:
+ start_script
+ max_out_event_value EVENT_BEAT_JENNIFER
+ print_npc_text Text061f
+ give_booster_packs BOOSTER_MYSTERY_LIGHTNING_COLORLESS, BOOSTER_MYSTERY_LIGHTNING_COLORLESS, NO_BOOSTER
+ print_npc_text Text0620
+ quit_script_fully
+
+Script_LostToJennifer:
+ start_script
+ print_text_quit_fully Text0621
+
+Script_Nicholas:
+ start_script
+ print_npc_text Text0622
+ ask_question_jump Text0623, .ows_e43c
+ print_npc_text Text0624
+ quit_script_fully
+
+.ows_e43c
+ print_npc_text Text0625
+ start_duel PRIZES_4, BOOM_BOOM_SELFDESTRUCT_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatNicholas:
+ start_script
+ max_out_event_value EVENT_BEAT_NICHOLAS
+ print_npc_text Text0626
+ give_booster_packs BOOSTER_COLOSSEUM_LIGHTNING, BOOSTER_COLOSSEUM_LIGHTNING, NO_BOOSTER
+ print_npc_text Text0627
+ quit_script_fully
+
+Script_LostToNicholas:
+ start_script
+ print_text_quit_fully Text0628
+
+Script_Brandon:
+ start_script
+ jump_if_event_false EVENT_BEAT_JENNIFER, .ows_e469
+ jump_if_event_false EVENT_BEAT_NICHOLAS, .ows_e469
+ jump_if_event_false EVENT_BEAT_BRANDON, .ows_e469
+ print_npc_text Text0629
+ script_jump .ows_e46c
+
+.ows_e469
+ print_npc_text Text062a
+.ows_e46c
+ print_npc_text Text062b
+ ask_question_jump Text062c, .ows_e478
+ print_npc_text Text062d
+ quit_script_fully
+
+.ows_e478
+ print_npc_text Text062e
+ start_duel PRIZES_4, POWER_GENERATOR_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatBrandon:
+ start_script
+ try_give_pc_pack $05
+ max_out_event_value EVENT_BEAT_BRANDON
+ print_npc_text Text062f
+ give_booster_packs BOOSTER_COLOSSEUM_LIGHTNING, BOOSTER_COLOSSEUM_LIGHTNING, NO_BOOSTER
+ print_npc_text Text0630
+ quit_script_fully
+
+Script_LostToBrandon:
+ start_script
+ print_text_quit_fully Text0631
+
+Preload_Isaac:
+ get_event_value EVENT_BEAT_JENNIFER
+ jr z, .asm_e4ab
+ get_event_value EVENT_BEAT_NICHOLAS
+ jr z, .asm_e4ab
+ get_event_value EVENT_BEAT_BRANDON
+ jr z, .asm_e4ab
+ ld a, SOUTH
+ ld [wLoadNPCDirection], a
+.asm_e4ab
+ scf
+ ret
+
+Script_Isaac:
+ start_script
+ jump_if_event_false EVENT_BEAT_JENNIFER, .ows_e4bd
+ jump_if_event_false EVENT_BEAT_NICHOLAS, .ows_e4bd
+ jump_if_event_false EVENT_BEAT_BRANDON, .ows_e4bd
+ script_jump .ows_e4c1
+
+.ows_e4bd
+ print_npc_text Text0632
+ quit_script_fully
+
+.ows_e4c1
+ jump_if_event_true EVENT_BEAT_ISAAC, Script_LostToIsaac.ows_e503
+ test_if_event_false EVENT_ISAAC_TALKED
+ print_variable_npc_text Text0633, Text0634
+ max_out_event_value EVENT_ISAAC_TALKED
+ ask_question_jump Text0635, .ows_e4d9
+ print_npc_text Text0636
+ quit_script_fully
+
+.ows_e4d9
+ print_npc_text Text0637
+ start_duel PRIZES_6, ZAPPING_SELFDESTRUCT_DECK_ID, MUSIC_DUEL_THEME_2
+ quit_script_fully
+
+Script_BeatIsaac:
+ start_script
+ jump_if_event_true EVENT_BEAT_ISAAC, Script_LostToIsaac.ows_e517
+ print_npc_text Text0638
+ max_out_event_value EVENT_BEAT_ISAAC
+ try_give_medal_pc_packs
+ show_medal_received_screen EVENT_BEAT_ISAAC
+ record_master_win $04
+ print_npc_text Text0639
+ give_booster_packs BOOSTER_MYSTERY_LIGHTNING_COLORLESS, BOOSTER_MYSTERY_LIGHTNING_COLORLESS, NO_BOOSTER
+ print_npc_text Text063a
+ quit_script_fully
+
+Script_LostToIsaac:
+ start_script
+ jump_if_event_true EVENT_BEAT_ISAAC, .ows_e522
+ print_text_quit_fully Text063b
+
+.ows_e503
+ print_npc_text Text063c
+ ask_question_jump Text0635, .ows_e50f
+ print_npc_text Text063d
+ quit_script_fully
+
+.ows_e50f
+ print_npc_text Text063e
+ start_duel PRIZES_6, ZAPPING_SELFDESTRUCT_DECK_ID, MUSIC_DUEL_THEME_2
+ quit_script_fully
+
+.ows_e517
+ print_npc_text Text063f
+ give_booster_packs BOOSTER_MYSTERY_LIGHTNING_COLORLESS, BOOSTER_MYSTERY_LIGHTNING_COLORLESS, NO_BOOSTER
+ print_npc_text Text0640
+ quit_script_fully
+
+.ows_e522
+ print_text_quit_fully Text0641
diff --git a/src/scripts/lightning_club_entrance.asm b/src/scripts/lightning_club_entrance.asm
new file mode 100644
index 0000000..0ad1835
--- /dev/null
+++ b/src/scripts/lightning_club_entrance.asm
@@ -0,0 +1,3 @@
+Script_Clerk4:
+ start_script
+ print_text_quit_fully Text060e
diff --git a/src/scripts/lightning_club_lobby.asm b/src/scripts/lightning_club_lobby.asm
new file mode 100644
index 0000000..e9432b7
--- /dev/null
+++ b/src/scripts/lightning_club_lobby.asm
@@ -0,0 +1,72 @@
+LightningClubLobbyAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_IMAKUNI
+ db NPC_IMAKUNI
+ dw Script_BeatImakuni
+ dw Script_LostToImakuni
+ db $00
+
+Preload_ImakuniInLightningClubLobby:
+ get_event_value EVENT_IMAKUNI_STATE
+ cp IMAKUNI_TALKED
+ jr c, .dont_load
+ get_event_value EVENT_TEMP_DUELED_IMAKUNI
+ jr nz, .dont_load
+ get_event_value EVENT_IMAKUNI_ROOM
+ cp IMAKUNI_LIGHTNING_CLUB
+ jr z, .load_imakuni
+.dont_load
+ or a
+ ret
+
+.load_imakuni
+ ld a, MUSIC_IMAKUNI
+ ld [wDefaultSong], a
+ scf
+ ret
+
+Script_Chap2:
+ start_script
+ jump_if_event_equal EVENT_CHAP2_TRADE_STATE, CHAP2_TRADE_COMPLETED, .ows_e3d6
+ test_if_event_equal EVENT_CHAP2_TRADE_STATE, CHAP2_TRADE_NOT_OFFERED
+ print_variable_npc_text Text060f, Text0610
+ set_event EVENT_CHAP2_TRADE_STATE, CHAP2_TRADE_OFFERED
+ ask_question_jump Text0611, .ows_e3b6
+ print_npc_text Text0612
+ quit_script_fully
+
+.ows_e3b6
+ jump_if_card_owned ELECTABUZZ2, .ows_e3be
+ print_npc_text Text0613
+ quit_script_fully
+
+.ows_e3be
+ jump_if_card_in_collection ELECTABUZZ2, .ows_e3c6
+ print_npc_text Text0614
+ quit_script_fully
+
+.ows_e3c6
+ set_event EVENT_CHAP2_TRADE_STATE, CHAP2_TRADE_COMPLETED
+ print_npc_text Text0615
+ take_card ELECTABUZZ2
+ give_card ELECTABUZZ1
+ show_card_received_screen ELECTABUZZ1
+ print_npc_text Text0616
+ quit_script_fully
+
+.ows_e3d6
+ print_text_quit_fully Text0617
+
+Script_Lass4:
+ start_script
+ print_text_quit_fully Text0618
+
+Script_Hood1:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0619, Text061a
+ quit_script_fully
diff --git a/src/scripts/mason_laboratory.asm b/src/scripts/mason_laboratory.asm
new file mode 100644
index 0000000..24336f5
--- /dev/null
+++ b/src/scripts/mason_laboratory.asm
@@ -0,0 +1,509 @@
+Script_BeginGame:
+ start_script
+ do_frames 60
+ walk_player_to_mason_lab
+ do_frames 120
+ enter_map $02, MASON_LABORATORY, 14, 26, NORTH
+ quit_script_fully
+
+MasonLaboratoryAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_SAM
+ db NPC_SAM
+ dw Script_BeatSam
+ dw Script_LostToSam
+ db $00
+
+MasonLabLoadMap:
+ get_event_value EVENT_MASON_LAB_STATE
+ cp MASON_LAB_RECEIVED_STARTER_DECK
+ ret nc
+ ld a, NPC_DRMASON
+ ld [wTempNPC], a
+ call FindLoadedNPC
+ ld bc, Script_EnterLabFirstTime
+ jp SetNextNPCAndScript
+
+MasonLabCloseTextBox:
+ ld a, MAP_EVENT_CHALLENGE_MACHINE
+ farcall Func_80b89
+ ret
+
+; Lets you access the Challenge Machine if available
+MasonLabPressedA:
+ get_event_value EVENT_RECEIVED_LEGENDARY_CARDS
+ or a
+ ret z
+ ld hl, ChallengeMachineObjectTable
+ call FindExtraInteractableObjects
+ ret
+
+ChallengeMachineObjectTable:
+ db 10, 4, NORTH
+ dw Script_ChallengeMachine
+ db 12, 4, NORTH
+ dw Script_ChallengeMachine
+ db $00
+
+Script_ChallengeMachine:
+ start_script
+ print_text ItsTheChallengeMachineText
+ challenge_machine
+ quit_script_fully
+
+Script_Tech1:
+ lb bc, 0, EnergyCardList.end - EnergyCardList
+ ld hl, EnergyCardList
+.count_loop
+ ld a, [hli]
+ call GetCardCountInCollection
+ add b
+ ld b, a
+ dec c
+ jr nz, .count_loop
+ ld a, b
+ cp 10
+ jr c, .low_on_energies
+
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Tech1MasterMedalExplanationText, Tech1AutoDeckMachineExplanationText
+ quit_script_fully
+
+.low_on_energies
+ ld c, EnergyCardList.end - EnergyCardList
+ ld hl, EnergyCardList
+.next_energy_card
+ ld b, 10
+ ld a, [hli]
+.add_loop
+ push af
+ call AddCardToCollection
+ pop af
+ dec b
+ jr nz, .add_loop
+ dec c
+ jr nz, .next_energy_card
+
+ start_script
+ print_npc_text Tech1FewEnergyCardsText
+ pause_song
+ play_song MUSIC_BOOSTER_PACK
+ print_npc_text Tech1ReceivedEnergyCardsText
+ wait_for_song_to_finish
+ resume_song
+ print_text_quit_fully Tech1GoodbyeText
+
+EnergyCardList:
+ db GRASS_ENERGY
+ db FIRE_ENERGY
+ db WATER_ENERGY
+ db LIGHTNING_ENERGY
+ db FIGHTING_ENERGY
+ db PSYCHIC_ENERGY
+.end
+
+Script_Tech2:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Tech2LegendaryCardsExplanationText, Tech2LegendaryCardsCongratsText
+ quit_script_fully
+
+Script_Tech3:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Tech3BoosterPackExplanationText, Tech3LegendaryCardsCongratsText
+ quit_script_fully
+
+Script_Tech4:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Tech4ClubsExplanationText, Tech4DefeatedTheGrandMastersText
+ quit_script_fully
+
+Preload_Tech5:
+ get_event_value EVENT_RECEIVED_LEGENDARY_CARDS
+ or a
+ jr z, .skip
+ ld hl, wLoadNPCXPos
+ inc [hl]
+ inc [hl]
+.skip
+ scf
+ ret
+
+Script_Tech5:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Tech5DiaryAndEmailExplanationText, Tech5ChallengeMachineExplanationText
+ quit_script_fully
+
+Preload_Sam:
+ get_event_value EVENT_MASON_LAB_STATE
+ cp MASON_LAB_IN_PRACTICE_DUEL
+ jr nc, .sam_at_table
+ ld a, $0a
+ ld [wLoadNPCXPos], a
+ ld a, $08
+ ld [wLoadNPCYPos], a
+ ld a, SOUTH
+ ld [wLoadNPCDirection], a
+.sam_at_table
+ scf
+ ret
+
+Script_Sam:
+ start_script
+ show_sam_normal_multichoice
+ close_text_box
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_NORMAL_DUEL, .ows_d63b
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_RULES, Script_LostToSam.ows_d6b0
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_NOTHING, .ows_d637
+; SAM_MENU_PRACTICE_DUEL
+ print_npc_text Text05cb
+ ask_question_jump Text05cc, .ows_d647
+.ows_d637
+ print_npc_text Text05cd
+ quit_script_fully
+
+.ows_d63b
+ print_npc_text Text05ce
+ ask_question_jump Text05cf, .ows_d647
+ print_npc_text Text05d0
+ quit_script_fully
+
+.ows_d647
+ close_text_box
+ jump_if_player_coords_match 4, 12, .ows_above_sam
+ jump_if_player_coords_match 2, 14, .ows_left_of_sam
+; ows_below_sam
+ set_player_direction WEST
+ move_player WEST, 1
+ set_player_direction NORTH
+ move_player NORTH, 1
+.ows_left_of_sam
+ set_player_direction NORTH
+ move_player NORTH, 1
+ set_player_direction EAST
+ move_player EAST, 1
+.ows_above_sam
+ set_player_direction EAST
+ move_player EAST, 1
+ move_player EAST, 1
+ move_player EAST, 1
+ set_player_direction SOUTH
+ move_player SOUTH, 1
+ set_player_direction WEST
+ move_active_npc NPCMovement_d889
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_NORMAL_DUEL, .ows_d685
+ start_duel PRIZES_2, SAMS_PRACTICE_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+.ows_d685
+ start_duel PRIZES_2, SAMS_NORMAL_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatSam:
+ start_script
+ jump_if_event_equal EVENT_MASON_LAB_STATE, MASON_LAB_IN_PRACTICE_DUEL, Script_EnterLabFirstTime.ows_d82d
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_PRACTICE_DUEL, Script_LostToSam.ows_d6ad
+ print_npc_text Text05d1
+ give_booster_packs BOOSTER_ENERGY_RANDOM, NO_BOOSTER, NO_BOOSTER
+ print_text_quit_fully Text05d2
+
+Script_LostToSam:
+ start_script
+ jump_if_event_equal EVENT_MASON_LAB_STATE, MASON_LAB_IN_PRACTICE_DUEL, Script_EnterLabFirstTime.ows_d82d
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_PRACTICE_DUEL, .ows_d6ad
+ print_text_quit_fully Text05d3
+
+.ows_d6ad
+ print_text_quit_fully Text05d4
+
+.ows_d6b0
+ print_npc_text Text05d5
+.ows_d6b3
+ close_text_box
+ show_sam_rules_multichoice
+ close_text_box
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_NOTHING_TO_ASK, Script_Sam.ows_d637
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_ATTACKING, .ows_d6df
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_RETREATING, .ows_d6e5
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_EVOLVING, .ows_d6eb
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_POKEMON_POWER, .ows_d6f1
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_ENDING_YOUR_TURN, .ows_d6f7
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_WIN_OR_LOSS, .ows_d6fd
+; SAM_MENU_ENERGY
+ print_npc_text Text05d6
+ script_jump .ows_d6b3
+
+.ows_d6df
+ print_npc_text Text05d7
+ script_jump .ows_d6b3
+
+.ows_d6e5
+ print_npc_text Text05d8
+ script_jump .ows_d6b3
+
+.ows_d6eb
+ print_npc_text Text05d9
+ script_jump .ows_d6b3
+
+.ows_d6f1
+ print_npc_text Text05da
+ script_jump .ows_d6b3
+
+.ows_d6f7
+ print_npc_text Text05db
+ script_jump .ows_d6b3
+
+.ows_d6fd
+ print_npc_text Text05dc
+ script_jump .ows_d6b3
+
+Func_d703:
+ get_event_value EVENT_RECEIVED_LEGENDARY_CARDS
+ or a
+ ret z
+ ld a, $0a
+ farcall Func_80ba4
+ ret
+
+Preload_DrMason:
+ call Func_d703
+ get_event_value EVENT_MASON_LAB_STATE
+ cp MASON_LAB_IN_PRACTICE_DUEL
+ jr nz, .not_practice_duel
+ ld a, $06
+ ld [wLoadNPCXPos], a
+ ld a, $0c
+ ld [wLoadNPCYPos], a
+.not_practice_duel
+ scf
+ ret
+
+Script_DrMason:
+ start_script
+ jump_if_event_true EVENT_RONALD_FIRST_CLUB_ENTRANCE_ENCOUNTER, .ows_d72f
+ print_text_quit_fully Text05dd
+
+.ows_d72f
+ try_give_medal_pc_packs
+ jump_if_event_greater_or_equal EVENT_MEDAL_COUNT, 2, .ows_d738
+ print_text_quit_fully Text05de
+
+.ows_d738
+ jump_if_event_greater_or_equal EVENT_MEDAL_COUNT, 7, .ows_d740
+ print_text_quit_fully Text05df
+
+.ows_d740
+ jump_if_event_true EVENT_RECEIVED_LEGENDARY_CARDS, .ows_d747
+ print_text_quit_fully Text05e0
+
+.ows_d747
+ jump_if_event_true EVENT_DRMASON_CONGRATULATED_PLAYER, .ows_d750
+ max_out_event_value EVENT_DRMASON_CONGRATULATED_PLAYER
+ print_text_quit_fully Text05e1
+
+.ows_d750
+ print_text_quit_fully Text05e2
+
+Script_EnterLabFirstTime:
+ start_script
+ move_player NORTH, 2
+ move_player NORTH, 2
+ move_player NORTH, 2
+ move_player NORTH, 2
+ move_player NORTH, 2
+ move_player NORTH, 2
+ move_player NORTH, 2
+ move_player NORTH, 2
+ move_player NORTH, 2
+ print_npc_text Text05e3
+ close_advanced_text_box
+ set_next_npc_and_script NPC_SAM, .ows_d779
+ end_script
+ ret
+
+.ows_d779
+ start_script
+ move_active_npc NPCMovement_d880
+ print_npc_text Text05e4
+ set_dialog_npc NPC_DRMASON
+ print_npc_text Text05e5
+ close_text_box
+ move_active_npc NPCMovement_d882
+ set_active_npc_direction EAST
+ set_player_direction WEST
+ close_advanced_text_box
+ set_next_npc_and_script NPC_DRMASON, .ows_d794
+ end_script
+ ret
+
+.ows_d794
+ start_script
+ move_active_npc NPCMovement_d88b
+ do_frames 40
+ print_npc_text Text05e6
+ close_text_box
+ move_player WEST, 1
+ move_player WEST, 1
+ set_player_direction SOUTH
+ move_player SOUTH, 1
+ move_player SOUTH, 1
+ move_player SOUTH, 1
+ set_player_direction WEST
+ move_active_npc NPCMovement_d894
+ print_npc_text Text05e7
+ set_dialog_npc NPC_SAM
+ print_npc_text Text05e8
+.ows_d7bc
+ close_text_box
+ show_sam_rules_multichoice
+ close_text_box
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_NOTHING_TO_ASK, .ows_d80c
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_ATTACKING, .ows_d7e8
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_RETREATING, .ows_d7ee
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_EVOLVING, .ows_d7f4
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_POKEMON_POWER, .ows_d7fa
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_ENDING_YOUR_TURN, .ows_d800
+ jump_if_event_equal EVENT_SAM_MENU_CHOICE, SAM_MENU_WIN_OR_LOSS, .ows_d806
+; SAM_MENU_ENERGY
+ print_npc_text Text05d6
+ script_jump .ows_d7bc
+
+.ows_d7e8
+ print_npc_text Text05d7
+ script_jump .ows_d7bc
+
+.ows_d7ee
+ print_npc_text Text05d8
+ script_jump .ows_d7bc
+
+.ows_d7f4
+ print_npc_text Text05d9
+ script_jump .ows_d7bc
+
+.ows_d7fa
+ print_npc_text Text05da
+ script_jump .ows_d7bc
+
+.ows_d800
+ print_npc_text Text05db
+ script_jump .ows_d7bc
+
+.ows_d806
+ print_npc_text Text05dc
+ script_jump .ows_d7bc
+
+.ows_d80c
+ print_npc_text Text05e9
+ ask_question_jump_default_yes NULL, .ows_d817
+ script_jump .ows_d7bc
+
+.ows_d817
+ set_dialog_npc NPC_DRMASON
+ print_npc_text Text05ea
+ script_nop
+ set_event EVENT_MASON_LAB_STATE, MASON_LAB_IN_PRACTICE_DUEL
+ close_advanced_text_box
+ set_next_npc_and_script NPC_SAM, .ows_d827
+ end_script
+ ret
+
+.ows_d827
+ start_script
+ start_duel PRIZES_2, SAMS_PRACTICE_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+.ows_d82d
+ close_advanced_text_box
+ set_next_npc_and_script NPC_DRMASON, Script_AfterPracticeDuel
+ end_script
+ ret
+
+Script_AfterPracticeDuel:
+ start_script
+ print_npc_text Text05eb
+ print_npc_text Text05ef
+ close_text_box
+ move_active_npc NPCMovement_d896
+ set_player_direction NORTH
+ move_player NORTH, 1
+ move_player NORTH, 1
+ move_player NORTH, 1
+ set_player_direction EAST
+ move_player EAST, 1
+ move_player EAST, 1
+ set_player_direction NORTH
+ print_npc_text Text05f0
+ close_text_box
+ print_text Text05f1
+ close_text_box
+ print_npc_text Text05f2
+.ows_d85f
+ choose_starter_deck
+ close_text_box
+ ask_question_jump Text05f3, .ows_d869
+ script_jump .ows_d85f
+
+.ows_d869
+ print_npc_text Text05f4
+ close_text_box
+ pause_song
+ play_song MUSIC_BOOSTER_PACK
+ print_text Text05f5
+ wait_for_song_to_finish
+ resume_song
+ close_text_box
+ set_event EVENT_MASON_LAB_STATE, MASON_LAB_RECEIVED_STARTER_DECK
+ give_stater_deck
+ print_npc_text Text05f6
+ save_game 0
+ quit_script_fully
+
+NPCMovement_d880:
+ db EAST
+ db $ff
+
+NPCMovement_d882:
+ db SOUTH
+ db SOUTH
+ db WEST
+ db WEST
+ db WEST
+ db WEST
+ db SOUTH
+NPCMovement_d889:
+ db EAST | NO_MOVE
+ db $ff
+
+NPCMovement_d88b:
+ db WEST
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db WEST
+ db WEST
+ db WEST
+ db EAST | NO_MOVE
+ db $ff
+
+NPCMovement_d894:
+ db SOUTH | NO_MOVE
+ db $ff
+
+NPCMovement_d896:
+ db NORTH
+ db NORTH
+ db NORTH
+ db EAST
+ db EAST
+ db EAST
+ db EAST
+ db SOUTH | NO_MOVE
+ db $ff
diff --git a/src/scripts/pokemon_dome.asm b/src/scripts/pokemon_dome.asm
new file mode 100644
index 0000000..a2c52af
--- /dev/null
+++ b/src/scripts/pokemon_dome.asm
@@ -0,0 +1,754 @@
+PokemonDomeMovePlayer:
+ ld a, [wPlayerYCoord]
+ cp $16
+ ret nz
+ ld a, [wPlayerXCoord]
+ cp $0e
+ ret c
+ cp $11
+ ret nc
+ ld a, NPC_ROD
+ ld [wTempNPC], a
+ ld bc, Script_f84c
+ jp SetNextNPCAndScript
+
+PokemonDomeAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_COURTNEY
+ db NPC_COURTNEY
+ dw Script_BeatCourtney
+ dw Script_LostToCourtney
+
+ db NPC_STEVE
+ db NPC_STEVE
+ dw Script_BeatSteve
+ dw Script_LostToSteve
+
+ db NPC_JACK
+ db NPC_JACK
+ dw Script_BeatJack
+ dw Script_LostToJack
+
+ db NPC_ROD
+ db NPC_ROD
+ dw Script_BeatRod
+ dw Script_LostToRod
+
+ db NPC_RONALD1
+ db NPC_RONALD1
+ dw Script_BeatRonald1InPokemonDome
+ dw Script_LostToRonald1InPokemonDome
+ db $00
+
+PokemonDomeLoadMap:
+ ld a, $0d
+ farcall TryGivePCPack
+ get_event_value EVENT_POKEMON_DOME_IN_MENU
+ or a
+ ret z
+ ld bc, Script_f80b
+ jp SetNextScript
+
+PokemonDomeCloseTextBox:
+ ld a, MAP_EVENT_HALL_OF_HONOR_DOOR
+ farcall Func_80b89
+ ret
+
+Script_Courtney:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text055a, Text055b
+ quit_script_fully
+
+Script_Steve:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text055c, Text055d
+ quit_script_fully
+
+Script_Jack:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text055e, Text055f
+ quit_script_fully
+
+Script_Rod:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0560, Text0561
+ quit_script_fully
+
+Preload_Courtney:
+ get_event_value EVENT_COURTNEY_STATE
+ cp COURTNEY_CHALLENGED
+ jr z, PlacePokemonDomeOpponentAtDuelTable
+ lb bc, $16, $0c
+ cp COURTNEY_DEFEATED
+ jr z, Func_f77d
+ get_event_value EVENT_CHALLENGED_GRAND_MASTERS
+ jr nz, Func_f762
+ scf
+ ret
+
+Func_f762:
+ ld a, [wLoadNPCYPos]
+ add $02
+ ld [wLoadNPCYPos], a
+ scf
+ ret
+
+PlacePokemonDomeOpponentAtDuelTable:
+ ld a, $12
+ ld [wLoadNPCXPos], a
+ ld a, $0e
+ ld [wLoadNPCYPos], a
+ ld a, WEST
+ ld [wLoadNPCDirection], a
+ scf
+ ret
+
+Func_f77d:
+ ld a, WEST
+ ld [wLoadNPCDirection], a
+Func_f782:
+ ld a, b
+ ld [wLoadNPCXPos], a
+ ld a, c
+ ld [wLoadNPCYPos], a
+ scf
+ ret
+
+Preload_Steve:
+ get_event_value EVENT_STEVE_STATE
+ cp STEVE_CHALLENGED
+ jr z, PlacePokemonDomeOpponentAtDuelTable
+ lb bc, $16, $0e
+ cp STEVE_DEFEATED
+ jr z, Func_f77d
+ get_event_value EVENT_CHALLENGED_GRAND_MASTERS
+ jr nz, Func_f762
+ scf
+ ret
+
+Preload_Jack:
+ get_event_value EVENT_JACK_STATE
+ cp JACK_CHALLENGED
+ jr z, PlacePokemonDomeOpponentAtDuelTable
+ lb bc, $14, $0a
+ cp JACK_DEFEATED
+ jr z, Func_f77d
+ get_event_value EVENT_CHALLENGED_GRAND_MASTERS
+ jr nz, Func_f762
+ scf
+ ret
+
+Preload_Rod:
+ get_event_value EVENT_ROD_STATE
+ cp ROD_CHALLENGED
+ jr z, PlacePokemonDomeOpponentAtDuelTable
+ get_event_value EVENT_POKEMON_DOME_STATE
+ lb bc, $10, $0a
+ cp POKEMON_DOME_DEFEATED
+ jr z, Func_f782
+ lb bc, $0e, $0a
+ cp POKEMON_DOME_CHALLENGED
+ jr z, Func_f782
+ scf
+ ret
+
+Preload_Ronald1InPokemonDome:
+ get_event_value EVENT_RONALD_POKEMON_DOME_STATE
+ cp RONALD_DEFEATED
+ ret nc
+ get_event_value EVENT_RONALD_POKEMON_DOME_STATE
+ or a
+ jr z, .not_challenged
+ ld a, MUSIC_RONALD
+ ld [wDefaultSong], a
+ jr PlacePokemonDomeOpponentAtDuelTable
+.not_challenged
+ scf
+ ret
+
+Script_f7ed:
+ jump_if_event_true EVENT_RECEIVED_LEGENDARY_CARDS, .ows_f7f9
+ print_npc_text Text0562
+.ows_f7f4
+ close_text_box
+ move_player NORTH, 2
+ quit_script_fully
+
+.ows_f7f9
+ print_npc_text Text0563
+ ask_question_jump Text0564, .ows_f804
+ script_jump .ows_f7f4
+
+.ows_f804
+ enter_map $0c, POKEMON_DOME_ENTRANCE, 22, 4, NORTH
+ quit_script_fully
+
+Script_f80b:
+ start_script
+ jump_if_event_equal EVENT_STEVE_STATE, STEVE_CHALLENGED, .ows_f820
+ jump_if_event_equal EVENT_JACK_STATE, JACK_CHALLENGED, .ows_f82b
+ jump_if_event_equal EVENT_ROD_STATE, ROD_CHALLENGED, .ows_f836
+ jump_if_event_equal EVENT_RONALD_POKEMON_DOME_STATE, RONALD_CHALLENGED, .ows_f841
+.ows_f820
+ close_advanced_text_box
+ set_next_npc_and_script NPC_STEVE, .ows_f827
+ end_script
+ ret
+
+.ows_f827
+ start_script
+ script_jump Script_BeatCourtney.ows_f996
+
+.ows_f82b
+ close_advanced_text_box
+ set_next_npc_and_script NPC_JACK, .ows_f832
+ end_script
+ ret
+
+.ows_f832
+ start_script
+ script_jump Script_BeatSteve.ows_fa02
+
+.ows_f836
+ close_advanced_text_box
+ set_next_npc_and_script NPC_ROD, .ows_f83d
+ end_script
+ ret
+
+.ows_f83d
+ start_script
+ script_jump Script_BeatJack.ows_fa78
+
+.ows_f841
+ close_advanced_text_box
+ set_next_npc_and_script NPC_RONALD1, .ows_f848
+ end_script
+ ret
+
+.ows_f848
+ start_script
+ script_jump Script_BeatRod.ows_fb20
+
+Script_f84c:
+ start_script
+ jump_if_event_true EVENT_HALL_OF_HONOR_DOORS_OPEN, Script_f7ed
+ print_npc_text Text0565
+ ask_question_jump Text0566, .ows_f85f
+ print_npc_text Text0567
+ script_jump Script_f7ed.ows_f804
+
+.ows_f85f
+ print_npc_text Text0568
+ close_text_box
+ jump_if_player_coords_match 14, 22, .ows_f86f
+ set_player_direction WEST
+ move_player WEST, 1
+ set_player_direction NORTH
+.ows_f86f
+ move_player NORTH, 1
+ move_player NORTH, 1
+ set_player_direction WEST
+ move_player WEST, 1
+ move_player WEST, 1
+ set_player_direction NORTH
+ move_player NORTH, 1
+ move_player NORTH, 1
+ move_player NORTH, 1
+ move_player NORTH, 1
+ set_player_direction EAST
+ move_player EAST, 1
+ move_player EAST, 1
+ set_player_direction NORTH
+ test_if_event_false EVENT_CHALLENGED_GRAND_MASTERS
+ print_variable_npc_text Text0569, Text056a
+ move_active_npc NPCMovement_fb8c
+ jump_if_event_true EVENT_CHALLENGED_GRAND_MASTERS, .ows_f8ef
+ print_npc_text Text056b
+ close_advanced_text_box
+ set_next_npc_and_script NPC_COURTNEY, .ows_f8af
+ end_script
+ ret
+
+.ows_f8af
+ start_script
+ move_active_npc NPCMovement_fb8e
+ close_advanced_text_box
+ set_next_npc_and_script NPC_ROD, .ows_f8ba
+ end_script
+ ret
+
+.ows_f8ba
+ start_script
+ print_npc_text Text056c
+ close_advanced_text_box
+ set_next_npc_and_script NPC_STEVE, .ows_f8c5
+ end_script
+ ret
+
+.ows_f8c5
+ start_script
+ move_active_npc NPCMovement_fb8e
+ close_advanced_text_box
+ set_next_npc_and_script NPC_ROD, .ows_f8d0
+ end_script
+ ret
+
+.ows_f8d0
+ start_script
+ print_npc_text Text056d
+ close_advanced_text_box
+ set_next_npc_and_script NPC_JACK, .ows_f8db
+ end_script
+ ret
+
+.ows_f8db
+ start_script
+ move_active_npc NPCMovement_fb8e
+ close_advanced_text_box
+ set_next_npc_and_script NPC_ROD, .ows_f8e6
+ end_script
+ ret
+
+.ows_f8e6
+ start_script
+ max_out_event_value EVENT_CHALLENGED_GRAND_MASTERS
+ print_npc_text Text056e
+ script_jump .ows_f8f8
+
+.ows_f8ef
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text056f, Text0570
+.ows_f8f8
+ print_npc_text Text0571
+ close_text_box
+ set_player_direction WEST
+ move_player WEST, 1
+ set_player_direction SOUTH
+ move_player SOUTH, 1
+ move_player SOUTH, 1
+ set_player_direction EAST
+ move_active_npc NPCMovement_fb8d
+ set_event EVENT_POKEMON_DOME_STATE, POKEMON_DOME_CHALLENGED
+ close_advanced_text_box
+ set_next_npc_and_script NPC_COURTNEY, .ows_f918
+ end_script
+ ret
+
+.ows_f918
+ start_script
+ try_give_pc_pack $0e
+ set_event EVENT_COURTNEY_STATE, COURTNEY_CHALLENGED
+ set_dialog_npc NPC_ROD
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0572, Text0573
+ close_text_box
+ set_dialog_npc NPC_COURTNEY
+ move_active_npc NPCMovement_fba6
+ set_active_npc_direction WEST
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0574, Text0575
+ start_duel PRIZES_6, LEGENDARY_MOLTRES_DECK_ID, MUSIC_DUEL_THEME_3
+ quit_script_fully
+
+Script_LostToCourtney:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0576, Text0577
+ close_advanced_text_box
+ set_next_npc_and_script NPC_ROD, .ows_f950
+ end_script
+ ret
+
+.ows_f950
+ start_script
+ move_active_npc NPCMovement_fba1
+ print_npc_text Text0578
+ script_jump Script_f7ed.ows_f804
+
+Script_BeatCourtney:
+ start_script
+ set_event EVENT_COURTNEY_STATE, COURTNEY_DEFEATED
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0579, Text057a
+ close_text_box
+ move_active_npc NPCMovement_fbb7
+ set_active_npc_direction WEST
+ close_advanced_text_box
+ set_next_npc_and_script NPC_STEVE, .ows_f974
+ end_script
+ ret
+
+.ows_f974
+ start_script
+ try_give_pc_pack $0f
+ set_event EVENT_STEVE_STATE, STEVE_CHALLENGED
+ set_dialog_npc NPC_ROD
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text057b, Text057c
+ close_text_box
+ set_dialog_npc NPC_STEVE
+ move_active_npc NPCMovement_fba4
+ set_active_npc_direction WEST
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text057d, Text057e
+.ows_f996
+ zero_out_event_value EVENT_POKEMON_DOME_IN_MENU
+ set_dialog_npc NPC_ROD
+ print_npc_text Text057f
+ ask_question_jump_default_yes Text0580, .ows_f9af
+ print_npc_text Text0581
+ set_dialog_npc NPC_STEVE
+ print_npc_text Text0582
+ start_duel PRIZES_6, LEGENDARY_ZAPDOS_DECK_ID, MUSIC_DUEL_THEME_3
+ quit_script_fully
+
+.ows_f9af
+ close_text_box
+ max_out_event_value EVENT_POKEMON_DOME_IN_MENU
+ open_menu
+ close_text_box
+ script_jump .ows_f996
+
+Script_LostToSteve:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0583, Text0584
+ close_advanced_text_box
+ set_next_npc_and_script NPC_ROD, Script_LostToCourtney.ows_f950
+ end_script
+ ret
+
+Script_BeatSteve:
+ start_script
+ set_event EVENT_STEVE_STATE, STEVE_DEFEATED
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0585, Text0586
+ close_text_box
+ move_active_npc NPCMovement_fbb8
+ set_active_npc_direction WEST
+ close_advanced_text_box
+ set_next_npc_and_script NPC_JACK, .ows_f9e2
+ end_script
+ ret
+
+.ows_f9e2
+ start_script
+ set_event EVENT_JACK_STATE, JACK_CHALLENGED
+ set_dialog_npc NPC_ROD
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0587, Text0588
+ close_text_box
+ set_dialog_npc NPC_JACK
+ move_active_npc NPCMovement_fbbc
+ set_active_npc_direction WEST
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0589, Text058a
+.ows_fa02
+ zero_out_event_value EVENT_POKEMON_DOME_IN_MENU
+ set_dialog_npc NPC_ROD
+ print_npc_text Text058b
+ ask_question_jump_default_yes Text058c, .ows_fa1b
+ print_npc_text Text058d
+ set_dialog_npc NPC_JACK
+ print_npc_text Text058e
+ start_duel PRIZES_6, LEGENDARY_ARTICUNO_DECK_ID, MUSIC_DUEL_THEME_3
+ quit_script_fully
+
+.ows_fa1b
+ close_text_box
+ max_out_event_value EVENT_POKEMON_DOME_IN_MENU
+ open_menu
+ close_text_box
+ script_jump .ows_fa02
+
+Script_LostToJack:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text058f, Text0590
+ close_advanced_text_box
+ set_next_npc_and_script NPC_ROD, Script_LostToCourtney.ows_f950
+ end_script
+ ret
+
+Script_BeatJack:
+ start_script
+ set_event EVENT_JACK_STATE, JACK_DEFEATED
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0591, Text0592
+ close_text_box
+ move_active_npc NPCMovement_fbc2
+ set_active_npc_direction WEST
+ close_advanced_text_box
+ set_next_npc_and_script NPC_ROD, .ows_fa52
+ move_npc NPC_ROD, NPCMovement_f390
+ end_script
+ ret
+
+.ows_fa52
+ start_script
+ set_event EVENT_ROD_STATE, ROD_CHALLENGED
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0593, Text0594
+ close_text_box
+ move_active_npc NPCMovement_fbaf
+ set_active_npc_direction WEST
+ jump_if_event_true EVENT_RECEIVED_LEGENDARY_CARDS, .ows_fa75
+ test_if_event_false EVENT_CHALLENGED_RONALD
+ print_variable_npc_text Text0595, Text0596
+ script_jump .ows_fa78
+
+.ows_fa75
+ print_npc_text Text0597
+.ows_fa78
+ zero_out_event_value EVENT_POKEMON_DOME_IN_MENU
+ print_npc_text Text0598
+ ask_question_jump_default_yes Text0599, .ows_fa90
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text059a, Text059b
+ start_duel PRIZES_6, LEGENDARY_DRAGONITE_DECK_ID, MUSIC_DUEL_THEME_3
+ quit_script_fully
+
+.ows_fa90
+ close_text_box
+ max_out_event_value EVENT_POKEMON_DOME_IN_MENU
+ open_menu
+ close_text_box
+ script_jump .ows_fa78
+
+Script_LostToRod:
+ start_script
+ print_npc_text Text059c
+ close_text_box
+ move_active_npc NPCMovement_fb9d
+ set_active_npc_direction SOUTH
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text059d, Text059e
+ script_jump Script_f7ed.ows_f804
+
+Script_BeatRod:
+ start_script
+ set_event EVENT_ROD_STATE, ROD_DEFEATED
+ jump_if_event_true EVENT_RECEIVED_LEGENDARY_CARDS, .ows_fad5
+ test_if_event_false EVENT_CHALLENGED_RONALD
+ print_variable_npc_text Text059f, Text05a0
+ close_text_box
+ move_active_npc NPCMovement_fb90
+ set_active_npc_direction SOUTH
+ test_if_event_false EVENT_CHALLENGED_RONALD
+ print_variable_npc_text Text05a1, Text05a2
+ close_advanced_text_box
+ set_next_npc_and_script NPC_RONALD1, .ows_fae9
+ end_script
+ ret
+
+.ows_fad5
+ print_npc_text Text05a3
+ move_active_npc NPCMovement_fb96
+ set_active_npc_direction SOUTH
+ play_sfx SFX_0F
+ replace_map_blocks MAP_EVENT_HALL_OF_HONOR_DOOR
+ set_event EVENT_POKEMON_DOME_STATE, POKEMON_DOME_DEFEATED
+ max_out_event_value EVENT_HALL_OF_HONOR_DOORS_OPEN
+ print_text_quit_fully Text05a4
+
+.ows_fae9
+ start_script
+ override_song MUSIC_STOP
+ set_event EVENT_RONALD_POKEMON_DOME_STATE, RONALD_CHALLENGED
+ play_sfx SFX_0F
+ replace_map_blocks MAP_EVENT_HALL_OF_HONOR_DOOR
+ move_active_npc NPCMovement_fbd2
+ set_default_song MUSIC_RONALD
+ play_default_song
+ jump_if_event_true EVENT_CHALLENGED_RONALD, .ows_fb15
+ print_npc_text Text05a5
+ set_dialog_npc NPC_ROD
+ move_npc NPC_ROD, NPCMovement_fb9b
+ print_npc_text Text05a6
+ set_dialog_npc NPC_RONALD1
+ print_npc_text Text05a7
+ move_npc NPC_ROD, NPCMovement_fb99
+ script_jump .ows_fb18
+
+.ows_fb15
+ print_npc_text Text05a8
+.ows_fb18
+ close_text_box
+ move_active_npc NPCMovement_fba8
+ set_active_npc_direction WEST
+ max_out_event_value EVENT_CHALLENGED_RONALD
+.ows_fb20
+ zero_out_event_value EVENT_POKEMON_DOME_IN_MENU
+ set_dialog_npc NPC_ROD
+ print_npc_text Text05a9
+ ask_question_jump_default_yes Text05aa, .ows_fb40
+ print_npc_text Text05ab
+ set_dialog_npc NPC_RONALD1
+ print_npc_text Text05ac
+ set_dialog_npc NPC_ROD
+ print_npc_text Text05ad
+ set_dialog_npc NPC_RONALD1
+ start_duel PRIZES_6, LEGENDARY_RONALD_DECK_ID, MUSIC_DUEL_THEME_3
+ quit_script_fully
+
+.ows_fb40
+ close_text_box
+ max_out_event_value EVENT_POKEMON_DOME_IN_MENU
+ open_menu
+ close_text_box
+ script_jump .ows_fb20
+
+Script_LostToRonald1InPokemonDome:
+ start_script
+ print_npc_text Text05ae
+ close_advanced_text_box
+ set_next_npc_and_script NPC_ROD, Script_LostToCourtney.ows_f950
+ end_script
+ ret
+
+Script_BeatRonald1InPokemonDome:
+ start_script
+ set_event EVENT_RONALD_POKEMON_DOME_STATE, RONALD_DEFEATED
+ print_npc_text Text05af
+ set_dialog_npc NPC_ROD
+ print_npc_text Text05b0
+ print_text Text05b1
+ set_dialog_npc NPC_RONALD1
+ print_npc_text Text05b2
+ close_text_box
+ move_active_npc NPCMovement_fbc7
+ unload_active_npc
+ set_default_song MUSIC_HALL_OF_HONOR
+ play_default_song
+ close_advanced_text_box
+ set_next_npc_and_script NPC_ROD, .ows_fb76
+ end_script
+ ret
+
+.ows_fb76
+ start_script
+ move_active_npc NPCMovement_fba1
+ set_player_direction NORTH
+ print_npc_text Text05b3
+ move_active_npc NPCMovement_fbb2
+ set_event EVENT_POKEMON_DOME_STATE, POKEMON_DOME_DEFEATED
+ max_out_event_value EVENT_HALL_OF_HONOR_DOORS_OPEN
+ record_master_win $0a
+ print_text_quit_fully Text05b4
+
+NPCMovement_fb8c:
+ db EAST
+NPCMovement_fb8d:
+ db SOUTH
+NPCMovement_fb8e:
+ db SOUTH
+ db $ff
+
+NPCMovement_fb90:
+ db NORTH
+ db NORTH
+ db WEST
+ db WEST
+ db SOUTH | NO_MOVE
+ db $ff
+
+NPCMovement_fb96:
+ db NORTH
+ db NORTH
+ db WEST
+NPCMovement_fb99:
+ db SOUTH | NO_MOVE
+ db $ff
+
+NPCMovement_fb9b:
+ db NORTH | NO_MOVE
+ db $ff
+
+NPCMovement_fb9d:
+ db NORTH
+ db NORTH
+ db WEST
+ db WEST
+NPCMovement_fba1:
+ db WEST
+ db SOUTH
+ db $ff
+
+NPCMovement_fba4:
+ db WEST
+ db WEST
+NPCMovement_fba6:
+ db WEST
+ db SOUTH
+NPCMovement_fba8:
+ db SOUTH
+ db SOUTH
+ db EAST
+ db SOUTH
+ db SOUTH
+ db WEST | NO_MOVE
+ db $ff
+
+NPCMovement_fbaf:
+ db EAST
+ db $fe, -7
+
+NPCMovement_fbb2:
+ db NORTH
+ db EAST
+ db EAST
+ db SOUTH | NO_MOVE
+ db $ff
+
+NPCMovement_fbb7:
+ db NORTH
+NPCMovement_fbb8:
+ db EAST
+ db EAST
+ db WEST | NO_MOVE
+ db $ff
+
+NPCMovement_fbbc:
+ db EAST
+ db EAST
+ db EAST
+ db EAST
+ db $fe, -26
+
+NPCMovement_fbc2:
+ db NORTH
+ db NORTH
+ db EAST
+ db WEST | NO_MOVE
+ db $ff
+
+NPCMovement_fbc7:
+ db SOUTH
+ db SOUTH
+ db WEST
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db $ff
+
+NPCMovement_fbd2:
+ db WEST
+ db WEST
+ db WEST
+ db WEST
+ db WEST
+ db WEST
+ db WEST
+ db $fe, -12
diff --git a/src/scripts/pokemon_dome_entrance.asm b/src/scripts/pokemon_dome_entrance.asm
new file mode 100644
index 0000000..fa6e015
--- /dev/null
+++ b/src/scripts/pokemon_dome_entrance.asm
@@ -0,0 +1,110 @@
+PokemonDomeEntranceLoadMap:
+ set_event_false EVENT_HALL_OF_HONOR_DOORS_OPEN
+ set_event_zero EVENT_POKEMON_DOME_STATE
+ set_event_zero EVENT_COURTNEY_STATE
+ set_event_zero EVENT_STEVE_STATE
+ set_event_zero EVENT_JACK_STATE
+ set_event_zero EVENT_ROD_STATE
+ get_event_value EVENT_RECEIVED_LEGENDARY_CARDS
+ or a
+ ret nz
+ set_event_zero EVENT_RONALD_POKEMON_DOME_STATE
+ ret
+
+PokemonDomeEntranceCloseTextBox:
+ ld a, MAP_EVENT_POKEMON_DOME_DOOR
+ farcall Func_80b89
+ ret
+
+Script_f631:
+ start_script
+ print_npc_text Text0508
+ close_advanced_text_box
+ set_next_npc_and_script NPC_RONALD1, .ows_f63c
+ end_script
+ ret
+
+.ows_f63c
+ call TryGiveMedalPCPacks
+ get_event_value EVENT_MEDAL_COUNT
+ ld [wTxRam3], a
+ inc a
+ ld [wTxRam3_b], a
+ xor a
+ ld [wTxRam3 + 1], a
+ ld [wTxRam3_b + 1], a
+
+ start_script
+ jump_if_event_greater_or_equal EVENT_MEDAL_COUNT, 7, .ows_f69b
+ jump_if_event_false EVENT_RONALD_FIRST_CLUB_ENTRANCE_ENCOUNTER, .ows_f69b
+ jump_if_event_true EVENT_RONALD_POKEMON_DOME_ENTRANCE_ENCOUNTER, .ows_f69b
+ override_song MUSIC_RONALD
+ max_out_event_value EVENT_RONALD_POKEMON_DOME_ENTRANCE_ENCOUNTER
+ jump_if_player_coords_match 18, 2, .ows_f66e
+ move_active_npc NPCMovement_f69c
+ script_jump .ows_f671
+
+.ows_f66e
+ move_active_npc NPCMovement_f69d
+.ows_f671
+ print_npc_text Text0553
+ close_text_box
+ set_player_direction SOUTH
+ move_player SOUTH, 1
+ print_npc_text Text0554
+ ask_question_jump_default_yes NULL, .ows_f688
+ print_npc_text Text0555
+ script_jump .ows_f695
+
+.ows_f688
+ jump_if_event_zero EVENT_MEDAL_COUNT, .ows_f692
+ print_npc_text Text0556
+ script_jump .ows_f695
+
+.ows_f692
+ print_npc_text Text0557
+.ows_f695
+ close_text_box
+ move_active_npc NPCMovement_f6a6
+ unload_active_npc
+ play_default_song
+.ows_f69b
+ quit_script_fully
+
+NPCMovement_f69c:
+ db EAST
+NPCMovement_f69d:
+ db NORTH
+ db NORTH
+ db NORTH
+ db NORTH
+ db EAST
+ db EAST
+ db NORTH
+ db NORTH
+ db $ff
+
+NPCMovement_f6a6:
+ db WEST
+ db WEST
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db $ff
+
+Script_f6af:
+ start_script
+ try_give_medal_pc_packs
+ jump_if_event_equal EVENT_MEDAL_COUNT, 8, .ows_f6b9
+ print_text_quit_fully Text0558
+
+.ows_f6b9
+ print_npc_text Text0559
+ play_sfx SFX_0F
+ replace_map_blocks MAP_EVENT_POKEMON_DOME_DOOR
+ do_frames 30
+ move_player NORTH, 1
+ quit_script_fully
diff --git a/src/scripts/psychic_club.asm b/src/scripts/psychic_club.asm
new file mode 100644
index 0000000..40107ce
--- /dev/null
+++ b/src/scripts/psychic_club.asm
@@ -0,0 +1,159 @@
+PsychicClubAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_DANIEL
+ db NPC_DANIEL
+ dw Script_BeatDaniel
+ dw Script_LostToDaniel
+
+ db NPC_STEPHANIE
+ db NPC_STEPHANIE
+ dw Script_BeatStephanie
+ dw Script_LostToStephanie
+
+ db NPC_MURRAY1
+ db NPC_MURRAY1
+ dw Script_BeatMurray
+ dw Script_LostToMurray
+ db $00
+
+Script_Daniel:
+ start_script
+ try_give_medal_pc_packs
+ jump_if_event_greater_or_equal EVENT_MEDAL_COUNT, 4, .ows_ea7e
+ jump_if_event_true EVENT_DANIEL_TALKED, .ows_ea70
+ max_out_event_value EVENT_DANIEL_TALKED
+ print_npc_text Text0669
+.ows_ea70
+ jump_if_event_greater_or_equal EVENT_MEDAL_COUNT, 1, .ows_ea78
+ print_text_quit_fully Text066a
+
+.ows_ea78
+ print_npc_text Text066b
+ script_jump .ows_ea81
+
+.ows_ea7e
+ print_npc_text Text066c
+.ows_ea81
+ ask_question_jump Text066d, .ows_ea8a
+ print_npc_text Text066e
+ quit_script_fully
+
+.ows_ea8a
+ print_npc_text Text066f
+ start_duel PRIZES_4, NAP_TIME_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatDaniel:
+ start_script
+ print_npc_text Text0670
+ give_booster_packs BOOSTER_EVOLUTION_PSYCHIC, BOOSTER_EVOLUTION_PSYCHIC, NO_BOOSTER
+ print_npc_text Text0671
+ quit_script_fully
+
+Script_LostToDaniel:
+ start_script
+ print_text_quit_fully Text0672
+
+Script_Stephanie:
+ start_script
+ try_give_medal_pc_packs
+ jump_if_event_greater_or_equal EVENT_MEDAL_COUNT, 2, .ows_eaac
+ print_text_quit_fully Text0673
+
+.ows_eaac
+ print_npc_text Text0674
+ ask_question_jump Text0675, .ows_eab8
+ print_npc_text Text0676
+ quit_script_fully
+
+.ows_eab8
+ print_npc_text Text0677
+ start_duel PRIZES_4, STRANGE_POWER_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatStephanie:
+ start_script
+ print_npc_text Text0678
+ give_booster_packs BOOSTER_LABORATORY_PSYCHIC, BOOSTER_LABORATORY_PSYCHIC, NO_BOOSTER
+ print_npc_text Text0679
+ quit_script_fully
+
+Script_LostToStephanie:
+ start_script
+ print_text_quit_fully Text067a
+
+Preload_Murray2:
+ call TryGiveMedalPCPacks
+ get_event_value EVENT_MEDAL_COUNT
+ cp 4
+ ret
+
+Preload_Murray1:
+ call Preload_Murray2
+ ccf
+ ret
+
+Script_Murray:
+ start_script
+ try_give_pc_pack $07
+ try_give_medal_pc_packs
+ jump_if_event_greater_or_equal EVENT_MEDAL_COUNT, 4, .ows_eaef
+ print_npc_text Text067b
+ print_text Text067c
+ quit_script_fully
+
+.ows_eaef
+ jump_if_event_true EVENT_BEAT_MURRAY, Script_LostToMurray.ows_eb31
+ test_if_event_false EVENT_MURRAY_TALKED
+ print_variable_npc_text Text067d, Text067e
+ max_out_event_value EVENT_MURRAY_TALKED
+ ask_question_jump Text067f, .ows_eb07
+ print_npc_text Text0680
+ quit_script_fully
+
+.ows_eb07
+ print_npc_text Text0681
+ start_duel PRIZES_6, STRANGE_PSYSHOCK_DECK_ID, MUSIC_DUEL_THEME_2
+ quit_script_fully
+
+Script_BeatMurray:
+ start_script
+ jump_if_event_true EVENT_BEAT_MURRAY, Script_LostToMurray.ows_eb45
+ print_npc_text Text0682
+ max_out_event_value EVENT_BEAT_MURRAY
+ try_give_medal_pc_packs
+ show_medal_received_screen EVENT_BEAT_MURRAY
+ record_master_win $06
+ print_npc_text Text0683
+ give_booster_packs BOOSTER_LABORATORY_PSYCHIC, BOOSTER_LABORATORY_PSYCHIC, NO_BOOSTER
+ print_npc_text Text0684
+ quit_script_fully
+
+Script_LostToMurray:
+ start_script
+ jump_if_event_true EVENT_BEAT_MURRAY, .ows_eb50
+ print_text_quit_fully Text0685
+
+.ows_eb31
+ print_npc_text Text0686
+ ask_question_jump Text067f, .ows_eb3d
+ print_npc_text Text0687
+ quit_script_fully
+
+.ows_eb3d
+ print_npc_text Text0688
+ start_duel PRIZES_6, STRANGE_PSYSHOCK_DECK_ID, MUSIC_DUEL_THEME_2
+ quit_script_fully
+
+.ows_eb45
+ print_npc_text Text0689
+ give_booster_packs BOOSTER_LABORATORY_PSYCHIC, BOOSTER_LABORATORY_PSYCHIC, NO_BOOSTER
+ print_npc_text Text068a
+ quit_script_fully
+
+.ows_eb50
+ print_text_quit_fully Text068b
diff --git a/src/scripts/psychic_club_entrance.asm b/src/scripts/psychic_club_entrance.asm
new file mode 100644
index 0000000..46aae92
--- /dev/null
+++ b/src/scripts/psychic_club_entrance.asm
@@ -0,0 +1,228 @@
+ClubEntranceAfterDuel:
+ ld hl, .after_duel_table
+ jp FindEndOfDuelScript
+
+.after_duel_table
+ db NPC_RONALD2
+ db NPC_RONALD2
+ dw Script_BeatFirstRonaldDuel
+ dw Script_LostToFirstRonaldDuel
+
+ db NPC_RONALD3
+ db NPC_RONALD3
+ dw Script_BeatSecondRonaldDuel
+ dw Script_LostToSecondRonaldDuel
+ db $00
+
+; A Ronald is already loaded or not loaded depending on Pre-Load scripts
+; in data/npc_map_data.asm. This just starts a script if possible.
+LoadClubEntrance:
+ call TryFirstRonaldDuel
+ call TrySecondRonaldDuel
+ call TryFirstRonaldEncounter
+ ret
+
+TryFirstRonaldEncounter:
+ ld a, NPC_RONALD1
+ ld [wTempNPC], a
+ call FindLoadedNPC
+ ret c
+ ld bc, Script_FirstRonaldEncounter
+ jp SetNextNPCAndScript
+
+TryFirstRonaldDuel:
+ ld a, NPC_RONALD2
+ ld [wTempNPC], a
+ call FindLoadedNPC
+ ret c
+ get_event_value EVENT_RONALD_FIRST_DUEL_STATE
+ or a
+ ret nz ; already dueled
+ ld bc, Script_FirstRonaldDuel
+ jp SetNextNPCAndScript
+
+TrySecondRonaldDuel:
+ ld a, NPC_RONALD3
+ ld [wTempNPC], a
+ call FindLoadedNPC
+ ret c
+ get_event_value EVENT_RONALD_SECOND_DUEL_STATE
+ or a
+ ret nz ; already dueled
+ ld bc, Script_SecondRonaldDuel
+ jp SetNextNPCAndScript
+
+Script_Clerk6:
+ start_script
+ print_text_quit_fully Text0642
+
+Script_Lad3:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0643, Text0644
+ quit_script_fully
+
+Preload_Ronald1InClubEntrance:
+ get_event_value EVENT_RONALD_FIRST_CLUB_ENTRANCE_ENCOUNTER
+ cp TRUE
+ ret
+
+Script_FirstRonaldEncounter:
+ start_script
+ max_out_event_value EVENT_RONALD_FIRST_CLUB_ENTRANCE_ENCOUNTER
+ move_active_npc NPCMovement_e894
+ load_current_map_name_into_txram_slot 0
+ print_npc_text Text0645
+ close_text_box
+ move_player NORTH, 1
+ move_player NORTH, 1
+ print_npc_text Text0646
+ ask_question_jump_default_yes NULL, .ows_e882
+ print_npc_text Text0647
+ script_jump .ows_e885
+
+.ows_e882
+ print_npc_text Text0648
+.ows_e885
+ print_npc_text Text0649
+ close_text_box
+ set_player_direction WEST
+ move_player EAST, 4
+ move_active_npc NPCMovement_e894
+ unload_active_npc
+ play_default_song
+ quit_script_fully
+
+NPCMovement_e894:
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db $ff
+
+Preload_Ronald2InClubEntrance:
+ get_event_value EVENT_RONALD_FIRST_DUEL_STATE
+ ld e, 2 ; medal requirement for ronald duel
+Func_e8a0:
+ cp RONALD_DUEL_WON
+ jr z, .asm_e8b4
+ cp RONALD_DUEL_LOST
+ jr nc, .asm_e8b2
+ call TryGiveMedalPCPacks
+ get_event_value EVENT_MEDAL_COUNT
+ cp e
+ jr z, .asm_e8be
+.asm_e8b2
+ or a
+ ret
+
+.asm_e8b4
+ ld a, $08
+ ld [wLoadNPCXPos], a
+ ld a, $08
+ ld [wLoadNPCYPos], a
+.asm_e8be
+ scf
+ ret
+
+Script_FirstRonaldDuel:
+ start_script
+ move_active_npc NPCMovement_e905
+ do_frames 60
+ move_active_npc NPCMovement_e90d
+ print_npc_text Text064a
+ jump_if_player_coords_match 8, 2, .ows_e8d6
+ set_player_direction WEST
+ move_player WEST, 1
+.ows_e8d6
+ set_player_direction SOUTH
+ move_player SOUTH, 1
+ move_player SOUTH, 1
+ print_npc_text Text064b
+ set_event EVENT_RONALD_FIRST_DUEL_STATE, RONALD_DUEL_WON
+ start_duel PRIZES_6, IM_RONALD_DECK_ID, MUSIC_RONALD
+ quit_script_fully
+
+Script_BeatFirstRonaldDuel:
+ start_script
+ print_npc_text Text064c
+ give_card JIGGLYPUFF1
+ show_card_received_screen JIGGLYPUFF1
+ print_npc_text Text064d
+ script_jump Script_LostToFirstRonaldDuel.ows_e8fb
+
+Script_LostToFirstRonaldDuel:
+ start_script
+ print_npc_text Text064e
+.ows_e8fb
+ set_event EVENT_RONALD_FIRST_DUEL_STATE, RONALD_DUEL_LOST
+ close_text_box
+ move_active_npc NPCMovement_e90f
+ unload_active_npc
+ play_default_song
+ quit_script_fully
+
+NPCMovement_e905:
+ db EAST
+ db EAST
+ db EAST
+ db EAST
+ db EAST
+ db SOUTH
+ db NORTH | NO_MOVE
+ db $ff
+
+NPCMovement_e90d:
+ db NORTH
+ db $ff
+
+NPCMovement_e90f:
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db SOUTH
+ db $ff
+
+Preload_Ronald3InClubEntrance:
+ get_event_value EVENT_RONALD_SECOND_DUEL_STATE
+ ld e, 5 ; medal requirement for ronald duel
+ jp Func_e8a0
+
+Script_SecondRonaldDuel:
+ start_script
+ move_active_npc NPCMovement_e905
+ do_frames 60
+ move_active_npc NPCMovement_e90d
+ print_npc_text Text064f
+ jump_if_player_coords_match 8, 2, .ows_6934
+ set_player_direction WEST
+ move_player WEST, 1
+.ows_6934
+ set_player_direction SOUTH
+ move_player SOUTH, 1
+ move_player SOUTH, 1
+ print_npc_text Text0650
+ set_event EVENT_RONALD_SECOND_DUEL_STATE, RONALD_DUEL_WON
+ start_duel PRIZES_6, POWERFUL_RONALD_DECK_ID, MUSIC_RONALD
+ quit_script_fully
+
+Script_BeatSecondRonaldDuel:
+ start_script
+ print_npc_text Text0651
+ give_card SUPER_ENERGY_RETRIEVAL
+ show_card_received_screen SUPER_ENERGY_RETRIEVAL
+ print_npc_text Text0652
+ script_jump Script_LostToSecondRonaldDuel.ows_e959
+
+Script_LostToSecondRonaldDuel:
+ start_script
+ print_npc_text Text0653
+.ows_e959
+ set_event EVENT_RONALD_SECOND_DUEL_STATE, RONALD_DUEL_LOST
+ close_text_box
+ move_active_npc NPCMovement_e90f
+ unload_active_npc
+ play_default_song
+ quit_script_fully
diff --git a/src/scripts/psychic_club_lobby.asm b/src/scripts/psychic_club_lobby.asm
new file mode 100644
index 0000000..dd3c24d
--- /dev/null
+++ b/src/scripts/psychic_club_lobby.asm
@@ -0,0 +1,138 @@
+PsychicClubLobbyAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_ROBERT
+ db NPC_ROBERT
+ dw Script_BeatRobert
+ dw Script_LostToRobert
+ db $00
+
+PsychicClubLobbyLoadMap:
+ ld a, NPC_RONALD1
+ ld [wTempNPC], a
+ call FindLoadedNPC
+ ret c
+ ld bc, Script_ea02
+ jp SetNextNPCAndScript
+
+Script_Robert:
+ start_script
+ print_npc_text Text0654
+ ask_question_jump Text0655, .ows_e98d
+ print_npc_text Text0656
+ quit_script_fully
+
+.ows_e98d
+ print_npc_text Text0657
+ start_duel PRIZES_4, GHOST_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatRobert:
+ start_script
+ print_npc_text Text0658
+ give_booster_packs BOOSTER_EVOLUTION_PSYCHIC, BOOSTER_EVOLUTION_PSYCHIC, NO_BOOSTER
+ print_npc_text Text0659
+ quit_script_fully
+
+Script_LostToRobert:
+ start_script
+ print_text_quit_fully Text065a
+
+Script_Pappy1:
+ start_script
+ jump_if_event_equal EVENT_PAPPY1_STATE, PAPPY1_CHALLENGE_COMPLETE, .ows_e9de
+ jump_if_event_true EVENT_BEAT_MURRAY, .ows_e9cb
+ jump_if_event_equal EVENT_PAPPY1_STATE, PAPPY1_CHALLENGE_ACCEPTED, .ows_e9c8
+ set_event EVENT_PAPPY1_STATE, PAPPY1_TALKED
+ print_npc_text Text065b
+ ask_question_jump_default_yes Text065c, .ows_e9c2
+ print_text_quit_fully Text065d
+
+.ows_e9c2
+ set_event EVENT_PAPPY1_STATE, PAPPY1_CHALLENGE_ACCEPTED
+ print_text_quit_fully Text065e
+
+.ows_e9c8
+ print_text_quit_fully Text065f
+
+.ows_e9cb
+ test_if_event_zero EVENT_PAPPY1_STATE
+ print_variable_npc_text Text0660, Text0661
+ give_card MEWTWO3
+ show_card_received_screen MEWTWO3
+ set_event EVENT_PAPPY1_STATE, PAPPY1_CHALLENGE_COMPLETE
+ print_text_quit_fully Text0662
+
+.ows_e9de
+ print_text_quit_fully Text0663
+
+_Preload_Ronald1InPsychicClubLobby:
+ call TryGiveMedalPCPacks
+ get_event_value EVENT_MEDAL_COUNT
+ cp 4
+ jr nz, .dont_load
+ get_event_value EVENT_RONALD_PSYCHIC_CLUB_LOBBY_ENCOUNTER
+ or a
+ jr nz, .dont_load
+ scf
+ ret
+.dont_load
+ or a
+ ret
+
+Preload_Ronald1InPsychicClubLobby:
+ call _Preload_Ronald1InPsychicClubLobby
+ ret nc
+ ld a, [wPlayerYCoord]
+ ld [wLoadNPCYPos], a
+ ret
+
+Script_ea02:
+ start_script
+ move_active_npc_by_direction NPCMovementTable_ea1a
+ max_out_event_value EVENT_RONALD_PSYCHIC_CLUB_LOBBY_ENCOUNTER
+ print_npc_text Text0664
+ close_text_box
+ set_player_direction SOUTH
+ move_player NORTH, 4
+ move_player NORTH, 1
+ move_active_npc_by_direction NPCMovementTable_ea22
+ unload_active_npc
+ play_default_song
+ quit_script_fully
+
+NPCMovementTable_ea1a:
+ dw NPCMovement_ea2a
+ dw NPCMovement_ea2a
+ dw NPCMovement_ea2a
+ dw NPCMovement_ea2a
+
+NPCMovementTable_ea22:
+ dw NPCMovement_ea2c
+ dw NPCMovement_ea2c
+ dw NPCMovement_ea2c
+ dw NPCMovement_ea2c
+
+NPCMovement_ea2a:
+ db EAST
+ db EAST
+NPCMovement_ea2c:
+ db EAST
+ db EAST
+ db EAST
+ db $ff
+
+Script_Gal3:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0665, Text0666
+ quit_script_fully
+
+Script_Chap4:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0667, Text0668
+ quit_script_fully
diff --git a/src/scripts/rock_club.asm b/src/scripts/rock_club.asm
new file mode 100644
index 0000000..e608333
--- /dev/null
+++ b/src/scripts/rock_club.asm
@@ -0,0 +1,122 @@
+RockClubAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_RYAN
+ db NPC_RYAN
+ dw Script_BeatRyan
+ dw Script_LostToRyan
+
+ db NPC_ANDREW
+ db NPC_ANDREW
+ dw Script_BeatAndrew
+ dw Script_LostToAndrew
+
+ db NPC_GENE
+ db NPC_GENE
+ dw Script_BeatGene
+ dw Script_LostToGene
+ db $00
+
+Script_Ryan:
+ start_script
+ try_give_pc_pack $03
+ print_npc_text Text0795
+ ask_question_jump Text0796, .ows_dfff
+ print_npc_text Text0797
+ quit_script_fully
+
+.ows_dfff
+ print_npc_text Text0798
+ start_duel PRIZES_3, EXCAVATION_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatRyan:
+ start_script
+ print_npc_text Text0799
+ give_booster_packs BOOSTER_EVOLUTION_FIGHTING, BOOSTER_EVOLUTION_FIGHTING, NO_BOOSTER
+ print_npc_text Text079a
+ quit_script_fully
+
+Script_LostToRyan:
+ start_script
+ print_text_quit_fully Text079b
+
+Script_Andrew:
+ start_script
+ try_give_pc_pack $03
+ print_npc_text Text079c
+ ask_question_jump Text079d, .ows_e026
+ print_npc_text Text079e
+ quit_script_fully
+
+.ows_e026
+ print_npc_text Text079f
+ start_duel PRIZES_4, BLISTERING_POKEMON_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatAndrew:
+ start_script
+ print_npc_text Text07a0
+ give_booster_packs BOOSTER_COLOSSEUM_FIGHTING, BOOSTER_COLOSSEUM_FIGHTING, NO_BOOSTER
+ print_npc_text Text07a1
+ quit_script_fully
+
+Script_LostToAndrew:
+ start_script
+ print_text_quit_fully Text07a2
+
+Script_Gene:
+ start_script
+ try_give_pc_pack $03
+ jump_if_event_true EVENT_BEAT_GENE, Script_LostToGene.ows_e07b
+ print_npc_text Text07a3
+ ask_question_jump Text07a4, .ows_e051
+ print_npc_text Text07a5
+ quit_script_fully
+
+.ows_e051
+ print_npc_text Text07a6
+ start_duel PRIZES_6, ROCK_CRUSHER_DECK_ID, MUSIC_DUEL_THEME_2
+ quit_script_fully
+
+Script_BeatGene:
+ start_script
+ jump_if_event_true EVENT_BEAT_GENE, Script_LostToGene.ows_e08f
+ print_npc_text Text07a7
+ max_out_event_value EVENT_BEAT_GENE
+ try_give_medal_pc_packs
+ show_medal_received_screen EVENT_BEAT_GENE
+ record_master_win $02
+ print_npc_text Text07a8
+ give_booster_packs BOOSTER_MYSTERY_FIGHTING_COLORLESS, BOOSTER_MYSTERY_FIGHTING_COLORLESS, NO_BOOSTER
+ print_npc_text Text07a9
+ quit_script_fully
+
+Script_LostToGene:
+ start_script
+ jump_if_event_true EVENT_BEAT_GENE, .ows_e09a
+ print_text_quit_fully Text07aa
+
+.ows_e07b
+ print_npc_text Text07ab
+ ask_question_jump Text07a4, .ows_e087
+ print_npc_text Text07ac
+ quit_script_fully
+
+.ows_e087
+ print_npc_text Text07ad
+ start_duel PRIZES_6, ROCK_CRUSHER_DECK_ID, MUSIC_DUEL_THEME_2
+ quit_script_fully
+
+.ows_e08f
+ print_npc_text Text07ae
+ give_booster_packs BOOSTER_MYSTERY_FIGHTING_COLORLESS, BOOSTER_MYSTERY_FIGHTING_COLORLESS, NO_BOOSTER
+ print_npc_text Text07af
+ quit_script_fully
+
+.ows_e09a
+ print_text_quit_fully Text07b0
+ ret
diff --git a/src/scripts/rock_club_entrance.asm b/src/scripts/rock_club_entrance.asm
new file mode 100644
index 0000000..2daeada
--- /dev/null
+++ b/src/scripts/rock_club_entrance.asm
@@ -0,0 +1,3 @@
+Script_Clerk2:
+ start_script
+ print_text_quit_fully Text0779
diff --git a/src/scripts/rock_club_lobby.asm b/src/scripts/rock_club_lobby.asm
new file mode 100644
index 0000000..e98963d
--- /dev/null
+++ b/src/scripts/rock_club_lobby.asm
@@ -0,0 +1,156 @@
+RockClubLobbyAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_CHRIS
+ db NPC_CHRIS
+ dw Script_BeatChrisInRockClubLobby
+ dw Script_LostToChrisInRockClubLobby
+
+ db NPC_MATTHEW
+ db NPC_MATTHEW
+ dw Script_BeatMatthew
+ dw Script_LostToMatthew
+ db $00
+
+Preload_ChrisInRockClubLobby:
+ get_event_value EVENT_PUPIL_CHRIS_STATE
+ or a ; cp PUPIL_INACTIVE
+ ret z
+ cp PUPIL_DEFEATED
+ ret
+
+Script_Chris:
+ start_script
+ jump_if_event_greater_or_equal EVENT_PUPIL_CHRIS_STATE, PUPIL_DEFEATED, Script_de4b
+ print_npc_text Text077a
+ ask_question_jump Text077b, .ows_df04
+ print_npc_text Text077c
+ quit_script_fully
+
+.ows_df04
+ print_npc_text Text077d
+ start_duel PRIZES_4, MUSCLES_FOR_BRAINS_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatChrisInRockClubLobby:
+ start_script
+ set_event EVENT_PUPIL_CHRIS_STATE, PUPIL_DEFEATED
+ print_npc_text Text077e
+ give_booster_packs BOOSTER_EVOLUTION_FIGHTING, BOOSTER_EVOLUTION_FIGHTING, NO_BOOSTER
+ print_npc_text Text077f
+ close_text_box
+ move_active_npc_by_direction NPCMovementTable_df24
+ unload_active_npc
+ quit_script_fully
+
+Script_LostToChrisInRockClubLobby:
+ start_script
+ print_text_quit_fully Text0780
+
+NPCMovementTable_df24:
+ dw NPCMovement_df2c
+ dw NPCMovement_df2c
+ dw NPCMovement_df34
+ dw NPCMovement_df2c
+
+NPCMovement_df2c:
+ db SOUTH
+ db SOUTH
+ db EAST
+ db EAST
+ db EAST
+ db EAST
+ db EAST
+ db $ff
+
+NPCMovement_df34:
+ db EAST
+ db SOUTH
+ db SOUTH
+ db $fe, -9
+
+Script_Matthew:
+ start_script
+ try_give_pc_pack $03
+ jump_if_event_true EVENT_RECEIVED_LEGENDARY_CARDS, .ows_df4c
+ test_if_event_zero EVENT_MATTHEW_STATE
+ print_variable_npc_text Text0781, Text0782
+ script_jump .ows_df4f
+
+.ows_df4c
+ print_npc_text Text0783
+.ows_df4f
+ set_event EVENT_MATTHEW_STATE, MATTHEW_TALKED
+ ask_question_jump Text0784, .ows_df5b
+ print_npc_text Text0785
+ quit_script_fully
+
+.ows_df5b
+ print_npc_text Text0786
+ start_duel PRIZES_4, HARD_POKEMON_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatMatthew:
+ start_script
+ set_event EVENT_MATTHEW_STATE, MATTHEW_DEFEATED
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0787, Text0788
+ give_booster_packs BOOSTER_MYSTERY_FIGHTING_COLORLESS, BOOSTER_MYSTERY_FIGHTING_COLORLESS, NO_BOOSTER
+ print_npc_text Text0789
+ quit_script_fully
+
+Script_LostToMatthew:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text078a, Text078b
+ quit_script_fully
+
+Script_Woman1:
+ start_script
+ jump_if_event_greater_or_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADES_COMPLETE, .ows_dfba
+ jump_if_event_true EVENT_ISHIHARA_MET, .ows_df96
+ 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 Text078c
+
+.ows_df96
+ jump_if_event_true EVENT_TEMP_TRADED_WITH_ISHIHARA, .ows_dfb7
+ jump_if_event_greater_or_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_3_RUMORED, .ows_dfae
+ jump_if_event_greater_or_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_2_RUMORED, .ows_dfa9
+ max_out_event_value EVENT_ISHIHARA_WANTS_TO_TRADE
+ print_text_quit_fully Text078d
+
+.ows_dfa9
+ max_out_event_value EVENT_ISHIHARA_WANTS_TO_TRADE
+ print_text_quit_fully Text078e
+
+.ows_dfae
+ jump_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS, .ows_dfb7
+ max_out_event_value EVENT_ISHIHARA_WANTS_TO_TRADE
+ print_text_quit_fully Text078f
+
+.ows_dfb7
+ print_text_quit_fully Text0790
+
+.ows_dfba
+ set_event EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_LEFT
+ print_text_quit_fully Text0791
+
+Script_Chap1:
+ start_script
+ test_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS
+ print_variable_npc_text Text0792, Text0793
+ quit_script_fully
+
+Preload_Lass3:
+ get_event_value EVENT_RECEIVED_LEGENDARY_CARDS
+ cp TRUE
+ ret
+
+Script_Lass3:
+ start_script
+ print_text_quit_fully Text0794
diff --git a/src/scripts/science_club.asm b/src/scripts/science_club.asm
new file mode 100644
index 0000000..e7624a8
--- /dev/null
+++ b/src/scripts/science_club.asm
@@ -0,0 +1,203 @@
+ScienceClubAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_JOSEPH
+ db NPC_JOSEPH
+ dw Script_BeatJoseph
+ dw Script_LostToJoseph
+
+ db NPC_DAVID
+ db NPC_DAVID
+ dw Script_BeatDavid
+ dw Script_LostToDavid
+
+ db NPC_ERIK
+ db NPC_ERIK
+ dw Script_BeatErik
+ dw Script_LostToErik
+
+ db NPC_RICK
+ db NPC_RICK
+ dw Script_BeatRick
+ dw Script_LostToRick
+ db $00
+
+Script_David:
+ start_script
+ test_if_event_zero EVENT_DAVID_STATE
+ print_variable_npc_text Text074f, Text0750
+ set_event EVENT_DAVID_STATE, DAVID_TALKED
+ ask_question_jump Text0751, .ows_ec27
+ print_npc_text Text0752
+ quit_script_fully
+
+.ows_ec27
+ print_npc_text Text0753
+ start_duel PRIZES_4, LOVELY_NIDORAN_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatDavid:
+ start_script
+ set_event EVENT_DAVID_STATE, DAVID_DEFEATED
+ print_npc_text Text0754
+ give_booster_packs BOOSTER_MYSTERY_GRASS_COLORLESS, BOOSTER_MYSTERY_GRASS_COLORLESS, NO_BOOSTER
+ print_npc_text Text0755
+ quit_script_fully
+
+Script_LostToDavid:
+ start_script
+ print_text_quit_fully Text0756
+
+Script_Erik:
+ start_script
+ print_npc_text Text0757
+ ask_question_jump Text0758, .ows_ec4f
+ print_npc_text Text0759
+ quit_script_fully
+
+.ows_ec4f
+ print_npc_text Text075a
+ start_duel PRIZES_4, POISON_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatErik:
+ start_script
+ print_npc_text Text075b
+ give_booster_packs BOOSTER_EVOLUTION_GRASS, BOOSTER_EVOLUTION_GRASS, NO_BOOSTER
+ print_npc_text Text075c
+ quit_script_fully
+
+Script_LostToErik:
+ start_script
+ print_text_quit_fully Text075d
+
+Script_Rick:
+ start_script
+ jump_if_event_true EVENT_BEAT_RICK, Script_LostToRick.ows_eca2
+ print_npc_text Text075e
+ ask_question_jump Text075f, .ows_ec78
+ print_npc_text Text0760
+ quit_script_fully
+
+.ows_ec78
+ print_npc_text Text0761
+ start_duel PRIZES_6, WONDERS_OF_SCIENCE_DECK_ID, MUSIC_DUEL_THEME_2
+ quit_script_fully
+
+Script_BeatRick:
+ start_script
+ jump_if_event_true EVENT_BEAT_RICK, Script_LostToRick.ows_ecb6
+ print_npc_text Text0762
+ max_out_event_value EVENT_BEAT_RICK
+ try_give_medal_pc_packs
+ show_medal_received_screen EVENT_BEAT_RICK
+ record_master_win $07
+ print_npc_text Text0763
+ give_booster_packs BOOSTER_LABORATORY_GRASS, BOOSTER_LABORATORY_GRASS, NO_BOOSTER
+ print_npc_text Text0764
+ quit_script_fully
+
+Script_LostToRick:
+ start_script
+ jump_if_event_true EVENT_BEAT_RICK, .ows_ecc1
+ print_text_quit_fully Text0765
+
+.ows_eca2
+ print_npc_text Text0766
+ ask_question_jump Text075f, .ows_ecae
+ print_npc_text Text0767
+ quit_script_fully
+
+.ows_ecae
+ print_npc_text Text0768
+ start_duel PRIZES_6, WONDERS_OF_SCIENCE_DECK_ID, MUSIC_DUEL_THEME_2
+ quit_script_fully
+
+.ows_ecb6
+ print_npc_text Text0769
+ give_booster_packs BOOSTER_LABORATORY_GRASS, BOOSTER_LABORATORY_GRASS, NO_BOOSTER
+ print_npc_text Text076a
+ quit_script_fully
+
+.ows_ecc1
+ print_text_quit_fully Text076b
+
+Preload_Joseph:
+ ld a, EVENT_BEAT_JOSEPH
+ call GetEventValue
+ or a
+ jr z, .not_defeated
+ ; move joseph to unblock the science master's room
+ ld a, [wLoadNPCXPos]
+ add 2
+ ld [wLoadNPCXPos], a
+ ld a, WEST
+ ld [wLoadNPCDirection], a
+.not_defeated
+ scf
+ ret
+
+Script_Joseph:
+ start_script
+ try_give_pc_pack $08
+ jump_if_event_true EVENT_BEAT_JOSEPH, Script_LostToJoseph.ows_ed24
+ print_npc_text Text076c
+ ask_question_jump Text076d, .ows_ecee
+ print_npc_text Text076e
+ quit_script_fully
+
+.ows_ecee
+ print_npc_text Text076f
+ start_duel PRIZES_4, FLYIN_POKEMON_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatJoseph:
+ start_script
+ jump_if_event_true EVENT_BEAT_JOSEPH, Script_LostToJoseph.ows_ed37
+ print_npc_text Text0770
+ close_text_box
+ move_active_npc_by_direction NPCMovementTable_ed11
+ set_active_npc_direction WEST
+ max_out_event_value EVENT_BEAT_JOSEPH
+ print_npc_text Text0771
+ give_booster_packs BOOSTER_LABORATORY_GRASS, BOOSTER_LABORATORY_GRASS, NO_BOOSTER
+ print_npc_text Text0772
+ quit_script_fully
+
+NPCMovementTable_ed11:
+ dw NPCMovement_ed19
+ dw NPCMovement_ed19
+ dw NPCMovement_ed19
+ dw NPCMovement_ed19
+
+NPCMovement_ed19:
+ db EAST
+ db WEST | NO_MOVE
+ db $ff
+
+Script_LostToJoseph:
+ start_script
+ jump_if_event_true EVENT_BEAT_JOSEPH, .ows_ed42
+ print_text_quit_fully Text0773
+
+.ows_ed24
+ print_npc_text Text0774
+ ask_question_jump Text076d, .ows_ed2f
+ print_text_quit_fully Text076e
+
+.ows_ed2f
+ print_npc_text Text0775
+ start_duel PRIZES_4, FLYIN_POKEMON_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+.ows_ed37
+ print_npc_text Text0776
+ give_booster_packs BOOSTER_LABORATORY_GRASS, BOOSTER_LABORATORY_GRASS, NO_BOOSTER
+ print_npc_text Text0777
+ quit_script_fully
+
+.ows_ed42
+ print_text_quit_fully Text0778
diff --git a/src/scripts/science_club_entrance.asm b/src/scripts/science_club_entrance.asm
new file mode 100644
index 0000000..bb7710f
--- /dev/null
+++ b/src/scripts/science_club_entrance.asm
@@ -0,0 +1,3 @@
+Script_Clerk7:
+ start_script
+ print_text_quit_fully Text0744
diff --git a/src/scripts/science_club_lobby.asm b/src/scripts/science_club_lobby.asm
new file mode 100644
index 0000000..9dc9e57
--- /dev/null
+++ b/src/scripts/science_club_lobby.asm
@@ -0,0 +1,100 @@
+ScienceClubLobbyAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_IMAKUNI
+ db NPC_IMAKUNI
+ dw Script_BeatImakuni
+ dw Script_LostToImakuni
+ db $00
+
+Preload_ImakuniInScienceClubLobby:
+ get_event_value EVENT_IMAKUNI_STATE
+ cp IMAKUNI_TALKED
+ jr c, .dont_load
+ get_event_value EVENT_TEMP_DUELED_IMAKUNI
+ jr nz, .dont_load
+ get_event_value EVENT_IMAKUNI_ROOM
+ cp IMAKUNI_SCIENCE_CLUB
+ jr z, .load_imakuni
+.dont_load
+ or a
+ ret
+
+.load_imakuni
+ ld a, MUSIC_IMAKUNI
+ ld [wDefaultSong], a
+ scf
+ ret
+
+Script_Lad1:
+ start_script
+ jump_if_event_greater_or_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADES_COMPLETE, .ows_ebbb
+ jump_if_event_true EVENT_ISHIHARA_MET, .ows_eb97
+ 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 Text0745
+
+.ows_eb97
+ jump_if_event_true EVENT_TEMP_TRADED_WITH_ISHIHARA, .ows_ebb8
+ jump_if_event_greater_or_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_3_RUMORED, .ows_ebaf
+ jump_if_event_greater_or_equal EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_TRADE_2_RUMORED, .ows_ebaa
+ max_out_event_value EVENT_ISHIHARA_WANTS_TO_TRADE
+ print_text_quit_fully Text0746
+
+.ows_ebaa
+ max_out_event_value EVENT_ISHIHARA_WANTS_TO_TRADE
+ print_text_quit_fully Text0747
+
+.ows_ebaf
+ jump_if_event_false EVENT_RECEIVED_LEGENDARY_CARDS, .ows_ebb8
+ max_out_event_value EVENT_ISHIHARA_WANTS_TO_TRADE
+ print_text_quit_fully Text0748
+
+.ows_ebb8
+ print_text_quit_fully Text0749
+
+.ows_ebbb
+ set_event EVENT_ISHIHARA_TRADE_STATE, ISHIHARA_LEFT
+ print_text_quit_fully Text074a
+
+Script_Man3:
+ start_script
+ print_text_quit_fully Text074b
+
+Script_Specs2:
+ call UpdateRNGSources
+ and %11
+ ld c, a
+ ld b, 0
+ ld hl, Data_ebe7
+ add hl, bc
+ ld e, [hl]
+ ld d, 0
+ call GetCardName
+ ld hl, wTxRam2
+ ld a, e
+ ld [hli], a
+ ld [hl], d
+
+ start_script
+ print_npc_text Text074c
+ move_active_npc NPCMovement_ebeb
+ print_text_quit_fully Text074d
+
+Data_ebe7:
+ db PORYGON
+ db DITTO
+ db MUK
+ db WEEZING
+
+NPCMovement_ebeb:
+ db WEST | NO_MOVE
+ db $ff
+
+Script_Specs3:
+ start_script
+ print_text_quit_fully Text074e
diff --git a/src/scripts/water_club.asm b/src/scripts/water_club.asm
new file mode 100644
index 0000000..0dbbd8a
--- /dev/null
+++ b/src/scripts/water_club.asm
@@ -0,0 +1,321 @@
+WaterClubMovePlayer:
+ ld a, [wPlayerYCoord]
+ cp $8
+ ret nz
+ get_event_value EVENT_JOSHUA_STATE
+ cp JOSHUA_DEFEATED
+ ret nc
+ ld a, NPC_JOSHUA
+ ld [wTempNPC], a
+ ld bc, Script_NotReadyToSeeAmy
+ jp SetNextNPCAndScript
+
+WaterClubAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_SARA
+ db NPC_SARA
+ dw Script_BeatSara
+ dw Script_LostToSara
+
+ db NPC_AMANDA
+ db NPC_AMANDA
+ dw Script_BeatAmanda
+ dw Script_LostToAmanda
+
+ db NPC_JOSHUA
+ db NPC_JOSHUA
+ dw Script_BeatJoshua
+ dw Script_LostToJoshua
+
+ db NPC_AMY
+ db NPC_AMY
+ dw Script_BeatAmy
+ dw Script_LostToAmy
+ db $00
+
+Script_Sara:
+ start_script
+ print_npc_text Text042c
+ ask_question_jump Text042d, .start_duel
+ print_npc_text Text042e
+ quit_script_fully
+
+.start_duel
+ print_npc_text Text042f
+ start_duel PRIZES_2, WATERFRONT_POKEMON_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatSara:
+ start_script
+ max_out_event_value EVENT_BEAT_SARA
+ print_npc_text Text0430
+ give_booster_packs BOOSTER_COLOSSEUM_WATER, BOOSTER_COLOSSEUM_WATER, NO_BOOSTER
+ print_npc_text Text0431
+ quit_script_fully
+
+Script_LostToSara:
+ start_script
+ print_text_quit_fully Text0432
+
+Script_Amanda:
+ start_script
+ print_npc_text Text0433
+ ask_question_jump Text0434, .start_duel
+ print_npc_text Text0435
+ quit_script_fully
+
+.start_duel
+ print_npc_text Text0436
+ start_duel PRIZES_3, LONELY_FRIENDS_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_BeatAmanda:
+ start_script
+ max_out_event_value EVENT_BEAT_AMANDA
+ print_npc_text Text0437
+ give_booster_packs BOOSTER_MYSTERY_LIGHTNING_COLORLESS, BOOSTER_MYSTERY_LIGHTNING_COLORLESS, NO_BOOSTER
+ print_npc_text Text0438
+ quit_script_fully
+
+Script_LostToAmanda:
+ start_script
+ print_text_quit_fully Text0439
+
+Script_NotReadyToSeeAmy:
+ start_script
+ jump_if_player_coords_match 18, 8, .ows_e1ec
+ jump_if_player_coords_match 20, 8, .ows_e1f2
+ jump_if_player_coords_match 24, 8, .ows_e1f8
+.ows_e1d5
+ move_player SOUTH, 4
+ move_active_npc NPCMovement_e213
+ print_npc_text Text043a
+ jump_if_player_coords_match 18, 10, .ows_e1fe
+ jump_if_player_coords_match 20, 10, .ows_e202
+ move_active_npc NPCMovement_e215
+ quit_script_fully
+
+.ows_e1ec
+ move_active_npc NPCMovement_e206
+ script_jump .ows_e1d5
+
+.ows_e1f2
+ move_active_npc NPCMovement_e20b
+ script_jump .ows_e1d5
+
+.ows_e1f8
+ move_active_npc NPCMovement_e20f
+ script_jump .ows_e1d5
+
+.ows_e1fe
+ move_active_npc NPCMovement_e218
+ quit_script_fully
+
+.ows_e202
+ move_active_npc NPCMovement_e219
+ quit_script_fully
+
+NPCMovement_e206:
+ db NORTH
+ db WEST
+ db WEST
+ db SOUTH | NO_MOVE
+ db $ff
+
+NPCMovement_e20b:
+ db NORTH
+ db WEST
+ db SOUTH | NO_MOVE
+ db $ff
+
+NPCMovement_e20f:
+ db NORTH
+ db EAST
+ db SOUTH | NO_MOVE
+ db $ff
+
+NPCMovement_e213:
+ db SOUTH
+ db $ff
+
+NPCMovement_e215:
+ db WEST
+ db SOUTH | NO_MOVE
+ db $ff
+
+NPCMovement_e218:
+ db EAST
+NPCMovement_e219:
+ db EAST
+ db SOUTH | NO_MOVE
+ db $ff
+
+Script_Joshua:
+ start_script
+ jump_if_event_false EVENT_BEAT_AMANDA, .sara_and_amanda_not_beaten
+ jump_if_event_false EVENT_BEAT_SARA, .sara_and_amanda_not_beaten
+ script_jump .beat_sara_and_amanda
+
+.sara_and_amanda_not_beaten
+ set_event EVENT_JOSHUA_STATE, JOSHUA_TALKED
+ print_npc_text Text043b
+ quit_script_fully
+
+.beat_sara_and_amanda
+ jump_if_event_nonzero EVENT_JOSHUA_STATE, .already_talked
+ set_event EVENT_JOSHUA_STATE, JOSHUA_TALKED
+ print_npc_text Text043b
+ print_npc_text Text043c
+.already_talked
+ test_if_event_equal EVENT_JOSHUA_STATE, JOSHUA_TALKED
+ print_variable_npc_text Text043d, Text043e
+ ask_question_jump Text043f, .start_duel
+ test_if_event_equal EVENT_JOSHUA_STATE, JOSHUA_TALKED
+ print_variable_npc_text Text0440, Text0441
+ quit_script_fully
+
+.start_duel
+ print_npc_text Text0442
+ try_give_pc_pack $04
+ start_duel PRIZES_4, SOUND_OF_THE_WAVES_DECK_ID, MUSIC_DUEL_THEME_1
+ quit_script_fully
+
+Script_LostToJoshua:
+ start_script
+ test_if_event_equal EVENT_JOSHUA_STATE, JOSHUA_TALKED
+ print_variable_npc_text Text0443, Text0444
+ quit_script_fully
+
+Script_BeatJoshua:
+ start_script
+ test_if_event_equal EVENT_JOSHUA_STATE, JOSHUA_TALKED
+ print_variable_npc_text Text0445, Text0446
+ give_booster_packs BOOSTER_MYSTERY_WATER_COLORLESS, BOOSTER_MYSTERY_WATER_COLORLESS, NO_BOOSTER
+ test_if_event_equal EVENT_JOSHUA_STATE, JOSHUA_TALKED
+ print_variable_npc_text Text0447, Text0448
+ jump_if_event_not_equal EVENT_JOSHUA_STATE, JOSHUA_DEFEATED, .first_joshua_win
+ quit_script_fully
+
+.first_joshua_win
+ set_event EVENT_JOSHUA_STATE, JOSHUA_DEFEATED
+ print_npc_text Text0449
+ close_text_box
+ move_active_npc_by_direction NPCMovementTable_e2a1
+ print_npc_text Text044a
+ set_active_npc_direction NORTH
+ close_advanced_text_box
+ set_next_npc_and_script NPC_AMY, Script_MeetAmy
+ end_script
+ ret
+
+NPCMovementTable_e2a1:
+ dw NPCMovement_e2a9
+ dw NPCMovement_e2a9
+ dw NPCMovement_e2a9
+ dw NPCMovement_e2a9
+
+NPCMovement_e2a9:
+ db NORTH
+ db $ff
+
+NPCMovement_e2ab:
+ db SOUTH
+ db $ff
+
+Preload_Amy:
+ xor a
+ ld [wd3d0], a
+ ld a, [wActiveGameEvent]
+ or a
+ jr z, .asm_e2cf
+ ld a, [wPlayerXCoord]
+ cp $14
+ jr nz, .asm_e2cf
+ ld a, [wPlayerYCoord]
+ cp $06
+ jr nz, .asm_e2cf
+ ld a, $14
+ ld [wLoadNPCXPos], a
+ ld a, $01
+ ld [wd3d0], a
+.asm_e2cf
+ scf
+ ret
+
+Script_MeetAmy:
+ start_script
+ print_npc_text Text044b
+ set_dialog_npc NPC_JOSHUA
+ print_npc_text Text044c
+ set_dialog_npc NPC_AMY
+ print_npc_text Text044d
+ close_text_box
+ set_sprite_attributes $09, $2f, $10
+ do_frames 32
+ set_sprite_attributes $04, $0e, $00
+ set_active_npc_coords 20, 4
+ set_player_direction WEST
+ move_player WEST, 1
+ set_player_direction NORTH
+ move_player NORTH, 1
+ move_player NORTH, 1
+ move_npc NPC_JOSHUA, NPCMovement_e2ab
+ print_npc_text Text044e
+ script_jump Script_Amy.ask_for_duel
+
+Script_Amy:
+ start_script
+ jump_if_event_true EVENT_BEAT_AMY, Script_Amy_AlreadyHaveMedal
+ print_npc_text Text044f
+.ask_for_duel
+ ask_question_jump Text0450, .start_duel
+.deny_duel
+ print_npc_text Text0451
+ jump_if_active_npc_coords_match 20, 4, Script_LostToAmy.ows_e34e
+ quit_script_fully
+
+.start_duel
+ print_npc_text Text0452
+ start_duel PRIZES_6, GO_GO_RAIN_DANCE_DECK_ID, MUSIC_DUEL_THEME_2
+ quit_script_fully
+
+Script_BeatAmy:
+ start_script
+ print_npc_text Text0453
+ jump_if_event_true EVENT_BEAT_AMY, .give_booster_packs
+ print_npc_text Text0454
+ max_out_event_value EVENT_BEAT_AMY
+ try_give_medal_pc_packs
+ show_medal_received_screen EVENT_BEAT_AMY
+ record_master_win $03
+ print_npc_text Text0455
+.give_booster_packs
+ give_booster_packs BOOSTER_LABORATORY_WATER, BOOSTER_LABORATORY_WATER, NO_BOOSTER
+ print_npc_text Text0456
+ jump_if_active_npc_coords_match 20, 4, Script_LostToAmy.ows_e34e
+ quit_script_fully
+
+Script_LostToAmy:
+ start_script
+ print_npc_text Text0457
+ jump_if_active_npc_coords_match 20, 4, .ows_e34e
+ quit_script_fully
+
+.ows_e34e
+ set_sprite_attributes $08, $2e, $10
+ set_active_npc_coords 22, 4
+ quit_script_fully
+
+Script_Amy_AlreadyHaveMedal:
+ print_npc_text Text0458
+ ask_question_jump Text0450, .start_duel
+ script_jump Script_Amy.deny_duel
+
+.start_duel
+ print_npc_text Text0459
+ start_duel PRIZES_6, GO_GO_RAIN_DANCE_DECK_ID, MUSIC_DUEL_THEME_2
+ quit_script_fully
diff --git a/src/scripts/water_club_entrance.asm b/src/scripts/water_club_entrance.asm
new file mode 100644
index 0000000..653c5c3
--- /dev/null
+++ b/src/scripts/water_club_entrance.asm
@@ -0,0 +1,3 @@
+Script_Clerk3:
+ start_script
+ print_text_quit_fully Text041c
diff --git a/src/scripts/water_club_lobby.asm b/src/scripts/water_club_lobby.asm
new file mode 100644
index 0000000..aa7cd56
--- /dev/null
+++ b/src/scripts/water_club_lobby.asm
@@ -0,0 +1,92 @@
+WaterClubLobbyAfterDuel:
+ ld hl, .after_duel_table
+ call FindEndOfDuelScript
+ ret
+
+.after_duel_table
+ db NPC_IMAKUNI
+ db NPC_IMAKUNI
+ dw Script_BeatImakuni
+ dw Script_LostToImakuni
+ db $00
+
+Preload_ImakuniInWaterClubLobby:
+ get_event_value EVENT_IMAKUNI_STATE
+ cp IMAKUNI_TALKED
+ jr c, .dont_load
+ get_event_value EVENT_TEMP_DUELED_IMAKUNI
+ jr nz, .dont_load
+ get_event_value EVENT_IMAKUNI_ROOM
+ cp IMAKUNI_WATER_CLUB
+ jr z, .load_imakuni
+.dont_load
+ or a
+ ret
+
+.load_imakuni
+ ld a, MUSIC_IMAKUNI
+ ld [wDefaultSong], a
+ scf
+ ret
+
+Script_Gal1:
+ start_script
+ jump_if_event_equal EVENT_GAL1_TRADE_STATE, GAL1_TRADE_COMPLETED, .ows_e10e
+ test_if_event_equal EVENT_GAL1_TRADE_STATE, GAL1_TRADE_NOT_OFFERED
+ print_variable_npc_text Gal1WantToTrade1Text, Gal1WantToTrade2Text
+ set_event EVENT_GAL1_TRADE_STATE, GAL1_TRADE_OFFERED
+ ask_question_jump Gal1WouldYouLikeToTradeText, .ows_e0eb
+ print_npc_text Gal1DeclinedTradeText
+ quit_script_fully
+
+.ows_e0eb
+ jump_if_card_owned LAPRAS, .ows_e0f3
+ print_npc_text Gal1DontOwnCardText
+ quit_script_fully
+
+.ows_e0f3
+ jump_if_card_in_collection LAPRAS, .ows_e0fb
+ print_npc_text Gal1CardInDeckText
+ quit_script_fully
+
+.ows_e0fb
+ set_event EVENT_GAL1_TRADE_STATE, GAL1_TRADE_COMPLETED
+ print_npc_text Gal1LetsTradeText
+ print_text Gal1TradeCompleteText
+ take_card LAPRAS
+ give_card ARCANINE1
+ show_card_received_screen ARCANINE1
+ print_npc_text Gal1ThanksText
+ quit_script_fully
+
+.ows_e10e
+ print_text_quit_fully Gal1AfterTradeText
+
+Script_Lass1:
+ start_script
+ jump_if_event_equal EVENT_LASS1_MENTIONED_IMAKUNI, TRUE, .ows_e121
+ print_npc_text Text0427
+ set_event EVENT_LASS1_MENTIONED_IMAKUNI, TRUE
+ set_event EVENT_IMAKUNI_STATE, IMAKUNI_MENTIONED
+ quit_script_fully
+
+.ows_e121
+ jump_if_event_not_equal EVENT_IMAKUNI_ROOM, IMAKUNI_WATER_CLUB, .ows_e12d
+ jump_if_event_true EVENT_TEMP_DUELED_IMAKUNI, .ows_e12d
+ print_text_quit_fully Text0428
+
+.ows_e12d
+ print_text_quit_fully Text0429
+
+Preload_Man2:
+ get_event_value EVENT_JOSHUA_STATE
+ cp JOSHUA_DEFEATED
+ ret
+
+Script_Man2:
+ start_script
+ print_text_quit_fully Text042a
+
+Script_Pappy2:
+ start_script
+ print_text_quit_fully Text042b