From 96b6bdadf068e66eb22a4027efe5e53718a94daa Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Wed, 27 Sep 2023 03:14:12 +0800 Subject: [PATCH] Add: Task Echo of War --- .../cn/combat/finish/COMBAT_AGAIN.SEARCH.png | Bin 0 -> 11134 bytes .../combat/prepare/COMBAT_PREPARE.SEARCH.png | Bin 0 -> 12105 bytes .../en/combat/finish/COMBAT_AGAIN.SEARCH.png | Bin 0 -> 10389 bytes .../combat/prepare/COMBAT_PREPARE.SEARCH.png | Bin 0 -> 12105 bytes assets/share/dungeon/ui/OCR_WEEKLY_LIMIT.png | Bin 0 -> 8893 bytes src.py | 4 + tasks/combat/assets/assets_combat_finish.py | 4 +- tasks/combat/assets/assets_combat_prepare.py | 4 +- tasks/combat/combat.py | 7 +- tasks/combat/prepare.py | 9 +- tasks/dungeon/assets/assets_dungeon_ui.py | 10 ++ tasks/dungeon/dungeon.py | 17 +++- tasks/dungeon/ui.py | 3 +- tasks/dungeon/weekly.py | 88 ++++++++++++++++++ 14 files changed, 137 insertions(+), 9 deletions(-) create mode 100644 assets/cn/combat/finish/COMBAT_AGAIN.SEARCH.png create mode 100644 assets/cn/combat/prepare/COMBAT_PREPARE.SEARCH.png create mode 100644 assets/en/combat/finish/COMBAT_AGAIN.SEARCH.png create mode 100644 assets/en/combat/prepare/COMBAT_PREPARE.SEARCH.png create mode 100644 assets/share/dungeon/ui/OCR_WEEKLY_LIMIT.png create mode 100644 tasks/dungeon/weekly.py diff --git a/assets/cn/combat/finish/COMBAT_AGAIN.SEARCH.png b/assets/cn/combat/finish/COMBAT_AGAIN.SEARCH.png new file mode 100644 index 0000000000000000000000000000000000000000..fafad7ee32037070e79a88530c5aa9626bae4383 GIT binary patch literal 11134 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 literal 0 HcmV?d00001 diff --git a/assets/cn/combat/prepare/COMBAT_PREPARE.SEARCH.png b/assets/cn/combat/prepare/COMBAT_PREPARE.SEARCH.png new file mode 100644 index 0000000000000000000000000000000000000000..1052925e05d5548f822b18c8ef33b53ab60b43e2 GIT binary patch literal 12105 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 literal 0 HcmV?d00001 diff --git a/assets/en/combat/finish/COMBAT_AGAIN.SEARCH.png b/assets/en/combat/finish/COMBAT_AGAIN.SEARCH.png new file mode 100644 index 0000000000000000000000000000000000000000..2d8481f5dbc5ce41ccabf65b3b8913d8670b3912 GIT binary patch literal 10389 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 literal 0 HcmV?d00001 diff --git a/assets/share/dungeon/ui/OCR_WEEKLY_LIMIT.png b/assets/share/dungeon/ui/OCR_WEEKLY_LIMIT.png new file mode 100644 index 0000000000000000000000000000000000000000..bc7b8eaa0dc22a3e23b3d1905036aaded638acf3 GIT binary patch literal 8893 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 literal 0 HcmV?d00001 diff --git a/src.py b/src.py index 1a24eb2ce..66a302530 100644 --- a/src.py +++ b/src.py @@ -26,6 +26,10 @@ class StarRailCopilot(AzurLaneAutoScript): from tasks.dungeon.dungeon import Dungeon Dungeon(config=self.config, device=self.device).run() + def weekly(self): + from tasks.dungeon.weekly import WeeklyDungeon + WeeklyDungeon(config=self.config, device=self.device).run() + def daily_quest(self): from tasks.daily.daily_quest import DailyQuestUI DailyQuestUI(config=self.config, device=self.device).run() diff --git a/tasks/combat/assets/assets_combat_finish.py b/tasks/combat/assets/assets_combat_finish.py index 50b82ce70..bfa013fa7 100644 --- a/tasks/combat/assets/assets_combat_finish.py +++ b/tasks/combat/assets/assets_combat_finish.py @@ -8,14 +8,14 @@ COMBAT_AGAIN = ButtonWrapper( cn=Button( file='./assets/cn/combat/finish/COMBAT_AGAIN.png', area=(846, 601, 924, 619), - search=(826, 581, 944, 639), + search=(709, 592, 979, 628), color=(162, 162, 162), button=(709, 592, 979, 628), ), en=Button( file='./assets/en/combat/finish/COMBAT_AGAIN.png', area=(809, 602, 902, 618), - search=(789, 582, 922, 638), + search=(709, 591, 981, 628), color=(159, 159, 159), button=(709, 591, 981, 628), ), diff --git a/tasks/combat/assets/assets_combat_prepare.py b/tasks/combat/assets/assets_combat_prepare.py index 4a3ea6de2..0c6f74da2 100644 --- a/tasks/combat/assets/assets_combat_prepare.py +++ b/tasks/combat/assets/assets_combat_prepare.py @@ -8,14 +8,14 @@ COMBAT_PREPARE = ButtonWrapper( cn=Button( file='./assets/cn/combat/prepare/COMBAT_PREPARE.png', area=(1071, 649, 1110, 667), - search=(1051, 629, 1130, 687), + search=(836, 640, 1225, 677), color=(141, 140, 141), button=(956, 640, 1224, 676), ), en=Button( file='./assets/en/combat/prepare/COMBAT_PREPARE.png', area=(1043, 650, 1137, 666), - search=(1023, 630, 1157, 686), + search=(836, 640, 1225, 677), color=(153, 154, 155), button=(956, 640, 1225, 676), ), diff --git a/tasks/combat/combat.py b/tasks/combat/combat.py index c0e7933d8..767197701 100644 --- a/tasks/combat/combat.py +++ b/tasks/combat/combat.py @@ -118,6 +118,8 @@ class Combat(CombatInteract, CombatPrepare, CombatState, CombatTeam, CombatSuppo continue if self.handle_ascension_dungeon_prepare(): continue + if self.handle_popup_confirm(): + continue def combat_execute(self, expected_end=None): """ @@ -165,7 +167,7 @@ class Combat(CombatInteract, CombatPrepare, CombatState, CombatTeam, CombatSuppo Pages: in: COMBAT_AGAIN """ - current = self.combat_get_trailblaze_power(expect_reduce=True) + current = self.combat_get_trailblaze_power(expect_reduce=self.combat_wave_cost > 0) # Wave limit if self.combat_wave_limit: if self.combat_wave_done + self.combat_waves > self.combat_wave_limit: @@ -181,6 +183,9 @@ class Combat(CombatInteract, CombatPrepare, CombatState, CombatTeam, CombatSuppo else: logger.info(f'Current has {current}, combat costs {self.combat_wave_cost}, can not run again') return False + elif self.combat_wave_cost <= 0: + logger.info(f'Free combat, combat costs {self.combat_wave_cost}, can not run again') + return False else: if current >= self.combat_wave_cost: logger.info(f'Current has {current}, combat costs {self.combat_wave_cost}, can run again') diff --git a/tasks/combat/prepare.py b/tasks/combat/prepare.py index f22afb496..e2f7359df 100644 --- a/tasks/combat/prepare.py +++ b/tasks/combat/prepare.py @@ -2,6 +2,7 @@ import re import module.config.server as server from module.base.timer import Timer +from module.base.utils import color_similar, get_color from module.logger import logger from module.ocr.ocr import Digit, DigitCounter from tasks.base.ui import UI @@ -75,7 +76,7 @@ class CombatPrepare(UI): # Empty result if total == 0: continue - # Confirm if it is > 180, sometimes just OCR errors + # Confirm if it is > 240, sometimes just OCR errors if current > 240 and timeout.reached(): break if expect_reduce and current >= self.config.stored.TrailblazePower.value: @@ -106,6 +107,12 @@ class CombatPrepare(UI): else: self.device.screenshot() + color = get_color(self.device.image, OCR_WAVE_COST.area) + if color_similar(color, (229, 231, 223), threshold=30): + logger.info(f'Combat is trailblaze power free') + self.combat_wave_cost = 0 + return 0 + cost = Digit(OCR_WAVE_COST).ocr_single_line(self.device.image) if cost == 10: if multi: diff --git a/tasks/dungeon/assets/assets_dungeon_ui.py b/tasks/dungeon/assets/assets_dungeon_ui.py index 87c0c9e91..b296a7243 100644 --- a/tasks/dungeon/assets/assets_dungeon_ui.py +++ b/tasks/dungeon/assets/assets_dungeon_ui.py @@ -73,6 +73,16 @@ OCR_SIMUNI_POINT_OFFSET = ButtonWrapper( button=(685, 250, 717, 273), ), ) +OCR_WEEKLY_LIMIT = ButtonWrapper( + name='OCR_WEEKLY_LIMIT', + share=Button( + file='./assets/share/dungeon/ui/OCR_WEEKLY_LIMIT.png', + area=(580, 225, 680, 257), + search=(560, 205, 700, 277), + color=(132, 192, 247), + button=(580, 225, 680, 257), + ), +) OPERATION_BRIEFING_CHECK = ButtonWrapper( name='OPERATION_BRIEFING_CHECK', share=Button( diff --git a/tasks/dungeon/dungeon.py b/tasks/dungeon/dungeon.py index e06bb5b3e..f81d72c14 100644 --- a/tasks/dungeon/dungeon.py +++ b/tasks/dungeon/dungeon.py @@ -1,4 +1,8 @@ +from datetime import timedelta + from module.base.utils import area_offset +from module.config.stored.classes import now +from module.config.utils import DEFAULT_TIME from module.logger import logger from tasks.combat.combat import Combat from tasks.daily.keywords import KEYWORDS_DAILY_QUEST @@ -7,6 +11,7 @@ from tasks.dungeon.keywords import DungeonList, KEYWORDS_DUNGEON_LIST, KEYWORDS_ from tasks.dungeon.ui import DungeonUI from tasks.battle_pass.keywords import KEYWORD_BATTLE_PASS_QUEST + class Dungeon(DungeonUI, DungeonEvent, Combat): called_daily_support = False achieved_daily_quest = False @@ -210,6 +215,8 @@ class Dungeon(DungeonUI, DungeonEvent, Combat): def delay_dungeon_task(self, dungeon): if dungeon.is_Cavern_of_Corrosion: limit = 80 + elif dungeon.is_Echo_of_War: + limit = 30 else: limit = 60 # Recover 1 trailbaze power each 6 minutes @@ -226,8 +233,14 @@ class Dungeon(DungeonUI, DungeonEvent, Combat): # Check daily if self.achieved_daily_quest: self.config.task_call('DailyQuest') - # Delay self - self.config.task_delay(minute=cover) + # Delay tasks + future = now() + timedelta(minutes=cover) + for task in ['Dungeon', 'Weekly']: + next_run = self.config.cross_get(keys=f'{task}.Scheduler.NextRun', default=DEFAULT_TIME) + if future > next_run: + logger.info(f"Delay task `{task}` to {future}") + self.config.cross_set(keys=f'{task}.Scheduler.NextRun', value=future) + self.config.task_stop() def handle_destructible_around_blaze(self): diff --git a/tasks/dungeon/ui.py b/tasks/dungeon/ui.py index 21c4eb6a9..5b5029928 100644 --- a/tasks/dungeon/ui.py +++ b/tasks/dungeon/ui.py @@ -428,7 +428,8 @@ class DungeonUI(UI): if dungeon.is_Calyx_Golden \ or dungeon.is_Calyx_Crimson \ or dungeon.is_Stagnant_Shadow \ - or dungeon.is_Cavern_of_Corrosion: + or dungeon.is_Cavern_of_Corrosion \ + or dungeon.is_Echo_of_War: self._dungeon_nav_goto(dungeon) self._dungeon_insight(dungeon) self._dungeon_enter(dungeon) diff --git a/tasks/dungeon/weekly.py b/tasks/dungeon/weekly.py new file mode 100644 index 000000000..fb71b7dd3 --- /dev/null +++ b/tasks/dungeon/weekly.py @@ -0,0 +1,88 @@ +from module.logger import logger +from module.ocr.ocr import DigitCounter +from tasks.daily.keywords import KEYWORDS_DAILY_QUEST +from tasks.dungeon.assets.assets_dungeon_ui import OCR_DUNGEON_LIST, OCR_WEEKLY_LIMIT +from tasks.dungeon.dungeon import Dungeon +from tasks.dungeon.keywords import DungeonList, KEYWORDS_DUNGEON_TAB +from tasks.dungeon.ui import DUNGEON_LIST + + +class WeeklyDungeon(Dungeon): + def require_compulsory_support(self) -> bool: + return False + + def _dungeon_run(self, dungeon: DungeonList, team: int = None, wave_limit: int = 0, support_character: str = None, + skip_ui_switch: bool = False): + if team is None: + team = self.config.Weekly_Team + # No support + support_character = '' + skip_ui_switch = True + return super()._dungeon_run( + dungeon=dungeon, team=team, wave_limit=wave_limit, + support_character=support_character, skip_ui_switch=skip_ui_switch) + + def get_weekly_remain(self) -> int: + """ + Pages: + in: page_guide, Survival_Index, KEYWORDS_DUNGEON_NAV.Echo_of_War + """ + ocr = DigitCounter(OCR_WEEKLY_LIMIT) + current, _, _ = ocr.ocr_single_line(self.device.image) + total = self.config.stored.EchoOfWar.FIXED_TOTAL + remain = total - current + if current <= total: + logger.attr('EchoOfWar', f'{current}/{total}') + self.config.stored.EchoOfWar.value = current + return current + else: + logger.warning(f'Invalid EchoOfWar limit: {current}/{total}') + return 0 + + def run(self): + # self.config.update_battle_pass_quests() + self.config.update_daily_quests() + self.called_daily_support = False + self.achieved_daily_quest = False + self.daily_quests = self.config.stored.DailyQuest.load_quests() + + dungeon = DungeonList.find(self.config.Weekly_Name) + + # UI switches + self.dungeon_tab_goto(KEYWORDS_DUNGEON_TAB.Survival_Index) + # Equivalent to self.dungeon_goto(dungeon), but check limit remains + DUNGEON_LIST.search_button = OCR_DUNGEON_LIST + self._dungeon_nav_goto(dungeon) + + # Check limit + remain = self.get_weekly_remain() + if remain <= 0: + if KEYWORDS_DAILY_QUEST.Complete_Echo_of_War_1_times in self.daily_quests: + logger.info('Reached the limit to get Echo_of_War rewards, continue cause daily quests require it') + remain = 1 + else: + logger.info('Reached the limit to get Echo_of_War rewards, stop') + self.config.task_delay(server_update=True) + self.config.task_stop() + + self._dungeon_insight(dungeon) + self._dungeon_enter(dungeon) + + # Combat + count = self.dungeon_run(dungeon, wave_limit=min(remain, 3)) + + with self.config.multi_set(): + # Check daily quests + if count: + if KEYWORDS_DAILY_QUEST.Complete_Echo_of_War_1_times in self.daily_quests: + logger.info('Achieve daily quest Complete_Echo_of_War_1_times') + self.config.task_call('DailyQuest') + # Finished all remains + if count >= remain: + logger.info('All Echo_of_War rewards got') + self.config.task_delay(server_update=True) + self.config.task_stop() + + logger.warning(f'Unexpected Echo_of_War case, count={count}, remain={remain}') + self.config.task_delay(server_update=True) + self.config.task_stop()