From cdce07cb08dceca7ccbdbb746c9b53c23c4d9039 Mon Sep 17 00:00:00 2001 From: status102 Date: Sat, 21 Oct 2023 15:35:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=B8=B4=E6=9C=9F?= =?UTF-8?q?=E7=90=86=E6=99=BA=E8=8D=AF=E6=97=A0=E6=B3=95=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MaaCore/Task/Fight/MedicineCounterPlugin.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/MaaCore/Task/Fight/MedicineCounterPlugin.cpp b/src/MaaCore/Task/Fight/MedicineCounterPlugin.cpp index 1ba668a75f..1d8ac835f1 100644 --- a/src/MaaCore/Task/Fight/MedicineCounterPlugin.cpp +++ b/src/MaaCore/Task/Fight/MedicineCounterPlugin.cpp @@ -43,8 +43,7 @@ bool asst::MedicineCounterPlugin::_run() auto refresh_medicine_count = [&]() { image = ctrler()->get_image(); auto count = initial_count(image); - if (!count || count->using_count + m_using_count > m_max_count) [[unlikely]] { - Log.error(__FUNCTION__, "use medicine over limit:", count ? count->using_count : -1); + if (!count) [[unlikely]] { return false; } initialCount = count; @@ -57,15 +56,17 @@ bool asst::MedicineCounterPlugin::_run() } } else if (m_using_count >= m_max_count && m_use_expiring) { + bool changed = false; for (auto& [use, inventory, rect, is_expiring] : initialCount->medicines | std::ranges::views::reverse) { - while (use > 0 && is_expiring == ExpiringStatus::Expiring) { + while (use > 0 && is_expiring != ExpiringStatus::Expiring) { ctrler()->click(rect); sleep(Config.get_options().task_delay); use--; + changed = true; } } - if (!refresh_medicine_count()) { + if (changed && !refresh_medicine_count()) { return false; } }