Merge pull request #1426 from MaaAssistantArknights/dev

Release v4.2.2
This commit is contained in:
MistEO
2022-08-03 19:40:31 +08:00
committed by GitHub
12 changed files with 106 additions and 39 deletions

View File

@@ -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

View File

@@ -48,42 +48,51 @@ namespace asst::recruit_calc
}
std::vector<RecruitCombs> 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;

View File

@@ -48,7 +48,6 @@
<system:String x:Key="RoguelikeStrategyCandle">Get candles, pass levels as more as possible</system:String>
<system:String x:Key="RoguelikeStrategyGold">Deposit coins, exit after shop in the first level</system:String>
<system:String x:Key="StartingSquad">Starting Squad</system:String>
<system:String x:Key="StartingRoles">Starting Roles</system:String>
<system:String x:Key="StartingCoreChar">Starting Oper (single, CN name only)</system:String>

View File

@@ -48,7 +48,6 @@
<system:String x:Key="RoguelikeStrategyCandle">キャンドルを集める、多くのステージをクリアする</system:String>
<system:String x:Key="RoguelikeStrategyGold">源石錐を集める、1階旅商人のすぐ後に終了する</system:String>
<system:String x:Key="StartingSquad">スターティング・スクワッド</system:String>
<system:String x:Key="StartingRoles">始めるキャリア</system:String>
<system:String x:Key="StartingCoreChar">オペレーター(シングルプレイヤー、中国名のみ)</system:String>

View File

@@ -48,6 +48,28 @@
<system:String x:Key="RoguelikeStrategyCandle">통합전략: 촛불 우선</system:String>
<system:String x:Key="RoguelikeStrategyGold">통합전략: 오리지늄 주괴 우선</system:String>
<system:String x:Key="StartingSquad">시동 분대</system:String>
<system:String x:Key="StartingRoles">시동 프로팀</system:String>
<system:String x:Key="StartingCoreChar">시초 사무원 (1명)</system:String>
<system:String x:Key="StartingCoreCharTip">개별 간부의 중국어 이름만 지원하며, 기입하지 않으면 기본 선택입니다</system:String>
<system:String x:Key="DefaultSquad">묵인</system:String>
<system:String x:Key="LeaderSquad">지휘 분대</system:String>
<system:String x:Key="GatheringSquad">집합 분대</system:String>
<system:String x:Key="SupportSquad">지원 분대</system:String>
<system:String x:Key="SpearheadSquad">예봉 분대</system:String>
<system:String x:Key="TacticalAssaultOperative">강습 전술 분대</system:String>
<system:String x:Key="TacticalFortificationOperative">방어 전술 분대</system:String>
<system:String x:Key="TacticalRangedOperative">원거리 전술 분대</system:String>
<system:String x:Key="TacticalDestructionOperative">파괴 전술 분대</system:String>
<system:String x:Key="ResearchSquad">연구 분대</system:String>
<system:String x:Key="First-ClassSquad">고급화 분대</system:String>
<system:String x:Key="DefaultRoles">묵인</system:String>
<system:String x:Key="FirstMoveAdvantage">선수필승</system:String>
<system:String x:Key="SlowAndSteadyWinsTheRace">차근차근</system:String>
<system:String x:Key="OvercomingYourWeaknesses">상호보완</system:String>
<system:String x:Key="AsYourHeartDesires">원하는 대로</system:String>
<system:String x:Key="NotSelected">선택하지 않기</system:String>
<system:String x:Key="Official">공식 서버</system:String>

View File

@@ -48,6 +48,28 @@
<system:String x:Key="RoguelikeStrategyCandle">🕺🍺🕺🕺🍺🍷🍻🍺</system:String>
<system:String x:Key="RoguelikeStrategyGold">🍺🍻🍻🍷🍺🍸🕺🍺</system:String>
<system:String x:Key="StartingSquad">🍷🍻💃🍸💃</system:String>
<system:String x:Key="StartingRoles">🍻🕺🍸🍺🍻🍻</system:String>
<system:String x:Key="StartingCoreChar">🕺🍷🍻💃🍻🍸🍸🍺🍷</system:String>
<system:String x:Key="StartingCoreCharTip">🍻🍻🍷🍸🍺🍻🍷🍺💃🍺🍷🍸🍺🍺🍺🍷🍸🕺🍷🍸</system:String>
<system:String x:Key="DefaultSquad">🍷🍸💃🍷🍷</system:String>
<system:String x:Key="LeaderSquad">🍻🍸🍷🍸🍺</system:String>
<system:String x:Key="GatheringSquad">🍻🍸🕺🍺💃</system:String>
<system:String x:Key="SupportSquad">🕺🍸🍸🍸💃</system:String>
<system:String x:Key="SpearheadSquad">🍷🍷🍺🍻💃</system:String>
<system:String x:Key="TacticalAssaultOperative">🍸💃🍻🍷🍷🍻🍻</system:String>
<system:String x:Key="TacticalFortificationOperative">🍸🍸🍺💃🍺🍷🍸</system:String>
<system:String x:Key="TacticalRangedOperative">🍺🍻💃💃🍺🍷💃</system:String>
<system:String x:Key="TacticalDestructionOperative">🍷🍺🍺🍺🍻🍸💃</system:String>
<system:String x:Key="ResearchSquad">🍷🍻🍻🍷🍺</system:String>
<system:String x:Key="First-ClassSquad">🍸🍸🍺💃🍸🍸</system:String>
<system:String x:Key="DefaultRoles">🍸🍷💃🍻🍻🍷</system:String>
<system:String x:Key="FirstMoveAdvantage">🍺🍻🍸🍺🍷🍺🍻🍷🍺🍸🍸🕺🍺🍻💃</system:String>
<system:String x:Key="SlowAndSteadyWinsTheRace">🍻🍷🍸🍸🍺🍺🍻🍸🕺🍷🍻🍷🍸🍻🍷</system:String>
<system:String x:Key="OvercomingYourWeaknesses">🍷🍺🍸🍺🍸💃💃🍻🍸🍸💃🍸🍺🍺🍸</system:String>
<system:String x:Key="AsYourHeartDesires">🍷🍺💃🍺🍻🍸🍻🍸🍸🍷🍷</system:String>
<system:String x:Key="NotSelected">💃🍺</system:String>
<system:String x:Key="Official">🕺🍺</system:String>
@@ -178,6 +200,8 @@
<system:String x:Key="PR-D-1">🍷🍸🍷</system:String>
<system:String x:Key="PR-D-2">💃🕺💃🍸</system:String>
<system:String x:Key="Annihilation">🍷🍻🍷🍸🍻</system:String>
<system:String x:Key="TodaysStageTip">🍷🍸🍺🍸🍷</system:String>
<system:String x:Key="CETip">🍻🕺💃🍻🍺</system:String>
<system:String x:Key="APTip">💃🍷🍷🍷🍺</system:String>

View File

@@ -48,6 +48,28 @@
<system:String x:Key="RoguelikeStrategyCandle">刷蠟燭,盡可能穩定的打更多層數</system:String>
<system:String x:Key="RoguelikeStrategyGold">刷源石錠,第一層商店後直接退出</system:String>
<system:String x:Key="StartingSquad">開局分隊</system:String>
<system:String x:Key="StartingRoles">開局職業組</system:String>
<system:String x:Key="StartingCoreChar">開局幹員(單個)</system:String>
<system:String x:Key="StartingCoreCharTip">僅支持單個幹員中文名,不填寫則默認選擇</system:String>
<system:String x:Key="DefaultSquad">默認分隊</system:String>
<system:String x:Key="LeaderSquad">指揮分隊</system:String>
<system:String x:Key="GatheringSquad">集羣分隊</system:String>
<system:String x:Key="SupportSquad">後勤分隊</system:String>
<system:String x:Key="SpearheadSquad">矛頭分隊</system:String>
<system:String x:Key="TacticalAssaultOperative">突擊戰術分隊</system:String>
<system:String x:Key="TacticalFortificationOperative">堡壘戰術分隊</system:String>
<system:String x:Key="TacticalRangedOperative">遠程戰術分隊</system:String>
<system:String x:Key="TacticalDestructionOperative">破壞戰術分隊</system:String>
<system:String x:Key="ResearchSquad">研究分隊</system:String>
<system:String x:Key="First-ClassSquad">高規格分隊</system:String>
<system:String x:Key="DefaultRoles">默認職業組</system:String>
<system:String x:Key="FirstMoveAdvantage">先手必勝(先鋒、狙擊、特種)</system:String>
<system:String x:Key="SlowAndSteadyWinsTheRace">穩紮穩打(重裝、術師、狙擊)</system:String>
<system:String x:Key="OvercomingYourWeaknesses">取長補短(近衛、輔助、醫療)</system:String>
<system:String x:Key="AsYourHeartDesires">隨心所欲(三張隨機)</system:String>
<system:String x:Key="NotSelected">不選擇</system:String>
<system:String x:Key="Official">官服</system:String>

View File

@@ -54,7 +54,6 @@
TextDecorations="None">
<TextBlock Text="{DynamicResource QQgroup1}" />
</Hyperlink>
<TextBlock Text="{DynamicResource QQgroupfull}" />
<Hyperlink
Click="Hyperlink_Click"
NavigateUri="https://jq.qq.com/?_wv=1027&amp;k=u9i2n7Sb"

View File

@@ -147,7 +147,7 @@
VerticalAlignment="Bottom"
Orientation="Horizontal">
<TextBlock
Width="100"
Width="150"
HorizontalAlignment="Right"
Block.TextAlignment="Right"
Style="{StaticResource TextBlockDefault}"
@@ -159,7 +159,7 @@
HorizontalAlignment="Right"
Text="{Binding RoguelikeCoreChar}"
TextWrapping="Wrap"
ToolTip="{Binding RoguelikeCoreCharTip}" />
ToolTip="{DynamicResource StartingCoreCharTip}" />
</StackPanel>
</Grid>
</Grid>

View File

@@ -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)
{

View File

@@ -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" },

View File

@@ -21,8 +21,9 @@
</Grid.ColumnDefinitions>
<StackPanel
Grid.Row="0"
Margin="0,30,0,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
VerticalAlignment="Top"
Orientation="Vertical">
<TextBlock
Margin="10"
@@ -77,9 +78,8 @@
<ScrollViewer
Grid.Column="1"
Width="360"
Height="455"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,10"
VerticalAlignment="Top"
local:AutoScroll.AutoScroll="True"
HorizontalScrollBarVisibility="Disabled">
<ItemsControl ItemsSource="{Binding Path=LogItemViewModels}">
@@ -88,7 +88,7 @@
<StackPanel Orientation="Horizontal">
<TextBlock
Width="350"
Margin="5,5"
Margin="5"
FontWeight="{Binding Weight}"
Foreground="{Binding Color}"
Style="{StaticResource TextBlockDefault}"