diff --git a/resource/roguelike_recruit.json b/resource/roguelike_recruit.json index 46614b668a..a0d6b07811 100644 --- a/resource/roguelike_recruit.json +++ b/resource/roguelike_recruit.json @@ -36,6 +36,11 @@ "name": "羽毛笔", "skill": 1 }, + { + "name": "银灰", + "skill": 3, + "alternate_skill": 1 + }, { "name": "陈", "skill": 2 @@ -44,15 +49,6 @@ "name": "拉普兰德", "skill": 2 }, - { - "name": "阿米娅", - "skill": 1 - }, - { - "name": "银灰", - "skill": 3, - "alternate_skill": 1 - }, { "name": "幽灵鲨", "skill": 2 @@ -142,14 +138,6 @@ "name": "空弦", "skill": 1 }, - { - "name": "蓝毒", - "skill": 1 - }, - { - "name": "白金", - "skill": 2 - }, { "name": "克洛丝", "skill": 1 diff --git a/src/MeoAssistant/AutoRecruitTask.cpp b/src/MeoAssistant/AutoRecruitTask.cpp index 58ffe1cef4..cbddcc6f3e 100644 --- a/src/MeoAssistant/AutoRecruitTask.cpp +++ b/src/MeoAssistant/AutoRecruitTask.cpp @@ -48,42 +48,51 @@ namespace asst::recruit_calc } std::vector result; + const size_t tag_size = tags.size(); + result.reserve(tag_size * (tag_size * tag_size + 5) / 6); // C(size, 3) + C(size, 2) + C(size, 1) // select one tag first - for (size_t i = 0; i < tags.size(); ++i) { + for (size_t i = 0; i < tag_size; ++i) { RecruitCombs temp1 = rcs_with_single_tag[i]; if (temp1.opers.empty()) continue; // this is not possible - result.push_back(temp1); // that is it + result.emplace_back(temp1); // that is it // but what if another tag is also selected - for (size_t j = i + 1; j < tags.size(); ++j) { + for (size_t j = i + 1; j < tag_size; ++j) { RecruitCombs temp2 = temp1 * rcs_with_single_tag[j]; if (temp2.opers.empty()) continue; - if (!temp2.opers.empty()) result.push_back(temp2); // two tags only + result.emplace_back(temp2); // two tags only // select a third one - for (size_t k = j + 1; k < tags.size(); ++k) { + for (size_t k = j + 1; k < tag_size; ++k) { RecruitCombs temp3 = temp2 * rcs_with_single_tag[k]; if (temp3.opers.empty()) continue; - result.push_back(temp3); + result.emplace_back(temp3); } } } static constexpr std::string_view SeniorOper = "高级资深干员"; - for (auto comb_iter = result.begin(); comb_iter != result.end(); ++comb_iter) { - if (std::ranges::find(comb_iter->tags, SeniorOper) != comb_iter->tags.end()) continue; + for (auto comb_iter = result.begin(); comb_iter != result.end();) { + if (std::ranges::find(comb_iter->tags, SeniorOper) != comb_iter->tags.end()) { + ++comb_iter; + continue; + } // no senior tag, remove 6-star operators // assuming sorted by level auto iter = std::ranges::find_if(comb_iter->opers, [](const RecruitOperInfo& op) { return op.level >= 6; }); - if (iter == comb_iter->opers.end()) continue; + if (iter == comb_iter->opers.end()) { + ++comb_iter; + continue; + } comb_iter->opers.erase(iter, comb_iter->opers.end()); if (comb_iter->opers.empty()) { comb_iter = result.erase(comb_iter); continue; } comb_iter->update_attributes(); + ++comb_iter; } return result; diff --git a/src/MeoAsstGui/Resources/Localizations/en-us.xaml b/src/MeoAsstGui/Resources/Localizations/en-us.xaml index 4b1a829353..45a6e0d10a 100644 --- a/src/MeoAsstGui/Resources/Localizations/en-us.xaml +++ b/src/MeoAsstGui/Resources/Localizations/en-us.xaml @@ -48,7 +48,6 @@ Get candles, pass levels as more as possible Deposit coins, exit after shop in the first level - Starting Squad Starting Roles Starting Oper (single, CN name only) diff --git a/src/MeoAsstGui/Resources/Localizations/ja-jp.xaml b/src/MeoAsstGui/Resources/Localizations/ja-jp.xaml index f148576adc..9b460dfc6f 100644 --- a/src/MeoAsstGui/Resources/Localizations/ja-jp.xaml +++ b/src/MeoAsstGui/Resources/Localizations/ja-jp.xaml @@ -48,7 +48,6 @@ キャンドルを集める、多くのステージをクリアする 源石錐を集める、1階旅商人のすぐ後に終了する - スターティング・スクワッド 始めるキャリア オペレーター(シングルプレイヤー、中国名のみ) diff --git a/src/MeoAsstGui/Resources/Localizations/ko-kr.xaml b/src/MeoAsstGui/Resources/Localizations/ko-kr.xaml index 851d5232e0..3118a9a99d 100644 --- a/src/MeoAsstGui/Resources/Localizations/ko-kr.xaml +++ b/src/MeoAsstGui/Resources/Localizations/ko-kr.xaml @@ -48,6 +48,28 @@ 통합전략: 촛불 우선 통합전략: 오리지늄 주괴 우선 + 시동 분대 + 시동 프로팀 + 시초 사무원 (1명) + 개별 간부의 중국어 이름만 지원하며, 기입하지 않으면 기본 선택입니다 + + 묵인 + 지휘 분대 + 집합 분대 + 지원 분대 + 예봉 분대 + 강습 전술 분대 + 방어 전술 분대 + 원거리 전술 분대 + 파괴 전술 분대 + 연구 분대 + 고급화 분대 + + 묵인 + 선수필승 + 차근차근 + 상호보완 + 원하는 대로 선택하지 않기 공식 서버 diff --git a/src/MeoAsstGui/Resources/Localizations/pallas.xaml b/src/MeoAsstGui/Resources/Localizations/pallas.xaml index f426b1dccd..d629b76041 100644 --- a/src/MeoAsstGui/Resources/Localizations/pallas.xaml +++ b/src/MeoAsstGui/Resources/Localizations/pallas.xaml @@ -48,6 +48,28 @@ 🕺🍺🕺🕺🍺🍷🍻🍺 🍺🍻🍻🍷🍺🍸🕺🍺 + 🍷🍻💃🍸💃 + 🍻🕺🍸🍺🍻🍻 + 🕺🍷🍻💃🍻🍸🍸🍺🍷 + 🍻🍻🍷🍸🍺🍻🍷🍺💃🍺🍷🍸🍺🍺🍺🍷🍸🕺🍷🍸 + + 🍷🍸💃🍷🍷 + 🍻🍸🍷🍸🍺 + 🍻🍸🕺🍺💃 + 🕺🍸🍸🍸💃 + 🍷🍷🍺🍻💃 + 🍸💃🍻🍷🍷🍻🍻 + 🍸🍸🍺💃🍺🍷🍸 + 🍺🍻💃💃🍺🍷💃 + 🍷🍺🍺🍺🍻🍸💃 + 🍷🍻🍻🍷🍺 + 🍸🍸🍺💃🍸🍸 + + 🍸🍷💃🍻🍻🍷 + 🍺🍻🍸🍺🍷🍺🍻🍷🍺🍸🍸🕺🍺🍻💃 + 🍻🍷🍸🍸🍺🍺🍻🍸🕺🍷🍻🍷🍸🍻🍷 + 🍷🍺🍸🍺🍸💃💃🍻🍸🍸💃🍸🍺🍺🍸 + 🍷🍺💃🍺🍻🍸🍻🍸🍸🍷🍷 💃🍺 🕺🍺 @@ -178,6 +200,8 @@ 🍷🍸🍷 💃🕺💃🍸 + 🍷🍻🍷🍸🍻 + 🍷🍸🍺🍸🍷 🍻🕺💃🍻🍺 💃🍷🍷🍷🍺 diff --git a/src/MeoAsstGui/Resources/Localizations/zh-tw.xaml b/src/MeoAsstGui/Resources/Localizations/zh-tw.xaml index bbcea28733..9d59b41d71 100644 --- a/src/MeoAsstGui/Resources/Localizations/zh-tw.xaml +++ b/src/MeoAsstGui/Resources/Localizations/zh-tw.xaml @@ -48,6 +48,28 @@ 刷蠟燭,盡可能穩定的打更多層數 刷源石錠,第一層商店後直接退出 + 開局分隊 + 開局職業組 + 開局幹員(單個) + 僅支持單個幹員中文名,不填寫則默認選擇 + + 默認分隊 + 指揮分隊 + 集羣分隊 + 後勤分隊 + 矛頭分隊 + 突擊戰術分隊 + 堡壘戰術分隊 + 遠程戰術分隊 + 破壞戰術分隊 + 研究分隊 + 高規格分隊 + + 默認職業組 + 先手必勝(先鋒、狙擊、特種) + 穩紮穩打(重裝、術師、狙擊) + 取長補短(近衛、輔助、醫療) + 隨心所欲(三張隨機) 不選擇 官服 diff --git a/src/MeoAsstGui/UserControl/AboutUserControl.xaml b/src/MeoAsstGui/UserControl/AboutUserControl.xaml index 6771b59b4a..02a7283a46 100644 --- a/src/MeoAsstGui/UserControl/AboutUserControl.xaml +++ b/src/MeoAsstGui/UserControl/AboutUserControl.xaml @@ -54,7 +54,6 @@ TextDecorations="None"> - + ToolTip="{DynamicResource StartingCoreCharTip}" /> diff --git a/src/MeoAsstGui/ViewModels/SettingsViewModel.cs b/src/MeoAsstGui/ViewModels/SettingsViewModel.cs index bf32e64153..09df29f032 100644 --- a/src/MeoAsstGui/ViewModels/SettingsViewModel.cs +++ b/src/MeoAsstGui/ViewModels/SettingsViewModel.cs @@ -1845,6 +1845,7 @@ namespace MeoAsstGui Localization.GetString("Tip"), MessageBoxButton.YesNo, MessageBoxImage.Question); + System.Windows.Forms.MessageBoxManager.Unregister(); SetAndNotify(ref _language, value); if (result == MessageBoxResult.Yes) { diff --git a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs index 554d611c14..9e23dce44a 100644 --- a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs +++ b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs @@ -227,12 +227,19 @@ namespace MeoAsstGui // SideStory「多索雷斯假日」复刻活动关卡 new CombData { Display = "DH-9", Value = "DH-9" }, + // 主线关卡 new CombData { Display = "1-7", Value = "1-7" }, + + // 资源本 new CombData { Display = Localization.GetString("CE-6"), Value = "CE-6" }, new CombData { Display = Localization.GetString("AP-5"), Value = "AP-5" }, new CombData { Display = Localization.GetString("CA-5"), Value = "CA-5" }, new CombData { Display = Localization.GetString("LS-6"), Value = "LS-6" }, + // 剿灭模式 + new CombData { Display = Localization.GetString("Annihilation"), Value = "Annihilation" }, + + // 芯片本 new CombData { Display = Localization.GetString("PR-A-1"), Value = "PR-A-1" }, new CombData { Display = Localization.GetString("PR-A-2"), Value = "PR-A-2" }, new CombData { Display = Localization.GetString("PR-B-1"), Value = "PR-B-1" }, @@ -242,9 +249,6 @@ namespace MeoAsstGui new CombData { Display = Localization.GetString("PR-D-1"), Value = "PR-D-1" }, new CombData { Display = Localization.GetString("PR-D-2"), Value = "PR-D-2" }, - // 剿灭模式 - new CombData { Display = Localization.GetString("Annihilation"), Value = "Annihilation" }, - // SideStory「绿野幻梦」活动 // new CombData { Display = "DV-6", Value = "DV-6" }, // new CombData { Display = "DV-7", Value = "DV-7" }, diff --git a/src/MeoAsstGui/Views/CopilotView.xaml b/src/MeoAsstGui/Views/CopilotView.xaml index e9a221bead..4c24e35246 100644 --- a/src/MeoAsstGui/Views/CopilotView.xaml +++ b/src/MeoAsstGui/Views/CopilotView.xaml @@ -21,8 +21,9 @@ @@ -88,7 +88,7 @@