diff --git a/resource/tasks.json b/resource/tasks.json index efe7891ded..400785269a 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -7450,20 +7450,20 @@ 100, 255 ] - }, + }, "SkipThePreBattlePlotConfirm": { "action": "ClickSelf", "roi": [ 721, - 390, + 290, 149, - 144 + 244 ], "maskRange": [ 100, 255 ] - }, + }, "SkipForbiddenOperConfirm": { "action": "ClickSelf", "roi": [ diff --git a/src/MaaCore/Task/BattleHelper.cpp b/src/MaaCore/Task/BattleHelper.cpp index 3e2b9a451a..21c549c9e1 100644 --- a/src/MaaCore/Task/BattleHelper.cpp +++ b/src/MaaCore/Task/BattleHelper.cpp @@ -392,10 +392,23 @@ bool asst::BattleHelper::check_pause_button(const cv::Mat& reusable) ret &= battle_result_opt && battle_result_opt->pause_button; return ret; } +bool asst::BattleHelper::check_skip_plot_button(const cv::Mat& reusable) +{ + cv::Mat image = reusable.empty() ? m_inst_helper.ctrler()->get_image() : reusable; + + Matcher battle_plot_analyzer(image); + battle_plot_analyzer.set_task_info("SkipThePreBattlePlot"); + bool ret = battle_plot_analyzer.analyze().has_value(); + if (ret) { + ProcessTask(this_task(), { "SkipThePreBattlePlot" }).run(); + } + return ret; +} bool asst::BattleHelper::check_in_battle(const cv::Mat& reusable, bool weak) { cv::Mat image = reusable.empty() ? m_inst_helper.ctrler()->get_image() : reusable; + check_skip_plot_button(image); if (weak) { BattlefieldMatcher analyzer(image); m_in_battle = analyzer.analyze().has_value(); diff --git a/src/MaaCore/Task/BattleHelper.h b/src/MaaCore/Task/BattleHelper.h index 1b2e3c4e8f..feec30e25e 100644 --- a/src/MaaCore/Task/BattleHelper.h +++ b/src/MaaCore/Task/BattleHelper.h @@ -45,6 +45,7 @@ namespace asst bool use_skill(const std::string& name, bool keep_waiting = true); bool use_skill(const Point& loc, bool keep_waiting = true); bool check_pause_button(const cv::Mat& reusable = cv::Mat()); + bool check_skip_plot_button(const cv::Mat& reusable = cv::Mat()); bool check_in_battle(const cv::Mat& reusable = cv::Mat(), bool weak = true); virtual bool wait_until_start(bool weak = true); bool wait_until_end(bool weak = true); diff --git a/src/MaaCore/Task/Miscellaneous/BattleProcessTask.cpp b/src/MaaCore/Task/Miscellaneous/BattleProcessTask.cpp index 9eb544abfa..dc6165f69f 100644 --- a/src/MaaCore/Task/Miscellaneous/BattleProcessTask.cpp +++ b/src/MaaCore/Task/Miscellaneous/BattleProcessTask.cpp @@ -265,7 +265,7 @@ bool asst::BattleProcessTask::wait_condition(const Action& action) auto do_strategy_and_update_image = [&]() { do_strategic_action(image); image = ctrler()->get_image(); - }; + }; if (action.cost_changes != 0) { update_image_if_empty();