diff options
Diffstat (limited to 'src/scripts')
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 |