rft: 调整肉鸽选择烧水奖励任务链,重新将Roguelike@LastRewardConfirm并入主任务链 (#11689)

- close #11688, close #11683
This commit is contained in:
status102
2025-01-29 17:29:03 +08:00
committed by GitHub
5 changed files with 58 additions and 64 deletions

View File

@@ -7144,14 +7144,16 @@
},
"Roguelike@LastReward": {
"Doc": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援——热水壶",
"baseTask": "Roguelike@LastReward_default",
"template": "empty.png"
"template": "empty.png",
"action": "ClickSelf",
"roi": [225, 199, 829, 241],
"next": []
},
"Roguelike@LastReward-EnterPoint": {
"Doc": "插件挂载选择期望的奖励template为所有LastReward集合进入插件后重新匹配有就Confirm没有就Abandon",
"template": "empty.png",
"roi": [225, 199, 829, 241],
"next": ["Roguelike@RolesDefault", "Roguelike@CloseCollection", "Roguelike@StartExplore"]
"next": ["Roguelike@LastRewardConfirm", "Roguelike@AbandonConfirm#next"]
},
"Roguelike@LastReward-Strategy": {
"Doc": "未指定期望时,默认选择策略",
@@ -7159,36 +7161,30 @@
},
"Roguelike@LastReward2": {
"Doc": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援—— 5 源石锭",
"baseTask": "Roguelike@LastReward_default",
"baseTask": "Roguelike@LastReward",
"template": "empty.png"
},
"Roguelike@LastReward3": {
"Doc": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援—— 3 目标生命",
"baseTask": "Roguelike@LastReward_default",
"baseTask": "Roguelike@LastReward",
"template": "empty.png"
},
"Roguelike@LastReward4": {
"Doc": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援—— 2 希望",
"baseTask": "Roguelike@LastReward_default",
"baseTask": "Roguelike@LastReward",
"template": "empty.png"
},
"Roguelike@LastRewardConfirm": {
"baseTask": "Roguelike@LastReward_default",
"action": "ClickSelf",
"template": "empty.png",
"roi": [171, 474, 935, 205],
"next": []
"next": ["Roguelike@RolesDefault", "Roguelike@CloseCollection"]
},
"Roguelike@LastRewardRand": {
"Doc": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援—— 问号",
"baseTask": "Roguelike@LastReward_default",
"baseTask": "Roguelike@LastReward",
"template": "empty.png"
},
"Roguelike@LastReward_default": {
"template": "empty.png",
"action": "ClickSelf",
"roi": [225, 199, 829, 241],
"next": ["Roguelike@LastRewardConfirm"]
},
"Roguelike@MainThemes": {
"next": ["Roguelike", "Roguelike@ChooseDifficulty", "Roguelike@StartExplore", "Roguelike@Abandon"]
},
@@ -8594,11 +8590,11 @@
"Mizuki@Roguelike@LastReward4": {},
"Mizuki@Roguelike@LastReward5": {
"Doc": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援—— 1 钥匙",
"baseTask": "Mizuki@Roguelike@LastReward_default"
"baseTask": "Mizuki@Roguelike@LastReward"
},
"Mizuki@Roguelike@LastReward6": {
"Doc": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援—— 1 骰子",
"baseTask": "Mizuki@Roguelike@LastReward_default"
"baseTask": "Mizuki@Roguelike@LastReward"
},
"Mizuki@Roguelike@LastRewardConfirm": {},
"Mizuki@Roguelike@LastRewardRand": {},
@@ -10636,7 +10632,7 @@
"Sarkaz@Roguelike@LastReward4": {},
"Sarkaz@Roguelike@LastReward5": {
"Doc": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援—— 2 构想",
"baseTask": "Sarkaz@Roguelike@LastReward_default"
"baseTask": "Sarkaz@Roguelike@LastReward"
},
"Sarkaz@Roguelike@LastRewardConfirm": {},
"Sarkaz@Roguelike@LastRewardRand": {},

View File

@@ -31,23 +31,6 @@ bool asst::RoguelikeConfig::verify_and_load_params(const json::value& params)
if (mode == RoguelikeMode::Collectible) {
m_collectible_mode_shopping = params.get("collectible_mode_shopping", false);
if (auto select_list = params.find<json::object>("collectible_mode_start_list"); select_list) {
RoguelikeStartSelect list;
list.hot_water = select_list->get("hot_water", false);
list.shield = select_list->get("shield", false);
list.ingot = select_list->get("ingot", false);
list.hope = select_list->get("hope", false);
list.random = select_list->get("random", false);
if (m_theme == RoguelikeTheme::Mizuki) {
list.key = select_list->get("key", false);
list.dice = select_list->get("dice", false);
}
else if (m_theme == RoguelikeTheme::Sarkaz) {
list.ideas = select_list->get("ideas", false);
}
m_start_select = list;
}
if (m_theme == RoguelikeTheme::Sami) {
m_first_floor_foldartal = !params.get("first_floor_foldartal", "").empty();
}

View File

@@ -42,18 +42,6 @@ struct RoguelikeOper
int level = 0; // 干员等级
};
struct RoguelikeStartSelect // 刷开局模式下凹开局奖励选择
{
bool hot_water = false; // 热水壶
bool shield = false; // 盾;傀影没盾,是生命
bool ingot = false; // 源石锭
bool hope = false; // 希望
bool random = false; // 随机奖励
bool key = false; // 钥匙
bool dice = false; // 骰子
bool ideas = false; // 构想
};
class RoguelikeConfig
{
public:
@@ -101,10 +89,6 @@ public:
bool get_run_for_collectible() const { return m_run_for_collectible; }
void set_start_select(const RoguelikeStartSelect& start_select) { m_start_select = start_select; }
const auto& get_start_select() const { return m_start_select; }
// ------------------ 投资模式 ------------------
void set_invest_with_more_score(bool value) { m_invest_with_more_score = value; }
@@ -125,8 +109,6 @@ private:
bool m_only_start_with_elite_two = false; // 只凹开局干员精二直升且不进行作战
bool m_run_for_collectible = false; // 用于 RoguelikeMode::Collectible判断是否正在烧水
RoguelikeStartSelect m_start_select; // 开局选择
// ------------------ 投资模式 ------------------
bool m_invest_with_more_score = false; // 投资时招募、购物刷分

View File

@@ -7,6 +7,27 @@
#include "Utils/Logger.hpp"
#include "Vision/Miscellaneous/PipelineAnalyzer.h"
bool asst::RoguelikeLastRewardSelectTaskPlugin::load_params(const json::value& params)
{
if (auto select_list = params.find<json::object>("collectible_mode_start_list"); select_list) {
RoguelikeStartSelect list;
list.hot_water = select_list->get("hot_water", false);
list.shield = select_list->get("shield", false);
list.ingot = select_list->get("ingot", false);
list.hope = select_list->get("hope", false);
list.random = select_list->get("random", false);
if (m_config->get_theme() == RoguelikeTheme::Mizuki) {
list.key = select_list->get("key", false);
list.dice = select_list->get("dice", false);
}
else if (m_config->get_theme() == RoguelikeTheme::Sarkaz) {
list.ideas = select_list->get("ideas", false);
}
m_start_select = list;
}
return true;
}
bool asst::RoguelikeLastRewardSelectTaskPlugin::verify(AsstMsg msg, const json::value& details) const
{
if (msg != AsstMsg::SubTaskStart || details.get("subtask", std::string()) != "ProcessTask") {
@@ -42,7 +63,6 @@ bool asst::RoguelikeLastRewardSelectTaskPlugin::_run()
else if (m_config->get_start_with_elite_two()) {
ctrler()->click(ret->rect);
sleep(Config.get_options().task_delay);
ProcessTask(*this, { m_config->get_theme() + "@Roguelike@LastRewardConfirm" }).run();
}
else {
m_control_ptr->exit_then_stop(false);
@@ -61,32 +81,31 @@ std::vector<std::string> asst::RoguelikeLastRewardSelectTaskPlugin::get_select_l
}
std::vector<std::string> list;
const auto& select = m_config->get_start_select();
if (select.hot_water) {
if (m_start_select.hot_water) {
list.emplace_back(m_config->get_theme() + "@Roguelike@LastReward"); // 热水壶
}
if (select.shield) {
if (m_start_select.shield) {
list.emplace_back(m_config->get_theme() + "@Roguelike@LastReward2"); // 盾;傀影没盾,是生命
}
if (select.ingot) {
if (m_start_select.ingot) {
list.emplace_back(m_config->get_theme() + "@Roguelike@LastReward3"); // 源石锭
}
if (select.hope) {
if (m_start_select.hope) {
list.emplace_back(m_config->get_theme() + "@Roguelike@LastReward4"); // 希望
}
if (select.random) {
if (m_start_select.random) {
list.emplace_back(m_config->get_theme() + "@Roguelike@LastRewardRand"); // 随机奖励
}
if (m_config->get_theme() == RoguelikeTheme::Mizuki) {
if (select.key) {
if (m_start_select.key) {
list.emplace_back("Mizuki@Roguelike@LastReward5"); // 钥匙
}
if (select.dice) {
if (m_start_select.dice) {
list.emplace_back("Mizuki@Roguelike@LastReward6"); // 骰子
}
}
else if (m_config->get_theme() == RoguelikeTheme::Sarkaz && select.ideas) {
else if (m_config->get_theme() == RoguelikeTheme::Sarkaz && m_start_select.ideas) {
list.emplace_back("Sarkaz@Roguelike@LastReward5"); // 构想
}

View File

@@ -3,18 +3,32 @@
namespace asst
{
struct RoguelikeStartSelect // 刷开局模式下凹开局奖励选择
{
bool hot_water = false; // 热水壶
bool shield = false; // 盾;傀影没盾,是生命
bool ingot = false; // 源石锭
bool hope = false; // 希望
bool random = false; // 随机奖励
bool key = false; // 钥匙
bool dice = false; // 骰子
bool ideas = false; // 构想
};
class RoguelikeLastRewardSelectTaskPlugin : public AbstractRoguelikeTaskPlugin
{
public:
using AbstractRoguelikeTaskPlugin::AbstractRoguelikeTaskPlugin;
virtual ~RoguelikeLastRewardSelectTaskPlugin() = default;
virtual bool load_params(const json::value& params) override;
virtual bool verify(AsstMsg msg, const json::value& details) const override;
protected:
virtual bool _run() override;
private:
RoguelikeStartSelect m_start_select; // 开局选择
std::vector<std::string> get_select_list() const;
};
}