mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-19 02:23:01 +08:00
56 lines
1.8 KiB
C++
56 lines
1.8 KiB
C++
#include "RoguelikeLastRewardTaskPlugin.h"
|
||
|
||
#include "Config/TaskData.h"
|
||
#include "Status.h"
|
||
#include "Task/ProcessTask.h"
|
||
#include "Task/Roguelike/RoguelikeLastRewardSelectTaskPlugin.h"
|
||
#include "Utils/Logger.hpp"
|
||
|
||
bool asst::RoguelikeLastRewardTaskPlugin::verify(AsstMsg msg, const json::value& details) const
|
||
{
|
||
if (msg != AsstMsg::SubTaskStart || details.get("subtask", std::string()) != "ProcessTask") {
|
||
return false;
|
||
}
|
||
|
||
if (!RoguelikeConfig::is_valid_theme(m_config->get_theme())) {
|
||
Log.error("Roguelike name doesn't exist!");
|
||
return false;
|
||
}
|
||
const std::string roguelike_name = m_config->get_theme() + "@";
|
||
const std::string& task = details.get("details", "task", "");
|
||
std::string_view task_view = task;
|
||
if (task_view.starts_with(roguelike_name)) {
|
||
task_view.remove_prefix(roguelike_name.length());
|
||
}
|
||
if (task_view == "Roguelike@ExitThenAbandon_ToHardest") {
|
||
// 打完低难度的三层,重开高难度烧水壶
|
||
return true;
|
||
}
|
||
else {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
bool asst::RoguelikeLastRewardTaskPlugin::_run()
|
||
{
|
||
LogTraceFunction;
|
||
|
||
auto mode = m_config->get_mode();
|
||
std::string stages_task_name = m_config->get_theme() + "@Roguelike@Stages";
|
||
std::string strategy_task_name = stages_task_name + "_default";
|
||
|
||
if (Task.get(strategy_task_name) == nullptr) {
|
||
Log.error("Strategy task", strategy_task_name, "doesn't exist!");
|
||
}
|
||
else {
|
||
// 重置选点策略
|
||
Task.set_task_base(stages_task_name, strategy_task_name);
|
||
}
|
||
|
||
if (m_config->get_theme() != RoguelikeTheme::Phantom && mode == RoguelikeMode::Collectible) {
|
||
// 关闭烧开水 Flag,将难度调整回用户设置的数值
|
||
m_config->set_run_for_collectible(false);
|
||
}
|
||
return true;
|
||
}
|