diff --git a/resource/tasks/Roguelike/base.json b/resource/tasks/Roguelike/base.json index f0ae6a2230..3055b2525a 100644 --- a/resource/tasks/Roguelike/base.json +++ b/resource/tasks/Roguelike/base.json @@ -1231,14 +1231,14 @@ "Roguelike@StageEncounterJudgeClick": { "algorithm": "JustReturn", "action": "ClickRect", - "specificRect": [640, 360, 0, 0], + "specificRect": [640, 360, 1, 1], "preDelay": 150, "next": ["Roguelike@StageEncounterJudgeClick2"] }, "Roguelike@StageEncounterJudgeClick2": { "algorithm": "JustReturn", "action": "ClickRect", - "specificRect": [640, 360, 0, 0], + "specificRect": [640, 360, 1, 1], "preDelay": 150, "next": ["Roguelike@StageEncounterJudgeOption"] }, diff --git a/src/MaaCore/Task/Roguelike/RoguelikeStageEncounterTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/RoguelikeStageEncounterTaskPlugin.cpp index 63393b3f01..46a0284478 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeStageEncounterTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/RoguelikeStageEncounterTaskPlugin.cpp @@ -165,18 +165,25 @@ std::optional asst::RoguelikeStageEncounterTaskPlugin::handle_singl } if (hp_disappeared) { - if (!event.next_event.empty()) { - for (int i = 0; i < 3; ++i) { - ProcessTask(*this, { "Roguelike@StageEncounterJudgeClick" }).run(); - ProcessTask(*this, { "Roguelike@StageEncounterJudgeClick2" }).run(); - image = ctrler()->get_image(); - if (hp(image) >= 0) { - Log.debug("HP gone, going to next_event:", event.next_event); - return event.next_event; - } + if (event.next_event.empty()) { + return std::nullopt; + } + + const auto& task = Task.get("Roguelike@StageEncounterJudgeClick"); + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 2; ++j) { + ctrler()->click(task->specific_rect); + sleep(500); + } + image = ctrler()->get_image(); + if (hp(image) >= 0) { + Log.debug("HP restored, going to next_event:", event.next_event); + // 多点一次,确保选项恢复 + ctrler()->click(task->specific_rect); + sleep(500); + return event.next_event; } } - return std::nullopt; } // 兜底处理,从 option_num-option_num 点到 1-1