From 5073104f1df917ab04eda630381e0df67cccf3fe Mon Sep 17 00:00:00 2001
From: violetc <58360096+s-yh-china@users.noreply.github.com>
Date: Tue, 19 Dec 2023 21:19:08 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E8=82=89=E9=B8=BD?=
=?UTF-8?q?=E5=8D=95=E7=8B=AC=E5=87=B9=E7=B2=BE=E4=BA=8C=E6=A8=A1=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/协议文档/集成文档.md | 1 +
src/MaaCore/Task/Roguelike/RoguelikeConfig.h | 3 ++-
.../Task/Roguelike/RoguelikeRecruitTaskPlugin.cpp | 12 ++++++++----
src/MaaWpfGui/Res/Localizations/en-us.xaml | 1 +
src/MaaWpfGui/Res/Localizations/ja-jp.xaml | 1 +
src/MaaWpfGui/Res/Localizations/ko-kr.xaml | 1 +
src/MaaWpfGui/Res/Localizations/zh-cn.xaml | 1 +
src/MaaWpfGui/Res/Localizations/zh-tw.xaml | 1 +
src/MaaWpfGui/ViewModels/UI/SettingsViewModel.cs | 1 +
.../UserControl/RoguelikeSettingsUserControl.xaml | 5 +++--
10 files changed, 20 insertions(+), 7 deletions(-)
diff --git a/docs/协议文档/集成文档.md b/docs/协议文档/集成文档.md
index 56d0edb329..d0d56f31bc 100644
--- a/docs/协议文档/集成文档.md
+++ b/docs/协议文档/集成文档.md
@@ -215,6 +215,7 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha
// 2 - 【即将弃用】两者兼顾,投资过后再退出,没有投资就继续往后打
// 3 - 开发中...
// 4 - 烧热水,到达第三层后直接退出
+ // 5 - 凹精二,不进行后续作战
"starts_count": int, // 开始探索 次数,可选,默认 INT_MAX。达到后自动停止任务
"investment_enabled": bool, // 是否投资源石锭,默认开
"investments_count": int,
diff --git a/src/MaaCore/Task/Roguelike/RoguelikeConfig.h b/src/MaaCore/Task/Roguelike/RoguelikeConfig.h
index ce0b650aef..bf4814354e 100644
--- a/src/MaaCore/Task/Roguelike/RoguelikeConfig.h
+++ b/src/MaaCore/Task/Roguelike/RoguelikeConfig.h
@@ -13,6 +13,7 @@ namespace asst
// 2 - 【已移除】两者兼顾,投资过后再退出,没有投资就继续往后打
// 3 - 尝试通关,激进策略(TODO)
Collectible = 4, // 4 - 刷开局藏品,以获得热水壶或者演讲稿开局,不期而遇采用保守策略
+ StartEliteTwo = 5, // 5 - 只刷直升,有直升就结束任务
};
class RoguelikeTheme
@@ -41,7 +42,7 @@ namespace asst
static constexpr bool is_valid_mode(RoguelikeMode mode)
{
return mode == RoguelikeMode::Exp || mode == RoguelikeMode::Investment ||
- mode == RoguelikeMode::Collectible;
+ mode == RoguelikeMode::Collectible || mode == RoguelikeMode::StartEliteTwo;
}
public:
diff --git a/src/MaaCore/Task/Roguelike/RoguelikeRecruitTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/RoguelikeRecruitTaskPlugin.cpp
index 10dad87db4..affb7a7729 100644
--- a/src/MaaCore/Task/Roguelike/RoguelikeRecruitTaskPlugin.cpp
+++ b/src/MaaCore/Task/Roguelike/RoguelikeRecruitTaskPlugin.cpp
@@ -431,6 +431,8 @@ bool asst::RoguelikeRecruitTaskPlugin::recruit_appointed_char(const std::string&
bool start_with_elite_two = m_config->get_start_with_elite_two();
// 当前肉鸽难度
int difficulty = m_config->get_difficulty();
+ // 当前肉鸽模式
+ RoguelikeMode mode = m_config->get_mode();
for (; i != SwipeTimes; ++i) {
if (need_exit()) {
@@ -453,14 +455,16 @@ bool asst::RoguelikeRecruitTaskPlugin::recruit_appointed_char(const std::string&
Log.info(__FUNCTION__, "| Oper list:", oper_names);
if (it != chars.cend()) {
- // 需要凹直升且当前为max难度时
- if (start_with_elite_two && difficulty == INT_MAX) {
+ // 需要凹直升且当前为max难度或者为凹直升模式时
+ if (mode == RoguelikeMode::StartEliteTwo || (start_with_elite_two && difficulty == INT_MAX)) {
if (it->elite == 2) {
m_task_ptr->set_enable(false);
}
else {
- // 重置难度并放弃
- m_config->set_difficulty(0);
+ // 烧开水模式时重置难度并放弃
+ if (mode == RoguelikeMode::Collectible) {
+ m_config->set_difficulty(0);
+ }
ProcessTask(*this, { m_config->get_theme() + "@Roguelike@ExitThenAbandon" })
.set_times_limit("Roguelike@Abandon", 0)
.run();
diff --git a/src/MaaWpfGui/Res/Localizations/en-us.xaml b/src/MaaWpfGui/Res/Localizations/en-us.xaml
index 4c9925e1f2..f06b337f3e 100644
--- a/src/MaaWpfGui/Res/Localizations/en-us.xaml
+++ b/src/MaaWpfGui/Res/Localizations/en-us.xaml
@@ -103,6 +103,7 @@
Gain Experience Points, clear as many nodes as possible
Invests coins, exits after arriving at the second floor
Fight to obtain starting rewards, reach the third floor then exit
+ Repeat for Starting Operator Elite 2
Starting Squad
Starting Roles
Starting Operator (CN name only)
diff --git a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml
index f48a9488bb..e388678402 100644
--- a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml
+++ b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml
@@ -103,6 +103,7 @@
経験値を取得し、できるだけクリア
源石錐の収集、2階到着後終了
序盤の報酬を得るために戦い、3階到着後終了
+ 凹精二、後続作戦は行わない
最初の分隊
最初の職業
最初のオペレーター(一人だけ、中国名のみを入力可能)
diff --git a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml
index e4158239a6..13f91386aa 100644
--- a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml
+++ b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml
@@ -103,6 +103,7 @@
레벨 우선, 최대한 많은 구역 클리어
오리지늄각뿔 우선, 2번째 구역 도달 즉시 탐험 중도 포기
전기주전자 획득, 3번째 구역 도달 즉시 탐험 중도 포기
+ 요정 2 는 후속 작전 을 하지 않는다
시작 분대
모집 조합
시작 오퍼레이터 (1명)
diff --git a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml
index be586cad85..26d068afe9 100644
--- a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml
+++ b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml
@@ -103,6 +103,7 @@
刷等级,尽可能稳定地打更多层数
刷源石锭,到达第二层后直接退出
烧热水,到达第三层后直接退出
+ 凹精二,不进行后续作战
开局分队
开局职业组
开局干员 (单个)
diff --git a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml
index 82154f2da5..e49261b106 100644
--- a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml
+++ b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml
@@ -103,6 +103,7 @@
刷等級,盡可能穩定地打更多層數
刷源石錠,到達第二層後直接退出
燒熱水,到達第三層後直接退出
+ 凹靜二,不進行後續作戰
開局分隊
開局職業組
開局幹員(單個)
diff --git a/src/MaaWpfGui/ViewModels/UI/SettingsViewModel.cs b/src/MaaWpfGui/ViewModels/UI/SettingsViewModel.cs
index 49140d3610..380bdc3585 100644
--- a/src/MaaWpfGui/ViewModels/UI/SettingsViewModel.cs
+++ b/src/MaaWpfGui/ViewModels/UI/SettingsViewModel.cs
@@ -260,6 +260,7 @@ namespace MaaWpfGui.ViewModels.UI
// new CombData { Display = "两者兼顾,投资过后退出", Value = "2" } // 弃用
// new CombData { Display = Localization.GetString("3"), Value = "3" }, // 开发中
new CombinedData { Display = LocalizationHelper.GetString("RoguelikeLastReward"), Value = "4" },
+ new CombinedData { Display = LocalizationHelper.GetString("RoguelikeStartEliteTwo"), Value = "5" },
};
RoguelikeThemeList = new List
diff --git a/src/MaaWpfGui/Views/UserControl/RoguelikeSettingsUserControl.xaml b/src/MaaWpfGui/Views/UserControl/RoguelikeSettingsUserControl.xaml
index 95a8e97779..a4ad9e6bdb 100644
--- a/src/MaaWpfGui/Views/UserControl/RoguelikeSettingsUserControl.xaml
+++ b/src/MaaWpfGui/Views/UserControl/RoguelikeSettingsUserControl.xaml
@@ -125,8 +125,9 @@
ToolTip="{DynamicResource StartingCoreCharTip}" />
+ IsChecked="{c:Binding 'RoguelikeStartWithEliteTwo or RoguelikeMode == "5"'}"
+ IsEnabled="{c:Binding 'RoguelikeMode != "5"'}"
+ Visibility="{c:Binding '(RoguelikeMode == "4" or RoguelikeMode == "5") and RoguelikeTheme != "Phantom"'}">