diff --git a/src/MaaCore/Task/Interface/RoguelikeTask.cpp b/src/MaaCore/Task/Interface/RoguelikeTask.cpp index bb37087738..9c3ac48f45 100644 --- a/src/MaaCore/Task/Interface/RoguelikeTask.cpp +++ b/src/MaaCore/Task/Interface/RoguelikeTask.cpp @@ -118,24 +118,12 @@ bool asst::RoguelikeTask::set_params(const json::value& params) Task.set_task_base(strategy_task, strategy_task_with_mode); } - if (mode == 4) { - // 获得热水壶和演讲时停止肉鸽(凹直升则继续),获得其他奖励时重开 - std::string last_reward_stop_or_continue = - start_with_elite_two ? "Roguelike@LastReward_default" : "Roguelike@LastReward_stop"; - Task.set_task_base("Roguelike@LastReward", last_reward_stop_or_continue); - Task.set_task_base("Roguelike@LastReward2", "Roguelike@LastReward_restart"); - Task.set_task_base("Roguelike@LastReward3", "Roguelike@LastReward_restart"); - Task.set_task_base("Roguelike@LastReward4", last_reward_stop_or_continue); - Task.set_task_base("Roguelike@LastRewardRand", "Roguelike@LastReward_restart"); - } - else { - // 重置开局奖励 next,获得任意奖励均继续 - Task.set_task_base("Roguelike@LastReward", "Roguelike@LastReward_default"); - Task.set_task_base("Roguelike@LastReward2", "Roguelike@LastReward_default"); - Task.set_task_base("Roguelike@LastReward3", "Roguelike@LastReward_default"); - Task.set_task_base("Roguelike@LastReward4", "Roguelike@LastReward_default"); - Task.set_task_base("Roguelike@LastRewardRand", "Roguelike@LastReward_default"); - } + // 重置开局奖励 next,获得任意奖励均继续;烧水相关逻辑在 RoguelikeLastRewardTaskPlugin + Task.set_task_base("Roguelike@LastReward", "Roguelike@LastReward_default"); + Task.set_task_base("Roguelike@LastReward2", "Roguelike@LastReward_default"); + Task.set_task_base("Roguelike@LastReward3", "Roguelike@LastReward_default"); + Task.set_task_base("Roguelike@LastReward4", "Roguelike@LastReward_default"); + Task.set_task_base("Roguelike@LastRewardRand", "Roguelike@LastReward_default"); if (mode == 1) { // 战斗后奖励只拿钱 diff --git a/src/MaaCore/Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.cpp index 5dd0c4639b..953e1f9f2a 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.cpp @@ -37,8 +37,6 @@ bool asst::RoguelikeDifficultySelectionTaskPlugin::_run() // 当前难度 std::string difficulty = status()->get_properties(Status::RoguelikeDifficulty).value(); - // 需要开局凹直升 - std::string start_with_elite_two = status()->get_properties(Status::RoguelikeStartWithEliteTwo).value(); if (m_roguelike_theme != "Phantom" && mode == "4") { if (difficulty == "max") { ProcessTask(*this, { m_roguelike_theme + "@Roguelike@ChooseDifficulty_Hardest" }).run(); diff --git a/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.cpp index 21aeac952b..be65cf6f00 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.cpp @@ -23,16 +23,16 @@ bool asst::RoguelikeLastRewardTaskPlugin::verify(AsstMsg msg, const json::value& } if (task_view == "Roguelike@StartExplore") { // 标记开始行动 - m_need_change_difficulty_higher = false; + m_is_next_hardest = false; return false; } if (task_view == "Roguelike@ExitThenAbandon") { // 开始行动过且没有打完三层,重开低难度 - return !m_need_change_difficulty_higher; + return !m_is_next_hardest; } if (task_view == "Roguelike@ExitThenAbandon_ToHardest") { // 打完低难度的三层,重开高难度烧水壶 - m_need_change_difficulty_higher = true; + m_is_next_hardest = true; return true; } else { @@ -56,12 +56,29 @@ bool asst::RoguelikeLastRewardTaskPlugin::_run() Task.set_task_base(stages_task_name, strategy_task_name); } + // 需要开局凹直升 + bool start_with_elite_two = + status()->get_properties(Status::RoguelikeStartWithEliteTwo).value() == std::to_string(true); if (m_roguelike_theme != "Phantom" && mode == "4") { - if (m_need_change_difficulty_higher) { + if (m_is_next_hardest) { status()->set_properties(Status::RoguelikeDifficulty, "max"); + // 获得热水壶和演讲时停止肉鸽(凹直升则继续),获得其他奖励时重开 + std::string last_reward_stop_or_continue = + start_with_elite_two ? "Roguelike@LastReward_default" : "Roguelike@LastReward_stop"; + Task.set_task_base("Roguelike@LastReward", last_reward_stop_or_continue); + Task.set_task_base("Roguelike@LastReward2", "Roguelike@LastReward_restart"); + Task.set_task_base("Roguelike@LastReward3", "Roguelike@LastReward_restart"); + Task.set_task_base("Roguelike@LastReward4", last_reward_stop_or_continue); + Task.set_task_base("Roguelike@LastRewardRand", "Roguelike@LastReward_restart"); } else { status()->set_properties(Status::RoguelikeDifficulty, "0"); + // 重置开局奖励 next,获得任意奖励均继续 + Task.set_task_base("Roguelike@LastReward", "Roguelike@LastReward_default"); + Task.set_task_base("Roguelike@LastReward2", "Roguelike@LastReward_default"); + Task.set_task_base("Roguelike@LastReward3", "Roguelike@LastReward_default"); + Task.set_task_base("Roguelike@LastReward4", "Roguelike@LastReward_default"); + Task.set_task_base("Roguelike@LastRewardRand", "Roguelike@LastReward_default"); } } return true; diff --git a/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.h b/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.h index c211db60be..8e817f8862 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.h +++ b/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.h @@ -17,6 +17,6 @@ namespace asst virtual bool _run() override; private: - mutable bool m_need_change_difficulty_higher = false; + mutable bool m_is_next_hardest = false; // 下一局是否是高难烧水局 }; }