From 0e259023f2e3dbc8fff2ddaa68602ccaa93c544d Mon Sep 17 00:00:00 2001 From: zzyyyl Date: Tue, 3 Oct 2023 03:49:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=82=89=E9=B8=BD=E7=83=A7=E6=B0=B4?= =?UTF-8?q?=E6=97=B6=E4=BD=8E=E9=9A=BE=E5=BA=A6=E6=9C=89=E7=83=AD=E6=B0=B4?= =?UTF-8?q?=E6=97=A0=E6=95=88=EF=BC=8C=E9=AB=98=E9=9A=BE=E5=BA=A6=E7=83=A7?= =?UTF-8?q?=E5=88=B0=E6=B0=B4=E6=89=8D=E5=81=9C=E6=AD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 主要针对第一次进入肉鸽 --- src/MaaCore/Task/Interface/RoguelikeTask.cpp | 24 +++++------------- ...RoguelikeDifficultySelectionTaskPlugin.cpp | 2 -- .../RoguelikeLastRewardTaskPlugin.cpp | 25 ++++++++++++++++--- .../Roguelike/RoguelikeLastRewardTaskPlugin.h | 2 +- 4 files changed, 28 insertions(+), 25 deletions(-) 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; // 下一局是否是高难烧水局 }; }