From 6d3acaaddb06df0a9a81043f2daff42f38fd04db Mon Sep 17 00:00:00 2001 From: dragonheart107 <153553566+dragonheart107@users.noreply.github.com> Date: Sat, 23 Aug 2025 16:26:48 +0200 Subject: [PATCH] Fix: Exercise item during battle (#5059) * Fix: event log * Fix: random artefacts during exercise mistaken as Items * Fix: small tweak --- module/campaign/campaign_event.py | 2 +- module/exercise/combat.py | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/module/campaign/campaign_event.py b/module/campaign/campaign_event.py index 3a538b763..d8815ac7a 100644 --- a/module/campaign/campaign_event.py +++ b/module/campaign/campaign_event.py @@ -83,7 +83,7 @@ class CampaignEvent(CampaignStatus): return False now = datetime.now().replace(microsecond=0) - logger.attr('Event_PT_limit', f'{now} -> {limit}') + logger.attr('Event_time_limit', f'{now} -> {limit}') if now > limit: logger.hr(f'Reach event time limit: {limit}') self._disable_tasks(tasks) diff --git a/module/exercise/combat.py b/module/exercise/combat.py index 989d0e306..2b46f07e6 100644 --- a/module/exercise/combat.py +++ b/module/exercise/combat.py @@ -49,17 +49,15 @@ class ExerciseCombat(HpDaemon, OpponentChoose, ExerciseEquipment, Combat): pause = None success = True end = False - + battle_status_detected = False # Track if in post battle screen while 1: self.device.screenshot() - # End if self._in_exercise() or self.appear(BATTLE_PREPARATION, offset=(20, 20)): logger.hr('Combat end') if not end: logger.warning('Combat ended without end conditions detected') break - p = self.is_combat_executing() if p: if end: @@ -72,13 +70,17 @@ class ExerciseCombat(HpDaemon, OpponentChoose, ExerciseEquipment, Combat): if self.appear_then_click(BATTLE_STATUS_S, interval=1): success = True end = True + battle_status_detected = True continue if self.appear_then_click(BATTLE_STATUS_D, interval=1): success = True end = True + battle_status_detected = True logger.info("Exercise LOST") continue - if self.appear_then_click(GET_ITEMS_1, interval=1): + + # Only handle GET_ITEMS_1 after battle status + if battle_status_detected and self.appear_then_click(GET_ITEMS_1, offset=(30, 30), interval=1): continue if self.appear(EXP_INFO_S, interval=1): self.device.click(CLICK_SAFE_AREA) @@ -92,7 +94,6 @@ class ExerciseCombat(HpDaemon, OpponentChoose, ExerciseEquipment, Combat): end = True logger.info("Exercise LOST") continue - # Quit if self.handle_combat_quit(): pause_interval.reset() @@ -114,7 +115,6 @@ class ExerciseCombat(HpDaemon, OpponentChoose, ExerciseEquipment, Combat): if show_hp_timer.reached(): show_hp_timer.reset() self._show_hp() - # bunch of popup handlers if self.handle_popup_confirm('EXERCISE_COMBAT_EXECUTE'): continue @@ -126,7 +126,6 @@ class ExerciseCombat(HpDaemon, OpponentChoose, ExerciseEquipment, Combat): continue if self.handle_mission_popup_ack(): continue - return success def _choose_opponent(self, index, skip_first_screenshot=True):