perf: FightTask 以剿灭为目标关卡时, 在终端界面找不到周剿灭获取进度图标不再以 False 退出

This commit is contained in:
status102
2026-01-19 21:12:11 +08:00
parent df611b0949
commit 33aaae425b
3 changed files with 24 additions and 1 deletions

View File

@@ -1,6 +1,7 @@
#include "StageNavigationTask.h"
#include <boost/regex.hpp>
#include <ranges>
#include "Config/TaskData.h"
#include "Controller/Controller.h"
@@ -76,7 +77,16 @@ bool asst::StageNavigationTask::_run()
LogTraceFunction;
if (m_is_directly) {
return ProcessTask(*this, { m_directly_task }).set_retry_times(RetryTimesDefault).run();
ProcessTask task(*this, { m_directly_task });
task.set_retry_times(RetryTimesDefault);
bool ret = task.run();
if (!ret && task.get_last_task_name().empty() && std::ranges::find(m_annihilation_tasks, m_directly_task) != m_annihilation_tasks.end()) {
m_fight_task_ptr->set_enable(false);
return true;
}
else {
return ret;
}
}
return chapter_wayfinding() && swipe_and_find_stage();

View File

@@ -3,6 +3,8 @@
namespace asst
{
class ProcessTask;
class StageNavigationTask : public AbstractTask
{
public:
@@ -11,6 +13,11 @@ public:
bool set_stage_name(const std::string& stage_name);
void set_fight_task_ptr(std::shared_ptr<ProcessTask> fight_task_ptr) noexcept
{
m_fight_task_ptr = fight_task_ptr;
};
protected:
virtual bool _run() override;
void clear() noexcept;
@@ -25,5 +32,10 @@ protected:
std::string m_chapter_task;
std::string m_difficulty_task;
std::string m_stage_code;
std::shared_ptr<ProcessTask> m_fight_task_ptr = nullptr;
std::array<std::string, 4> m_annihilation_tasks { "Annihilation",
"Chernobog@Annihilation",
"LungmenOutskirts@Annihilation",
"LungmenDowntown@Annihilation" };
};
}

View File

@@ -35,6 +35,7 @@ asst::FightTask::FightTask(const AsstCallback& callback, Assistant* inst) :
.set_times_limit("EndOfAction", 0)
.set_retry_times(5);
m_stage_navigation_task_ptr->set_fight_task_ptr(m_fight_task_ptr);
m_stage_navigation_task_ptr->set_enable(false).set_retry_times(0);
m_sidestory_reopen_task_ptr->set_enable(false).set_retry_times(0);