feat: 悖论通关后自动取消勾选,遇到战斗失败的关卡时停止 (#13963)

* feat: 悖论通关后自动取消勾选

* fix: CopilotTask 一个个加
This commit is contained in:
uye
2025-09-04 00:44:40 +08:00
committed by GitHub
parent b23e63e352
commit 390cfc38a0
2 changed files with 25 additions and 42 deletions

View File

@@ -184,13 +184,15 @@ bool asst::CopilotTask::set_params(const json::value& params)
size_t loop_times = params.get("loop_times", 1);
if (m_multi_copilot_plugin_ptr->get_enable()) {
// 如果没三星就中止
if (m_paradox_task_ptr->get_enable()) {
// 悖论模拟不需要强制三星,因为练度等关系有概率不过,反正不消耗理智,走单独的退出逻辑
m_stop_task_ptr->set_tasks({ "ClickCornerUntilReturnButton" });
}
else {
m_stop_task_ptr->set_tasks({ "Copilot@ClickCornerUntilEndOfAction" });
}
// 悖论模拟不需要强制三星,因为练度等关系有概率不过,反正不消耗理智,走单独的退出逻辑
// EDIT: UI 上取消勾选需要按顺序,非三星通关会导致取消的内容错误
/* if (m_paradox_task_ptr->get_enable()) {
m_stop_task_ptr->set_tasks({ "ClickCornerUntilReturnButton" });
}
else {
m_stop_task_ptr->set_tasks({ "Copilot@ClickCornerUntilEndOfAction" });
}*/
m_stop_task_ptr->set_tasks({ "Copilot@ClickCornerUntilEndOfAction" });
m_stop_task_ptr->set_enable(true);
}
else if (loop_times > 1) {

View File

@@ -1270,43 +1270,24 @@ namespace MaaWpfGui.ViewModels.UI
{
_copilotIdList.Clear();
if (ActiveTabIndex == 2)
var t = CopilotItemViewModels.Where(i => i.IsChecked).Select(i =>
{
var t = CopilotItemViewModels.Where(i => i.IsChecked).Select(i =>
{
_copilotIdList.Add(i.CopilotId);
var task = new AsstCopilotTask()
{
MultiTasks = [new MultiTask { FileName = i.FilePath, IsRaid = i.IsRaid, StageName = i.Name, IsParadox = UseCopilotList }],
Formation = _form,
AddTrust = _addTrust,
IgnoreRequirements = _ignoreRequirements,
UserAdditionals = AddUserAdditional ? userAdditional.ToList() : [],
UseSanityPotion = _useSanityPotion,
};
return Instances.AsstProxy.AsstAppendTaskWithEncoding(AsstProxy.TaskType.Copilot, task);
});
ret = t.All(b => b) && Instances.AsstProxy.AsstStart();
}
else
_copilotIdList.Add(i.CopilotId);
return new MultiTask { FileName = i.FilePath, IsRaid = i.IsRaid, StageName = i.Name, IsParadox = ActiveTabIndex == 2, };
});
var task = new AsstCopilotTask()
{
var t = CopilotItemViewModels.Where(i => i.IsChecked).Select(i =>
{
_copilotIdList.Add(i.CopilotId);
return new MultiTask { FileName = i.FilePath, IsRaid = i.IsRaid, StageName = i.Name, };
});
var task = new AsstCopilotTask()
{
MultiTasks = t.ToList(),
Formation = _form,
AddTrust = _addTrust,
IgnoreRequirements = _ignoreRequirements,
UserAdditionals = AddUserAdditional ? userAdditional.ToList() : [],
UseSanityPotion = _useSanityPotion,
};
ret = Instances.AsstProxy.AsstAppendTaskWithEncoding(AsstProxy.TaskType.Copilot, task);
ret = ret && Instances.AsstProxy.AsstStart();
}
MultiTasks = [.. t],
Formation = _form,
AddTrust = _addTrust,
IgnoreRequirements = _ignoreRequirements,
UserAdditionals = AddUserAdditional ? userAdditional.ToList() : [],
UseSanityPotion = _useSanityPotion,
};
ret = Instances.AsstProxy.AsstAppendTaskWithEncoding(AsstProxy.TaskType.Copilot, task);
ret = ret && Instances.AsstProxy.AsstStart();
}
else
{