mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-20 02:55:38 +08:00
feat: 增加烧开水功能,优化萨米肉鸽策略 (#6053)
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#include "RoguelikeTask.h"
|
||||
|
||||
#include "Common/AsstBattleDef.h"
|
||||
#include "Config/TaskData.h"
|
||||
#include "Status.h"
|
||||
#include "Task/ProcessTask.h"
|
||||
#include "Task/Roguelike/RoguelikeBattleTaskPlugin.h"
|
||||
@@ -61,10 +62,11 @@ bool asst::RoguelikeTask::set_params(const json::value& params)
|
||||
status()->set_properties(Status::RoguelikeTheme, theme);
|
||||
m_roguelike_task_ptr->set_tasks({ theme + "@Roguelike@Begin" });
|
||||
|
||||
// 0 - 刷蜡烛,尽可能稳定地打更多层数
|
||||
// 1 - 刷源石锭,第一层投资完就退出
|
||||
// 0 - 刷经验,尽可能稳定地打更多层数,不期而遇采用激进策略
|
||||
// 1 - 刷源石锭,第一层投资完就退出,不期而遇采用保守策略
|
||||
// 2 - 【弃用】两者兼顾,投资过后再退出,没有投资就继续往后打
|
||||
// 3 - 尝试通关,激进策略(TODO)
|
||||
// 4 - 刷开局藏品,以获得热水壶或者演讲稿开局,不期而遇采用保守策略
|
||||
int mode = params.get("mode", 0);
|
||||
status()->set_properties(Status::RoguelikeMode, std::to_string(mode));
|
||||
switch (mode) {
|
||||
@@ -77,13 +79,34 @@ bool asst::RoguelikeTask::set_params(const json::value& params)
|
||||
break;
|
||||
[[unlikely]] case 2:
|
||||
m_debug_task_ptr->set_enable(true);
|
||||
m_roguelike_task_ptr->set_times_limit("StageTraderInvestCancel", 0);
|
||||
m_roguelike_task_ptr->set_times_limit("StageTraderInvestCancel", 0, ProcessTask ::TimesLimitType::Post);
|
||||
break;
|
||||
case 4:
|
||||
m_debug_task_ptr->set_enable(true);
|
||||
break;
|
||||
default:
|
||||
Log.error(__FUNCTION__, "| Unknown mode", mode);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (mode == 4) {
|
||||
Task.get<OcrTaskInfo>(theme + "@Roguelike@LevelName")->text =
|
||||
Task.get<OcrTaskInfo>(theme + "@Roguelike@LevelName_mode4")->text;
|
||||
Task.get(theme + "@Roguelike@LevelName")->next = Task.get(theme + "@Roguelike@LevelName_mode4")->next;
|
||||
Task.get(theme + "@Roguelike@LastReward")->post_delay =
|
||||
Task.get(theme + "@Roguelike@LastReward_mode4")->post_delay;
|
||||
Task.get(theme + "@Roguelike@LastReward4")->post_delay =
|
||||
Task.get(theme + "@Roguelike@LastReward_mode4")->post_delay;
|
||||
}
|
||||
else {
|
||||
Task.get<OcrTaskInfo>(theme + "@Roguelike@LevelName")->text =
|
||||
Task.get<OcrTaskInfo>(theme + "@Roguelike@LevelName_normal_mode")->text;
|
||||
Task.get(theme + "@Roguelike@LevelName")->next = Task.get(theme + "@Roguelike@LevelName_normal_mode")->next;
|
||||
Task.get(theme + "@Roguelike@LastReward")->post_delay =
|
||||
Task.get(theme + "@Roguelike@LastReward_normal_mode")->post_delay;
|
||||
Task.get(theme + "@Roguelike@LastReward4")->post_delay =
|
||||
Task.get(theme + "@Roguelike@LastReward_normal_mode")->post_delay;
|
||||
}
|
||||
int number_of_starts = params.get("starts_count", INT_MAX);
|
||||
m_roguelike_task_ptr->set_times_limit(theme + "@Roguelike@StartExplore", number_of_starts);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user