diff --git a/assets/cn/meowfficer/MEOWFFICER_GOLD_CHECK.png b/assets/cn/meowfficer/MEOWFFICER_GOLD_CHECK.png index 8525715fe..7e55be976 100644 Binary files a/assets/cn/meowfficer/MEOWFFICER_GOLD_CHECK.png and b/assets/cn/meowfficer/MEOWFFICER_GOLD_CHECK.png differ diff --git a/module/meowfficer/assets.py b/module/meowfficer/assets.py index fb9b56fdc..98d0539b2 100644 --- a/module/meowfficer/assets.py +++ b/module/meowfficer/assets.py @@ -25,7 +25,7 @@ MEOWFFICER_FORT_GET_XP_1 = Button(area={'cn': (371, 198, 453, 278), 'en': (371, MEOWFFICER_FORT_GET_XP_2 = Button(area={'cn': (320, 314, 422, 412), 'en': (320, 314, 422, 412), 'jp': (302, 318, 414, 393), 'tw': (320, 314, 422, 412)}, color={'cn': (221, 189, 148), 'en': (221, 189, 148), 'jp': (227, 192, 151), 'tw': (221, 189, 148)}, button={'cn': (320, 314, 422, 412), 'en': (320, 314, 422, 412), 'jp': (302, 318, 414, 393), 'tw': (320, 314, 422, 412)}, file={'cn': './assets/cn/meowfficer/MEOWFFICER_FORT_GET_XP_2.png', 'en': './assets/en/meowfficer/MEOWFFICER_FORT_GET_XP_2.png', 'jp': './assets/jp/meowfficer/MEOWFFICER_FORT_GET_XP_2.png', 'tw': './assets/tw/meowfficer/MEOWFFICER_FORT_GET_XP_2.png'}) MEOWFFICER_FORT_RED_DOT = Button(area={'cn': (918, 647, 938, 668), 'en': (918, 647, 938, 668), 'jp': (918, 647, 938, 668), 'tw': (918, 647, 938, 668)}, color={'cn': (243, 132, 118), 'en': (243, 132, 118), 'jp': (243, 132, 118), 'tw': (243, 132, 118)}, button={'cn': (918, 647, 938, 668), 'en': (918, 647, 938, 668), 'jp': (918, 647, 938, 668), 'tw': (918, 647, 938, 668)}, file={'cn': './assets/cn/meowfficer/MEOWFFICER_FORT_RED_DOT.png', 'en': './assets/en/meowfficer/MEOWFFICER_FORT_RED_DOT.png', 'jp': './assets/jp/meowfficer/MEOWFFICER_FORT_RED_DOT.png', 'tw': './assets/tw/meowfficer/MEOWFFICER_FORT_RED_DOT.png'}) MEOWFFICER_GET_CHECK = Button(area={'cn': (36, 666, 82, 689), 'en': (47, 669, 85, 686), 'jp': (30, 667, 84, 681), 'tw': (797, 358, 827, 458)}, color={'cn': (204, 175, 130), 'en': (211, 181, 124), 'jp': (218, 188, 115), 'tw': (191, 122, 84)}, button={'cn': (36, 666, 82, 689), 'en': (47, 669, 85, 686), 'jp': (30, 667, 84, 681), 'tw': (797, 358, 827, 458)}, file={'cn': './assets/cn/meowfficer/MEOWFFICER_GET_CHECK.png', 'en': './assets/en/meowfficer/MEOWFFICER_GET_CHECK.png', 'jp': './assets/jp/meowfficer/MEOWFFICER_GET_CHECK.png', 'tw': './assets/tw/meowfficer/MEOWFFICER_GET_CHECK.png'}) -MEOWFFICER_GOLD_CHECK = Button(area={'cn': (1107, 242, 1150, 265), 'en': (1107, 242, 1150, 265), 'jp': (1104, 241, 1156, 266), 'tw': (1107, 242, 1150, 265)}, color={'cn': (249, 225, 169), 'en': (249, 225, 169), 'jp': (248, 227, 175), 'tw': (249, 225, 169)}, button={'cn': (1107, 242, 1150, 265), 'en': (1107, 242, 1150, 265), 'jp': (1104, 241, 1156, 266), 'tw': (1107, 242, 1150, 265)}, file={'cn': './assets/cn/meowfficer/MEOWFFICER_GOLD_CHECK.png', 'en': './assets/en/meowfficer/MEOWFFICER_GOLD_CHECK.png', 'jp': './assets/jp/meowfficer/MEOWFFICER_GOLD_CHECK.png', 'tw': './assets/tw/meowfficer/MEOWFFICER_GOLD_CHECK.png'}) +MEOWFFICER_GOLD_CHECK = Button(area={'cn': (1117, 242, 1160, 265), 'en': (1107, 242, 1150, 265), 'jp': (1104, 241, 1156, 266), 'tw': (1107, 242, 1150, 265)}, color={'cn': (250, 229, 170), 'en': (249, 225, 169), 'jp': (248, 227, 175), 'tw': (249, 225, 169)}, button={'cn': (1117, 242, 1160, 265), 'en': (1107, 242, 1150, 265), 'jp': (1104, 241, 1156, 266), 'tw': (1107, 242, 1150, 265)}, file={'cn': './assets/cn/meowfficer/MEOWFFICER_GOLD_CHECK.png', 'en': './assets/en/meowfficer/MEOWFFICER_GOLD_CHECK.png', 'jp': './assets/jp/meowfficer/MEOWFFICER_GOLD_CHECK.png', 'tw': './assets/tw/meowfficer/MEOWFFICER_GOLD_CHECK.png'}) MEOWFFICER_PURPLE_CHECK = Button(area={'cn': (1110, 240, 1148, 265), 'en': (1106, 245, 1153, 264), 'jp': (1112, 241, 1148, 266), 'tw': (1110, 240, 1148, 265)}, color={'cn': (223, 172, 245), 'en': (222, 179, 239), 'jp': (226, 185, 242), 'tw': (223, 172, 245)}, button={'cn': (1110, 240, 1148, 265), 'en': (1106, 245, 1153, 264), 'jp': (1112, 241, 1148, 266), 'tw': (1110, 240, 1148, 265)}, file={'cn': './assets/cn/meowfficer/MEOWFFICER_PURPLE_CHECK.png', 'en': './assets/en/meowfficer/MEOWFFICER_PURPLE_CHECK.png', 'jp': './assets/jp/meowfficer/MEOWFFICER_PURPLE_CHECK.png', 'tw': './assets/tw/meowfficer/MEOWFFICER_PURPLE_CHECK.png'}) MEOWFFICER_TALENT_CLOSE = Button(area={'cn': (858, 238, 908, 297), 'en': (858, 238, 908, 297), 'jp': (858, 238, 908, 297), 'tw': (858, 238, 908, 297)}, color={'cn': (232, 131, 111), 'en': (232, 131, 111), 'jp': (232, 131, 111), 'tw': (232, 131, 111)}, button={'cn': (858, 238, 908, 297), 'en': (858, 238, 908, 297), 'jp': (858, 238, 908, 297), 'tw': (858, 238, 908, 297)}, file={'cn': './assets/cn/meowfficer/MEOWFFICER_TALENT_CLOSE.png', 'en': './assets/en/meowfficer/MEOWFFICER_TALENT_CLOSE.png', 'jp': './assets/jp/meowfficer/MEOWFFICER_TALENT_CLOSE.png', 'tw': './assets/tw/meowfficer/MEOWFFICER_TALENT_CLOSE.png'}) MEOWFFICER_TRAIN_CLICK_SAFE_AREA = Button(area={'cn': (224, 184, 242, 347), 'en': (234, 191, 244, 523), 'jp': (224, 184, 242, 347), 'tw': (224, 184, 242, 347)}, color={'cn': (242, 237, 237), 'en': (243, 239, 239), 'jp': (242, 237, 237), 'tw': (242, 237, 237)}, button={'cn': (224, 184, 242, 347), 'en': (234, 191, 244, 523), 'jp': (224, 184, 242, 347), 'tw': (224, 184, 242, 347)}, file={'cn': './assets/cn/meowfficer/MEOWFFICER_TRAIN_CLICK_SAFE_AREA.png', 'en': './assets/en/meowfficer/MEOWFFICER_TRAIN_CLICK_SAFE_AREA.png', 'jp': './assets/jp/meowfficer/MEOWFFICER_TRAIN_CLICK_SAFE_AREA.png', 'tw': './assets/tw/meowfficer/MEOWFFICER_TRAIN_CLICK_SAFE_AREA.png'}) diff --git a/module/meowfficer/collect.py b/module/meowfficer/collect.py index 3e08dbfa5..22dbb5493 100644 --- a/module/meowfficer/collect.py +++ b/module/meowfficer/collect.py @@ -175,6 +175,39 @@ class MeowfficerCollect(MeowfficerBase): # Wait until info bar disappears self.ensure_no_info_bar(timeout=1) + def _meow_skip_popup_after_locking(self, skip_first_screenshot=True): + """ + Since 2023-11-16 update, even locked gold meow will still have popup. + If gold meow is locked and have popup, click MEOWFFICER_CONFIRM, + if gold meow is unlocked, this method should not be executed. + """ + while 1: + if skip_first_screenshot: + skip_first_screenshot = False + else: + self.device.screenshot() + + # Next meow MEOWFFICER_APPLY_LOCK load faster than MEOWFFICER_GET_CHECK, + # make sure exit with a full screenshot + if self.appear(MEOWFFICER_GET_CHECK, offset=(40, 40), interval=3): + if self.appear(MEOWFFICER_APPLY_LOCK, offset=(40, 40)): + break + + if self.appear(MEOWFFICER_APPLY_UNLOCK, offset=(40, 40), interval=3): + self.device.click(MEOWFFICER_TRAIN_CLICK_SAFE_AREA) + continue + if self.appear(MEOWFFICER_CONFIRM, offset=(40, 20), interval=3): + self.device.click(MEOWFFICER_CONFIRM) + continue + elif self.appear(MEOWFFICER_CANCEL, offset=(40, 20), interval=3): + self.device.click(MEOWFFICER_CONFIRM) + continue + + self.device.click_record.pop() + self.device.click_record.pop() + self.interval_reset((MEOWFFICER_GET_CHECK, MEOWFFICER_APPLY_LOCK, + MEOWFFICER_CONFIRM, MEOWFFICER_CANCEL)) + def meow_get(self, skip_first_screenshot=True): """ Transition through all the necessary screens @@ -204,6 +237,10 @@ class MeowfficerCollect(MeowfficerBase): confirm_timer.reset() continue if self.appear(MEOWFFICER_GET_CHECK, offset=(40, 40), interval=3): + if self.appear(MEOWFFICER_APPLY_UNLOCK, offset=(40, 40)): + self._meow_skip_popup_after_locking(skip_first_screenshot=True) + confirm_timer.reset() + count += 1 logger.attr('Meow_get', count) with self.stat.new(