diff --git a/src/MaaWpfGui/Helper/Instances.cs b/src/MaaWpfGui/Helper/Instances.cs
index e6b50eb1ae..a22811f21f 100644
--- a/src/MaaWpfGui/Helper/Instances.cs
+++ b/src/MaaWpfGui/Helper/Instances.cs
@@ -45,9 +45,15 @@ namespace MaaWpfGui.Helper
public static DateTimeOffset ReportTime { get; set; }
}
+ public static int MedicineUsedTimes = 0;
+
+ public static int StoneUsedTimes = 0;
+
public static void ClearCache()
{
SanityReport.HasSanityReport = false;
+ MedicineUsedTimes = 0;
+ StoneUsedTimes = 0;
}
}
diff --git a/src/MaaWpfGui/Main/AsstProxy.cs b/src/MaaWpfGui/Main/AsstProxy.cs
index 13d9ce0517..6701976d57 100644
--- a/src/MaaWpfGui/Main/AsstProxy.cs
+++ b/src/MaaWpfGui/Main/AsstProxy.cs
@@ -503,16 +503,16 @@ namespace MaaWpfGui.Main
case "CloseDown":
return;
case "Recruit":
- {
- if (msg == AsstMsg.TaskChainError)
{
- Instances.RecognizerViewModel.RecruitInfo = LocalizationHelper.GetString("IdentifyTheMistakes");
- using var toast = new ToastNotification(LocalizationHelper.GetString("IdentifyTheMistakes"));
- toast.Show();
- }
+ if (msg == AsstMsg.TaskChainError)
+ {
+ Instances.RecognizerViewModel.RecruitInfo = LocalizationHelper.GetString("IdentifyTheMistakes");
+ using var toast = new ToastNotification(LocalizationHelper.GetString("IdentifyTheMistakes"));
+ toast.Show();
+ }
- break;
- }
+ break;
+ }
}
bool isCopilotTaskChain = taskChain == "Copilot" || taskChain == "VideoRecognition";
@@ -577,15 +577,15 @@ namespace MaaWpfGui.Main
Instances.TaskQueueViewModel.IncreaseCustomInfrastPlanIndex();
break;
case "Mall":
- {
- if (Instances.TaskQueueViewModel.Stage != string.Empty && Instances.SettingsViewModel.CreditFightTaskEnabled)
{
- Instances.SettingsViewModel.LastCreditFightTaskTime = DateTime.UtcNow.ToYjDate().ToFormattedString();
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("CompleteTask") + LocalizationHelper.GetString("CreditFight"));
- }
+ if (Instances.TaskQueueViewModel.Stage != string.Empty && Instances.SettingsViewModel.CreditFightTaskEnabled)
+ {
+ Instances.SettingsViewModel.LastCreditFightTaskTime = DateTime.UtcNow.ToYjDate().ToFormattedString();
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("CompleteTask") + LocalizationHelper.GetString("CreditFight"));
+ }
- break;
- }
+ break;
+ }
}
if (taskChain == "Fight" && SanityReport.HasSanityReport)
@@ -799,147 +799,159 @@ namespace MaaWpfGui.Main
switch (subTask)
{
case "ProcessTask":
- {
- string taskName = details["details"]?["task"]?.ToString();
- int execTimes = (int)details["details"]["exec_times"];
-
- switch (taskName)
{
- case "StartButton2":
- case "AnnihilationConfirm":
- var log = LocalizationHelper.GetString("MissionStart") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime");
- if (SanityReport.HasSanityReport)
- {
- log += "\n" + LocalizationHelper.GetString("CurrentSanity") + $" {SanityReport.Sanity[0]}/{SanityReport.Sanity[1]}";
- }
+ string taskName = details["details"]?["task"]?.ToString();
+ int execTimes = (int)details["details"]["exec_times"];
- Instances.TaskQueueViewModel.AddLog(log, UiLogColor.Info);
- break;
+ switch (taskName)
+ {
+ case "StartButton2":
+ case "AnnihilationConfirm":
+ var log = LocalizationHelper.GetString("MissionStart") + $" {execTimes} {LocalizationHelper.GetString("UnitTime")}\n";
+ if (SanityReport.HasSanityReport)
+ {
+ log += LocalizationHelper.GetString("CurrentSanity") + $" {SanityReport.Sanity[0]}/{SanityReport.Sanity[1]} ";
+ }
- case "MedicineConfirm":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("MedicineUsed") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info);
- break;
+ if (MedicineUsedTimes > 0)
+ {
+ log += LocalizationHelper.GetString("MedicineUsedTimes") + $" {MedicineUsedTimes}/{Instances.TaskQueueViewModel.MedicineNumber} ";
+ }
- case "ExpiringMedicineConfirm":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ExpiringMedicineUsed") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info);
- break;
+ if (StoneUsedTimes > 0)
+ {
+ log += LocalizationHelper.GetString("StoneUsedTimes") + $" {StoneUsedTimes}/{Instances.TaskQueueViewModel.StoneNumber} ";
+ }
- case "StoneConfirm":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("StoneUsed") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info);
- break;
+ Instances.TaskQueueViewModel.AddLog(log.TrimEnd('\n').TrimEnd(' '), UiLogColor.Info);
+ break;
- case "AbandonAction":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ActingCommandError"), UiLogColor.Error);
- break;
+ case "MedicineConfirm":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("MedicineUsed") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info);
+ MedicineUsedTimes++;
+ break;
- case "RecruitRefreshConfirm":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("LabelsRefreshed"), UiLogColor.Info);
- break;
+ case "ExpiringMedicineConfirm":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ExpiringMedicineUsed") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info);
+ break;
- case "RecruitConfirm":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RecruitConfirm"), UiLogColor.Info);
- break;
+ case "StoneConfirm":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("StoneUsed") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info);
+ StoneUsedTimes++;
+ break;
- case "InfrastDormDoubleConfirmButton":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("InfrastDormDoubleConfirmed"), UiLogColor.Error);
- break;
+ case "AbandonAction":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ActingCommandError"), UiLogColor.Error);
+ break;
- /* 肉鸽相关 */
- case "StartExplore":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("BegunToExplore") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info);
- break;
+ case "RecruitRefreshConfirm":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("LabelsRefreshed"), UiLogColor.Info);
+ break;
- case "StageTraderInvestConfirm":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("HasInvested") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info);
- break;
+ case "RecruitConfirm":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RecruitConfirm"), UiLogColor.Info);
+ break;
- case "ExitThenAbandon":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ExplorationAbandoned"));
- break;
+ case "InfrastDormDoubleConfirmButton":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("InfrastDormDoubleConfirmed"), UiLogColor.Error);
+ break;
- // case "StartAction":
- // Instances.TaskQueueViewModel.AddLog("开始战斗");
- // break;
- case "MissionCompletedFlag":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("FightCompleted"));
- break;
+ /* 肉鸽相关 */
+ case "StartExplore":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("BegunToExplore") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info);
+ break;
- case "MissionFailedFlag":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("FightFailed"));
- break;
+ case "StageTraderInvestConfirm":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("HasInvested") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info);
+ break;
- case "StageTraderEnter":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("Trader"));
- break;
+ case "ExitThenAbandon":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ExplorationAbandoned"));
+ break;
- case "StageSafeHouseEnter":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("SafeHouse"));
- break;
+ // case "StartAction":
+ // Instances.TaskQueueViewModel.AddLog("开始战斗");
+ // break;
+ case "MissionCompletedFlag":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("FightCompleted"));
+ break;
- case "StageEncounterEnter":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("Encounter"));
- break;
+ case "MissionFailedFlag":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("FightFailed"));
+ break;
- // case "StageBoonsEnter":
- // Instances.TaskQueueViewModel.AddLog("古堡馈赠");
- // break;
- case "StageCombatDpsEnter":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("CombatDps"));
- break;
+ case "StageTraderEnter":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("Trader"));
+ break;
- case "StageEmergencyDps":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("EmergencyDps"));
- break;
+ case "StageSafeHouseEnter":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("SafeHouse"));
+ break;
- case "StageDreadfulFoe":
- case "StageDreadfulFoe-5Enter":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("DreadfulFoe"));
- break;
+ case "StageEncounterEnter":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("Encounter"));
+ break;
- case "StageTraderInvestSystemFull":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("UpperLimit"), UiLogColor.Info);
- break;
+ // case "StageBoonsEnter":
+ // Instances.TaskQueueViewModel.AddLog("古堡馈赠");
+ // break;
+ case "StageCombatDpsEnter":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("CombatDps"));
+ break;
- case "OfflineConfirm":
- if (Instances.SettingsViewModel.AutoRestartOnDrop)
- {
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("GameDrop"), UiLogColor.Warning);
- }
- else
- {
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("GameDropNoRestart"), UiLogColor.Warning);
- using var toast = new ToastNotification(LocalizationHelper.GetString("GameDropNoRestart"));
- toast.Show();
- _ = Instances.TaskQueueViewModel.Stop();
- }
+ case "StageEmergencyDps":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("EmergencyDps"));
+ break;
- break;
+ case "StageDreadfulFoe":
+ case "StageDreadfulFoe-5Enter":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("DreadfulFoe"));
+ break;
- case "GamePass":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RoguelikeGamePass"), UiLogColor.RareOperator);
- break;
+ case "StageTraderInvestSystemFull":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("UpperLimit"), UiLogColor.Info);
+ break;
- case "BattleStartAll":
- Instances.CopilotViewModel.AddLog(LocalizationHelper.GetString("MissionStart"), UiLogColor.Info);
- break;
+ case "OfflineConfirm":
+ if (Instances.SettingsViewModel.AutoRestartOnDrop)
+ {
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("GameDrop"), UiLogColor.Warning);
+ }
+ else
+ {
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("GameDropNoRestart"), UiLogColor.Warning);
+ using var toast = new ToastNotification(LocalizationHelper.GetString("GameDropNoRestart"));
+ toast.Show();
+ _ = Instances.TaskQueueViewModel.Stop();
+ }
- case "StageTraderSpecialShoppingAfterRefresh":
- Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RoguelikeSpecialItemBought"), UiLogColor.RareOperator);
- break;
+ break;
+
+ case "GamePass":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RoguelikeGamePass"), UiLogColor.RareOperator);
+ break;
+
+ case "BattleStartAll":
+ Instances.CopilotViewModel.AddLog(LocalizationHelper.GetString("MissionStart"), UiLogColor.Info);
+ break;
+
+ case "StageTraderSpecialShoppingAfterRefresh":
+ Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RoguelikeSpecialItemBought"), UiLogColor.RareOperator);
+ break;
+ }
+
+ break;
}
-
- break;
- }
case "CombatRecordRecognitionTask":
- {
- string what = details["what"]?.ToString();
- if (!string.IsNullOrEmpty(what))
{
- Instances.CopilotViewModel.AddLog(what);
- }
+ string what = details["what"]?.ToString();
+ if (!string.IsNullOrEmpty(what))
+ {
+ Instances.CopilotViewModel.AddLog(what);
+ }
- break;
- }
+ break;
+ }
}
}
diff --git a/src/MaaWpfGui/Res/Localizations/en-us.xaml b/src/MaaWpfGui/Res/Localizations/en-us.xaml
index d4459f83d8..176cf68e76 100644
--- a/src/MaaWpfGui/Res/Localizations/en-us.xaml
+++ b/src/MaaWpfGui/Res/Localizations/en-us.xaml
@@ -560,9 +560,11 @@ The video aspect ratio needs to be 16:9 without interference factors such as bla
No bonus stage, stopped
Stage Queue:
Unable to use PRTS
- Current Sanity:
Mission started
times
+ Sanity:
+ Medicine:
+ Stone:
Medicine used
Expiring medicine used
Originite Prime used
diff --git a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml
index 959f23388f..0b082f2a79 100644
--- a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml
+++ b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml
@@ -560,9 +560,11 @@ Bilibili: ログイン インターフェイスに表示されるアカウント
ステージ報酬がないため停止します
レベルキュー:
自動指揮利用不可
- 現在理性:
行動開始しました
回
+ 理性:
+ 薬:
+ 石:
回復剤を使った
48時間以内に期限が切れる回復剤を使った
源石を使った
diff --git a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml
index fc6900f04c..bf1c9cad8e 100644
--- a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml
+++ b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml
@@ -560,9 +560,11 @@ Bilibili: 로그인 인터페이스에 표시되는 계정 이름(예: 장산)
EX 스테이지가 없어 중단되었습니다
레벨 대기열:
프록시 명령을 사용할 수 없습니다
- 현재 이성:
행동 개시
회
+ 제정신:
+ 약:
+ 결석:
이성 회복 아이템을 사용했습니다
만료가 임박한 이성 회복 아이템을 사용했습니다
순오리지늄을 사용했습니다
diff --git a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml
index 42fe9989ad..fb5e63a9a2 100644
--- a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml
+++ b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml
@@ -560,9 +560,11 @@
无奖励关卡,已停止
关卡队列:
无法使用代理指挥
- 当前理智:
已开始行动
次
+ 理智:
+ 药:
+ 石:
已使用理智药
已使用 48 小时内过期的理智药
已使用源石
diff --git a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml
index 4ddab49490..8c3615bac2 100644
--- a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml
+++ b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml
@@ -560,9 +560,11 @@
無獎勵關卡,已停止
關卡隊列:
無法使用代理指揮
- 當前理智:
已開始行動
次
+ 理智:
+ 藥:
+ 石:
已使用理智藥
已使用 48 小時內過期的理智藥
已使用源石