From 3203fe94451fdfbac5748e1eef05b5f74dbe1c58 Mon Sep 17 00:00:00 2001 From: Zebartin <16185081+Zebartin@users.noreply.github.com> Date: Mon, 2 Oct 2023 21:52:51 +0800 Subject: [PATCH 1/2] Fix: Search of assignment group buttons --- tasks/assignment/assets/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tasks/assignment/assets/__init__.py b/tasks/assignment/assets/__init__.py index 6626f5304..ee33bd543 100644 --- a/tasks/assignment/assets/__init__.py +++ b/tasks/assignment/assets/__init__.py @@ -3,7 +3,8 @@ from tasks.assignment.assets.assets_assignment_ui import ( CHARACTER_MATERIALS_CHECK, CHARACTER_MATERIALS_CLICK, EXP_MATERIALS_CREDITS_CHECK, EXP_MATERIALS_CREDITS_CLICK, GROUP_SEARCH, SPACE_STATION_TASK_FORCE_CHECK, SPACE_STATION_TASK_FORCE_CLICK, - SYNTHESIS_MATERIALS_CHECK, SYNTHESIS_MATERIALS_CLICK) + SYNTHESIS_MATERIALS_CHECK, SYNTHESIS_MATERIALS_CLICK +) for group_button_wrapper in ( SPACE_STATION_TASK_FORCE_CHECK, SPACE_STATION_TASK_FORCE_CLICK, @@ -12,7 +13,7 @@ for group_button_wrapper in ( SYNTHESIS_MATERIALS_CHECK, SYNTHESIS_MATERIALS_CLICK, ): for lang in VALID_LANG: - button = getattr(group_button_wrapper, lang, None) + button = group_button_wrapper.data_buttons.get(lang, None) if button is None: continue button.search = GROUP_SEARCH.button From 77fb8f9026ab0c60808a65d4cb9f4adb97244d25 Mon Sep 17 00:00:00 2001 From: Zebartin <16185081+Zebartin@users.noreply.github.com> Date: Tue, 3 Oct 2023 20:06:44 +0800 Subject: [PATCH 2/2] Fix: Check DungeonDouble before combat --- .../OCR_DOUBLE_EVENT_REMAIN_AT_COMBAT.png | Bin 0 -> 17315 bytes .../OCR_DOUBLE_EVENT_REMAIN_AT_COMBAT.png | Bin 0 -> 14055 bytes .../dungeon/event/OCR_DOUBLE_EVENT_REMAIN.png | Bin 15845 -> 13922 bytes tasks/dungeon/assets/assets_dungeon_event.py | 25 +++++++-- tasks/dungeon/dungeon.py | 24 ++++++++- tasks/dungeon/event.py | 48 +++++++++++++++--- tasks/rogue/assets/assets_rogue_reward.py | 2 +- 7 files changed, 86 insertions(+), 13 deletions(-) create mode 100644 assets/cn/dungeon/event/OCR_DOUBLE_EVENT_REMAIN_AT_COMBAT.png create mode 100644 assets/en/dungeon/event/OCR_DOUBLE_EVENT_REMAIN_AT_COMBAT.png diff --git a/assets/cn/dungeon/event/OCR_DOUBLE_EVENT_REMAIN_AT_COMBAT.png b/assets/cn/dungeon/event/OCR_DOUBLE_EVENT_REMAIN_AT_COMBAT.png new file mode 100644 index 0000000000000000000000000000000000000000..5bac5146600135e3e77fc7ae098f10503ac86bd7 GIT binary patch literal 17315 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 a-&iNBJ%jk!6|>fE9qnDt)SkZj&;J4Gt;Ib6 literal 0 HcmV?d00001 diff --git a/assets/en/dungeon/event/OCR_DOUBLE_EVENT_REMAIN_AT_COMBAT.png b/assets/en/dungeon/event/OCR_DOUBLE_EVENT_REMAIN_AT_COMBAT.png new file mode 100644 index 0000000000000000000000000000000000000000..22ddc015d22cb378bd0bc6544fd8f188213e9eac GIT binary patch literal 14055 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 literal 0 HcmV?d00001 diff --git a/assets/share/dungeon/event/OCR_DOUBLE_EVENT_REMAIN.png b/assets/share/dungeon/event/OCR_DOUBLE_EVENT_REMAIN.png index 33a1030eba214f92675c2f562f584f85164b6620..c540a448d6066ea2d3caf8c373855b4fedd07462 100644 GIT binary patch literal 13922 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 diff --git a/tasks/dungeon/assets/assets_dungeon_event.py b/tasks/dungeon/assets/assets_dungeon_event.py index 5f17dc470..90e6f030f 100644 --- a/tasks/dungeon/assets/assets_dungeon_event.py +++ b/tasks/dungeon/assets/assets_dungeon_event.py @@ -27,9 +27,26 @@ OCR_DOUBLE_EVENT_REMAIN = ButtonWrapper( name='OCR_DOUBLE_EVENT_REMAIN', share=Button( file='./assets/share/dungeon/event/OCR_DOUBLE_EVENT_REMAIN.png', - area=(437, 177, 1169, 208), - search=(417, 157, 1189, 228), - color=(234, 190, 103), - button=(437, 177, 1169, 208), + area=(523, 181, 1087, 203), + search=(503, 161, 1107, 223), + color=(200, 162, 88), + button=(523, 181, 1087, 203), + ), +) +OCR_DOUBLE_EVENT_REMAIN_AT_COMBAT = ButtonWrapper( + name='OCR_DOUBLE_EVENT_REMAIN_AT_COMBAT', + cn=Button( + file='./assets/cn/dungeon/event/OCR_DOUBLE_EVENT_REMAIN_AT_COMBAT.png', + area=(872, 515, 1192, 538), + search=(852, 495, 1212, 558), + color=(171, 139, 76), + button=(872, 515, 1192, 538), + ), + en=Button( + file='./assets/en/dungeon/event/OCR_DOUBLE_EVENT_REMAIN_AT_COMBAT.png', + area=(814, 510, 1246, 530), + search=(794, 490, 1266, 550), + color=(194, 158, 86), + button=(814, 510, 1246, 530), ), ) diff --git a/tasks/dungeon/dungeon.py b/tasks/dungeon/dungeon.py index ac972a96a..7941e3204 100644 --- a/tasks/dungeon/dungeon.py +++ b/tasks/dungeon/dungeon.py @@ -15,6 +15,7 @@ from tasks.battle_pass.keywords import KEYWORD_BATTLE_PASS_QUEST class Dungeon(DungeonUI, DungeonEvent, Combat): called_daily_support = False achieved_daily_quest = False + running_double = False daily_quests = [] def _dungeon_run(self, dungeon: DungeonList, team: int = None, wave_limit: int = 0, support_character: str = None, @@ -50,7 +51,24 @@ class Dungeon(DungeonUI, DungeonEvent, Combat): if self.handle_destructible_around_blaze(): self.dungeon_tab_goto(KEYWORDS_DUNGEON_TAB.Survival_Index) self.dungeon_goto(dungeon) - + # Check double event remain before combat + # Conservatively prefer the smaller result + if (dungeon.is_Calyx_Golden or dungeon.is_Calyx_Crimson) and \ + self.running_double and self.config.stored.DungeonDouble.calyx > 0: + calyx = self.get_double_event_remain_at_combat() + if calyx < self.config.stored.DungeonDouble.calyx: + self.config.stored.DungeonDouble.calyx = calyx + wave_limit = calyx + if calyx == 0: + return 0 + if dungeon.is_Cavern_of_Corrosion and self.running_double and \ + self.config.stored.DungeonDouble.relic > 0: + relic = self.get_double_event_remain_at_combat() + if relic < self.config.stored.DungeonDouble.relic: + self.config.stored.DungeonDouble.relic = relic + wave_limit = relic + if relic == 0: + return 0 # Combat count = self.combat(team=team, wave_limit=wave_limit, support_character=support_character) @@ -126,6 +144,7 @@ class Dungeon(DungeonUI, DungeonEvent, Combat): self.config.update_daily_quests() self.called_daily_support = False self.achieved_daily_quest = False + self.running_double = False self.daily_quests = self.config.stored.DailyQuest.load_quests() # Update double event records @@ -159,6 +178,7 @@ class Dungeon(DungeonUI, DungeonEvent, Combat): and self.config.stored.DungeonDouble.calyx > 0: logger.info('Run double calyx') dungeon = DungeonList.find(self.config.Dungeon_NameAtDoubleCalyx) + self.running_double = True if self.dungeon_run(dungeon=dungeon, wave_limit=self.config.stored.DungeonDouble.calyx): if dungeon.is_Calyx_Golden: ran_calyx_golden = True @@ -169,8 +189,10 @@ class Dungeon(DungeonUI, DungeonEvent, Combat): and self.config.stored.DungeonDouble.relic > 0: logger.info('Run double relic') dungeon = DungeonList.find(self.config.Dungeon_NameAtDoubleRelic) + self.running_double = True if self.dungeon_run(dungeon=dungeon, wave_limit=self.config.stored.DungeonDouble.relic): ran_cavern_of_corrosion = True + self.running_double = False # Dungeon to clear all trailblaze power final = DungeonList.find(self.config.Dungeon_Name) diff --git a/tasks/dungeon/event.py b/tasks/dungeon/event.py index b2ac550dd..2ef7d1514 100644 --- a/tasks/dungeon/event.py +++ b/tasks/dungeon/event.py @@ -6,14 +6,18 @@ from tasks.base.ui import UI from tasks.dungeon.assets.assets_dungeon_event import ( DOUBLE_CALYX_EVENT_TAG, DOUBLE_RELIC_EVENT_TAG, - OCR_DOUBLE_EVENT_REMAIN + OCR_DOUBLE_EVENT_REMAIN, + OCR_DOUBLE_EVENT_REMAIN_AT_COMBAT, ) class DoubleEventOcr(DigitCounter): def after_process(self, result): result = super().after_process(result) - # 9112 -> 9/12 + # re.sub as last resort, just in case + # x12 -> x/12 but x112 does not change + result = re.sub(r'(? x/12 result = re.sub(r'112$', '/12', result) return result @@ -39,15 +43,45 @@ class DungeonEvent(UI): logger.attr('Double relic', has) return has + def has_double_event_at_combat(self) -> bool: + """ + TODO: OCR_DOUBLE_EVENT_REMAIN_AT_COMBAT of relic may be different from that of calyx + Pages: + in: COMBAT_PREPARE + """ + has = self.image_color_count( + OCR_DOUBLE_EVENT_REMAIN_AT_COMBAT, + color=(252, 209, 123), + threshold=221, count=1000 + ) + logger.attr('Double event at combat', has) + return has + + def _get_double_event_remain(self, button) -> int: + ocr = DoubleEventOcr(button) + remain, _, total = ocr.ocr_single_line(self.device.image) + if total not in [3, 12]: + logger.warning(f'Invalid double event remain') + remain = 0 + return remain + def get_double_event_remain(self) -> int: """ Pages: in: page_guide, Survival_Index, selected at the nav with double event """ - ocr = DoubleEventOcr(OCR_DOUBLE_EVENT_REMAIN) - remain, _, total = ocr.ocr_single_line(self.device.image) - if total not in [3, 12]: - logger.warning(f'Invalid double event remain') - remain = 0 + remain = self._get_double_event_remain(OCR_DOUBLE_EVENT_REMAIN) logger.attr('Double event remain', remain) return remain + + def get_double_event_remain_at_combat(self) -> int: + """ + Pages: + in: COMBAT_PREPARE + """ + remain = 0 + if self.has_double_event_at_combat(): + remain = self._get_double_event_remain( + OCR_DOUBLE_EVENT_REMAIN_AT_COMBAT) + logger.attr('Double event remain at combat', remain) + return remain diff --git a/tasks/rogue/assets/assets_rogue_reward.py b/tasks/rogue/assets/assets_rogue_reward.py index 29aa8d2cf..77c5494af 100644 --- a/tasks/rogue/assets/assets_rogue_reward.py +++ b/tasks/rogue/assets/assets_rogue_reward.py @@ -10,6 +10,6 @@ ROGUE_REPORT = ButtonWrapper( area=(1198, 19, 1223, 42), search=(1178, 0, 1243, 62), color=(203, 165, 119), - button=(382, 645, 894, 700), + button=(1198, 19, 1223, 42), ), )