From 6e2b869589ea16211df268e95d12b22b47d7106a Mon Sep 17 00:00:00 2001 From: Nymphea <87930564+NympheaR@users.noreply.github.com> Date: Sun, 8 Feb 2026 10:01:38 +0900 Subject: [PATCH 1/2] fix stats reset meltan option --- .../Programs/NonShinyHunting/PokemonLZA_StatsReset.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SerialPrograms/Source/PokemonLZA/Programs/NonShinyHunting/PokemonLZA_StatsReset.cpp b/SerialPrograms/Source/PokemonLZA/Programs/NonShinyHunting/PokemonLZA_StatsReset.cpp index 654b62880b..faaa4f5903 100644 --- a/SerialPrograms/Source/PokemonLZA/Programs/NonShinyHunting/PokemonLZA_StatsReset.cpp +++ b/SerialPrograms/Source/PokemonLZA/Programs/NonShinyHunting/PokemonLZA_StatsReset.cpp @@ -141,7 +141,7 @@ StatsReset::~StatsReset(){ } void StatsReset::on_config_value_changed(void* object){ - ConfigOptionState state = POKEMON == GiftPokemon::MELMETAL + ConfigOptionState state = POKEMON == GiftPokemon::MELTAN ? ConfigOptionState::ENABLED : ConfigOptionState::HIDDEN; RIGHT_SCROLLS.set_visibility(state); From d13f531535a87fc39a2218f55bf04bf881792755 Mon Sep 17 00:00:00 2001 From: Nymphea <87930564+NympheaR@users.noreply.github.com> Date: Sun, 8 Feb 2026 11:16:12 +0900 Subject: [PATCH 2/2] update stats reset to use OCR based fast travel --- .../NonShinyHunting/PokemonLZA_StatsReset.cpp | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/SerialPrograms/Source/PokemonLZA/Programs/NonShinyHunting/PokemonLZA_StatsReset.cpp b/SerialPrograms/Source/PokemonLZA/Programs/NonShinyHunting/PokemonLZA_StatsReset.cpp index faaa4f5903..baba195e1d 100644 --- a/SerialPrograms/Source/PokemonLZA/Programs/NonShinyHunting/PokemonLZA_StatsReset.cpp +++ b/SerialPrograms/Source/PokemonLZA/Programs/NonShinyHunting/PokemonLZA_StatsReset.cpp @@ -4,6 +4,7 @@ * */ +#include "CommonFramework/Exceptions/OperationFailedException.h" #include "CommonFramework/Notifications/ProgramNotifications.h" #include "CommonFramework/ProgramStats/StatsTracking.h" #include "CommonFramework/VideoPipeline/VideoFeed.h" @@ -20,6 +21,7 @@ #include "PokemonLZA_StatsReset.h" #include "PokemonLZA/Programs/PokemonLZA_GameEntry.h" #include "PokemonLZA/Programs/PokemonLZA_BasicNavigation.h" +#include "PokemonLZA/Programs/PokemonLZA_FastTravelNavigation.h" #include "PokemonLZA/Programs/PokemonLZA_MenuNavigation.h" namespace PokemonAutomation{ @@ -162,13 +164,19 @@ void StatsReset::program(SingleSwitchProgramEnvironment& env, ProControllerConte context.wait_for_all_requests(); if (POKEMON == GiftPokemon::FLOETTE || POKEMON == GiftPokemon::MAGEARNA){ - // fly to Quasartico, replace with OCR in the future - overworld_to_main_menu(env.console, context); - open_map(env.console, context, false, false); - pbf_move_right_joystick(context, {0, +1}, 500ms, 500ms); - pbf_move_right_joystick(context, {0, +1}, 500ms, 500ms); - pbf_move_left_joystick(context, {-0.609, 0}, 100ms, 500ms); - fly_from_map(env.console, context); + // fly to Quasartico Inc. + FastTravelState travel_status = open_map_and_fly_to(env.console, context, LANGUAGE, Location::QUASARTICO_INC); + if (travel_status != FastTravelState::SUCCESS){ + stats.errors++; + env.update_stats(); + OperationFailedException::fire( + ErrorReport::SEND_ERROR_REPORT, + "Failed to travel to Quasartico Inc.", + env.console + ); + } + context.wait_for(100ms); + env.log("Detected overworld. Fast traveled to Quasartico Inc."); // move to the door pbf_move_left_joystick(context, {0, +1}, 8s, 500ms); @@ -184,14 +192,18 @@ void StatsReset::program(SingleSwitchProgramEnvironment& env, ProControllerConte if (POKEMON == GiftPokemon::MELTAN || POKEMON == GiftPokemon::MELMETAL){ // fly to Lysandre Café, replace with OCR in the future - overworld_to_main_menu(env.console, context); - open_map(env.console, context, false, false); - pbf_press_button(context, BUTTON_Y, 50ms, 500ms); - pbf_press_dpad(context, DPAD_RIGHT, 50ms, 500ms); - pbf_press_dpad(context, DPAD_RIGHT, 50ms, 500ms); - pbf_press_dpad(context, DPAD_RIGHT, 50ms, 500ms); - pbf_press_dpad(context, DPAD_UP, 50ms, 500ms); - pbf_mash_button(context, BUTTON_A, 5s); + FastTravelState travel_status = open_map_and_fly_to(env.console, context, LANGUAGE, Location::LYSANDRE_CAFE); + if (travel_status != FastTravelState::SUCCESS){ + stats.errors++; + env.update_stats(); + OperationFailedException::fire( + ErrorReport::SEND_ERROR_REPORT, + "Failed to travel to Lysandre Café", + env.console + ); + } + context.wait_for(100ms); + env.log("Detected overworld. Fast traveled to Lysandre Café"); // move to the staircase pbf_move_left_joystick(context, {-1, -0.05}, 200ms, 500ms);