1
0
mirror of https://gitee.com/sui-feng-cb/AzurLaneAutoScript1 synced 2026-03-17 09:55:29 +08:00

Opt: use repair packs to repair ships

This commit is contained in:
sui-feng-cb
2025-08-12 19:22:52 +08:00
parent 63aadb2c07
commit 3a97c36930
29 changed files with 354 additions and 18 deletions

View File

@@ -22,7 +22,8 @@ from module.os.camera import OSCamera
from module.os.map_base import OSCampaignMap
from module.os_ash.ash import OSAsh
from module.os_combat.combat import Combat
from module.os_handler.assets import AUTO_SEARCH_REWARD, CLICK_SAFE_AREA, IN_MAP, PORT_ENTER
from module.os_handler.assets import (AUTO_SEARCH_REWARD, CLICK_SAFE_AREA, IN_MAP, PORT_ENTER,
STORAGE_REPAIR_ICON, TEMPLATE_STORAGE_SHIP_EMPTY)
from module.os_shop.assets import PORT_SUPPLY_CHECK
from module.ui.assets import BACK_ARROW
@@ -169,6 +170,9 @@ class OSFleet(OSCamera, Combat, Fleet, OSAsh):
return hp_grid
def _storage_hp_grid(self):
return ButtonGrid(origin=(185, 553), delta=(167, 0), button_shape=(99, 4), grid_shape=(6, 1))
def hp_retreat_triggered(self):
return False
@@ -196,6 +200,41 @@ class OSFleet(OSCamera, Combat, Fleet, OSAsh):
return self.hp
def _storage_hp_get(self):
super().hp_get()
if self.appear(STORAGE_REPAIR_ICON, offset=(20, 20)):
need_repair = [not repair for repair in self.hp_has_ship]
for index, repair in enumerate(need_repair):
if repair:
self._hp[self.fleet_current_index][index] = 0
ship_icon = self._hp_grid().crop((-29, -165, 106, -30))
has_ship = [not TEMPLATE_STORAGE_SHIP_EMPTY.match(
self.image_crop(button, copy=False)) for button in ship_icon.buttons]
for index, ship in enumerate(has_ship):
if ship:
self._hp_has_ship[self.fleet_current_index][index] = True
self.need_repair = [all(repair) for repair in zip(need_repair, has_ship)]
logger.attr('Repair icon', self.need_repair)
logger.attr('HP', ' '.join(
[str(int(data * 100)).rjust(3) + '%' if use else '____'
for data, use in zip(self.hp, self.hp_has_ship)]))
else:
logger.attr('Repair icon', self.need_repair)
def storage_hp_get(self):
"""
Calculate current HP in page STORAGE_CHECK, also detects the wrench (Ship died, need to repair)
"""
origin = self._hp_grid
self._hp_grid = self._storage_hp_grid
try:
self._storage_hp_get()
finally:
self._hp_grid = origin
return self.hp
def lv_get(self, after_battle=False):
pass
@@ -487,6 +526,18 @@ class OSFleet(OSCamera, Combat, Fleet, OSAsh):
else:
return False
def storage_fleet_set(self, index=1, skip_first_screenshot=True):
"""
Args:
index (int): Target fleet_current_index
skip_first_screenshot (bool):
Returns:
bool: If switched.
"""
logger.hr(f'Fleet set to {index}')
return self.storage_fleet_selector.ensure_to_be(index)
def parse_fleet_filter(self):
"""
Returns: