feat: 增加烧开水功能,优化萨米肉鸽策略 (#6053)

This commit is contained in:
Lancarus
2023-08-25 14:00:44 +08:00
committed by GitHub
parent 6efcffe01e
commit a4ca7c5315
23 changed files with 558 additions and 355 deletions

View File

@@ -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);