diff --git a/resource/tasks.json b/resource/tasks.json index e9b71face2..97a22647b0 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -11922,7 +11922,6 @@ ] }, "Roguelike@StageTraderInvestSystemError": { - "action": "ClickSelf", "cache": false, "roi": [ 508, diff --git a/src/MaaCore/Task/Roguelike/RoguelikeStageEncounterTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/RoguelikeStageEncounterTaskPlugin.cpp index 05198d40d2..e1d889c1ae 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeStageEncounterTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/RoguelikeStageEncounterTaskPlugin.cpp @@ -11,6 +11,7 @@ bool asst::RoguelikeStageEncounterTaskPlugin::verify(AsstMsg msg, const json::value& details) const { + // 安全屋,掷骰子之类的带选项的也都是视为不期而遇了 if (msg != AsstMsg::SubTaskStart || details.get("subtask", std::string()) != "ProcessTask") { return false; } @@ -71,7 +72,12 @@ bool asst::RoguelikeStageEncounterTaskPlugin::_run() std::string text = resultVec.front().text; RoguelikeEvent event = event_map.at(text); + Log.info("Event:", event.name, "choose option", event.default_choose); + auto info = basic_info_with_what("RoguelikeEvent"); + info["details"]["name"] = event.name; + info["details"]["default_choose"] = event.default_choose; + callback(AsstMsg::SubTaskExtraInfo, info); for (int j = 0; j < 2; ++j) { ProcessTask(*this, { m_roguelike_theme + "@Roguelike@OptionChoose" + std::to_string(event.option_num) + "-" + std::to_string(event.default_choose) }) diff --git a/src/MaaWpfGui/Main/AsstProxy.cs b/src/MaaWpfGui/Main/AsstProxy.cs index 9137ff940a..97ddfb72de 100644 --- a/src/MaaWpfGui/Main/AsstProxy.cs +++ b/src/MaaWpfGui/Main/AsstProxy.cs @@ -467,16 +467,16 @@ namespace MaaWpfGui.Main return; case "Recruit": + { + if (msg == AsstMsg.TaskChainError) { - if (msg == AsstMsg.TaskChainError) - { - Instances.RecognizerViewModel.RecruitInfo = LocalizationHelper.GetString("IdentifyTheMistakes"); - using var toast = new ToastNotification(LocalizationHelper.GetString("IdentifyTheMistakes")); - toast.Show(); - } - - break; + Instances.RecognizerViewModel.RecruitInfo = LocalizationHelper.GetString("IdentifyTheMistakes"); + using var toast = new ToastNotification(LocalizationHelper.GetString("IdentifyTheMistakes")); + toast.Show(); } + + break; + } } bool isCopilotTaskChain = taskChain == "Copilot" || taskChain == "VideoRecognition"; @@ -493,33 +493,33 @@ namespace MaaWpfGui.Main break; case AsstMsg.TaskChainError: + { + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("TaskError") + taskChain, UiLogColor.Error); + using var toast = new ToastNotification(LocalizationHelper.GetString("TaskError") + taskChain); + toast.Show(); + if (isCopilotTaskChain) { - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("TaskError") + taskChain, UiLogColor.Error); - using var toast = new ToastNotification(LocalizationHelper.GetString("TaskError") + taskChain); - toast.Show(); - if (isCopilotTaskChain) + // 如果启用战斗列表,需要中止掉剩余的任务 + if (Instances.CopilotViewModel.UseCopilotList) { - // 如果启用战斗列表,需要中止掉剩余的任务 - if (Instances.CopilotViewModel.UseCopilotList) + if (!AsstStop(false)) { - if (!AsstStop(false)) - { - _logger.Warning("Failed to stop Asst"); - } + _logger.Warning("Failed to stop Asst"); } - - _runningState.SetIdle(true); - Instances.CopilotViewModel.AddLog(LocalizationHelper.GetString("CombatError"), UiLogColor.Error); } - if (taskChain == "Fight" && (Instances.TaskQueueViewModel.Stage == "Annihilation")) - { - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("AnnihilationTaskFailed"), UiLogColor.Warning); - } - - break; + _runningState.SetIdle(true); + Instances.CopilotViewModel.AddLog(LocalizationHelper.GetString("CombatError"), UiLogColor.Error); } + if (taskChain == "Fight" && (Instances.TaskQueueViewModel.Stage == "Annihilation")) + { + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("AnnihilationTaskFailed"), UiLogColor.Warning); + } + + break; + } + case AsstMsg.TaskChainStart: switch (taskChain) { @@ -547,15 +547,15 @@ namespace MaaWpfGui.Main break; case "Mall": + { + if (Instances.TaskQueueViewModel.Stage != string.Empty && Instances.SettingsViewModel.CreditFightTaskEnabled) { - 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; + Instances.SettingsViewModel.LastCreditFightTaskTime = DateTime.UtcNow.ToYjDate().ToFormattedString(); + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("CompleteTask") + LocalizationHelper.GetString("CreditFight")); } + + break; + } } if (taskChain == "Fight" && SanityReport.HasSanityReport) @@ -759,22 +759,22 @@ namespace MaaWpfGui.Main break; case "AutoRecruitTask": - { - var whyStr = details.TryGetValue("why", out var why) ? why.ToString() : LocalizationHelper.GetString("ErrorOccurred"); - Instances.TaskQueueViewModel.AddLog(whyStr + "," + LocalizationHelper.GetString("HasReturned"), UiLogColor.Error); - break; - } + { + var whyStr = details.TryGetValue("why", out var why) ? why.ToString() : LocalizationHelper.GetString("ErrorOccurred"); + Instances.TaskQueueViewModel.AddLog(whyStr + "," + LocalizationHelper.GetString("HasReturned"), UiLogColor.Error); + break; + } case "RecognizeDrops": Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("DropRecognitionError"), UiLogColor.Error); break; case "ReportToPenguinStats": - { - var why = details["why"].ToString(); - Instances.TaskQueueViewModel.AddLog(why + "," + LocalizationHelper.GetString("GiveUpUploadingPenguins"), UiLogColor.Error); - break; - } + { + var why = details["why"].ToString(); + Instances.TaskQueueViewModel.AddLog(why + "," + LocalizationHelper.GetString("GiveUpUploadingPenguins"), UiLogColor.Error); + break; + } case "CheckStageValid": Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("TheEx"), UiLogColor.Error); @@ -789,151 +789,147 @@ namespace MaaWpfGui.Main switch (subTask) { case "ProcessTask": + { + string taskName = details["details"]?["task"]?.ToString(); + int execTimes = (int)details["details"]["exec_times"]; + + switch (taskName) { - string taskName = details["details"]?["task"]?.ToString(); - int execTimes = (int)details["details"]["exec_times"]; + 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]} "; + } - 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]} "; - } + if (MedicineUsedTimes > 0 || ExpiringMedicineUsedTimes > 0) + { + log += $"{LocalizationHelper.GetString("MedicineUsedTimes")} {MedicineUsedTimes}" + (ExpiringMedicineUsedTimes > 0 ? $"({ExpiringMedicineUsedTimes})" : string.Empty) + " "; + } - if (MedicineUsedTimes > 0 || ExpiringMedicineUsedTimes > 0) - { - log += $"{LocalizationHelper.GetString("MedicineUsedTimes")} {MedicineUsedTimes}" + (ExpiringMedicineUsedTimes > 0 ? $"({ExpiringMedicineUsedTimes})" : string.Empty) + " "; - } + if (StoneUsedTimes > 0) + { + log += $"{LocalizationHelper.GetString("StoneUsedTimes")} {StoneUsedTimes} "; + } - if (StoneUsedTimes > 0) - { - log += $"{LocalizationHelper.GetString("StoneUsedTimes")} {StoneUsedTimes} "; - } + Instances.TaskQueueViewModel.AddLog(log.TrimEnd('\n').TrimEnd(' '), UiLogColor.Info); + break; - Instances.TaskQueueViewModel.AddLog(log.TrimEnd('\n').TrimEnd(' '), UiLogColor.Info); - break; + case "StoneConfirm": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("StoneUsed") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info); + StoneUsedTimes++; + break; - case "StoneConfirm": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("StoneUsed") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info); - StoneUsedTimes++; - break; + case "AbandonAction": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ActingCommandError"), UiLogColor.Error); + break; - case "AbandonAction": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ActingCommandError"), UiLogColor.Error); - break; + case "RecruitRefreshConfirm": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("LabelsRefreshed"), UiLogColor.Info); + break; - case "RecruitRefreshConfirm": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("LabelsRefreshed"), UiLogColor.Info); - break; + case "RecruitConfirm": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RecruitConfirm"), UiLogColor.Info); + break; - case "RecruitConfirm": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RecruitConfirm"), UiLogColor.Info); - break; + case "InfrastDormDoubleConfirmButton": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("InfrastDormDoubleConfirmed"), UiLogColor.Error); + break; - case "InfrastDormDoubleConfirmButton": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("InfrastDormDoubleConfirmed"), UiLogColor.Error); - break; + /* 肉鸽相关 */ + case "StartExplore": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("BegunToExplore") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info); + break; - /* 肉鸽相关 */ - case "StartExplore": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("BegunToExplore") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info); - break; + case "StageTraderInvestConfirm": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("HasInvested") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info); + break; - case "StageTraderInvestConfirm": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("HasInvested") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info); - break; + case "ExitThenAbandon": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ExplorationAbandoned")); + break; - case "ExitThenAbandon": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ExplorationAbandoned")); - break; + // case "StartAction": + // Instances.TaskQueueViewModel.AddLog("开始战斗"); + // break; + case "MissionCompletedFlag": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("FightCompleted")); + break; - // case "StartAction": - // Instances.TaskQueueViewModel.AddLog("开始战斗"); - // break; - case "MissionCompletedFlag": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("FightCompleted")); - break; + case "MissionFailedFlag": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("FightFailed")); + break; - case "MissionFailedFlag": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("FightFailed")); - break; + case "StageTraderEnter": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("Trader")); + break; - case "StageTraderEnter": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("Trader")); - break; + case "StageSafeHouseEnter": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("SafeHouse")); + break; - case "StageSafeHouseEnter": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("SafeHouse")); - break; + // case "StageBoonsEnter": + // Instances.TaskQueueViewModel.AddLog("古堡馈赠"); + // break; + case "StageCombatDpsEnter": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("CombatDps")); + break; - case "StageEncounterEnter": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("Encounter")); - break; + case "StageEmergencyDps": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("EmergencyDps")); + break; - // case "StageBoonsEnter": - // Instances.TaskQueueViewModel.AddLog("古堡馈赠"); - // break; - case "StageCombatDpsEnter": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("CombatDps")); - break; + case "StageDreadfulFoe": + case "StageDreadfulFoe-5Enter": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("DreadfulFoe")); + break; - case "StageEmergencyDps": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("EmergencyDps")); - break; + case "StageTraderInvestSystemFull": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("UpperLimit"), UiLogColor.Info); + break; - case "StageDreadfulFoe": - case "StageDreadfulFoe-5Enter": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("DreadfulFoe")); - 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 "StageTraderInvestSystemFull": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("UpperLimit"), UiLogColor.Info); - break; + 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 "GamePass": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RoguelikeGamePass"), UiLogColor.RareOperator); + break; - break; + case "BattleStartAll": + Instances.CopilotViewModel.AddLog(LocalizationHelper.GetString("MissionStart"), UiLogColor.Info); + 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; + case "StageTraderSpecialShoppingAfterRefresh": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RoguelikeSpecialItemBought"), UiLogColor.RareOperator); + break; } + break; + } + case "CombatRecordRecognitionTask": + { + string what = details["what"]?.ToString(); + if (!string.IsNullOrEmpty(what)) { - string what = details["what"]?.ToString(); - if (!string.IsNullOrEmpty(what)) - { - Instances.CopilotViewModel.AddLog(what); - } - - break; + Instances.CopilotViewModel.AddLog(what); } + + break; + } } } @@ -975,28 +971,28 @@ namespace MaaWpfGui.Main switch (what) { case "StageDrops": + { + string allDrops = string.Empty; + JArray statistics = (JArray)subTaskDetails["stats"] ?? new JArray(); + foreach (var item in statistics) { - string allDrops = string.Empty; - JArray statistics = (JArray)subTaskDetails["stats"] ?? new JArray(); - foreach (var item in statistics) + string itemName = item["itemName"]?.ToString(); + int totalQuantity = (int)item["quantity"]; + int addQuantity = (int)item["addQuantity"]; + allDrops += $"{itemName} : {totalQuantity:#,#}"; + if (addQuantity > 0) { - string itemName = item["itemName"]?.ToString(); - int totalQuantity = (int)item["quantity"]; - int addQuantity = (int)item["addQuantity"]; - allDrops += $"{itemName} : {totalQuantity:#,#}"; - if (addQuantity > 0) - { - allDrops += $" (+{addQuantity:#,#})"; - } - - allDrops += "\n"; + allDrops += $" (+{addQuantity:#,#})"; } - allDrops = allDrops.EndsWith("\n") ? allDrops.TrimEnd('\n') : LocalizationHelper.GetString("NoDrop"); - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("TotalDrop") + "\n" + allDrops); + allDrops += "\n"; } + allDrops = allDrops.EndsWith("\n") ? allDrops.TrimEnd('\n') : LocalizationHelper.GetString("NoDrop"); + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("TotalDrop") + "\n" + allDrops); + break; + } case "EnterFacility": Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ThisFacility") + subTaskDetails["facility"] + " " + (int)subTaskDetails["index"]); @@ -1015,123 +1011,117 @@ namespace MaaWpfGui.Main break; case "RecruitTagsDetected": - { - JArray tags = (JArray)subTaskDetails["tags"] ?? new JArray(); - string logContent = tags.Select(tagName => tagName.ToString()) - .Aggregate(string.Empty, (current, tagStr) => current + (tagStr + "\n")); + { + JArray tags = (JArray)subTaskDetails["tags"] ?? new JArray(); + string logContent = tags.Select(tagName => tagName.ToString()) + .Aggregate(string.Empty, (current, tagStr) => current + (tagStr + "\n")); - logContent = logContent.EndsWith("\n") ? logContent.TrimEnd('\n') : LocalizationHelper.GetString("Error"); - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RecruitingResults") + "\n" + logContent); - } + logContent = logContent.EndsWith("\n") ? logContent.TrimEnd('\n') : LocalizationHelper.GetString("Error"); + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RecruitingResults") + "\n" + logContent); break; + } case "RecruitSpecialTag": + { + string special = subTaskDetails["tag"]?.ToString(); + if (special == "支援机械" && Instances.SettingsViewModel.NotChooseLevel1 == false) { - string special = subTaskDetails["tag"]?.ToString(); - if (special == "支援机械" && Instances.SettingsViewModel.NotChooseLevel1 == false) - { - break; - } - - using var toast = new ToastNotification(LocalizationHelper.GetString("RecruitingTips")); - toast.AppendContentText(special).ShowRecruit(); + break; } + using var toast = new ToastNotification(LocalizationHelper.GetString("RecruitingTips")); + toast.AppendContentText(special).ShowRecruit(); + break; + } case "RecruitRobotTag": - { - string special = subTaskDetails["tag"]?.ToString(); - using var toast = new ToastNotification(LocalizationHelper.GetString("RecruitingTips")); - toast.AppendContentText(special).ShowRecruitRobot(); - } + { + string special = subTaskDetails["tag"]?.ToString(); + using var toast = new ToastNotification(LocalizationHelper.GetString("RecruitingTips")); + toast.AppendContentText(special).ShowRecruitRobot(); break; + } case "RecruitResult": + { + int level = (int)subTaskDetails["level"]; + if (level >= 5) { - int level = (int)subTaskDetails["level"]; - if (level >= 5) + using (var toast = new ToastNotification(string.Format(LocalizationHelper.GetString("RecruitmentOfStar"), level))) { - using (var toast = new ToastNotification(string.Format(LocalizationHelper.GetString("RecruitmentOfStar"), level))) - { - toast.AppendContentText(new string('★', level)).ShowRecruit(row: 2); - } - - Instances.TaskQueueViewModel.AddLog(level + " ★ Tags", UiLogColor.RareOperator, "Bold"); - } - else - { - Instances.TaskQueueViewModel.AddLog(level + " ★ Tags", UiLogColor.Info); + toast.AppendContentText(new string('★', level)).ShowRecruit(row: 2); } - /* - bool robot = (bool)subTaskDetails["robot"]; - if (robot) - { - using (var toast = new ToastNotification(Localization.GetString("RecruitmentOfBot"))) - { - toast.AppendContentText(new string('★', 1)).ShowRecruitRobot(row: 2); - } - - Instances.TaskQueueViewModel.AddLog(1 + " ★ Tag", LogColor.RobotOperator, "Bold"); - } - */ + Instances.TaskQueueViewModel.AddLog(level + " ★ Tags", UiLogColor.RareOperator, "Bold"); + } + else + { + Instances.TaskQueueViewModel.AddLog(level + " ★ Tags", UiLogColor.Info); } + /* + bool robot = (bool)subTaskDetails["robot"]; + if (robot) + { + using (var toast = new ToastNotification(Localization.GetString("RecruitmentOfBot"))) + { + toast.AppendContentText(new string('★', 1)).ShowRecruitRobot(row: 2); + } + + Instances.TaskQueueViewModel.AddLog(1 + " ★ Tag", LogColor.RobotOperator, "Bold"); + } + */ + break; + } case "RecruitTagsSelected": - { - JArray selected = (JArray)subTaskDetails["tags"] ?? new JArray(); - string selectedLog = selected.Aggregate(string.Empty, (current, tag) => current + (tag + "\n")); + { + JArray selected = (JArray)subTaskDetails["tags"] ?? new JArray(); + string selectedLog = selected.Aggregate(string.Empty, (current, tag) => current + (tag + "\n")); - selectedLog = selectedLog.EndsWith("\n") ? selectedLog.TrimEnd('\n') : LocalizationHelper.GetString("NoDrop"); + selectedLog = selectedLog.EndsWith("\n") ? selectedLog.TrimEnd('\n') : LocalizationHelper.GetString("NoDrop"); - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("Choose") + " Tags:\n" + selectedLog); - } + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("Choose") + " Tags:\n" + selectedLog); break; + } case "RecruitTagsRefreshed": - { - int refreshCount = (int)subTaskDetails["count"]; - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("Refreshed") + refreshCount + LocalizationHelper.GetString("UnitTime")); - break; - } + { + int refreshCount = (int)subTaskDetails["count"]; + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("Refreshed") + refreshCount + LocalizationHelper.GetString("UnitTime")); + break; + } case "RecruitNoPermit": - { - bool continueRefresh = (bool)subTaskDetails["continue"]; - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString(continueRefresh ? "ContinueRefresh" : "NoRecruitmentPermit")); - break; - } + { + bool continueRefresh = (bool)subTaskDetails["continue"]; + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString(continueRefresh ? "ContinueRefresh" : "NoRecruitmentPermit")); + break; + } case "NotEnoughStaff": - { - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("NotEnoughStaff"), UiLogColor.Error); - } - + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("NotEnoughStaff"), UiLogColor.Error); break; /* Roguelike */ case "StageInfo": + { + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("StartCombat") + subTaskDetails["name"]); + if (Instances.SettingsViewModel.RoguelikeDelayAbortUntilCombatComplete) { - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("StartCombat") + subTaskDetails["name"]); - if (Instances.SettingsViewModel.RoguelikeDelayAbortUntilCombatComplete) - { - Instances.TaskQueueViewModel.RoguelikeInCombatAndShowWait = true; - } + Instances.TaskQueueViewModel.RoguelikeInCombatAndShowWait = true; } break; + } case "StageInfoError": - { - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("StageInfoError"), UiLogColor.Error); - } - + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("StageInfoError"), UiLogColor.Error); break; case "RoguelikeCombatEnd": @@ -1139,13 +1129,17 @@ namespace MaaWpfGui.Main Instances.TaskQueueViewModel.RoguelikeInCombatAndShowWait = false; break; + case "RoguelikeEvent": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RoguelikeEvent") + $" {subTaskDetails["name"]}"); + break; + case "PenguinId": - { - string id = subTaskDetails["id"]?.ToString(); - Instances.SettingsViewModel.PenguinId = id; - } + { + string id = subTaskDetails["id"]?.ToString(); + Instances.SettingsViewModel.PenguinId = id; break; + } case "BattleFormation": Instances.CopilotViewModel.AddLog(LocalizationHelper.GetString("BattleFormation") + "\n" + JsonConvert.SerializeObject(subTaskDetails["formation"])); @@ -1156,21 +1150,21 @@ namespace MaaWpfGui.Main break; case "CopilotAction": + { + string doc = subTaskDetails["doc"]?.ToString(); + if (doc?.Length != 0) { - string doc = subTaskDetails["doc"]?.ToString(); - if (doc?.Length != 0) - { - string color = subTaskDetails["doc_color"]?.ToString(); - Instances.CopilotViewModel.AddLog(doc, color?.Length == 0 ? UiLogColor.Message : color); - } - - Instances.CopilotViewModel.AddLog( - string.Format(LocalizationHelper.GetString("CurrentSteps"), - subTaskDetails["action"], - subTaskDetails["target"])); + string color = subTaskDetails["doc_color"]?.ToString(); + Instances.CopilotViewModel.AddLog(doc, color?.Length == 0 ? UiLogColor.Message : color); } + Instances.CopilotViewModel.AddLog( + string.Format(LocalizationHelper.GetString("CurrentSteps"), + subTaskDetails["action"], + subTaskDetails["target"])); + break; + } case "CopilotListLoadTaskFileSuccess": Instances.CopilotViewModel.AddLog($"Parse {subTaskDetails["file_name"]}[{subTaskDetails["stage_name"]}] Success"); @@ -1181,24 +1175,15 @@ namespace MaaWpfGui.Main break; case "SSSStage": - { - Instances.CopilotViewModel.AddLog("CurrentStage: " + subTaskDetails["stage"], UiLogColor.Info); - } - + Instances.CopilotViewModel.AddLog("CurrentStage: " + subTaskDetails["stage"], UiLogColor.Info); break; case "SSSSettlement": - { - Instances.CopilotViewModel.AddLog(details["why"].ToString(), UiLogColor.Info); - } - + Instances.CopilotViewModel.AddLog(details["why"].ToString(), UiLogColor.Info); break; case "SSSGamePass": - { - Instances.CopilotViewModel.AddLog(LocalizationHelper.GetString("SSSGamePass"), UiLogColor.RareOperator); - } - + Instances.CopilotViewModel.AddLog(LocalizationHelper.GetString("SSSGamePass"), UiLogColor.RareOperator); break; case "UnsupportedLevel": diff --git a/src/MaaWpfGui/Res/Localizations/en-us.xaml b/src/MaaWpfGui/Res/Localizations/en-us.xaml index d8488bbe0a..bb5405d419 100644 --- a/src/MaaWpfGui/Res/Localizations/en-us.xaml +++ b/src/MaaWpfGui/Res/Localizations/en-us.xaml @@ -590,10 +590,10 @@ The video aspect ratio needs to be 16:9 without interference factors such as bla Game cleared! congratulations! Node: Rogue Trader Node: Safe House - Node: Encounter Node: Combat Operation Node: Emergency Operation Node: Dreadful Foe + Roguelike event: Nothing Drops: Total Drops: diff --git a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml index f45f21bb13..702f6e16a7 100644 --- a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml +++ b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml @@ -590,10 +590,10 @@ Bilibili: ログイン インターフェイスに表示されるアカウント ゲームクリア、おめでとうございます! ステージ: 怪しい旅商人 ステージ: 安全な片隅 - ステージ: 思わぬ遭遇 ステージ: 作戦 ステージ: 緊急作戦 ステージ: 悪路凶敵 + ローグライクイベント: ドロップなし ドロップ: ドロップ統計: diff --git a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml index bb9509d9b7..a71c59f60f 100644 --- a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml +++ b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml @@ -590,10 +590,10 @@ Bilibili: 로그인 인터페이스에 표시되는 계정 이름(예: 장산) 보안 파견을 클리어했습니다! 레벨: 교활한 상인 레벨: 안전가옥 - 레벨: 우연한 만남 레벨: 작전 레벨: 긴급 작전 레벨: 험난한 길 + 로그라이크 이벤트: 없음 드롭: 드롭 통계: diff --git a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml index 1d2507a478..b1e6688ac9 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml @@ -590,10 +590,10 @@ 保全通关啦! 关卡: 诡意行商 关卡: 安全的角落 - 关卡: 不期而遇 关卡: 普通作战 关卡: 紧急作战 关卡: 险路恶敌 + 肉鸽事件: 本次掉落: 掉落统计: diff --git a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml index df345a4498..8958491044 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml @@ -590,10 +590,10 @@ 保全通關啦! 關卡: 詭意行商 關卡: 安全的角落 - 關卡: 不期而遇 關卡: 普通作戰 關卡: 緊急作戰 關卡: 險路惡敵 + 肉鴿事件: 本次掉落: 掉落統計: