diff --git a/resource/roguelike/Sami/encounter_for_deposit.json b/resource/roguelike/Sami/encounter_for_deposit.json index 425fcf3705..3b751ed6d8 100644 --- a/resource/roguelike/Sami/encounter_for_deposit.json +++ b/resource/roguelike/Sami/encounter_for_deposit.json @@ -523,7 +523,7 @@ { "name": "前行的林地", "option_num": 2, - "choose": 2, + "choose": 1, "choice_require": [ { "name": "树上就不能走吗?", diff --git a/resource/tasks.json b/resource/tasks.json index 939df7fae0..ffd04d4137 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -14707,6 +14707,7 @@ ], "next": [ "Sami@Roguelike@FoldartalGain", + "Sami@Roguelike@LastRewardChoose", "Sami@Roguelike@SquadConfirm#next" ] }, @@ -14772,6 +14773,10 @@ "黜", "黜人" ], + [ + "满", + "萨满" + ], [ "\"", "" @@ -14813,6 +14818,10 @@ [ "开始告", "开始宣告" + ], + [ + "^开始宣.*", + "开始宣告" ] ] }, @@ -14951,6 +14960,20 @@ "Sami@Roguelike@LastReward2": {}, "Sami@Roguelike@LastReward3": {}, "Sami@Roguelike@LastReward4": {}, + "Sami@Roguelike@LastRewardChoose": { + "action": "DoNothing", + "template": "Sami@Roguelike@LastRewardChoose.png", + "cache": false, + "roi": [ + 485, + 4, + 368, + 119 + ], + "next": [ + "Sami@Roguelike@SquadConfirm#next" + ] + }, "Sami@Roguelike@LastRewardConfirm": {}, "Sami@Roguelike@LastRewardRand": {}, "Sami@Roguelike@MapObject": { diff --git a/resource/template/Sami@Roguelike@LastRewardChoose.png b/resource/template/Sami@Roguelike@LastRewardChoose.png new file mode 100644 index 0000000000..e4c46048e0 Binary files /dev/null and b/resource/template/Sami@Roguelike@LastRewardChoose.png differ diff --git a/src/MaaCore/MaaCore.vcxproj b/src/MaaCore/MaaCore.vcxproj index 2a423e8619..98a2b31cec 100644 --- a/src/MaaCore/MaaCore.vcxproj +++ b/src/MaaCore/MaaCore.vcxproj @@ -93,6 +93,7 @@ + @@ -271,6 +272,7 @@ + diff --git a/src/MaaCore/MaaCore.vcxproj.filters b/src/MaaCore/MaaCore.vcxproj.filters index 90b08de49c..1d0ccc2368 100644 --- a/src/MaaCore/MaaCore.vcxproj.filters +++ b/src/MaaCore/MaaCore.vcxproj.filters @@ -696,6 +696,9 @@ Source\Task\Roguelike + + Source\Task\Roguelike + @@ -1160,5 +1163,8 @@ Source\Task\Roguelike + + Source\Task\Roguelike + \ No newline at end of file diff --git a/src/MaaCore/Task/Interface/RoguelikeTask.cpp b/src/MaaCore/Task/Interface/RoguelikeTask.cpp index ef412e3d41..a0a7fb5737 100644 --- a/src/MaaCore/Task/Interface/RoguelikeTask.cpp +++ b/src/MaaCore/Task/Interface/RoguelikeTask.cpp @@ -12,8 +12,10 @@ #include "Task/Roguelike/RoguelikeDebugTaskPlugin.h" #include "Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.h" #include "Task/Roguelike/RoguelikeFoldartalGainTaskPlugin.h" +#include "Task/Roguelike/RoguelikeFoldartalStartTaskPlugin.h" #include "Task/Roguelike/RoguelikeFoldartalUseTaskPlugin.h" #include "Task/Roguelike/RoguelikeFormationTaskPlugin.h" +#include "Task/Roguelike/RoguelikeInvestTaskPlugin.h" #include "Task/Roguelike/RoguelikeLastRewardTaskPlugin.h" #include "Task/Roguelike/RoguelikeRecruitTaskPlugin.h" #include "Task/Roguelike/RoguelikeResetTaskPlugin.h" @@ -22,7 +24,6 @@ #include "Task/Roguelike/RoguelikeSkillSelectionTaskPlugin.h" #include "Task/Roguelike/RoguelikeStageEncounterTaskPlugin.h" #include "Task/Roguelike/RoguelikeStrategyChangeTaskPlugin.h" -#include "Task/Roguelike/RoguelikeInvestTaskPlugin.h" #include "Utils/Logger.hpp" @@ -66,6 +67,7 @@ asst::RoguelikeTask::RoguelikeTask(const AsstCallback& callback, Assistant* inst m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); // 这个任务如果卡住会放弃当前的肉鸽并重新开始,所以多添加一点。先这样凑合用 for (int i = 0; i != 100; ++i) { @@ -98,9 +100,26 @@ bool asst::RoguelikeTask::set_params(const json::value& params) // 是否凹指定干员开局直升 m_roguelike_config_ptr->set_start_with_elite_two(params.get("start_with_elite_two", false)); m_roguelike_config_ptr->set_only_start_with_elite_two(params.get("only_start_with_elite_two", false)); + + // 是否生活队凹开局板子 + m_roguelike_config_ptr->set_start_foldartal(params.contains("start_foldartal_list")); + + if (auto opt = params.find("start_foldartal_list"); opt) { + std::vector list; + for (const auto& name : *opt) { + if (std::string name_str = name.as_string(); !name_str.empty()) { + list.emplace_back(name_str); + } + } + if (list.empty()) { + Log.error(__FUNCTION__, "| Empty start_foldartal_list"); + return false; + } + m_roguelike_config_ptr->set_start_foldartal_list(std::move(list)); + } + m_roguelike_config_ptr->set_invest_maximum(params.get("investments_count", INT_MAX)); m_roguelike_config_ptr->set_invest_stop_when_full(params.get("stop_when_investment_full", false)); - // 设置层数选点策略,相关逻辑在 RoguelikeStrategyChangeTaskPlugin { Task.set_task_base(theme + "@Roguelike@Stages", theme + "@Roguelike@Stages_default"); diff --git a/src/MaaCore/Task/Roguelike/RoguelikeConfig.h b/src/MaaCore/Task/Roguelike/RoguelikeConfig.h index b2a623c002..6b1af3b701 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeConfig.h +++ b/src/MaaCore/Task/Roguelike/RoguelikeConfig.h @@ -51,23 +51,29 @@ namespace asst RoguelikeMode get_mode() const { return m_mode; } void set_difficulty(int difficulty) { m_difficulty = difficulty; } int get_difficulty() const { return m_difficulty; } - void set_start_with_elite_two(bool start_with_elite_two) { m_start_with_elite_two = start_with_elite_two; } + void set_start_with_elite_two(bool value) { m_start_with_elite_two = value; } bool get_start_with_elite_two() const { return m_start_with_elite_two; } void set_only_start_with_elite_two(bool value) { m_only_start_with_elite_two = value; } bool get_only_start_with_elite_two() const { return m_only_start_with_elite_two; } + void set_start_foldartal(bool start_foldartal) { m_start_foldartal = start_foldartal; } + bool get_start_foldartal() const { return m_start_foldartal; } + void set_start_foldartal_list(std::vector string) { m_start_foldartal_list = string; } + std::vector get_start_foldartal_list() const { return m_start_foldartal_list; } void set_invest_maximum(int value) { m_invest_maximum = value; } int get_invest_maximum() const { return m_invest_maximum; } void set_invest_stop_when_full(bool value) { m_invest_stop_when_full = value; } bool get_invest_stop_when_full() const { return m_invest_stop_when_full; } private: - std::string m_theme; // 主题 - RoguelikeMode m_mode = RoguelikeMode::Exp; // 模式 - int m_difficulty = 0; // 难度 - bool m_start_with_elite_two = false; // 在刷开局模式下凹开局干员精二直升 - bool m_only_start_with_elite_two = false; // 只凹开局干员精二直升且不进行作战 - int m_invest_maximum = 0; // 投资次数上限 - bool m_invest_stop_when_full = false; // 存款满了就停止 + std::string m_theme; // 主题 + RoguelikeMode m_mode = RoguelikeMode::Exp; // 模式 + int m_difficulty = 0; // 难度 + bool m_start_with_elite_two = false; // 在刷开局模式下凹开局干员精二直升 + bool m_only_start_with_elite_two = false; // 只凹开局干员精二直升且不进行作战 + bool m_start_foldartal = false; // 生活队凹开局密文板 + std::vector m_start_foldartal_list; // 需要凹的板子 + int m_invest_maximum = 0; // 投资次数上限 + bool m_invest_stop_when_full = false; // 存款满了就停止 /* 以下为每次重置 */ public: @@ -98,8 +104,8 @@ namespace asst int m_recruitment_count = 0; // 招募次数 bool m_recruitment_starts_complete = false; // 开局干员是否已经招募 bool m_recruitment_team_complete = false; // 阵容是否完备 - bool m_trader_no_longer_buy = false; - std::string m_core_char; // 开局干员名 + bool m_trader_no_longer_buy = false; // 不再购买藏品 + std::string m_core_char; // 开局干员名 bool m_team_full_without_rookie = false; bool m_use_support = false; // 开局干员是否为助战干员 bool m_use_nonfriend_support = false; // 是否可以是非好友助战干员 diff --git a/src/MaaCore/Task/Roguelike/RoguelikeFoldartalStartTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/RoguelikeFoldartalStartTaskPlugin.cpp new file mode 100644 index 0000000000..1b6c464af9 --- /dev/null +++ b/src/MaaCore/Task/Roguelike/RoguelikeFoldartalStartTaskPlugin.cpp @@ -0,0 +1,69 @@ +#include "RoguelikeFoldartalStartTaskPlugin.h" + +#include "Config/TaskData.h" +#include "Status.h" +#include "Task/ProcessTask.h" +#include "Utils/Logger.hpp" + +bool asst::RoguelikeFoldartalStartTaskPlugin::verify(AsstMsg msg, const json::value& details) const +{ + if (msg != AsstMsg::SubTaskStart || details.get("subtask", std::string()) != "ProcessTask") { + return false; + } + + if (!RoguelikeConfig::is_valid_theme(m_config->get_theme())) { + Log.error("Roguelike name doesn't exist!"); + return false; + } + if (m_config->get_theme() != RoguelikeTheme::Sami || m_config->get_difficulty() != INT_MAX || + !m_config->get_start_foldartal()) { + return false; + } + const std::string roguelike_name = m_config->get_theme() + "@"; + const std::string& task = details.get("details", "task", ""); + std::string_view task_view = task; + + if (task_view.starts_with(roguelike_name)) { + task_view.remove_prefix(roguelike_name.length()); + } + if (task_view == "Roguelike@LastRewardChoose") { + return true; + } + else { + return false; + } +} + +bool asst::RoguelikeFoldartalStartTaskPlugin::_run() +{ + LogTraceFunction; + + auto mode = m_config->get_mode(); + bool start_foldartal_checked = check_foldartals(); + + // 没有刷到需要的板子,退出重开 + if (mode == RoguelikeMode::Collectible && !start_foldartal_checked) { + m_config->set_difficulty(0); + Task.set_task_base("Roguelike@LastReward", "Roguelike@LastReward_restart"); + Task.set_task_base("Roguelike@LastReward4", "Roguelike@LastReward_restart"); + } + return true; +} + +bool asst::RoguelikeFoldartalStartTaskPlugin::check_foldartals() +{ + // 用户输入的需要的板子字符串 + const auto& extracted_foldartals = m_config->get_start_foldartal_list(); + const auto& all_foldartal = m_config->get_foldartal(); + + // 查找板子 + for (const auto& foldartal : extracted_foldartals) { + if (std::find(all_foldartal.begin(), all_foldartal.end(), foldartal) == all_foldartal.end()) { + // 如果板子没有找到,返回false + return false; + } + } + + // 如果所有板子都找到了,停止 + return true; +} diff --git a/src/MaaCore/Task/Roguelike/RoguelikeFoldartalStartTaskPlugin.h b/src/MaaCore/Task/Roguelike/RoguelikeFoldartalStartTaskPlugin.h new file mode 100644 index 0000000000..eb2a63eb23 --- /dev/null +++ b/src/MaaCore/Task/Roguelike/RoguelikeFoldartalStartTaskPlugin.h @@ -0,0 +1,21 @@ +#pragma once +#include "AbstractRoguelikeTaskPlugin.h" + +namespace asst +{ + class RoguelikeFoldartalStartTaskPlugin : public AbstractRoguelikeTaskPlugin + { + public: + using AbstractRoguelikeTaskPlugin::AbstractRoguelikeTaskPlugin; + virtual ~RoguelikeFoldartalStartTaskPlugin() override = default; + + public: + virtual bool verify(AsstMsg msg, const json::value& details) const override; + + protected: + virtual bool _run() override; + + private: + bool check_foldartals(); + }; +} diff --git a/src/MaaWpfGui/Constants/ConfigurationKeys.cs b/src/MaaWpfGui/Constants/ConfigurationKeys.cs index c3b5988e65..5481fbd37e 100644 --- a/src/MaaWpfGui/Constants/ConfigurationKeys.cs +++ b/src/MaaWpfGui/Constants/ConfigurationKeys.cs @@ -105,6 +105,8 @@ namespace MaaWpfGui.Constants public const string RoguelikeCoreChar = "Roguelike.CoreChar"; public const string RoguelikeStartWithEliteTwo = "Roguelike.RoguelikeStartWithEliteTwo"; public const string RoguelikeOnlyStartWithEliteTwo = "Roguelike.RoguelikeOnlyStartWithEliteTwo"; + public const string Roguelike3NewSquad2StartingFoldartal = "Roguelike.Roguelike3NewSquad2StartingFoldartal"; + public const string Roguelike3NewSquad2StartingFoldartals = "Roguelike.Roguelike3NewSquad2StartingFoldartals"; public const string RoguelikeUseSupportUnit = "Roguelike.RoguelikeUseSupportUnit"; public const string RoguelikeEnableNonfriendSupport = "Roguelike.RoguelikeEnableNonfriendSupport"; public const string RoguelikeDelayAbortUntilCombatComplete = "Roguelike.RoguelikeDelayAbortUntilCombatComplete"; diff --git a/src/MaaWpfGui/Main/AsstProxy.cs b/src/MaaWpfGui/Main/AsstProxy.cs index b7ba885ab4..f2dc189e50 100644 --- a/src/MaaWpfGui/Main/AsstProxy.cs +++ b/src/MaaWpfGui/Main/AsstProxy.cs @@ -2029,13 +2029,15 @@ namespace MaaWpfGui.Main /// TODO. /// 是否凹开局直升 /// 是否只凹开局直升,不进行作战 + /// 是否在萨米肉鸽生活队凹开局板子 + /// 需要凹的板子,用;连接的字符串 /// 是否core_char使用好友助战 /// 是否允许使用非好友助战 - /// 肉鸽名字。["Phantom", "Mizuki", "Sami"] + /// 肉鸽主题["Phantom", "Mizuki", "Sami"] /// 是否用骰子刷新商店购买特殊商品,目前支持水月肉鸽的指路鳞 /// 是否成功。 public bool AsstAppendRoguelike(int mode, int starts, bool investmentEnabled, bool investmentEnterSecondFloor, int invests, bool stopWhenFull, - string squad, string roles, string coreChar, bool startWithEliteTwo, bool onlyStartWithEliteTwo, bool useSupport, bool enableNonFriendSupport, string theme, bool refreshTraderWithDice) + string squad, string roles, string coreChar, bool startWithEliteTwo, bool onlyStartWithEliteTwo, bool roguelike3NewSquad2StartingFoldartal, string roguelike3NewSquad2StartingFoldartals, bool useSupport, bool enableNonFriendSupport, string theme, bool refreshTraderWithDice) { var taskParams = new JObject { @@ -2069,6 +2071,11 @@ namespace MaaWpfGui.Main taskParams["start_with_elite_two"] = mode == 4 && theme != "Phantom" && startWithEliteTwo; taskParams["only_start_with_elite_two"] = mode == 4 && theme != "Phantom" && startWithEliteTwo && onlyStartWithEliteTwo; + if (mode == 4 && theme == "Sami" && roguelike3NewSquad2StartingFoldartal && roguelike3NewSquad2StartingFoldartals.Length > 0) + { + taskParams["start_foldartal_list"] = new JArray(roguelike3NewSquad2StartingFoldartals.Trim().Split(';').Where(i => !string.IsNullOrEmpty(i)).Take(3)); + } + taskParams["use_support"] = useSupport; taskParams["use_nonfriend_support"] = enableNonFriendSupport; taskParams["refresh_trader_with_dice"] = theme == "Mizuki" && refreshTraderWithDice; diff --git a/src/MaaWpfGui/Res/Localizations/en-us.xaml b/src/MaaWpfGui/Res/Localizations/en-us.xaml index 88238dbb8f..51b7cc1dff 100644 --- a/src/MaaWpfGui/Res/Localizations/en-us.xaml +++ b/src/MaaWpfGui/Res/Localizations/en-us.xaml @@ -115,6 +115,8 @@ The agent entered「{0}」is not in battle_data. Check that the name entered is correct, or check the maa resource version. Repeat for「Starting Operator」Elite 2 Only Repeat for「Starting Operator」Elite 2, No Battle + Select 「Starting Operator」 from support unit list Enable non-friend support Don't abort Auto IS until the end of battle diff --git a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml index 16541e4ff3..1ecba433b0 100644 --- a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml +++ b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml @@ -115,6 +115,8 @@ 入力のスタッフ「{0}」がbattle_dataにありません。入力の名前が正しいか、maaリソースのバージョンをチェックしてください。 「最初のオペレーター」直接昇進 指定オペレーターの昇進招集までリセマラし、戦闘を行わない + 生活队凹开局密文板 + 最多写三个,并用英文分号;隔开 「最初のオペレーター」をサポートから選択 フレンド以外のサポートの使用を許可 戦闘終了まえに「停止」を遅らせる diff --git a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml index 09c31632cd..8996df9387 100644 --- a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml +++ b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml @@ -115,6 +115,8 @@ 입력한 하프「{0}」는 battle_data에 없습니다. 입력한 이름이 올바른지 확인하거나 maa 리소스 버전을 확인하십시오. 시작 오퍼레이터 2정예화까지 반복 시작 오퍼레이터 2정예화까지 반복(전투 X) + 生活队凹开局密文板 + 最多写三个,并用英文分号;隔开 시작 오퍼레이터로 지원 유닛 사용 친구가 아니어도 지원 유닛 사용 정지 시 전투 클리어 후 정지 diff --git a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml index df35584904..0bc3671c50 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml @@ -115,6 +115,8 @@ 输入的干员「{0}」未在 battle_data 中,请检查输入的名称是否正确,或检查 maa 资源版本。 凹「开局干员」直升精二 只凹「开局干员」直升精二,不进行作战 + 生活队凹开局密文板 + 最多写三个,并用英文分号;隔开 「开局干员」使用助战 可以使用非好友助战 在战斗结束前延迟「停止」动作 diff --git a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml index 6d6d9f3259..0b2f231afa 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml @@ -115,6 +115,8 @@ 輸入的幹員「{0}」未在 battle_data 中,請檢查輸入的名稱是否正確,或檢查 maa 資源版本。 凹「開局幹員」直升精二 只凹「開局幹員」直升精二,不進行作戰 + 生活隊凹開局密文板 + 最多寫三個,並用英文分號;隔開 「開局幹員」使用助戰 可以使用非好友助戰 在戰斗結束前延遲「停止」動作 diff --git a/src/MaaWpfGui/ViewModels/UI/SettingsViewModel.cs b/src/MaaWpfGui/ViewModels/UI/SettingsViewModel.cs index dedb4d666a..b6ca0e37d2 100644 --- a/src/MaaWpfGui/ViewModels/UI/SettingsViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/SettingsViewModel.cs @@ -1987,6 +1987,33 @@ namespace MaaWpfGui.ViewModels.UI } } + private string _roguelike3NewSquad2StartingFoldartal = ConfigurationHelper.GetValue(ConfigurationKeys.Roguelike3NewSquad2StartingFoldartal, false.ToString()); + + /// + /// Gets or sets a value indicating whether core char need start with elite two. + /// + public bool Roguelike3NewSquad2StartingFoldartal + { + get => bool.Parse(_roguelike3NewSquad2StartingFoldartal); + set + { + SetAndNotify(ref _roguelike3NewSquad2StartingFoldartal, value.ToString()); + ConfigurationHelper.SetValue(ConfigurationKeys.Roguelike3NewSquad2StartingFoldartal, value.ToString()); + } + } + + private string _roguelike3NewSquad2StartingFoldartals = ConfigurationHelper.GetValue(ConfigurationKeys.Roguelike3NewSquad2StartingFoldartals, string.Empty); + + public string Roguelike3NewSquad2StartingFoldartals + { + get => _roguelike3NewSquad2StartingFoldartals; + set + { + SetAndNotify(ref _roguelike3NewSquad2StartingFoldartals, value); + ConfigurationHelper.SetValue(ConfigurationKeys.Roguelike3NewSquad2StartingFoldartals, value); + } + } + private string _roguelikeUseSupportUnit = ConfigurationHelper.GetValue(ConfigurationKeys.RoguelikeUseSupportUnit, false.ToString()); /// diff --git a/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs b/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs index fc830e9752..6321b735e8 100644 --- a/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs @@ -1393,8 +1393,8 @@ namespace MaaWpfGui.ViewModels.UI mode, Instances.SettingsViewModel.RoguelikeStartsCount, Instances.SettingsViewModel.RoguelikeInvestmentEnabled, Instances.SettingsViewModel.RoguelikeInvestmentEnterSecondFloor, Instances.SettingsViewModel.RoguelikeInvestsCount, Instances.SettingsViewModel.RoguelikeStopWhenInvestmentFull, Instances.SettingsViewModel.RoguelikeSquad, Instances.SettingsViewModel.RoguelikeRoles, DataHelper.GetCharacterByNameOrAlias(Instances.SettingsViewModel.RoguelikeCoreChar)?.Name ?? Instances.SettingsViewModel.RoguelikeCoreChar, - Instances.SettingsViewModel.RoguelikeStartWithEliteTwo, Instances.SettingsViewModel.RoguelikeOnlyStartWithEliteTwo, Instances.SettingsViewModel.RoguelikeUseSupportUnit, - Instances.SettingsViewModel.RoguelikeEnableNonfriendSupport, Instances.SettingsViewModel.RoguelikeTheme, Instances.SettingsViewModel.RoguelikeRefreshTraderWithDice); + Instances.SettingsViewModel.RoguelikeStartWithEliteTwo, Instances.SettingsViewModel.RoguelikeOnlyStartWithEliteTwo, Instances.SettingsViewModel.Roguelike3NewSquad2StartingFoldartal, Instances.SettingsViewModel.Roguelike3NewSquad2StartingFoldartals, + Instances.SettingsViewModel.RoguelikeUseSupportUnit, Instances.SettingsViewModel.RoguelikeEnableNonfriendSupport, Instances.SettingsViewModel.RoguelikeTheme, Instances.SettingsViewModel.RoguelikeRefreshTraderWithDice); } private static bool AppendReclamation() diff --git a/src/MaaWpfGui/Views/UserControl/RoguelikeSettingsUserControl.xaml b/src/MaaWpfGui/Views/UserControl/RoguelikeSettingsUserControl.xaml index 585fbd343c..02a51402bf 100644 --- a/src/MaaWpfGui/Views/UserControl/RoguelikeSettingsUserControl.xaml +++ b/src/MaaWpfGui/Views/UserControl/RoguelikeSettingsUserControl.xaml @@ -123,7 +123,7 @@ + Visibility="{c:Binding 'RoguelikeMode == "4" and RoguelikeTheme != "Phantom" and RoguelikeSquad == "突击战术分队" or RoguelikeSquad == "堡垒战术分队" or RoguelikeSquad == "远程战术分队" or RoguelikeSquad == "破坏战术分队"'}"> - + + + + +