mirror of
https://github.com/sui-feng-cb/AzurLaneAutoScript1.git
synced 2026-08-19 04:50:43 +08:00
Opt: restructure OS strategic search flow to reduce redundant operations
This commit is contained in:
@@ -169,8 +169,12 @@ class OpsiCrossMonth(OSMap):
|
||||
continue
|
||||
else:
|
||||
logger.hr(f'OS meowfficer farming, zone_id={zone.zone_id}', level=1)
|
||||
self.globe_goto(zone, types='SAFE', refresh=True)
|
||||
self.fleet_set(self.config.OpsiFleet_Fleet)
|
||||
logger.attr('is_zone_name_hidden', self.is_zone_name_hidden)
|
||||
if self.zone.zone_id != zone.zone_id or not self.is_zone_name_hidden:
|
||||
self.globe_goto(zone, types='SAFE', refresh=True)
|
||||
self.run_auto_search()
|
||||
self.handle_after_auto_search()
|
||||
self.run_strategic_search()
|
||||
self.handle_after_auto_search()
|
||||
else:
|
||||
|
||||
@@ -52,12 +52,15 @@ class OpsiHazard1Leveling(OSMap):
|
||||
else:
|
||||
zone = 22
|
||||
logger.hr(f'OS hazard 1 leveling, zone_id={zone}', level=1)
|
||||
self.fleet_set(self.config.OpsiFleet_Fleet)
|
||||
if self.zone.zone_id != zone or not self.is_zone_name_hidden:
|
||||
self.globe_goto(self.name_to_zone(zone), types='SAFE', refresh=True)
|
||||
self.fleet_set(self.config.OpsiFleet_Fleet)
|
||||
self.run_auto_search()
|
||||
self.handle_after_auto_search()
|
||||
self.run_strategic_search()
|
||||
self.get_current_zone()
|
||||
# is_zone_name_hidden is refreshed inside run_strategic_search
|
||||
if self.is_zone_name_hidden and not len(self._solved_map_event):
|
||||
self.run_auto_search()
|
||||
self.fleets_clear_question()
|
||||
self.handle_after_auto_search()
|
||||
self.config.check_task_switch()
|
||||
|
||||
@@ -6,6 +6,17 @@ from module.os.map import OSMap
|
||||
|
||||
|
||||
class OpsiMeowfficerFarming(OSMap):
|
||||
def check_ap(self, cost=0):
|
||||
# Check action points first to avoid using remaining AP when it not enough for tomorrow's daily
|
||||
# When not running CL1 and use oil
|
||||
keep_current_ap = True
|
||||
check_rest_ap = True
|
||||
if self.is_cl1_enabled and self.cl1_enough_yellow_coins:
|
||||
check_rest_ap = False
|
||||
if not self.is_cl1_enabled and self.config.OpsiGeneral_BuyActionPointLimit > 0:
|
||||
keep_current_ap = False
|
||||
self.action_point_set(cost=cost, keep_current_ap=keep_current_ap, check_rest_ap=check_rest_ap)
|
||||
|
||||
def os_meowfficer_farming(self):
|
||||
"""
|
||||
Recommend 3 or 5 for higher meowfficer searching point per action points ratio.
|
||||
@@ -48,17 +59,6 @@ class OpsiMeowfficerFarming(OSMap):
|
||||
logger.info('Ash beacon not fully collected, ignore action point limit temporarily')
|
||||
self.config.OS_ACTION_POINT_PRESERVE = 0
|
||||
logger.attr('OS_ACTION_POINT_PRESERVE', self.config.OS_ACTION_POINT_PRESERVE)
|
||||
if not ap_checked:
|
||||
# Check action points first to avoid using remaining AP when it not enough for tomorrow's daily
|
||||
# When not running CL1 and use oil
|
||||
keep_current_ap = True
|
||||
check_rest_ap = True
|
||||
if self.is_cl1_enabled and self.cl1_enough_yellow_coins:
|
||||
check_rest_ap = False
|
||||
if not self.is_cl1_enabled and self.config.OpsiGeneral_BuyActionPointLimit > 0:
|
||||
keep_current_ap = False
|
||||
self.action_point_set(cost=0, keep_current_ap=keep_current_ap, check_rest_ap=check_rest_ap)
|
||||
ap_checked = True
|
||||
|
||||
# (1252, 1012) is the coordinate of zone 134 (the center zone) in os_globe_map.png
|
||||
if self.config.OpsiMeowfficerFarming_TargetZone != 0:
|
||||
@@ -68,13 +68,28 @@ class OpsiMeowfficerFarming(OSMap):
|
||||
logger.warning(f'wrong zone_id input:{self.config.OpsiMeowfficerFarming_TargetZone}')
|
||||
raise RequestHumanTakeover('wrong input, task stopped')
|
||||
else:
|
||||
# Refill current AP every round to keep strategic search running
|
||||
self.check_ap(cost=100)
|
||||
logger.hr(f'OS meowfficer farming, zone_id={zone.zone_id}', level=1)
|
||||
self.globe_goto(zone, types='SAFE', refresh=True)
|
||||
self.fleet_set(self.config.OpsiFleet_Fleet)
|
||||
logger.attr('is_zone_name_hidden', self.is_zone_name_hidden)
|
||||
if self.zone.zone_id != zone.zone_id or not self.is_zone_name_hidden:
|
||||
self.globe_goto(zone, types='SAFE', refresh=True)
|
||||
self.run_auto_search()
|
||||
self.handle_after_auto_search()
|
||||
self.check_ap()
|
||||
self.run_strategic_search()
|
||||
# is_zone_name_hidden is refreshed inside run_strategic_search
|
||||
if self.is_zone_name_hidden and not len(self._solved_map_event):
|
||||
self.run_auto_search()
|
||||
self.fleets_clear_question()
|
||||
self.handle_after_auto_search()
|
||||
self.config.check_task_switch()
|
||||
else:
|
||||
if not ap_checked:
|
||||
# Check action points once at the start, without using AP boxes
|
||||
self.check_ap(cost=0)
|
||||
ap_checked = True
|
||||
zones = self.zone_select(hazard_level=self.config.OpsiMeowfficerFarming_HazardLevel) \
|
||||
.delete(SelectedGrids([self.zone])) \
|
||||
.delete(SelectedGrids(self.zones.select(is_port=True))) \
|
||||
|
||||
Reference in New Issue
Block a user