1
0
mirror of https://gitee.com/sui-feng-cb/AzurLaneAutoScript1 synced 2026-03-12 14:27:00 +08:00

Add: [CN] Assets for coalition_20240627

This commit is contained in:
LmeSzinc
2024-06-28 01:18:59 +08:00
parent 752d4ea043
commit a8f8432842
29 changed files with 244 additions and 82 deletions

View File

@@ -7,7 +7,20 @@ from module.exception import ScriptError, ScriptEnd
from module.logger import logger
from module.ocr.ocr import Digit
OCR_PT = Digit(FROSTFALL_OCR_PT, name='OCR_PT', letter=(198, 158, 82), threshold=128)
class AcademyPtOcr(Digit):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.alphabet += ':'
def after_process(self, result):
logger.attr(self.name, result)
try:
# 累计: 840
result = result.rsplit(':')[1]
except IndexError:
pass
return super().after_process(result)
class Coalition(CoalitionCombat, CampaignEvent):
@@ -19,10 +32,19 @@ class Coalition(CoalitionCombat, CampaignEvent):
Returns:
int: PT amount, or 0 if unable to parse
"""
pt = OCR_PT.ocr(self.device.image)
event = self.config.Campaign_Event
if event == 'coalition_20230323':
ocr = Digit(FROSTFALL_OCR_PT, name='OCR_PT', letter=(198, 158, 82), threshold=128)
elif event == 'coalition_20240627':
ocr = AcademyPtOcr(ACADEMY_PT_OCR, name='OCR_PT', letter=(255, 255, 255), threshold=128)
else:
logger.error(f'ocr object is not defined in event {event}')
raise ScriptError
pt = ocr.ocr(self.device.image)
return pt
def triggered_stop_condition(self):
def triggered_stop_condition(self, oil_check=True):
"""
Returns:
bool: If triggered a stop condition.
@@ -34,10 +56,11 @@ class Coalition(CoalitionCombat, CampaignEvent):
self.config.Scheduler_Enable = False
return True
# Oil limit
if self.get_oil() < max(500, self.config.StopCondition_OilLimit):
logger.hr('Triggered stop condition: Oil limit')
self.config.task_delay(minute=(120, 240))
return True
if oil_check:
if self.get_oil() < max(500, self.config.StopCondition_OilLimit):
logger.hr('Triggered stop condition: Oil limit')
self.config.task_delay(minute=(120, 240))
return True
# Event limit
if self.event_pt_limit_triggered():
logger.hr('Triggered stop condition: Event PT limit')
@@ -76,9 +99,11 @@ class Coalition(CoalitionCombat, CampaignEvent):
self.config.override(
Coalition_Fleet='multi',
)
self.emotion.check_reduce(battle=self.coalition_get_battles(stage))
self.emotion.check_reduce(battle=self.coalition_get_battles(event, stage))
self.enter_map(stage=stage, fleet=fleet)
self.enter_map(event=event, stage=stage, mode=fleet)
if self.triggered_stop_condition(oil_check=True):
raise ScriptEnd
self.coalition_combat()
@staticmethod
@@ -89,14 +114,14 @@ class Coalition(CoalitionCombat, CampaignEvent):
return event, stage
def run(self, name='', stage='', fleet='', total=0):
name = name if name else self.config.Campaign_Event
stage = stage if stage else self.config.Campaign_Name
def run(self, event='', stage='', fleet='', total=0):
event = event if event else self.config.Campaign_Event
stage = stage if stage else self.config.Coalition_Mode
fleet = fleet if fleet else self.config.Coalition_Fleet
if not name or not stage or not fleet:
raise ScriptError(f'RaidRun arguments unfilled. name={name}, stage={stage}, fleet={fleet}')
if not event or not stage or not fleet:
raise ScriptError(f'RaidRun arguments unfilled. name={event}, stage={stage}, fleet={fleet}')
name, stage = self.handle_stage_name(name, stage)
event, stage = self.handle_stage_name(event, stage)
self.run_count = 0
self.run_limit = self.config.StopCondition_RunCount
while 1:
@@ -107,7 +132,7 @@ class Coalition(CoalitionCombat, CampaignEvent):
self.config.task_stop()
# Log
logger.hr(f'{name}_{stage}', level=2)
logger.hr(f'{event}_{stage}', level=2)
if self.config.StopCondition_RunCount > 0:
logger.info(f'Count remain: {self.config.StopCondition_RunCount}')
else:
@@ -117,17 +142,17 @@ class Coalition(CoalitionCombat, CampaignEvent):
self.device.stuck_record_clear()
self.device.click_record_clear()
self.ui_goto_coalition()
self.coalition_ensure_mode('battle')
self.coalition_ensure_mode(event, 'battle')
# End
if self.triggered_stop_condition():
if self.triggered_stop_condition(oil_check=False):
break
# Run
self.device.stuck_record_clear()
self.device.click_record_clear()
try:
self.coalition_execute_once(event=name, stage=stage, fleet=fleet)
self.coalition_execute_once(event=event, stage=stage, fleet=fleet)
except ScriptEnd as e:
logger.hr('Script end')
logger.info(str(e))
@@ -138,7 +163,7 @@ class Coalition(CoalitionCombat, CampaignEvent):
if self.config.StopCondition_RunCount:
self.config.StopCondition_RunCount -= 1
# End
if self.triggered_stop_condition():
if self.triggered_stop_condition(oil_check=False):
break
# Scheduler
if self.config.task_switched():