diff --git a/assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_1_3.png b/assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_1_3.png new file mode 100644 index 000000000..29a02b152 Binary files /dev/null and b/assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_1_3.png differ diff --git a/assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_2_3.png b/assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_2_3.png new file mode 100644 index 000000000..646aafa30 Binary files /dev/null and b/assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_2_3.png differ diff --git a/assets/cn/map/FLEET_ENTER_HARD_1_3.png b/assets/cn/map/FLEET_ENTER_HARD_1_3.png new file mode 100644 index 000000000..ebcebeb38 Binary files /dev/null and b/assets/cn/map/FLEET_ENTER_HARD_1_3.png differ diff --git a/assets/cn/map/FLEET_ENTER_HARD_2_3.png b/assets/cn/map/FLEET_ENTER_HARD_2_3.png new file mode 100644 index 000000000..819fa9dcc Binary files /dev/null and b/assets/cn/map/FLEET_ENTER_HARD_2_3.png differ diff --git a/assets/cn/retire/DOCK_SHIP_DOWN.png b/assets/cn/retire/DOCK_SHIP_DOWN.png new file mode 100644 index 000000000..412a7c0f7 Binary files /dev/null and b/assets/cn/retire/DOCK_SHIP_DOWN.png differ diff --git a/module/campaign/gems_farming.py b/module/campaign/gems_farming.py index 4af7e9eed..9cd0775a6 100644 --- a/module/campaign/gems_farming.py +++ b/module/campaign/gems_farming.py @@ -7,9 +7,12 @@ from module.equipment.fleet_equipment import OCR_FLEET_INDEX from module.exception import CampaignEnd from module.handler.assets import AUTO_SEARCH_MAP_OPTION_OFF from module.logger import logger -from module.map.assets import FLEET_PREPARATION, MAP_PREPARATION, FLEET_ENTER_FLAGSHIP_HARD_1, \ - FLEET_ENTER_FLAGSHIP_HARD_2, FLEET_ENTER_HARD_1, FLEET_ENTER_HARD_2 -from module.retire.assets import DOCK_CHECK, TEMPLATE_BOGUE, TEMPLATE_HERMES, TEMPLATE_LANGLEY, TEMPLATE_RANGER +from module.map.assets import (FLEET_PREPARATION, MAP_PREPARATION, FLEET_ENTER_FLAGSHIP_HARD_1, + FLEET_ENTER_FLAGSHIP_HARD_2, FLEET_ENTER_HARD_1, FLEET_ENTER_HARD_2, + FLEET_ENTER_FLAGSHIP_HARD_1_3, FLEET_ENTER_FLAGSHIP_HARD_2_3, FLEET_ENTER_HARD_1_3, + FLEET_ENTER_HARD_2_3) +from module.retire.assets import (DOCK_CHECK, TEMPLATE_BOGUE, TEMPLATE_HERMES, TEMPLATE_LANGLEY, TEMPLATE_RANGER, + DOCK_SHIP_DOWN) from module.retire.dock import Dock from module.retire.scanner import ShipScanner from module.ui.page import page_fleet, page_event @@ -80,9 +83,13 @@ class GemsFarming(CampaignRun, Dock, EquipmentChange): if self.config.GemsFarming_FleetNumberInHardMode == 1: self.FLEET_ENTER_FLAGSHIP = FLEET_ENTER_FLAGSHIP_HARD_1 self.FLEET_ENTER = FLEET_ENTER_HARD_1 + self.FLEET_ENTER_FLAGSHIP_3_POSITION = FLEET_ENTER_FLAGSHIP_HARD_1_3 + self.FLEET_ENTER_3_POSITION = FLEET_ENTER_HARD_1_3 elif self.config.GemsFarming_FleetNumberInHardMode == 2: self.FLEET_ENTER_FLAGSHIP = FLEET_ENTER_FLAGSHIP_HARD_2 self.FLEET_ENTER = FLEET_ENTER_HARD_2 + self.FLEET_ENTER_FLAGSHIP_3_POSITION = FLEET_ENTER_FLAGSHIP_HARD_2_3 + self.FLEET_ENTER_3_POSITION = FLEET_ENTER_HARD_2_3 else: logger.critical('Fleet number to change not set, check your settings') from module.exception import RequestHumanTakeover @@ -93,6 +100,7 @@ class GemsFarming(CampaignRun, Dock, EquipmentChange): self._fleet_detail_enter = self._fleet_detail_enter self.page_fleet_check_button = page_fleet.check_button self.FLEET_ENTER_FLAGSHIP = FLEET_ENTER_FLAGSHIP + self._FLEET_ENTER_FLAGSHIP = self.FLEET_ENTER_FLAGSHIP self.FLEET_ENTER = FLEET_ENTER self.hard_mode = False @@ -144,7 +152,7 @@ class GemsFarming(CampaignRun, Dock, EquipmentChange): from module.retire.retirement import Retirement if Retirement(config=self.config, device=self.device).handle_retirement(): continue - if self.appear(button=FLEET_PREPARATION, offset=(50,50)): + if self.appear(button=FLEET_PREPARATION, offset=(50, 50)): return from module.exception import RequestHumanTakeover raise RequestHumanTakeover @@ -225,7 +233,7 @@ class GemsFarming(CampaignRun, Dock, EquipmentChange): self.dock_filter_set() self.dock_select_confirm(check_button=self.page_fleet_check_button) - def get_common_rarity_cv(self): + def get_common_rarity_cv(self, lv=31, emotion=16): """ Get a common rarity cv by config.GemsFarming_CommonCV If config.GemsFarming_CommonCV == 'any', return a common lv1 ~ lv33 cv @@ -236,7 +244,7 @@ class GemsFarming(CampaignRun, Dock, EquipmentChange): logger.hr('FINDING FLAGSHIP') scanner = ShipScanner( - level=(1, 31), emotion=(16, 150), fleet=self.config.Fleet_Fleet1, status='free') + level=(1, lv), emotion=(emotion, 150), fleet=self.config.Fleet_Fleet1, status='free') scanner.disable('rarity') if self.config.GemsFarming_CommonCV == 'any': @@ -314,6 +322,17 @@ class GemsFarming(CampaignRun, Dock, EquipmentChange): scanner.set_limitation(fleet=0) return scanner.scan(self.device.image, output=False) + def solve_hard_flagship_black(self): + if self.hard_mode: + self.ui_click(self.FLEET_ENTER_FLAGSHIP, + appear_button=self.page_fleet_check_button, check_button=DOCK_CHECK, + skip_first_screenshot=True) + self.ui_click(DOCK_SHIP_DOWN, + appear_button=DOCK_CHECK, check_button=self.page_fleet_check_button, + skip_first_screenshot=True) + self._FLEET_ENTER_FLAGSHIP = self.FLEET_ENTER_FLAGSHIP + self.FLEET_ENTER_FLAGSHIP = self.FLEET_ENTER_FLAGSHIP_3_POSITION + def flagship_change_execute(self): """ Returns: @@ -323,6 +342,7 @@ class GemsFarming(CampaignRun, Dock, EquipmentChange): in: page_fleet out: page_fleet """ + self.solve_hard_flagship_black() self.ui_click(self.FLEET_ENTER_FLAGSHIP, appear_button=self.page_fleet_check_button, check_button=DOCK_CHECK, skip_first_screenshot=True) self.dock_filter_set( @@ -332,13 +352,26 @@ class GemsFarming(CampaignRun, Dock, EquipmentChange): ship = self.get_common_rarity_cv() if ship: self._ship_change_confirm(min(ship, key=lambda s: (s.level, -s.emotion)).button) + if self.hard_mode: + self.FLEET_ENTER_FLAGSHIP = self._FLEET_ENTER_FLAGSHIP logger.info('Change flagship success') return True else: logger.info('Change flagship failed, no CV in common rarity.') - self.dock_filter_set() - self.ui_back(check_button=self.page_fleet_check_button) + + if self.config.SERVER in ['cn']: + max_level = 100 + else: + max_level = 70 + ship = self.get_common_rarity_cv(lv=max_level, emotion=0) + if ship and self.hard_mode: + self._ship_change_confirm(min(ship, key=lambda s: (s.level, -s.emotion)).button) + else: + self.dock_filter_set() + self.ui_back(check_button=self.page_fleet_check_button) + if self.hard_mode: + self.FLEET_ENTER_FLAGSHIP = self._FLEET_ENTER_FLAGSHIP return False def vanguard_change_execute(self): diff --git a/module/map/assets.py b/module/map/assets.py index 0c07334d9..c3fa8f801 100644 --- a/module/map/assets.py +++ b/module/map/assets.py @@ -17,9 +17,13 @@ FLEET_2_CLEAR = Button(area={'cn': (1109, 306, 1169, 365), 'en': (1092, 307, 115 FLEET_2_HARD_SATIESFIED = Button(area={'cn': (208, 372, 361, 401), 'en': (188, 378, 328, 402), 'jp': (208, 372, 361, 401), 'tw': (215, 377, 306, 400)}, color={'cn': (75, 54, 43), 'en': (97, 88, 78), 'jp': (75, 54, 43), 'tw': (83, 68, 48)}, button={'cn': (208, 372, 361, 401), 'en': (188, 378, 328, 402), 'jp': (208, 372, 361, 401), 'tw': (215, 377, 306, 400)}, file={'cn': './assets/cn/map/FLEET_2_HARD_SATIESFIED.png', 'en': './assets/en/map/FLEET_2_HARD_SATIESFIED.png', 'jp': './assets/jp/map/FLEET_2_HARD_SATIESFIED.png', 'tw': './assets/tw/map/FLEET_2_HARD_SATIESFIED.png'}) FLEET_2_IN_USE = Button(area={'cn': (391, 351, 475, 374), 'en': (374, 352, 453, 373), 'jp': (391, 351, 475, 374), 'tw': (393, 338, 473, 373)}, color={'cn': (182, 165, 200), 'en': (151, 152, 162), 'jp': (182, 165, 200), 'tw': (140, 116, 113)}, button={'cn': (391, 351, 475, 374), 'en': (374, 352, 453, 373), 'jp': (391, 351, 475, 374), 'tw': (393, 338, 473, 373)}, file={'cn': './assets/cn/map/FLEET_2_IN_USE.png', 'en': './assets/en/map/FLEET_2_IN_USE.png', 'jp': './assets/jp/map/FLEET_2_IN_USE.png', 'tw': './assets/tw/map/FLEET_2_IN_USE.png'}) FLEET_ENTER_FLAGSHIP_HARD_1 = Button(area={'cn': (389, 158, 472, 241), 'en': (389, 158, 472, 241), 'jp': (389, 158, 472, 241), 'tw': (389, 158, 472, 241)}, color={'cn': (144, 160, 164), 'en': (144, 160, 164), 'jp': (144, 160, 164), 'tw': (144, 160, 164)}, button={'cn': (389, 158, 472, 241), 'en': (389, 158, 472, 241), 'jp': (389, 158, 472, 241), 'tw': (389, 158, 472, 241)}, file={'cn': './assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_1.png', 'en': './assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_1.png', 'jp': './assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_1.png', 'tw': './assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_1.png'}) +FLEET_ENTER_FLAGSHIP_HARD_1_3 = Button(area={'cn': (598, 179, 677, 258), 'en': (598, 179, 677, 258), 'jp': (598, 179, 677, 258), 'tw': (598, 179, 677, 258)}, color={'cn': (48, 54, 66), 'en': (48, 54, 66), 'jp': (48, 54, 66), 'tw': (48, 54, 66)}, button={'cn': (598, 179, 677, 258), 'en': (598, 179, 677, 258), 'jp': (598, 179, 677, 258), 'tw': (598, 179, 677, 258)}, file={'cn': './assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_1_3.png', 'en': './assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_1_3.png', 'jp': './assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_1_3.png', 'tw': './assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_1_3.png'}) FLEET_ENTER_FLAGSHIP_HARD_2 = Button(area={'cn': (389, 291, 472, 374), 'en': (389, 291, 472, 374), 'jp': (389, 291, 472, 374), 'tw': (389, 291, 472, 374)}, color={'cn': (177, 165, 150), 'en': (177, 165, 150), 'jp': (177, 165, 150), 'tw': (177, 165, 150)}, button={'cn': (389, 291, 472, 374), 'en': (389, 291, 472, 374), 'jp': (389, 291, 472, 374), 'tw': (389, 291, 472, 374)}, file={'cn': './assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_2.png', 'en': './assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_2.png', 'jp': './assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_2.png', 'tw': './assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_2.png'}) +FLEET_ENTER_FLAGSHIP_HARD_2_3 = Button(area={'cn': (595, 290, 679, 374), 'en': (595, 290, 679, 374), 'jp': (595, 290, 679, 374), 'tw': (595, 290, 679, 374)}, color={'cn': (49, 57, 68), 'en': (49, 57, 68), 'jp': (49, 57, 68), 'tw': (49, 57, 68)}, button={'cn': (595, 290, 679, 374), 'en': (595, 290, 679, 374), 'jp': (595, 290, 679, 374), 'tw': (595, 290, 679, 374)}, file={'cn': './assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_2_3.png', 'en': './assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_2_3.png', 'jp': './assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_2_3.png', 'tw': './assets/cn/map/FLEET_ENTER_FLAGSHIP_HARD_2_3.png'}) FLEET_ENTER_HARD_1 = Button(area={'cn': (705, 158, 788, 241), 'en': (705, 158, 788, 241), 'jp': (705, 158, 788, 241), 'tw': (705, 158, 788, 241)}, color={'cn': (147, 157, 154), 'en': (147, 157, 154), 'jp': (147, 157, 154), 'tw': (147, 157, 154)}, button={'cn': (705, 158, 788, 241), 'en': (705, 158, 788, 241), 'jp': (705, 158, 788, 241), 'tw': (705, 158, 788, 241)}, file={'cn': './assets/cn/map/FLEET_ENTER_HARD_1.png', 'en': './assets/cn/map/FLEET_ENTER_HARD_1.png', 'jp': './assets/cn/map/FLEET_ENTER_HARD_1.png', 'tw': './assets/cn/map/FLEET_ENTER_HARD_1.png'}) +FLEET_ENTER_HARD_1_3 = Button(area={'cn': (910, 176, 994, 260), 'en': (910, 176, 994, 260), 'jp': (910, 176, 994, 260), 'tw': (910, 176, 994, 260)}, color={'cn': (47, 59, 73), 'en': (47, 59, 73), 'jp': (47, 59, 73), 'tw': (47, 59, 73)}, button={'cn': (910, 176, 994, 260), 'en': (910, 176, 994, 260), 'jp': (910, 176, 994, 260), 'tw': (910, 176, 994, 260)}, file={'cn': './assets/cn/map/FLEET_ENTER_HARD_1_3.png', 'en': './assets/cn/map/FLEET_ENTER_HARD_1_3.png', 'jp': './assets/cn/map/FLEET_ENTER_HARD_1_3.png', 'tw': './assets/cn/map/FLEET_ENTER_HARD_1_3.png'}) FLEET_ENTER_HARD_2 = Button(area={'cn': (705, 291, 788, 374), 'en': (705, 291, 788, 374), 'jp': (705, 291, 788, 374), 'tw': (705, 291, 788, 374)}, color={'cn': (169, 182, 200), 'en': (169, 182, 200), 'jp': (169, 182, 200), 'tw': (169, 182, 200)}, button={'cn': (705, 291, 788, 374), 'en': (705, 291, 788, 374), 'jp': (705, 291, 788, 374), 'tw': (705, 291, 788, 374)}, file={'cn': './assets/cn/map/FLEET_ENTER_HARD_2.png', 'en': './assets/cn/map/FLEET_ENTER_HARD_2.png', 'jp': './assets/cn/map/FLEET_ENTER_HARD_2.png', 'tw': './assets/cn/map/FLEET_ENTER_HARD_2.png'}) +FLEET_ENTER_HARD_2_3 = Button(area={'cn': (910, 288, 996, 374), 'en': (910, 288, 996, 374), 'jp': (910, 288, 996, 374), 'tw': (910, 288, 996, 374)}, color={'cn': (52, 56, 64), 'en': (52, 56, 64), 'jp': (52, 56, 64), 'tw': (52, 56, 64)}, button={'cn': (910, 288, 996, 374), 'en': (910, 288, 996, 374), 'jp': (910, 288, 996, 374), 'tw': (910, 288, 996, 374)}, file={'cn': './assets/cn/map/FLEET_ENTER_HARD_2_3.png', 'en': './assets/cn/map/FLEET_ENTER_HARD_2_3.png', 'jp': './assets/cn/map/FLEET_ENTER_HARD_2_3.png', 'tw': './assets/cn/map/FLEET_ENTER_HARD_2_3.png'}) FLEET_NUM_1 = Button(area={'cn': (213, 76, 224, 101), 'en': (213, 76, 224, 101), 'jp': (213, 76, 224, 101), 'tw': (213, 76, 224, 101)}, color={'cn': (51, 143, 186), 'en': (51, 143, 186), 'jp': (51, 143, 186), 'tw': (51, 143, 186)}, button={'cn': (213, 76, 224, 101), 'en': (213, 76, 224, 101), 'jp': (213, 76, 224, 101), 'tw': (213, 76, 224, 101)}, file={'cn': './assets/cn/map/FLEET_NUM_1.png', 'en': './assets/en/map/FLEET_NUM_1.png', 'jp': './assets/jp/map/FLEET_NUM_1.png', 'tw': './assets/tw/map/FLEET_NUM_1.png'}) FLEET_NUM_2 = Button(area={'cn': (212, 75, 226, 101), 'en': (212, 75, 226, 101), 'jp': (212, 75, 226, 101), 'tw': (212, 75, 226, 101)}, color={'cn': (52, 150, 194), 'en': (52, 150, 194), 'jp': (52, 150, 194), 'tw': (52, 150, 194)}, button={'cn': (212, 75, 226, 101), 'en': (212, 75, 226, 101), 'jp': (212, 75, 226, 101), 'tw': (212, 75, 226, 101)}, file={'cn': './assets/cn/map/FLEET_NUM_2.png', 'en': './assets/en/map/FLEET_NUM_2.png', 'jp': './assets/jp/map/FLEET_NUM_2.png', 'tw': './assets/tw/map/FLEET_NUM_2.png'}) FLEET_PREPARATION = Button(area={'cn': (1013, 558, 1141, 588), 'en': (1048, 569, 1086, 595), 'jp': (1046, 558, 1107, 587), 'tw': (1014, 557, 1142, 588)}, color={'cn': (242, 211, 160), 'en': (241, 201, 148), 'jp': (241, 205, 151), 'tw': (242, 208, 157)}, button={'cn': (980, 549, 1181, 612), 'en': (988, 556, 1145, 606), 'jp': (983, 549, 1185, 612), 'tw': (980, 548, 1180, 612)}, file={'cn': './assets/cn/map/FLEET_PREPARATION.png', 'en': './assets/en/map/FLEET_PREPARATION.png', 'jp': './assets/jp/map/FLEET_PREPARATION.png', 'tw': './assets/tw/map/FLEET_PREPARATION.png'}) diff --git a/module/retire/assets.py b/module/retire/assets.py index ba861c082..06999cfe6 100644 --- a/module/retire/assets.py +++ b/module/retire/assets.py @@ -13,6 +13,7 @@ DOCK_FILTER = Button(area={'cn': (1099, 5, 1193, 48), 'en': (1098, 4, 1194, 49), DOCK_FILTER_CONFIRM = Button(area={'cn': (714, 613, 886, 671), 'en': (718, 618, 883, 666), 'jp': (717, 618, 885, 668), 'tw': (715, 630, 884, 680)}, color={'cn': (86, 133, 192), 'en': (108, 148, 201), 'jp': (83, 128, 188), 'tw': (83, 130, 190)}, button={'cn': (714, 613, 886, 671), 'en': (718, 618, 883, 666), 'jp': (717, 618, 885, 668), 'tw': (715, 630, 884, 680)}, file={'cn': './assets/cn/retire/DOCK_FILTER_CONFIRM.png', 'en': './assets/en/retire/DOCK_FILTER_CONFIRM.png', 'jp': './assets/jp/retire/DOCK_FILTER_CONFIRM.png', 'tw': './assets/tw/retire/DOCK_FILTER_CONFIRM.png'}) DOCK_SCROLL = Button(area={'cn': (1239, 76, 1248, 641), 'en': (1239, 76, 1248, 641), 'jp': (1237, 78, 1250, 628), 'tw': (1239, 76, 1248, 641)}, color={'cn': (47, 46, 37), 'en': (47, 46, 37), 'jp': (180, 156, 66), 'tw': (47, 46, 37)}, button={'cn': (1239, 76, 1248, 641), 'en': (1239, 76, 1248, 641), 'jp': (1237, 78, 1250, 628), 'tw': (1239, 76, 1248, 641)}, file={'cn': './assets/cn/retire/DOCK_SCROLL.png', 'en': './assets/en/retire/DOCK_SCROLL.png', 'jp': './assets/jp/retire/DOCK_SCROLL.png', 'tw': './assets/tw/retire/DOCK_SCROLL.png'}) DOCK_SELECTED = Button(area={'cn': (582, 662, 647, 685), 'en': (702, 660, 751, 686), 'jp': (603, 662, 655, 685), 'tw': (582, 662, 647, 685)}, color={'cn': (75, 75, 83), 'en': (84, 85, 93), 'jp': (84, 83, 92), 'tw': (75, 75, 83)}, button={'cn': (582, 662, 647, 685), 'en': (702, 660, 751, 686), 'jp': (603, 662, 655, 685), 'tw': (582, 662, 647, 685)}, file={'cn': './assets/cn/retire/DOCK_SELECTED.png', 'en': './assets/en/retire/DOCK_SELECTED.png', 'jp': './assets/jp/retire/DOCK_SELECTED.png', 'tw': './assets/tw/retire/DOCK_SELECTED.png'}) +DOCK_SHIP_DOWN = Button(area={'cn': (93, 90, 225, 266), 'en': (93, 90, 225, 266), 'jp': (93, 90, 225, 266), 'tw': (93, 90, 225, 266)}, color={'cn': (68, 67, 69), 'en': (68, 67, 69), 'jp': (68, 67, 69), 'tw': (68, 67, 69)}, button={'cn': (93, 90, 225, 266), 'en': (93, 90, 225, 266), 'jp': (93, 90, 225, 266), 'tw': (93, 90, 225, 266)}, file={'cn': './assets/cn/retire/DOCK_SHIP_DOWN.png', 'en': './assets/cn/retire/DOCK_SHIP_DOWN.png', 'jp': './assets/cn/retire/DOCK_SHIP_DOWN.png', 'tw': './assets/cn/retire/DOCK_SHIP_DOWN.png'}) EMPTY_ENHANCE_SLOT_PLUS = Button(area={'cn': (737, 402, 773, 437), 'en': (737, 402, 773, 437), 'jp': (737, 402, 773, 437), 'tw': (737, 402, 773, 437)}, color={'cn': (46, 46, 46), 'en': (46, 46, 46), 'jp': (46, 46, 46), 'tw': (46, 46, 46)}, button={'cn': (737, 402, 773, 437), 'en': (737, 402, 773, 437), 'jp': (737, 402, 773, 437), 'tw': (737, 402, 773, 437)}, file={'cn': './assets/cn/retire/EMPTY_ENHANCE_SLOT_PLUS.png', 'en': './assets/en/retire/EMPTY_ENHANCE_SLOT_PLUS.png', 'jp': './assets/jp/retire/EMPTY_ENHANCE_SLOT_PLUS.png', 'tw': './assets/tw/retire/EMPTY_ENHANCE_SLOT_PLUS.png'}) ENHANCE_CONFIRM = Button(area={'cn': (1126, 602, 1256, 645), 'en': (1130, 603, 1255, 643), 'jp': (1126, 601, 1257, 646), 'tw': (1126, 602, 1257, 644)}, color={'cn': (203, 149, 81), 'en': (204, 148, 82), 'jp': (189, 139, 78), 'tw': (198, 145, 82)}, button={'cn': (1126, 602, 1256, 645), 'en': (1130, 603, 1255, 643), 'jp': (1126, 601, 1257, 646), 'tw': (1126, 602, 1257, 644)}, file={'cn': './assets/cn/retire/ENHANCE_CONFIRM.png', 'en': './assets/en/retire/ENHANCE_CONFIRM.png', 'jp': './assets/jp/retire/ENHANCE_CONFIRM.png', 'tw': './assets/tw/retire/ENHANCE_CONFIRM.png'}) ENHANCE_FILLED = Button(area={'cn': (728, 440, 781, 454), 'en': (728, 440, 781, 454), 'jp': (722, 387, 789, 400), 'tw': (728, 440, 781, 454)}, color={'cn': (156, 138, 127), 'en': (156, 138, 127), 'jp': (146, 153, 211), 'tw': (156, 138, 127)}, button={'cn': (728, 440, 781, 454), 'en': (728, 440, 781, 454), 'jp': (722, 387, 789, 400), 'tw': (728, 440, 781, 454)}, file={'cn': './assets/cn/retire/ENHANCE_FILLED.png', 'en': './assets/en/retire/ENHANCE_FILLED.png', 'jp': './assets/jp/retire/ENHANCE_FILLED.png', 'tw': './assets/tw/retire/ENHANCE_FILLED.png'})