From 8c9a39b703c9c2fe84e316fc465130128599613b Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Tue, 31 Mar 2026 12:41:07 +0800 Subject: [PATCH 1/2] Fix: Add expected=boss if only one boss spawn point --- module/map/map.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/module/map/map.py b/module/map/map.py index c06e6d9a2..307fe59c1 100644 --- a/module/map/map.py +++ b/module/map/map.py @@ -377,12 +377,17 @@ class Map(Fleet): grids = self.map.select(may_boss=True, is_accessible=True).sort('weight', 'cost') logger.info('May boss: %s' % grids) battle_count = self.battle_count + is_single_boss = self.map.select(may_boss=True).count == 1 + if is_single_boss: + expected = 'boss' + else: + expected = '' for grid in grids: logger.hr('Clear potential BOSS') grids = grids.sort('weight', 'cost') logger.info('Grid: %s' % str(grid)) - self.fleet_boss.clear_chosen_enemy(grid) + self.fleet_boss.clear_chosen_enemy(grid, expected=expected) if self.battle_count > battle_count: logger.info('Boss guessing correct.') return True @@ -397,7 +402,7 @@ class Map(Fleet): roadblocks = self.brute_find_roadblocks(grid, fleet=self.fleet_boss_index) roadblocks = roadblocks.sort('weight', 'cost') logger.info('Grids: %s' % str(roadblocks)) - self.fleet_1.clear_chosen_enemy(roadblocks[0]) + self.fleet_1.clear_chosen_enemy(roadblocks[0], expected=expected) return True return False From 9ca4b263ad4ef6c4735fb78079da56f68387651f Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Tue, 31 Mar 2026 12:46:26 +0800 Subject: [PATCH 2/2] Fix: Reset no searching timeout if not in map --- module/handler/enemy_searching.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/module/handler/enemy_searching.py b/module/handler/enemy_searching.py index a821888ab..96adc3f31 100644 --- a/module/handler/enemy_searching.py +++ b/module/handler/enemy_searching.py @@ -121,6 +121,8 @@ class EnemySearchingHandler(InfoHandler): if self.handle_in_stage(): return True if self.handle_auto_search_exit(drop=drop): + timeout.limit = 10 + timeout.reset() continue # Popups @@ -148,6 +150,7 @@ class EnemySearchingHandler(InfoHandler): if appeared: self.handle_enemy_flashing() self.device.sleep(0.3) + self.device.screenshot() logger.info('Enemy searching appeared.') break self.enemy_searching_color_initial() @@ -155,7 +158,6 @@ class EnemySearchingHandler(InfoHandler): logger.info('Enemy searching timeout.') break - self.device.screenshot() return True def handle_in_map_no_enemy_searching(self, drop=None): @@ -173,15 +175,15 @@ class EnemySearchingHandler(InfoHandler): while 1: self.device.screenshot() - # End - if timeout.reached(): - break + if not self.is_in_map(): + timeout.reset() # Stage might ends, # although here expects an enemy searching animation. if self.handle_in_stage(): return True if self.handle_auto_search_exit(drop=drop): + timeout.reset() continue # Popups @@ -198,4 +200,9 @@ class EnemySearchingHandler(InfoHandler): timeout.reset() continue + # End + if timeout.reached(): + logger.info('No enemy searching in map.') + break + return True