perf: 优化成就排序与描述

This commit is contained in:
uye
2025-07-31 15:04:13 +08:00
parent a2e8d82562
commit 167ac2d2d5
5 changed files with 113 additions and 97 deletions

View File

@@ -31,8 +31,12 @@ namespace MaaWpfGui.Constants
public const string RoguelikeGamePass1 = "RoguelikeGamePass1";
public const string RoguelikeGamePass2 = "RoguelikeGamePass2";
public const string RoguelikeGamePass3 = "RoguelikeGamePass3";
public const string RoguelikeGroup = "Roguelike";
public const string RoguelikeRetreat = "RoguelikeRetreat";
public const string RoguelikeGoldMax = "RoguelikeGoldMax";
public const string RoguelikeNGroup = "RoguelikeN";
public const string RoguelikeN04 = "RoguelikeN04";
public const string RoguelikeN08 = "RoguelikeN08";
public const string RoguelikeN12 = "RoguelikeN12";
@@ -50,11 +54,13 @@ namespace MaaWpfGui.Constants
public const string ScheduleMaster1 = "ScheduleMaster1";
public const string ScheduleMaster2 = "ScheduleMaster2";
public const string MirrorChyanGroup = "MirrorChyan";
public const string MirrorChyanFirstUse = "MirrorChyanFirstUse";
public const string MirrorChyanCdkError = "MirrorChyanCdkError";
public const string MosquitoLeg = "MosquitoLeg";
public const string PioneerGroup = "Pioneer";
public const string Pioneer1 = "Pioneer1";
public const string Pioneer2 = "Pioneer2";
public const string Pioneer3 = "Pioneer3";
@@ -89,9 +95,11 @@ namespace MaaWpfGui.Constants
public const string TacticalRetreat = "TacticalRetreat";
public const string Martian = "Martian";
public const string RecruitGroup = "Recruit";
public const string RecruitNoSixStar = "RecruitNoSixStar";
public const string RecruitNoSixStarStreak = "RecruitNoSixStarStreak";
public const string SnapshotChallengeGroup = "SnapshotChallenge"; // 累计型成就
public const string SnapshotChallenge1 = "SnapshotChallenge1"; // 999
public const string SnapshotChallenge2 = "SnapshotChallenge2"; // 800
public const string SnapshotChallenge3 = "SnapshotChallenge3"; // 400
@@ -133,6 +141,7 @@ namespace MaaWpfGui.Constants
public const string VersionClick = "VersionClick";
public const string Lucky = "Lucky";
public const string LoginGroup = "Login";
public const string AprilFools = "AprilFools";
public const string MidnightLaunch = "MidnightLaunch";
public const string LunarNewYear = "LunarNewYear";

View File

@@ -139,8 +139,9 @@ namespace MaaWpfGui.Helper
{
Achievements = _achievements
.OrderByDescending(kv => kv.Value.IsUnlocked) // 已解锁优先
.ThenBy(kv => !kv.Value.IsNewUnlock) // 新解锁的排前面
.ThenByDescending(kv => kv.Value.IsNewUnlock) // 新解锁的排前面
.ThenBy(kv => kv.Value.Category) // 按类别分组
.ThenBy(kv => kv.Value.Group)
.ThenBy(kv => kv.Value.Id) // 最后按 Id
.ToDictionary(kv => kv.Key, kv => kv.Value);
}
@@ -306,7 +307,7 @@ namespace MaaWpfGui.Helper
public void AddProgressToGroup(string groupPrefix, int amount = 1)
{
foreach (var achievement in _achievements.Values.Where(achievement => achievement.Id.StartsWith(groupPrefix)))
foreach (var achievement in _achievements.Values.Where(achievement => achievement.Group == groupPrefix))
{
AddProgress(achievement.Id, amount);
}
@@ -326,7 +327,7 @@ namespace MaaWpfGui.Helper
public void SetProgressToGroup(string groupPrefix, int progress)
{
foreach (var achievement in _achievements.Values.Where(achievement => achievement.Id.StartsWith(groupPrefix)))
foreach (var achievement in _achievements.Values.Where(achievement => achievement.Group == groupPrefix))
{
SetProgress(achievement.Id, progress);
}
@@ -371,26 +372,26 @@ namespace MaaWpfGui.Helper
#region
private static Achievement BasicUsage(string id, int? target = null, bool isHidden = false, bool isRare = false)
=> new() { Id = id, Target = target ?? default, IsHidden = isHidden, Category = AchievementCategory.BasicUsage, IsRare = isRare };
private static Achievement BasicUsage(string id, string group = "", int? target = null, bool isHidden = false, bool isRare = false)
=> new() { Id = id, Group = group, Target = target ?? 0, IsHidden = isHidden, Category = AchievementCategory.BasicUsage, IsRare = isRare };
private static Achievement FeatureExploration(string id, int? target = null, bool isHidden = false, bool isRare = false)
=> new() { Id = id, Target = target ?? default, IsHidden = isHidden, Category = AchievementCategory.FeatureExploration, IsRare = isRare };
private static Achievement FeatureExploration(string id, string group = "", int? target = null, bool isHidden = false, bool isRare = false)
=> new() { Id = id, Group = group, Target = target ?? 0, IsHidden = isHidden, Category = AchievementCategory.FeatureExploration, IsRare = isRare };
private static Achievement AutoBattle(string id, int? target = null, bool isHidden = false, bool isRare = false)
=> new() { Id = id, Target = target ?? default, IsHidden = isHidden, Category = AchievementCategory.AutoBattle, IsRare = isRare };
private static Achievement AutoBattle(string id, string group = "", int? target = null, bool isHidden = false, bool isRare = false)
=> new() { Id = id, Group = group, Target = target ?? 0, IsHidden = isHidden, Category = AchievementCategory.AutoBattle, IsRare = isRare };
private static Achievement Humor(string id, int? target = null, bool isHidden = false, bool isRare = false)
=> new() { Id = id, Target = target ?? default, IsHidden = isHidden, Category = AchievementCategory.Humor, IsRare = isRare };
private static Achievement Humor(string id, string group = "", int? target = null, bool isHidden = false, bool isRare = false)
=> new() { Id = id, Group = group, Target = target ?? 0, IsHidden = isHidden, Category = AchievementCategory.Humor, IsRare = isRare };
private static Achievement BugRelated(string id, int? target = null, bool isHidden = false, bool isRare = false)
=> new() { Id = id, Target = target ?? default, IsHidden = isHidden, Category = AchievementCategory.BugRelated, IsRare = isRare };
private static Achievement BugRelated(string id, string group = "", int? target = null, bool isHidden = false, bool isRare = false)
=> new() { Id = id, Group = group, Target = target ?? 0, IsHidden = isHidden, Category = AchievementCategory.BugRelated, IsRare = isRare };
private static Achievement Behavior(string id, int? target = null, bool isHidden = false, bool isRare = false)
=> new() { Id = id, Target = target ?? default, IsHidden = isHidden, Category = AchievementCategory.Behavior, IsRare = isRare };
private static Achievement Behavior(string id, string group = "", int? target = null, bool isHidden = false, bool isRare = false)
=> new() { Id = id, Group = group, Target = target ?? 0, IsHidden = isHidden, Category = AchievementCategory.Behavior, IsRare = isRare };
private static Achievement EasterEgg(string id, int? target = null, bool isHidden = false, bool isRare = false)
=> new() { Id = id, Target = target ?? default, IsHidden = isHidden, Category = AchievementCategory.EasterEgg, IsRare = isRare };
private static Achievement EasterEgg(string id, string group = "", int? target = null, bool isHidden = false, bool isRare = false)
=> new() { Id = id, Group = group, Target = target ?? 0, IsHidden = isHidden, Category = AchievementCategory.EasterEgg, IsRare = isRare };
#endregion
@@ -398,73 +399,76 @@ namespace MaaWpfGui.Helper
[
#region 基础使用类
BasicUsage(id: AchievementIds.SanitySpender1, target: 10), // 刷理智次数
BasicUsage(id: AchievementIds.SanitySpender2, target: 100),
BasicUsage(id: AchievementIds.SanitySpender3, target: 1000),
BasicUsage(id: AchievementIds.SanitySpender1, group: AchievementIds.SanitySpenderGroup, target: 10), // 刷理智次数
BasicUsage(id: AchievementIds.SanitySpender2, group: AchievementIds.SanitySpenderGroup, target: 100),
BasicUsage(id: AchievementIds.SanitySpender3, group: AchievementIds.SanitySpenderGroup, target: 1000),
BasicUsage(id: AchievementIds.SanitySaver1, target: 1), // 使用理智药数
BasicUsage(id: AchievementIds.SanitySaver2, target: 10),
BasicUsage(id: AchievementIds.SanitySaver3, target: 50),
BasicUsage(id: AchievementIds.SanitySaver1, group: AchievementIds.SanitySaverGroup, target: 1), // 使用理智药数
BasicUsage(id: AchievementIds.SanitySaver2, group: AchievementIds.SanitySaverGroup, target: 10),
BasicUsage(id: AchievementIds.SanitySaver3, group: AchievementIds.SanitySaverGroup, target: 50),
BasicUsage(id: AchievementIds.RoguelikeGamePass1, group: AchievementIds.RoguelikeGamePassGroup, target: 1), // 使用牛牛通关肉鸽
BasicUsage(id: AchievementIds.RoguelikeGamePass2, group: AchievementIds.RoguelikeGamePassGroup, target: 5),
BasicUsage(id: AchievementIds.RoguelikeGamePass3, group: AchievementIds.RoguelikeGamePassGroup, target: 10),
BasicUsage(id: AchievementIds.RoguelikeN04, group: AchievementIds.RoguelikeNGroup), // 肉鸽 难度 通关
BasicUsage(id: AchievementIds.RoguelikeN08, group: AchievementIds.RoguelikeNGroup),
BasicUsage(id: AchievementIds.RoguelikeN12, group: AchievementIds.RoguelikeNGroup),
BasicUsage(id: AchievementIds.RoguelikeN15, group: AchievementIds.RoguelikeNGroup, isRare: true),
BasicUsage(id: AchievementIds.RoguelikeRetreat, group: AchievementIds.RoguelikeGroup, target: 100), // 牛牛放弃探索 100 次
BasicUsage(id: AchievementIds.RoguelikeGoldMax, group: AchievementIds.RoguelikeGroup, target: 999), // 肉鸽源石锭到达 999
BasicUsage(id: AchievementIds.FirstLaunch), // 首次启动
BasicUsage(id: AchievementIds.SanityExpire, target: 8), // 单次消耗 8 瓶快过期的理智药
BasicUsage(id: AchievementIds.OverLimitAgent, target: 100, isHidden: true), // 单次代理 100 关
BasicUsage(id: AchievementIds.RoguelikeGamePass1, target: 1), // 使用牛牛通关肉鸽
BasicUsage(id: AchievementIds.RoguelikeGamePass2, target: 5),
BasicUsage(id: AchievementIds.RoguelikeGamePass3, target: 10),
BasicUsage(id: AchievementIds.RoguelikeRetreat, target: 100), // 牛牛放弃探索 100 次
BasicUsage(id: AchievementIds.RoguelikeGoldMax, target: 999), // 肉鸽源石锭到达 999
BasicUsage(id: AchievementIds.RoguelikeN04), // 肉鸽 难度 通关
BasicUsage(id: AchievementIds.RoguelikeN08),
BasicUsage(id: AchievementIds.RoguelikeN12),
BasicUsage(id: AchievementIds.RoguelikeN15, isRare: true),
#endregion
#region 功能探索类
FeatureExploration(id: AchievementIds.ScheduleMaster1, target: 1), // 定时执行
FeatureExploration(id: AchievementIds.ScheduleMaster2, target: 100),
FeatureExploration(id: AchievementIds.ScheduleMaster1, group: AchievementIds.ScheduleMasterGroup, target: 1), // 定时执行
FeatureExploration(id: AchievementIds.ScheduleMaster2, group: AchievementIds.ScheduleMasterGroup, target: 100),
FeatureExploration(id: AchievementIds.MirrorChyanFirstUse, isHidden: true), // 第一次成功使用 MirrorChyan 下载
FeatureExploration(id: AchievementIds.MirrorChyanCdkError, isHidden: true), // MirrorChyan CDK 错误
FeatureExploration(id: AchievementIds.MirrorChyanFirstUse, group: AchievementIds.MirrorChyanGroup, isHidden: true), // 第一次成功使用 MirrorChyan 下载
FeatureExploration(id: AchievementIds.MirrorChyanCdkError, group: AchievementIds.MirrorChyanGroup, isHidden: true), // MirrorChyan CDK 错误
FeatureExploration(id: AchievementIds.Pioneer1), // 将 MAA 更新至公测版
FeatureExploration(id: AchievementIds.Pioneer2, isHidden: true), // 将 MAA 更新至内测版(隐藏)
FeatureExploration(id: AchievementIds.Pioneer3, isHidden: true), // 使用未发布版本的 MAA隐藏
FeatureExploration(id: AchievementIds.Pioneer1, group: AchievementIds.PioneerGroup), // 将 MAA 更新至公测版
FeatureExploration(id: AchievementIds.Pioneer2, group: AchievementIds.PioneerGroup, isHidden: true), // 将 MAA 更新至内测版(隐藏)
FeatureExploration(id: AchievementIds.Pioneer3, group: AchievementIds.PioneerGroup, isHidden: true), // 使用未发布版本的 MAA隐藏
FeatureExploration(id: AchievementIds.MosquitoLeg, target: 5), // 使用「借助战打 OF-1」功能超过 5 次
FeatureExploration(id: AchievementIds.RealGacha, isHidden: true), // 真正的抽卡
FeatureExploration(id: AchievementIds.PeekScreen, isHidden: true), // 窥屏
FeatureExploration(id: AchievementIds.CustomizationMaster, isHidden: true), // 自定义背景
#endregion
#region 自动战斗
AutoBattle(id: AchievementIds.UseCopilot1, target: 1), // 自动战斗
AutoBattle(id: AchievementIds.UseCopilot2, target: 10),
AutoBattle(id: AchievementIds.UseCopilot3, target: 100),
AutoBattle(id: AchievementIds.CopilotLikeGiven1, target: 1), // 点赞 1 次
AutoBattle(id: AchievementIds.CopilotLikeGiven2, target: 10), // 点赞 10 次
AutoBattle(id: AchievementIds.CopilotLikeGiven3, target: 50), // 点赞 50 次
AutoBattle(id: AchievementIds.CopilotError), // 代理作战出现失误
AutoBattle(id: AchievementIds.UseCopilot1, group: AchievementIds.UseCopilotGroup, target: 1), // 自动战斗
AutoBattle(id: AchievementIds.UseCopilot2, group: AchievementIds.UseCopilotGroup, target: 10),
AutoBattle(id: AchievementIds.UseCopilot3, group: AchievementIds.UseCopilotGroup, target: 100),
AutoBattle(id: AchievementIds.CopilotLikeGiven1, group: AchievementIds.CopilotLikeGroup, target: 1), // 点赞 1 次
AutoBattle(id: AchievementIds.CopilotLikeGiven2, group: AchievementIds.CopilotLikeGroup, target: 10), // 点赞 10 次
AutoBattle(id: AchievementIds.CopilotLikeGiven3, group: AchievementIds.CopilotLikeGroup, target: 50), // 点赞 50 次
AutoBattle(id: AchievementIds.CopilotError), // 代理作战出现失误
AutoBattle(id: AchievementIds.MapOutdated, isHidden: true), // 提示需要更新地图资源
AutoBattle(id: AchievementIds.Irreplaceable, isHidden: true), // 自动编队缺少至少两名干员
#endregion
#region 搞笑/梗类成就
Humor(id: AchievementIds.SnapshotChallenge1, isHidden: true), // 平均截图用时超过 800ms高 ping 战士)
Humor(id: AchievementIds.SnapshotChallenge2, isHidden: true), // 平均截图用时在 400ms 到 800ms 之间(是不是有点太慢了)
Humor(id: AchievementIds.SnapshotChallenge3), // 平均截图用时小于 400ms截图挑战 · Normal
Humor(id: AchievementIds.SnapshotChallenge4), // 平均截图用时小于 100ms截图挑战 · Fast
Humor(id: AchievementIds.SnapshotChallenge5), // 平均截图用时小于 10ms截图挑战 · Ultra
Humor(id: AchievementIds.SnapshotChallenge6, isHidden: true, isRare: true), // 平均截图用时小于 5ms
Humor(id: AchievementIds.SnapshotChallenge1, group: AchievementIds.SnapshotChallengeGroup, isHidden: true), // 平均截图用时超过 800ms高 ping 战士)
Humor(id: AchievementIds.SnapshotChallenge2, group: AchievementIds.SnapshotChallengeGroup, isHidden: true), // 平均截图用时在 400ms 到 800ms 之间(是不是有点太慢了)
Humor(id: AchievementIds.SnapshotChallenge3, group: AchievementIds.SnapshotChallengeGroup), // 平均截图用时小于 400ms截图挑战 · Normal
Humor(id: AchievementIds.SnapshotChallenge4, group: AchievementIds.SnapshotChallengeGroup), // 平均截图用时小于 100ms截图挑战 · Fast
Humor(id: AchievementIds.SnapshotChallenge5, group: AchievementIds.SnapshotChallengeGroup), // 平均截图用时小于 10ms截图挑战 · Ultra
Humor(id: AchievementIds.SnapshotChallenge6, group: AchievementIds.SnapshotChallengeGroup, isHidden: true, isRare: true), // 平均截图用时小于 5ms
Humor(id: AchievementIds.QuickCloser, isHidden: true), // 快速关闭弹窗
Humor(id: AchievementIds.TacticalRetreat), // 停止任务
Humor(id: AchievementIds.Martian, isHidden: true), // 90 天没更新
Humor(id: AchievementIds.RecruitNoSixStar, target: 500), // 公招中累计 500 次没出现六星tag
Humor(id: AchievementIds.RecruitNoSixStarStreak, target: 500, isHidden: true), // 公招中连续 500 次没出现六星tag
Humor(id: AchievementIds.RecruitNoSixStar, group: AchievementIds.RecruitGroup, target: 500), // 公招中累计 500 次没出现六星tag
Humor(id: AchievementIds.RecruitNoSixStarStreak, group: AchievementIds.RecruitGroup, target: 500, isHidden: true), // 公招中连续 500 次没出现六星tag
#endregion
#region BUG 相关
@@ -481,18 +485,18 @@ namespace MaaWpfGui.Helper
Behavior(id: AchievementIds.TaskStartCancel, isHidden: true), // 在开始任务后马上又停止
Behavior(id: AchievementIds.AfkWatcher), // 窗口尺寸最小化后长时间不操作
Behavior(id: AchievementIds.UseDaily1, target: 7), // 连续使用时间
Behavior(id: AchievementIds.UseDaily2, target: 30),
Behavior(id: AchievementIds.UseDaily3, target: 365, isRare: true),
Behavior(id: AchievementIds.UseDaily1, group: AchievementIds.UseDailyGroup, target: 7), // 连续使用时间
Behavior(id: AchievementIds.UseDaily2, group: AchievementIds.UseDailyGroup, target: 30),
Behavior(id: AchievementIds.UseDaily3, group: AchievementIds.UseDailyGroup, target: 365, isRare: true),
#endregion
#region 彩蛋类
EasterEgg(id: AchievementIds.Rules, isHidden: true), // 我会一直注视着你
EasterEgg(id: AchievementIds.VersionClick, isHidden: true), // 这也能点?
EasterEgg(id: AchievementIds.AprilFools, isHidden: true), // 愚人节
EasterEgg(id: AchievementIds.MidnightLaunch, isHidden: true), // 0~4 点
EasterEgg(id: AchievementIds.LunarNewYear, isHidden: true), // 春节
EasterEgg(id: AchievementIds.AprilFools, AchievementIds.LoginGroup, isHidden: true), // 愚人节
EasterEgg(id: AchievementIds.MidnightLaunch, AchievementIds.LoginGroup, isHidden: true), // 0~4 点
EasterEgg(id: AchievementIds.LunarNewYear, AchievementIds.LoginGroup, isHidden: true), // 春节
EasterEgg(id: AchievementIds.Lucky, isHidden: true, isRare: true), // 启动 MAA 时有极小概率触发
#endregion

View File

@@ -945,7 +945,7 @@ namespace MaaWpfGui.Main
}
Instances.CopilotViewModel.AddLog(LocalizationHelper.GetString("CompleteCombat"), UiLogColor.Info);
AchievementTrackerHelper.Instance.AddProgressToGroup(AchievementIds.UseCopilotGroup, 1);
AchievementTrackerHelper.Instance.AddProgressToGroup(AchievementIds.UseCopilotGroup);
}
break;
@@ -1464,7 +1464,7 @@ namespace MaaWpfGui.Main
case "EndOfActionThenStop":
TaskQueueViewModel.MallTask.LastCreditFightTaskTime = DateTime.UtcNow.ToYjDate().ToFormattedString();
Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("CompleteTask") + LocalizationHelper.GetString("CreditFight"));
AchievementTrackerHelper.Instance.AddProgressToGroup(AchievementIds.MosquitoLeg, 1);
AchievementTrackerHelper.Instance.AddProgress(AchievementIds.MosquitoLeg);
break;
case "VisitLimited" or "VisitNextBlack":
TaskQueueViewModel.MallTask.LastCreditVisitFriendsTime = DateTime.UtcNow.ToYjDate().ToFormattedString();

View File

@@ -68,10 +68,10 @@ namespace MaaWpfGui.Models
public bool CanShow => !IsHidden || IsUnlocked;
[JsonIgnore]
public bool IsProgressive => Target != default;
public bool IsProgressive => Target != 0;
[JsonIgnore]
public int Target { get; set; } = default; // 可选目标值
public int Target { get; set; } = 0; // 可选目标值
[JsonIgnore]
public AchievementCategory Category { get; set; } // 分组
@@ -82,6 +82,9 @@ namespace MaaWpfGui.Models
[JsonIgnore]
public bool IsVisibleInSearch { get; set; } = true;
[JsonIgnore]
public string Group { get; set; } = string.Empty;
[JsonIgnore]
public string MedalBrushKey
{

View File

@@ -1188,11 +1188,11 @@ C:\\leidian\\LDPlayer9。\n
<system:String x:Key="Achievement.PeekScreen.Title">窥屏</system:String>
<system:String x:Key="Achievement.PeekScreen.Description">喜欢盯着看是吧.jpg</system:String>
<system:String x:Key="Achievement.PeekScreen.Conditions">使用一次牛牛监控</system:String>
<system:String x:Key="Achievement.PeekScreen.Conditions">使用一次{key=Peep}</system:String>
<system:String x:Key="Achievement.CongratulationError.Title">喜报</system:String>
<system:String x:Key="Achievement.CongratulationError.Description">我的MAA怎么用不了了?</system:String>
<system:String x:Key="Achievement.CongratulationError.Conditions">触发过MAA的报错</system:String>
<system:String x:Key="Achievement.CongratulationError.Description">我的 MMA 怎么用不了了?</system:String>
<system:String x:Key="Achievement.CongratulationError.Conditions">触发过 MAA 的报错</system:String>
<system:String x:Key="Achievement.UnexpectedCrash.Title">不速之客</system:String>
<system:String x:Key="Achievement.UnexpectedCrash.Description">你触发了未知的领域。</system:String>
@@ -1200,11 +1200,11 @@ C:\\leidian\\LDPlayer9。\n
<system:String x:Key="Achievement.CustomizationMaster.Title">自定义达人</system:String>
<system:String x:Key="Achievement.CustomizationMaster.Description">咱就是二次元!</system:String>
<system:String x:Key="Achievement.CustomizationMaster.Conditions">更换一次背景图片</system:String>
<system:String x:Key="Achievement.CustomizationMaster.Conditions">更换一次{key=BackgroundImage}</system:String>
<system:String x:Key="Achievement.RealGacha.Title">真正的抽卡</system:String>
<system:String x:Key="Achievement.RealGacha.Description">不是模拟抽卡吗?怎么真抽了???</system:String>
<system:String x:Key="Achievement.RealGacha.Conditions">使用一次牛牛抽卡</system:String>
<system:String x:Key="Achievement.RealGacha.Conditions">使用一次{key=Gacha}</system:String>
<system:String x:Key="Achievement.FirstLaunch.Title">初来乍到</system:String>
<system:String x:Key="Achievement.FirstLaunch.Description">欢迎使用 MaaAssistantArknights.</system:String>
@@ -1216,7 +1216,7 @@ C:\\leidian\\LDPlayer9。\n
<system:String x:Key="Achievement.Rules.Title">严重错讠</system:String>
<system:String x:Key="Achievement.Rules.Description">我会一直注视着你。</system:String>
<system:String x:Key="Achievement.Rules.Conditions">MAA员工守则</system:String>
<system:String x:Key="Achievement.Rules.Conditions">MAA 员工守则</system:String>
<system:String x:Key="Achievement.VersionClick.Title">这也能点?</system:String>
<system:String x:Key="Achievement.VersionClick.Description">这是什么?版本号,点一下。</system:String>
@@ -1224,43 +1224,43 @@ C:\\leidian\\LDPlayer9。\n
<system:String x:Key="Achievement.SanitySaver1.Title">精打细算</system:String>
<system:String x:Key="Achievement.SanitySaver1.Description">每点理智都用得恰到好处。</system:String>
<system:String x:Key="Achievement.SanitySaver1.Conditions">使用理智回复功能 1 次</system:String>
<system:String x:Key="Achievement.SanitySaver1.Conditions">使用 「{key=UseSanityPotion}」 功能回复理智 1 次</system:String>
<system:String x:Key="Achievement.SanitySaver2.Title">补给大师</system:String>
<system:String x:Key="Achievement.SanitySaver2.Description">你对药剂的使用炉火纯青。</system:String>
<system:String x:Key="Achievement.SanitySaver2.Conditions">使用理智回复功能 10 次</system:String>
<system:String x:Key="Achievement.SanitySaver2.Conditions">使用 「{key=UseSanityPotion}」 功能回复理智 10 次</system:String>
<system:String x:Key="Achievement.SanitySaver3.Title">永动机</system:String>
<system:String x:Key="Achievement.SanitySaver3.Description">你的理智似乎永远用不完。</system:String>
<system:String x:Key="Achievement.SanitySaver3.Conditions">使用理智回复功能 50 次</system:String>
<system:String x:Key="Achievement.SanitySaver3.Conditions">使用 「{key=UseSanityPotion}」 功能回复理智 50 次</system:String>
<system:String x:Key="Achievement.ScheduleMaster1.Title">××管理大师</system:String>
<system:String x:Key="Achievement.ScheduleMaster1.Description">更有效的规划。</system:String>
<system:String x:Key="Achievement.ScheduleMaster1.Conditions">定时执行 1 次</system:String>
<system:String x:Key="Achievement.ScheduleMaster1.Conditions">{key=ScheduleSettings} 1 次</system:String>
<system:String x:Key="Achievement.ScheduleMaster2.Title">泛用型自动化解决方案0.3.2.9f2</system:String>
<system:String x:Key="Achievement.ScheduleMaster2.Description">您已熟知 PRTS 的自动化部署。</system:String>
<system:String x:Key="Achievement.ScheduleMaster2.Conditions">定时执行 100 次</system:String>
<system:String x:Key="Achievement.ScheduleMaster2.Conditions">{key=ScheduleSettings} 100 次</system:String>
<system:String x:Key="Achievement.SanityExpire.Title">要过期了</system:String>
<system:String x:Key="Achievement.SanityExpire.Description">赶紧冲哇!!!</system:String>
<system:String x:Key="Achievement.SanityExpire.Conditions">使用「无限吃 48 小时内过期的理智药」,单次任务使用 8 瓶及以上临期理智药</system:String>
<system:String x:Key="Achievement.SanityExpire.Conditions">使用「{key=UseExpiringMedicine}」,单次任务使用 8 瓶及以上临期理智药</system:String>
<system:String x:Key="Achievement.OverLimitAgent.Title">超限代理</system:String>
<system:String x:Key="Achievement.OverLimitAgent.Description">你进行了一次能将大道磨灭的代理任务。</system:String>
<system:String x:Key="Achievement.OverLimitAgent.Conditions">在单次任务中,进行超过 100 次代理指挥作战</system:String>
<system:String x:Key="Achievement.OverLimitAgent.Conditions">在单次 「{key=Combat}」 任务中,进行超过 100 次代理指挥作战</system:String>
<system:String x:Key="Achievement.MirrorChyanFirstUse.Title">Mirror☆</system:String>
<system:String x:Key="Achievement.MirrorChyanFirstUse.Description">是 Mirror!我们有救了!</system:String>
<system:String x:Key="Achievement.MirrorChyanFirstUse.Conditions">初次成功使用 Mirror</system:String>
<system:String x:Key="Achievement.MirrorChyanFirstUse.Description">是 {key=MirrorChyan}!我们有救了!</system:String>
<system:String x:Key="Achievement.MirrorChyanFirstUse.Conditions">初次成功使用 {key=MirrorChyan}</system:String>
<system:String x:Key="Achievement.MirrorChyanCdkError.Title">这……对吗?</system:String>
<system:String x:Key="Achievement.MirrorChyanCdkError.Description">谁偷吃了我的字母饼干?</system:String>
<system:String x:Key="Achievement.MirrorChyanCdkError.Conditions">Mirror CDK 填写错误</system:String>
<system:String x:Key="Achievement.MirrorChyanCdkError.Conditions">{key=MirrorChyan} CDK 填写错误</system:String>
<system:String x:Key="Achievement.ProblemFeedback.Title">隐患勘察</system:String>
<system:String x:Key="Achievement.ProblemFeedback.Description">一定要杜绝的是,来自内部的风险。</system:String>
<system:String x:Key="Achievement.ProblemFeedback.Conditions">进行一次问题反馈</system:String>
<system:String x:Key="Achievement.ProblemFeedback.Conditions">进行一次{key=IssueReport}</system:String>
<system:String x:Key="Achievement.MapOutdated.Title">急急国王</system:String>
<system:String x:Key="Achievement.MapOutdated.Description">我知道你很急,但你先别急。</system:String>
@@ -1280,11 +1280,11 @@ C:\\leidian\\LDPlayer9。\n
<system:String x:Key="Achievement.RecruitNoSixStar.Title">玄学无效</system:String>
<system:String x:Key="Achievement.RecruitNoSixStar.Description">事已至此,先睡觉吧。</system:String>
<system:String x:Key="Achievement.RecruitNoSixStar.Conditions">公招中累计 500 次没出现六星 tag</system:String>
<system:String x:Key="Achievement.RecruitNoSixStar.Conditions">「{key=Recruiting}」 中累计 500 次没出现六星 tag</system:String>
<system:String x:Key="Achievement.RecruitNoSixStarStreak.Title">一定是 MAA 干的!</system:String>
<system:String x:Key="Achievement.RecruitNoSixStarStreak.Description">乆乆乆乆乆乆乆乆乆乆!</system:String>
<system:String x:Key="Achievement.RecruitNoSixStarStreak.Conditions">公招中连续 500 次没出现六星 tag</system:String>
<system:String x:Key="Achievement.RecruitNoSixStarStreak.Conditions">「{key=Recruiting}」 中连续 500 次没出现六星 tag</system:String>
<system:String x:Key="Achievement.MosquitoLeg.Title">蚊子腿也是肉!</system:String>
<system:String x:Key="Achievement.MosquitoLeg.Description">您深刻理解了积少成多的道理。</system:String>
@@ -1292,11 +1292,11 @@ C:\\leidian\\LDPlayer9。\n
<system:String x:Key="Achievement.Pioneer1.Title">测试先锋</system:String>
<system:String x:Key="Achievement.Pioneer1.Description">您率先体验了处于测试中的版本。</system:String>
<system:String x:Key="Achievement.Pioneer1.Conditions">将 MAA 更新至公测版</system:String>
<system:String x:Key="Achievement.Pioneer1.Conditions">将 MAA 更新至{key=UpdateCheckBeta}</system:String>
<system:String x:Key="Achievement.Pioneer2.Title">超级测试先锋</system:String>
<system:String x:Key="Achievement.Pioneer2.Description">您使用了最新的测试版本(出现任何新的问题请前往问题反馈</system:String>
<system:String x:Key="Achievement.Pioneer2.Conditions">将 MAA 更新至内测版</system:String>
<system:String x:Key="Achievement.Pioneer2.Description">您使用了最新的测试版本(出现任何新的问题请前往{key=IssueReport}</system:String>
<system:String x:Key="Achievement.Pioneer2.Conditions">将 MAA 更新至{key=UpdateCheckNightly}</system:String>
<system:String x:Key="Achievement.Pioneer3.Title">DEBUG 急先锋</system:String>
<system:String x:Key="Achievement.Pioneer3.Description">能下到这个版本的都不是一般人。</system:String>
@@ -1348,19 +1348,19 @@ C:\\leidian\\LDPlayer9。\n
<system:String x:Key="Achievement.RoguelikeGamePass1.Title">初抵终点</system:String>
<system:String x:Key="Achievement.RoguelikeGamePass1.Description">只要能到达...那个地方...</system:String>
<system:String x:Key="Achievement.RoguelikeGamePass1.Conditions">使用牛牛通关肉鸽 1 次</system:String>
<system:String x:Key="Achievement.RoguelikeGamePass1.Conditions">使用 「{key=AutoRoguelike}」 通关肉鸽 1 次</system:String>
<system:String x:Key="Achievement.RoguelikeGamePass2.Title">再临终点</system:String>
<system:String x:Key="Achievement.RoguelikeGamePass2.Description">这条道路我已走过多次。</system:String>
<system:String x:Key="Achievement.RoguelikeGamePass2.Conditions">使用牛牛通关肉鸽 5 次</system:String>
<system:String x:Key="Achievement.RoguelikeGamePass2.Conditions">使用 「{key=AutoRoguelike}」 通关肉鸽 5 次</system:String>
<system:String x:Key="Achievement.RoguelikeGamePass3.Title">终点常客</system:String>
<system:String x:Key="Achievement.RoguelikeGamePass3.Description">闭着眼睛都能走到这。</system:String>
<system:String x:Key="Achievement.RoguelikeGamePass3.Conditions">使用牛牛通关肉鸽 10 次</system:String>
<system:String x:Key="Achievement.RoguelikeGamePass3.Conditions">使用 「{key=AutoRoguelike}」 通关肉鸽 10 次</system:String>
<system:String x:Key="Achievement.RoguelikeRetreat.Title">失败是成功之母</system:String>
<system:String x:Key="Achievement.RoguelikeRetreat.Description">终有一天,我们会到达成功的彼岸,失败是成功的阶梯。</system:String>
<system:String x:Key="Achievement.RoguelikeRetreat.Conditions">牛牛放弃探索 100 次</system:String>
<system:String x:Key="Achievement.RoguelikeRetreat.Conditions">「{key=AutoRoguelike}」 放弃探索 100 次</system:String>
<system:String x:Key="Achievement.RoguelikeGoldMax.Title">满了满了</system:String>
<system:String x:Key="Achievement.RoguelikeGoldMax.Description">坎诺特,把你店里最贵的端出来!</system:String>
@@ -1392,7 +1392,7 @@ C:\\leidian\\LDPlayer9。\n
<system:String x:Key="Achievement.ProxyOnline3Hours.Title">全勤先锋</system:String>
<system:String x:Key="Achievement.ProxyOnline3Hours.Description">你,已经成为博士的替身了。</system:String>
<system:String x:Key="Achievement.ProxyOnline3Hours.Conditions">开始任务连续在线超过 3 小时</system:String>
<system:String x:Key="Achievement.ProxyOnline3Hours.Conditions">开始任务连续在线超过 3 小时</system:String>
<system:String x:Key="Achievement.UseDaily1.Title">天天打卡</system:String>
<system:String x:Key="Achievement.UseDaily1.Description">连续签到七天,可惜没有奖励。</system:String>
@@ -1420,19 +1420,19 @@ C:\\leidian\\LDPlayer9。\n
<system:String x:Key="Achievement.RoguelikeN04.Title">简简单单</system:String>
<system:String x:Key="Achievement.RoguelikeN04.Description">这种难度难不倒我。</system:String>
<system:String x:Key="Achievement.RoguelikeN04.Conditions">使用牛牛通关任意肉鸽 N4 及以上难度</system:String>
<system:String x:Key="Achievement.RoguelikeN04.Conditions">使用 「{key=AutoRoguelike}」 通关任意肉鸽 N4 及以上难度</system:String>
<system:String x:Key="Achievement.RoguelikeN08.Title">挑战困难</system:String>
<system:String x:Key="Achievement.RoguelikeN08.Description">勇敢牛牛不怕困难。</system:String>
<system:String x:Key="Achievement.RoguelikeN08.Conditions">使用牛牛通关任意肉鸽 N8 及以上难度</system:String>
<system:String x:Key="Achievement.RoguelikeN08.Conditions">使用 「{key=AutoRoguelike}」 通关任意肉鸽 N8 及以上难度</system:String>
<system:String x:Key="Achievement.RoguelikeN12.Title">超越人类</system:String>
<system:String x:Key="Achievement.RoguelikeN12.Description">比一般人玩的都好。</system:String>
<system:String x:Key="Achievement.RoguelikeN12.Conditions">使用牛牛通关任意肉鸽 N12 及以上难度</system:String>
<system:String x:Key="Achievement.RoguelikeN12.Conditions">使用 「{key=AutoRoguelike}」 通关任意肉鸽 N12 及以上难度</system:String>
<system:String x:Key="Achievement.RoguelikeN15.Title">仙术杯选手</system:String>
<system:String x:Key="Achievement.RoguelikeN15.Description">仙术牛牛真仙术。</system:String>
<system:String x:Key="Achievement.RoguelikeN15.Conditions">使用牛牛通关任意肉鸽 N15 及以上难度</system:String>
<system:String x:Key="Achievement.RoguelikeN15.Conditions">使用 「{key=AutoRoguelike}」 通关任意肉鸽 N15 及以上难度</system:String>
<!-- !Achievement -->
<!-- BadModules -->