diff --git a/assets/share/base/page/FORGOTTEN_HALL_CHECK.png b/assets/share/base/page/FORGOTTEN_HALL_CHECK.png index 2569ef937..24ab2b779 100644 Binary files a/assets/share/base/page/FORGOTTEN_HALL_CHECK.png and b/assets/share/base/page/FORGOTTEN_HALL_CHECK.png differ diff --git a/assets/share/dungeon/ui/TREASURES_LIGHTWARD_CHECK.png b/assets/share/dungeon/ui/TREASURES_LIGHTWARD_CHECK.png new file mode 100644 index 000000000..7884c2ba4 Binary files /dev/null and b/assets/share/dungeon/ui/TREASURES_LIGHTWARD_CHECK.png differ diff --git a/assets/share/dungeon/ui/TREASURES_LIGHTWARD_CLICK.png b/assets/share/dungeon/ui/TREASURES_LIGHTWARD_CLICK.png new file mode 100644 index 000000000..d041a7196 Binary files /dev/null and b/assets/share/dungeon/ui/TREASURES_LIGHTWARD_CLICK.png differ diff --git a/assets/share/dungeon/ui/TREASURES_LIGHTWARD_LOADED.SEARCH.png b/assets/share/dungeon/ui/TREASURES_LIGHTWARD_LOADED.SEARCH.png new file mode 100644 index 000000000..818234f75 Binary files /dev/null and b/assets/share/dungeon/ui/TREASURES_LIGHTWARD_LOADED.SEARCH.png differ diff --git a/assets/share/dungeon/ui/TREASURES_LIGHTWARD_LOADED.png b/assets/share/dungeon/ui/TREASURES_LIGHTWARD_LOADED.png new file mode 100644 index 000000000..89f5d74fb Binary files /dev/null and b/assets/share/dungeon/ui/TREASURES_LIGHTWARD_LOADED.png differ diff --git a/assets/share/forgotten_hall/team/CHARACTER_1.BUTTON.png b/assets/share/forgotten_hall/team/CHARACTER_1.BUTTON.png index 14de6a2ff..8cb20f9d8 100644 Binary files a/assets/share/forgotten_hall/team/CHARACTER_1.BUTTON.png and b/assets/share/forgotten_hall/team/CHARACTER_1.BUTTON.png differ diff --git a/assets/share/forgotten_hall/team/CHARACTER_1.png b/assets/share/forgotten_hall/team/CHARACTER_1.png index 656fef4a9..0b1867c6d 100644 Binary files a/assets/share/forgotten_hall/team/CHARACTER_1.png and b/assets/share/forgotten_hall/team/CHARACTER_1.png differ diff --git a/assets/share/forgotten_hall/team/CHARACTER_2.BUTTON.png b/assets/share/forgotten_hall/team/CHARACTER_2.BUTTON.png index e4d9dcee7..98975a937 100644 Binary files a/assets/share/forgotten_hall/team/CHARACTER_2.BUTTON.png and b/assets/share/forgotten_hall/team/CHARACTER_2.BUTTON.png differ diff --git a/assets/share/forgotten_hall/team/CHARACTER_2.png b/assets/share/forgotten_hall/team/CHARACTER_2.png index 688cfac3d..2c7b1cf00 100644 Binary files a/assets/share/forgotten_hall/team/CHARACTER_2.png and b/assets/share/forgotten_hall/team/CHARACTER_2.png differ diff --git a/assets/share/forgotten_hall/team/CHARACTER_3.BUTTON.png b/assets/share/forgotten_hall/team/CHARACTER_3.BUTTON.png index 3bf841e3f..9eb8bff06 100644 Binary files a/assets/share/forgotten_hall/team/CHARACTER_3.BUTTON.png and b/assets/share/forgotten_hall/team/CHARACTER_3.BUTTON.png differ diff --git a/assets/share/forgotten_hall/team/CHARACTER_3.png b/assets/share/forgotten_hall/team/CHARACTER_3.png index 5c5834a9b..8a955057b 100644 Binary files a/assets/share/forgotten_hall/team/CHARACTER_3.png and b/assets/share/forgotten_hall/team/CHARACTER_3.png differ diff --git a/assets/share/forgotten_hall/team/CHARACTER_4.BUTTON.png b/assets/share/forgotten_hall/team/CHARACTER_4.BUTTON.png index 85dd13fb0..e372ba2f6 100644 Binary files a/assets/share/forgotten_hall/team/CHARACTER_4.BUTTON.png and b/assets/share/forgotten_hall/team/CHARACTER_4.BUTTON.png differ diff --git a/assets/share/forgotten_hall/team/CHARACTER_4.png b/assets/share/forgotten_hall/team/CHARACTER_4.png index a4708cbd0..ec0267b43 100644 Binary files a/assets/share/forgotten_hall/team/CHARACTER_4.png and b/assets/share/forgotten_hall/team/CHARACTER_4.png differ diff --git a/assets/share/forgotten_hall/ui/EFFECT_NOTIFICATION.png b/assets/share/forgotten_hall/ui/EFFECT_NOTIFICATION.png index f8e5f9793..e682e1b65 100644 Binary files a/assets/share/forgotten_hall/ui/EFFECT_NOTIFICATION.png and b/assets/share/forgotten_hall/ui/EFFECT_NOTIFICATION.png differ diff --git a/assets/share/forgotten_hall/ui/ENTER_FORGOTTEN_HALL_DUNGEON.png b/assets/share/forgotten_hall/ui/ENTER_FORGOTTEN_HALL_DUNGEON.png index ee5d385cf..7476c5054 100644 Binary files a/assets/share/forgotten_hall/ui/ENTER_FORGOTTEN_HALL_DUNGEON.png and b/assets/share/forgotten_hall/ui/ENTER_FORGOTTEN_HALL_DUNGEON.png differ diff --git a/assets/share/forgotten_hall/ui/ENTRANCE_CHECKED.png b/assets/share/forgotten_hall/ui/ENTRANCE_CHECKED.png index 80a67e697..f62760e02 100644 Binary files a/assets/share/forgotten_hall/ui/ENTRANCE_CHECKED.png and b/assets/share/forgotten_hall/ui/ENTRANCE_CHECKED.png differ diff --git a/assets/share/forgotten_hall/ui/LAST_VASTIGES_CHECK.2.png b/assets/share/forgotten_hall/ui/LAST_VASTIGES_CHECK.2.png new file mode 100644 index 000000000..31815e36b Binary files /dev/null and b/assets/share/forgotten_hall/ui/LAST_VASTIGES_CHECK.2.png differ diff --git a/assets/share/forgotten_hall/ui/LAST_VASTIGES_CLICK.2.png b/assets/share/forgotten_hall/ui/LAST_VASTIGES_CLICK.2.png new file mode 100644 index 000000000..2a37834dd Binary files /dev/null and b/assets/share/forgotten_hall/ui/LAST_VASTIGES_CLICK.2.png differ diff --git a/assets/share/forgotten_hall/ui/SEAT_1.png b/assets/share/forgotten_hall/ui/SEAT_1.png index 1fa4f98db..de4b0daca 100644 Binary files a/assets/share/forgotten_hall/ui/SEAT_1.png and b/assets/share/forgotten_hall/ui/SEAT_1.png differ diff --git a/assets/share/forgotten_hall/ui/SEAT_2.png b/assets/share/forgotten_hall/ui/SEAT_2.png index 27ff36d4a..fa02946fe 100644 Binary files a/assets/share/forgotten_hall/ui/SEAT_2.png and b/assets/share/forgotten_hall/ui/SEAT_2.png differ diff --git a/assets/share/forgotten_hall/ui/SEAT_3.png b/assets/share/forgotten_hall/ui/SEAT_3.png index 7ae643e16..ff9ff4002 100644 Binary files a/assets/share/forgotten_hall/ui/SEAT_3.png and b/assets/share/forgotten_hall/ui/SEAT_3.png differ diff --git a/assets/share/forgotten_hall/ui/SEAT_4.png b/assets/share/forgotten_hall/ui/SEAT_4.png index fcd496b8d..80f972ac9 100644 Binary files a/assets/share/forgotten_hall/ui/SEAT_4.png and b/assets/share/forgotten_hall/ui/SEAT_4.png differ diff --git a/dev_tools/keyword_extract.py b/dev_tools/keyword_extract.py index 7b0187485..8918314bf 100644 --- a/dev_tools/keyword_extract.py +++ b/dev_tools/keyword_extract.py @@ -610,9 +610,10 @@ class KeywordExtract: yield hash_ def generate(self): - self.load_keywords(['模拟宇宙', '拟造花萼(金)', '拟造花萼(赤)', '凝滞虚影', '侵蚀隧洞', '历战余响', '忘却之庭']) + self.load_keywords(['模拟宇宙', '拟造花萼(金)', '拟造花萼(赤)', '凝滞虚影', '侵蚀隧洞', '历战余响', + '忘却之庭', '虚构叙事']) self.write_keywords(keyword_class='DungeonNav', output_file='./tasks/dungeon/keywords/nav.py') - self.load_keywords(['行动摘要', '生存索引', '每日实训']) + self.load_keywords(['行动摘要', '生存索引', '每日实训', '逐光捡金', '战术训练']) self.write_keywords(keyword_class='DungeonTab', output_file='./tasks/dungeon/keywords/tab.py') self.load_keywords(['前往', '领取', '进行中', '已领取', '本日活跃度已满']) self.write_keywords(keyword_class='DailyQuestState', output_file='./tasks/daily/keywords/daily_quest_state.py') diff --git a/tasks/base/assets/assets_base_page.py b/tasks/base/assets/assets_base_page.py index 1f6c8b2b4..dfe395f08 100644 --- a/tasks/base/assets/assets_base_page.py +++ b/tasks/base/assets/assets_base_page.py @@ -77,10 +77,10 @@ FORGOTTEN_HALL_CHECK = ButtonWrapper( name='FORGOTTEN_HALL_CHECK', share=Button( file='./assets/share/base/page/FORGOTTEN_HALL_CHECK.png', - area=(44, 27, 71, 47), - search=(24, 7, 91, 67), - color=(91, 87, 90), - button=(44, 27, 71, 47), + area=(41, 21, 73, 53), + search=(21, 1, 93, 73), + color=(150, 136, 108), + button=(41, 21, 73, 53), ), ) GACHA_CHECK = ButtonWrapper( diff --git a/tasks/dungeon/assets/assets_dungeon_ui.py b/tasks/dungeon/assets/assets_dungeon_ui.py index 8d04b5748..b4f0b1d11 100644 --- a/tasks/dungeon/assets/assets_dungeon_ui.py +++ b/tasks/dungeon/assets/assets_dungeon_ui.py @@ -113,3 +113,33 @@ SURVIVAL_INDEX_LOADED = ButtonWrapper( button=(451, 286, 476, 302), ), ) +TREASURES_LIGHTWARD_CHECK = ButtonWrapper( + name='TREASURES_LIGHTWARD_CHECK', + share=Button( + file='./assets/share/dungeon/ui/TREASURES_LIGHTWARD_CHECK.png', + area=(437, 96, 459, 132), + search=(417, 76, 479, 152), + color=(120, 120, 120), + button=(437, 96, 459, 132), + ), +) +TREASURES_LIGHTWARD_CLICK = ButtonWrapper( + name='TREASURES_LIGHTWARD_CLICK', + share=Button( + file='./assets/share/dungeon/ui/TREASURES_LIGHTWARD_CLICK.png', + area=(438, 96, 459, 132), + search=(418, 76, 479, 152), + color=(108, 106, 106), + button=(438, 96, 459, 132), + ), +) +TREASURES_LIGHTWARD_LOADED = ButtonWrapper( + name='TREASURES_LIGHTWARD_LOADED', + share=Button( + file='./assets/share/dungeon/ui/TREASURES_LIGHTWARD_LOADED.png', + area=(1029, 288, 1047, 306), + search=(1024, 283, 1052, 311), + color=(149, 149, 152), + button=(1029, 288, 1047, 306), + ), +) diff --git a/tasks/dungeon/keywords/classes.py b/tasks/dungeon/keywords/classes.py index 6b0311ce2..6b6cf7f55 100644 --- a/tasks/dungeon/keywords/classes.py +++ b/tasks/dungeon/keywords/classes.py @@ -60,6 +60,15 @@ class DungeonList(Keyword): return True return False + @cached_property + def is_Pure_Fiction(self): + for word in [ + 'Pure_Fiction', + ]: + if word in self.name: + return True + return False + @cached_property def is_daily_dungeon(self): return self.is_Calyx_Golden or self.is_Calyx_Crimson or self.is_Stagnant_Shadow or self.is_Cavern_of_Corrosion @@ -85,6 +94,8 @@ class DungeonList(Keyword): return KEYWORDS_DUNGEON_NAV.Echo_of_War if self.is_Forgotten_Hall: return KEYWORDS_DUNGEON_NAV.Forgotten_Hall + if self.is_Pure_Fiction: + return KEYWORDS_DUNGEON_NAV.Pure_Fiction raise ScriptError(f'Cannot convert {self} to DungeonNav, please check keyword extractions') diff --git a/tasks/dungeon/keywords/nav.py b/tasks/dungeon/keywords/nav.py index c779e6c02..720d3cfbe 100644 --- a/tasks/dungeon/keywords/nav.py +++ b/tasks/dungeon/keywords/nav.py @@ -66,3 +66,12 @@ Forgotten_Hall = DungeonNav( jp='忘却の庭', es='Salón olvidado', ) +Pure_Fiction = DungeonNav( + id=8, + name='Pure_Fiction', + cn='虚构叙事', + cht='虛構敘事', + en='Pure Fiction', + jp='虚構叙事', + es='Pura ficción', +) diff --git a/tasks/dungeon/keywords/tab.py b/tasks/dungeon/keywords/tab.py index 85f372e63..6dbec3781 100644 --- a/tasks/dungeon/keywords/tab.py +++ b/tasks/dungeon/keywords/tab.py @@ -30,3 +30,21 @@ Daily_Training = DungeonTab( jp='デイリー訓練', es='Entrenamiento diario', ) +Treasures_Lightward = DungeonTab( + id=4, + name='Treasures_Lightward', + cn='逐光捡金', + cht='逐光撿金', + en='Treasures Lightward', + jp='光を追い、黄金を掴む', + es='En busca de fortuna', +) +Strategic_Training = DungeonTab( + id=5, + name='Strategic_Training', + cn='战术训练', + cht='戰術訓練', + en='Strategic Training', + jp='戦術訓練', + es='Entrenamiento estratégico', +) diff --git a/tasks/dungeon/ui.py b/tasks/dungeon/ui.py index 99e66757a..e9dac4eca 100644 --- a/tasks/dungeon/ui.py +++ b/tasks/dungeon/ui.py @@ -57,6 +57,11 @@ SWITCH_DUNGEON_TAB.add_state( check_button=SURVIVAL_INDEX_CHECK, click_button=SURVIVAL_INDEX_CLICK ) +SWITCH_DUNGEON_TAB.add_state( + KEYWORDS_DUNGEON_TAB.Treasures_Lightward, + check_button=TREASURES_LIGHTWARD_CHECK, + click_button=TREASURES_LIGHTWARD_CLICK +) class OcrDungeonNav(Ocr): @@ -145,7 +150,10 @@ class DungeonUI(DungeonState): self._dungeon_wait_daily_training_loaded() elif state == KEYWORDS_DUNGEON_TAB.Survival_Index: logger.info(f'Tab goto {state}, wait until loaded') - self._dungeon_wait_survival_loaded() + self._dungeon_wait_survival_index_loaded() + elif state == KEYWORDS_DUNGEON_TAB.Treasures_Lightward: + logger.info(f'Tab goto {state}, wait until loaded') + self._dungeon_wait_treasures_lightward_loaded() return True else: return False @@ -173,7 +181,7 @@ class DungeonUI(DungeonState): logger.info('Daily training loaded') return True - def _dungeon_wait_survival_loaded(self, skip_first_screenshot=True): + def _dungeon_wait_survival_index_loaded(self, skip_first_screenshot=True): """ Returns: bool: True if wait success, False if wait timeout. @@ -195,6 +203,28 @@ class DungeonUI(DungeonState): logger.info('Survival index loaded') return True + def _dungeon_wait_treasures_lightward_loaded(self, skip_first_screenshot=True): + """ + Returns: + bool: True if wait success, False if wait timeout. + + Pages: + in: page_guide, Survival_Index + """ + timeout = Timer(2, count=4).start() + while 1: + if skip_first_screenshot: + skip_first_screenshot = False + else: + self.device.screenshot() + + if timeout.reached(): + logger.warning('Wait treasures lightward loaded timeout') + return False + if self.appear(TREASURES_LIGHTWARD_LOADED): + logger.info('Treasures lightward loaded') + return True + def _dungeon_wait_until_echo_or_war_stabled(self, skip_first_screenshot=True): """ Returns: @@ -273,6 +303,10 @@ class DungeonUI(DungeonState): # Update points if possible if DUNGEON_NAV_LIST.is_row_selected(button, main=self): self.dungeon_update_simuni() + # Treasures lightward is always at top + elif DUNGEON_NAV_LIST.keyword2button(KEYWORDS_DUNGEON_NAV.Forgotten_Hall, show_warning=False) \ + or DUNGEON_NAV_LIST.keyword2button(KEYWORDS_DUNGEON_NAV.Pure_Fiction, show_warning=False): + logger.info('DUNGEON_NAV_LIST at top') else: # To start from any list states. logger.info('DUNGEON_NAV_LIST not at top') @@ -286,6 +320,8 @@ class DungeonUI(DungeonState): KEYWORDS_DUNGEON_NAV.Calyx_Crimson, KEYWORDS_DUNGEON_NAV.Stagnant_Shadow, KEYWORDS_DUNGEON_NAV.Cavern_of_Corrosion, + KEYWORDS_DUNGEON_NAV.Forgotten_Hall, + KEYWORDS_DUNGEON_NAV.Pure_Fiction, ]: button = DUNGEON_NAV_LIST.keyword2button(dungeon.dungeon_nav) if button: diff --git a/tasks/forgotten_hall/assets/assets_forgotten_hall_team.py b/tasks/forgotten_hall/assets/assets_forgotten_hall_team.py index 51800d0b3..828ef7236 100644 --- a/tasks/forgotten_hall/assets/assets_forgotten_hall_team.py +++ b/tasks/forgotten_hall/assets/assets_forgotten_hall_team.py @@ -7,39 +7,39 @@ CHARACTER_1 = ButtonWrapper( name='CHARACTER_1', share=Button( file='./assets/share/forgotten_hall/team/CHARACTER_1.png', - area=(44, 172, 140, 196), - search=(24, 152, 160, 216), - color=(211, 210, 213), - button=(44, 106, 140, 217), + area=(32, 190, 128, 214), + search=(12, 170, 148, 234), + color=(212, 212, 210), + button=(32, 124, 128, 236), ), ) CHARACTER_2 = ButtonWrapper( name='CHARACTER_2', share=Button( file='./assets/share/forgotten_hall/team/CHARACTER_2.png', - area=(150, 172, 246, 196), - search=(130, 152, 266, 216), - color=(212, 211, 210), - button=(150, 106, 246, 218), + area=(144, 190, 240, 214), + search=(124, 170, 260, 234), + color=(216, 213, 214), + button=(144, 124, 240, 236), ), ) CHARACTER_3 = ButtonWrapper( name='CHARACTER_3', share=Button( file='./assets/share/forgotten_hall/team/CHARACTER_3.png', - area=(256, 172, 352, 196), - search=(236, 152, 372, 216), - color=(214, 211, 212), - button=(256, 106, 352, 218), + area=(256, 190, 352, 214), + search=(236, 170, 372, 234), + color=(212, 211, 214), + button=(256, 124, 352, 236), ), ) CHARACTER_4 = ButtonWrapper( name='CHARACTER_4', share=Button( file='./assets/share/forgotten_hall/team/CHARACTER_4.png', - area=(44, 304, 140, 328), - search=(24, 284, 160, 348), - color=(212, 211, 213), - button=(44, 238, 140, 350), + area=(32, 322, 128, 346), + search=(12, 302, 148, 366), + color=(213, 212, 211), + button=(32, 256, 128, 368), ), ) diff --git a/tasks/forgotten_hall/assets/assets_forgotten_hall_ui.py b/tasks/forgotten_hall/assets/assets_forgotten_hall_ui.py index a1627f557..96a9343f4 100644 --- a/tasks/forgotten_hall/assets/assets_forgotten_hall_ui.py +++ b/tasks/forgotten_hall/assets/assets_forgotten_hall_ui.py @@ -17,51 +17,69 @@ EFFECT_NOTIFICATION = ButtonWrapper( name='EFFECT_NOTIFICATION', share=Button( file='./assets/share/forgotten_hall/ui/EFFECT_NOTIFICATION.png', - area=(237, 302, 315, 380), - search=(217, 282, 335, 400), - color=(128, 114, 85), - button=(237, 302, 315, 380), + area=(250, 330, 320, 388), + search=(230, 310, 340, 408), + color=(166, 147, 108), + button=(250, 330, 320, 388), ), ) ENTER_FORGOTTEN_HALL_DUNGEON = ButtonWrapper( name='ENTER_FORGOTTEN_HALL_DUNGEON', share=Button( file='./assets/share/forgotten_hall/ui/ENTER_FORGOTTEN_HALL_DUNGEON.png', - area=(989, 649, 1231, 684), - search=(969, 629, 1251, 704), - color=(214, 214, 217), - button=(989, 649, 1231, 684), + area=(953, 640, 1225, 676), + search=(933, 620, 1245, 696), + color=(217, 217, 219), + button=(953, 640, 1225, 676), ), ) ENTRANCE_CHECKED = ButtonWrapper( name='ENTRANCE_CHECKED', share=Button( file='./assets/share/forgotten_hall/ui/ENTRANCE_CHECKED.png', - area=(55, 632, 71, 650), - search=(35, 612, 91, 670), - color=(156, 156, 157), - button=(55, 632, 71, 650), + area=(44, 655, 60, 673), + search=(24, 635, 80, 693), + color=(156, 156, 158), + button=(44, 655, 60, 673), ), ) LAST_VASTIGES_CHECK = ButtonWrapper( name='LAST_VASTIGES_CHECK', - share=Button( - file='./assets/share/forgotten_hall/ui/LAST_VASTIGES_CHECK.png', - area=(25, 190, 96, 262), - search=(11, 73, 111, 461), - color=(94, 126, 162), - button=(25, 190, 96, 262), - ), + share=[ + Button( + file='./assets/share/forgotten_hall/ui/LAST_VASTIGES_CHECK.png', + area=(25, 190, 96, 262), + search=(11, 73, 111, 461), + color=(94, 126, 162), + button=(25, 190, 96, 262), + ), + Button( + file='./assets/share/forgotten_hall/ui/LAST_VASTIGES_CHECK.2.png', + area=(46, 274, 98, 348), + search=(11, 73, 111, 461), + color=(38, 53, 71), + button=(46, 274, 98, 348), + ), + ], ) LAST_VASTIGES_CLICK = ButtonWrapper( name='LAST_VASTIGES_CLICK', - share=Button( - file='./assets/share/forgotten_hall/ui/LAST_VASTIGES_CLICK.png', - area=(32, 196, 90, 254), - search=(11, 73, 111, 461), - color=(49, 64, 87), - button=(32, 196, 90, 254), - ), + share=[ + Button( + file='./assets/share/forgotten_hall/ui/LAST_VASTIGES_CLICK.png', + area=(32, 196, 90, 254), + search=(11, 73, 111, 461), + color=(49, 64, 87), + button=(32, 196, 90, 254), + ), + Button( + file='./assets/share/forgotten_hall/ui/LAST_VASTIGES_CLICK.2.png', + area=(51, 281, 90, 341), + search=(11, 73, 111, 461), + color=(22, 29, 39), + button=(51, 281, 90, 341), + ), + ], ) MEMORY_OF_CHAOS_CHECK = ButtonWrapper( name='MEMORY_OF_CHAOS_CHECK', @@ -97,40 +115,40 @@ SEAT_1 = ButtonWrapper( name='SEAT_1', share=Button( file='./assets/share/forgotten_hall/ui/SEAT_1.png', - area=(946, 518, 953, 533), - search=(926, 498, 973, 553), - color=(66, 68, 89), - button=(946, 518, 953, 533), + area=(957, 549, 966, 574), + search=(937, 529, 986, 594), + color=(77, 78, 87), + button=(957, 549, 966, 574), ), ) SEAT_2 = ButtonWrapper( name='SEAT_2', share=Button( file='./assets/share/forgotten_hall/ui/SEAT_2.png', - area=(1026, 518, 1033, 533), - search=(1006, 498, 1053, 553), - color=(68, 70, 92), - button=(1026, 518, 1033, 533), + area=(1034, 549, 1043, 574), + search=(1014, 529, 1063, 594), + color=(77, 77, 86), + button=(1034, 549, 1043, 574), ), ) SEAT_3 = ButtonWrapper( name='SEAT_3', share=Button( file='./assets/share/forgotten_hall/ui/SEAT_3.png', - area=(1106, 518, 1113, 532), - search=(1086, 498, 1133, 552), - color=(67, 69, 87), - button=(1106, 518, 1113, 532), + area=(1111, 549, 1120, 574), + search=(1091, 529, 1140, 594), + color=(76, 77, 85), + button=(1111, 549, 1120, 574), ), ) SEAT_4 = ButtonWrapper( name='SEAT_4', share=Button( file='./assets/share/forgotten_hall/ui/SEAT_4.png', - area=(1186, 518, 1193, 532), - search=(1166, 498, 1213, 552), - color=(67, 69, 86), - button=(1186, 518, 1193, 532), + area=(1188, 549, 1197, 574), + search=(1168, 529, 1217, 594), + color=(76, 77, 85), + button=(1188, 549, 1197, 574), ), ) TELEPORT = ButtonWrapper( diff --git a/tasks/forgotten_hall/ui.py b/tasks/forgotten_hall/ui.py index aa389111a..ee1382938 100644 --- a/tasks/forgotten_hall/ui.py +++ b/tasks/forgotten_hall/ui.py @@ -97,10 +97,11 @@ class DraggableStageList(DraggableList): return main.appear(ENTRANCE_CHECKED) def load_rows(self, main: ModuleBase): - if not main.appear(FORGOTTEN_HALL_CHECK): + if main.appear(MEMORY_OF_CHAOS_CHECK) or main.appear(LAST_VASTIGES_CHECK): + return super().load_rows(main=main) + else: logger.info('Not in forgotten hall, skip load_rows()') return - return super().load_rows(main=main) STAGE_LIST = DraggableStageList("ForgottenHallStageList", keyword_class=ForgottenHallStage, @@ -184,10 +185,11 @@ class ForgottenHallUI(DungeonUI, ForgottenHallTeam): if self.appear(FORGOTTEN_HALL_CHECK): logger.info('Already in forgotten hall') else: - self.dungeon_tab_goto(KEYWORDS_DUNGEON_TAB.Survival_Index) + self.dungeon_tab_goto(KEYWORDS_DUNGEON_TAB.Treasures_Lightward) self._dungeon_nav_goto(dungeon) self.stage_choose(dungeon) + logger.info(f'Stage list select: {stage_keyword}') STAGE_LIST.select_row(stage_keyword, main=self) def exit_dungeon(self, skip_first_screenshot=True):