mirror of
https://github.com/sui-feng-cb/AzurLaneAutoScript1.git
synced 2026-07-03 03:33:26 +08:00
Upd: GemsFarming
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
from datetime import datetime
|
||||
|
||||
from module.base.decorator import cached_property
|
||||
from module.base.timer import Timer
|
||||
from module.campaign.campaign_base import CampaignBase
|
||||
from module.campaign.run import CampaignRun
|
||||
from module.combat.assets import BATTLE_PREPARATION
|
||||
@@ -16,8 +19,9 @@ from module.retire.assets import (
|
||||
TEMPLATE_CASSIN_1, TEMPLATE_CASSIN_2, TEMPLATE_DOWNES_1, TEMPLATE_DOWNES_2,
|
||||
TEMPLATE_AULICK, TEMPLATE_FOOTE
|
||||
)
|
||||
from module.retire.dock import Dock
|
||||
# TEMPLATE_COMMON_CV and TEMPLATE_COMMON_DD are both used in function find_custom_candidates
|
||||
from module.retire.retirement import Retirement, TEMPLATE_COMMON_CV, TEMPLATE_COMMON_DD
|
||||
from module.retire.retirement import TEMPLATE_COMMON_CV, TEMPLATE_COMMON_DD
|
||||
from module.retire.scanner import ShipScanner
|
||||
from module.ui.assets import BACK_ARROW, FLEET_CHECK
|
||||
from module.ui.page import page_fleet
|
||||
@@ -47,7 +51,16 @@ class GemsEmotion(Emotion):
|
||||
raise CampaignEnd('Emotion control')
|
||||
|
||||
def wait(self, fleet_index):
|
||||
pass
|
||||
"""
|
||||
Override Emotion.wait to trigger stop condition when emotion is too low after battle.
|
||||
"""
|
||||
self.update()
|
||||
self.record()
|
||||
self.show()
|
||||
fleet = self.fleets[fleet_index - 1]
|
||||
recovered = fleet.get_recovered(expected_reduce=self.reduce_per_battle)
|
||||
if recovered > datetime.now():
|
||||
self.config.GEMS_EMOTION_TRIGGERED = True
|
||||
|
||||
|
||||
class GemsCampaignOverride(CampaignBase):
|
||||
@@ -95,47 +108,7 @@ class GemsCampaignOverride(CampaignBase):
|
||||
raise CampaignEnd('Emotion withdraw')
|
||||
|
||||
|
||||
class GemsEquipmentHandler(EquipmentCodeHandler):
|
||||
|
||||
def __init__(self, config, device=None, task=None):
|
||||
super().__init__(config=config,
|
||||
device=device,
|
||||
task=task,
|
||||
key="GemsFarming.GemsFarming.EquipmentCode",
|
||||
ships=['DD', 'bogue', 'hermes', 'langley', 'ranger'])
|
||||
|
||||
def current_ship(self, skip_first_screenshot=True):
|
||||
"""
|
||||
Reuse templates in module.retire.assets,
|
||||
which needs different rescaling to match each current flagship.
|
||||
|
||||
Pages:
|
||||
in: gear_code
|
||||
"""
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
skip_first_screenshot = False
|
||||
else:
|
||||
self.device.screenshot()
|
||||
|
||||
# End
|
||||
if not self.appear(EMPTY_SHIP_R):
|
||||
break
|
||||
else:
|
||||
logger.info('Waiting ship icon loading.')
|
||||
|
||||
if TEMPLATE_BOGUE.match(self.device.image, scaling=1.46): # image has rotation
|
||||
return 'bogue'
|
||||
if TEMPLATE_HERMES.match(self.device.image, scaling=124/89):
|
||||
return 'hermes'
|
||||
if TEMPLATE_RANGER.match(self.device.image, scaling=4/3):
|
||||
return 'ranger'
|
||||
if TEMPLATE_LANGLEY.match(self.device.image, scaling=25/21):
|
||||
return 'langley'
|
||||
return 'DD'
|
||||
|
||||
|
||||
class GemsFarming(CampaignRun, GemsEquipmentHandler, Retirement):
|
||||
class GemsFarming(CampaignRun, Dock):
|
||||
def hard_mode_override(self):
|
||||
if self.campaign.config.Campaign_Mode == 'hard':
|
||||
logger.info('Is in hard mode, switch ship changing method.')
|
||||
@@ -217,19 +190,25 @@ class GemsFarming(CampaignRun, GemsEquipmentHandler, Retirement):
|
||||
def _fleet_detail_enter_hard(self, fleet):
|
||||
if self.appear(FLEET_PREPARATION, offset=(20, 50)):
|
||||
return
|
||||
self.campaign.ensure_campaign_ui(self.stage)
|
||||
self.ui_click(click_button=self.campaign.ENTRANCE, appear_button=BACK_ARROW, check_button=MAP_PREPARATION)
|
||||
while 1:
|
||||
self.device.screenshot()
|
||||
|
||||
if self.appear_then_click(MAP_PREPARATION, interval=1):
|
||||
continue
|
||||
|
||||
if self.handle_retirement():
|
||||
continue
|
||||
|
||||
self.campaign.ensure_campaign_ui(self.stage, 'hard')
|
||||
self.campaign.ENTRANCE.area = self.campaign.ENTRANCE.button
|
||||
campaign_timer = Timer(5)
|
||||
map_timer = Timer(5)
|
||||
for _ in self.loop():
|
||||
if self.appear(FLEET_PREPARATION, offset=(20, 50)):
|
||||
break
|
||||
if map_timer.reached() \
|
||||
and self.campaign.handle_map_mode_switch('hard') \
|
||||
and self.campaign.handle_map_preparation():
|
||||
self.device.click(MAP_PREPARATION)
|
||||
map_timer.reset()
|
||||
campaign_timer.reset()
|
||||
# Retire
|
||||
if self.campaign.handle_retirement():
|
||||
continue
|
||||
if campaign_timer.reached() and self.appear_then_click(self.campaign.ENTRANCE):
|
||||
campaign_timer.reset()
|
||||
continue
|
||||
|
||||
def _ship_detail_enter_hard(self, button):
|
||||
self.ship_info_enter(button)
|
||||
@@ -254,7 +233,7 @@ class GemsFarming(CampaignRun, GemsEquipmentHandler, Retirement):
|
||||
if self.change_flagship_equip:
|
||||
logger.hr('Unmount flagship equipments', level=2)
|
||||
self._ship_detail_enter(self.fleet_detail_enter_flagship)
|
||||
self.clear_all_equip()
|
||||
self.ship_equipment_take_off()
|
||||
self._fleet_back()
|
||||
|
||||
logger.hr('Change flagship', level=2)
|
||||
@@ -263,7 +242,7 @@ class GemsFarming(CampaignRun, GemsEquipmentHandler, Retirement):
|
||||
if self.change_flagship_equip:
|
||||
logger.hr('Mount flagship equipments', level=2)
|
||||
self._ship_detail_enter(self.fleet_detail_enter_flagship)
|
||||
self.apply_equip_code()
|
||||
self.ship_equipment_take_on()
|
||||
self._fleet_back()
|
||||
|
||||
return success
|
||||
@@ -281,7 +260,7 @@ class GemsFarming(CampaignRun, GemsEquipmentHandler, Retirement):
|
||||
if self.change_vanguard_equip:
|
||||
logger.hr('Unmount vanguard equipments', level=2)
|
||||
self._ship_detail_enter(self.fleet_detail_enter)
|
||||
self.clear_all_equip()
|
||||
self.ship_equipment_take_off()
|
||||
self._fleet_back()
|
||||
|
||||
logger.hr('Change vanguard', level=2)
|
||||
@@ -290,19 +269,14 @@ class GemsFarming(CampaignRun, GemsEquipmentHandler, Retirement):
|
||||
if self.change_vanguard_equip:
|
||||
logger.hr('Mount vanguard equipments', level=2)
|
||||
self._ship_detail_enter(self.fleet_detail_enter)
|
||||
self.apply_equip_code()
|
||||
self.ship_equipment_take_on()
|
||||
self._fleet_back()
|
||||
|
||||
return success
|
||||
|
||||
def _dock_reset(self):
|
||||
self.dock_favourite_set(False, wait_loading=False)
|
||||
self.dock_sort_method_dsc_set(wait_loading=False)
|
||||
self.dock_filter_set()
|
||||
|
||||
def _ship_change_confirm(self, button):
|
||||
self.dock_select_one(button)
|
||||
self._dock_reset()
|
||||
self.dock_reset()
|
||||
self.dock_select_confirm(check_button=self.page_fleet_check_button)
|
||||
|
||||
def get_common_rarity_cv(self, lv=31, emotion=16):
|
||||
@@ -480,7 +454,7 @@ class GemsFarming(CampaignRun, GemsEquipmentHandler, Retirement):
|
||||
filter_string = self.config.__getattribute__(f'GemsFarming_Common{ship_type}Filter')
|
||||
sort_dsc_first = ship_type.lower() == 'dd'
|
||||
|
||||
common_ship = self.get_common_ship_filter(filter_string, ship_type=ship_type)
|
||||
common_ship = self.campaign.get_common_ship_filter(filter_string, ship_type=ship_type)
|
||||
templates = globals()[f'TEMPLATE_COMMON_{ship_type}']
|
||||
find_first = True
|
||||
common_ship_candidates = {}
|
||||
@@ -614,7 +588,7 @@ class GemsFarming(CampaignRun, GemsEquipmentHandler, Retirement):
|
||||
else:
|
||||
if self.hard_mode:
|
||||
raise RequestHumanTakeover
|
||||
self._dock_reset()
|
||||
self.dock_reset()
|
||||
self.ui_back(check_button=self.page_fleet_check_button)
|
||||
return False
|
||||
|
||||
@@ -659,7 +633,7 @@ class GemsFarming(CampaignRun, GemsEquipmentHandler, Retirement):
|
||||
else:
|
||||
if self.hard_mode:
|
||||
raise RequestHumanTakeover
|
||||
self._dock_reset()
|
||||
self.dock_reset()
|
||||
self.ui_back(check_button=self.page_fleet_check_button)
|
||||
return False
|
||||
|
||||
|
||||
Reference in New Issue
Block a user