Merge branch 'dev' into meta_reward

This commit is contained in:
guoh064 2023-08-12 14:29:31 +08:00 committed by GitHub
commit a3af072035
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
57 changed files with 115 additions and 43 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -212,7 +212,7 @@
"ServerUpdate": "04:00"
},
"MaaRoguelike": {
"Theme": "Phantom",
"Theme": "Sami",
"Mode": 0,
"StartsCount": 9999999,
"InvestmentsCount": 9999999,

View File

@ -7,7 +7,7 @@ from module.base.template import Template
ASH_COLLECT_STATUS = Button(area={'cn': (640, 27, 720, 49), 'en': (640, 27, 720, 49), 'jp': (640, 27, 720, 49), 'tw': (640, 27, 720, 49)}, color={'cn': (82, 92, 99), 'en': (82, 92, 99), 'jp': (82, 92, 99), 'tw': (82, 92, 99)}, button={'cn': (640, 27, 720, 49), 'en': (640, 27, 720, 49), 'jp': (640, 27, 720, 49), 'tw': (640, 27, 720, 49)}, file={'cn': './assets/cn/os_ash/ASH_COLLECT_STATUS.png', 'en': './assets/en/os_ash/ASH_COLLECT_STATUS.png', 'jp': './assets/jp/os_ash/ASH_COLLECT_STATUS.png', 'tw': './assets/tw/os_ash/ASH_COLLECT_STATUS.png'})
ASH_DAILY_STATUS = Button(area={'cn': (637, 0, 741, 19), 'en': (637, 0, 741, 19), 'jp': (637, 0, 741, 19), 'tw': (637, 0, 741, 19)}, color={'cn': (104, 112, 121), 'en': (104, 112, 121), 'jp': (104, 112, 121), 'tw': (104, 112, 121)}, button={'cn': (637, 0, 741, 19), 'en': (637, 0, 741, 19), 'jp': (637, 0, 741, 19), 'tw': (637, 0, 741, 19)}, file={'cn': './assets/cn/os_ash/ASH_DAILY_STATUS.png', 'en': './assets/en/os_ash/ASH_DAILY_STATUS.png', 'jp': './assets/jp/os_ash/ASH_DAILY_STATUS.png', 'tw': './assets/tw/os_ash/ASH_DAILY_STATUS.png'})
ASH_QUIT = Button(area={'cn': (29, 25, 59, 49), 'en': (29, 25, 59, 49), 'jp': (22, 25, 54, 48), 'tw': (29, 25, 59, 49)}, color={'cn': (115, 63, 68), 'en': (115, 63, 68), 'jp': (114, 61, 67), 'tw': (115, 63, 68)}, button={'cn': (29, 25, 59, 49), 'en': (29, 25, 59, 49), 'jp': (22, 25, 54, 48), 'tw': (29, 25, 59, 49)}, file={'cn': './assets/cn/os_ash/ASH_QUIT.png', 'en': './assets/en/os_ash/ASH_QUIT.png', 'jp': './assets/jp/os_ash/ASH_QUIT.png', 'tw': './assets/tw/os_ash/ASH_QUIT.png'})
ASH_SHOWDOWN = Button(area={'cn': (120, 14, 262, 38), 'en': (120, 16, 319, 35), 'jp': (122, 15, 246, 39), 'tw': (120, 14, 262, 38)}, color={'cn': (153, 131, 131), 'en': (130, 106, 106), 'jp': (164, 144, 145), 'tw': (153, 131, 131)}, button={'cn': (120, 14, 262, 38), 'en': (120, 16, 319, 35), 'jp': (122, 15, 246, 39), 'tw': (120, 14, 262, 38)}, file={'cn': './assets/cn/os_ash/ASH_SHOWDOWN.png', 'en': './assets/en/os_ash/ASH_SHOWDOWN.png', 'jp': './assets/jp/os_ash/ASH_SHOWDOWN.png', 'tw': './assets/cn/os_ash/ASH_SHOWDOWN.png'})
ASH_SHOWDOWN = Button(area={'cn': (120, 14, 262, 38), 'en': (120, 16, 319, 35), 'jp': (122, 15, 246, 39), 'tw': (120, 14, 262, 38)}, color={'cn': (153, 131, 131), 'en': (130, 106, 106), 'jp': (164, 144, 145), 'tw': (153, 131, 131)}, button={'cn': (120, 14, 262, 38), 'en': (120, 16, 319, 35), 'jp': (122, 15, 246, 39), 'tw': (120, 14, 262, 38)}, file={'cn': './assets/cn/os_ash/ASH_SHOWDOWN.png', 'en': './assets/en/os_ash/ASH_SHOWDOWN.png', 'jp': './assets/jp/os_ash/ASH_SHOWDOWN.png', 'tw': './assets/tw/os_ash/ASH_SHOWDOWN.png'})
ASH_START = Button(area={'cn': (1061, 635, 1259, 695), 'en': (1063, 637, 1255, 693), 'jp': (1058, 634, 1260, 697), 'tw': (1043, 637, 1242, 698)}, color={'cn': (236, 187, 115), 'en': (223, 184, 124), 'jp': (222, 185, 126), 'tw': (223, 186, 131)}, button={'cn': (1061, 635, 1259, 695), 'en': (1063, 637, 1255, 693), 'jp': (1058, 634, 1260, 697), 'tw': (1043, 637, 1242, 698)}, file={'cn': './assets/cn/os_ash/ASH_START.png', 'en': './assets/en/os_ash/ASH_START.png', 'jp': './assets/jp/os_ash/ASH_START.png', 'tw': './assets/tw/os_ash/ASH_START.png'})
BATTLE_STATUS = Button(area={'cn': (1051, 644, 1123, 675), 'en': (1022, 657, 1150, 671), 'jp': (1087, 642, 1127, 679), 'tw': (1050, 644, 1123, 675)}, color={'cn': (247, 199, 137), 'en': (243, 207, 160), 'jp': (229, 171, 91), 'tw': (243, 193, 128)}, button={'cn': (1051, 644, 1123, 675), 'en': (1022, 657, 1150, 671), 'jp': (1087, 642, 1127, 679), 'tw': (1050, 644, 1123, 675)}, file={'cn': './assets/cn/os_ash/BATTLE_STATUS.png', 'en': './assets/en/os_ash/BATTLE_STATUS.png', 'jp': './assets/jp/os_ash/BATTLE_STATUS.png', 'tw': './assets/tw/os_ash/BATTLE_STATUS.png'})
BEACON_EMPTY = Button(area={'cn': (535, 288, 647, 316), 'en': (522, 290, 775, 313), 'jp': (465, 286, 664, 318), 'tw': (534, 287, 648, 316)}, color={'cn': (126, 129, 134), 'en': (148, 150, 154), 'jp': (119, 122, 128), 'tw': (128, 130, 135)}, button={'cn': (535, 288, 647, 316), 'en': (522, 290, 775, 313), 'jp': (465, 286, 664, 318), 'tw': (534, 287, 648, 316)}, file={'cn': './assets/cn/os_ash/BEACON_EMPTY.png', 'en': './assets/en/os_ash/BEACON_EMPTY.png', 'jp': './assets/jp/os_ash/BEACON_EMPTY.png', 'tw': './assets/tw/os_ash/BEACON_EMPTY.png'})
@ -17,7 +17,7 @@ BEACON_NEXT = Button(area={'cn': (129, 369, 440, 439), 'en': (129, 369, 440, 439
BEACON_REMAIN = Button(area={'cn': (1014, 25, 1073, 48), 'en': (1014, 25, 1073, 48), 'jp': (1014, 25, 1073, 48), 'tw': (1014, 25, 1073, 48)}, color={'cn': (48, 51, 48), 'en': (48, 51, 48), 'jp': (48, 51, 48), 'tw': (48, 51, 48)}, button={'cn': (1014, 25, 1073, 48), 'en': (1014, 25, 1073, 48), 'jp': (1014, 25, 1073, 48), 'tw': (1014, 25, 1073, 48)}, file={'cn': './assets/cn/os_ash/BEACON_REMAIN.png', 'en': './assets/en/os_ash/BEACON_REMAIN.png', 'jp': './assets/jp/os_ash/BEACON_REMAIN.png', 'tw': './assets/tw/os_ash/BEACON_REMAIN.png'})
BEACON_REWARD = Button(area={'cn': (1051, 643, 1179, 674), 'en': (1087, 654, 1207, 679), 'jp': (1051, 644, 1179, 674), 'tw': (1050, 643, 1179, 674)}, color={'cn': (162, 196, 239), 'en': (168, 198, 243), 'jp': (153, 186, 237), 'tw': (165, 195, 232)}, button={'cn': (1049, 640, 1239, 695), 'en': (1072, 640, 1242, 695), 'jp': (1043, 637, 1242, 698), 'tw': (1049, 640, 1239, 695)}, file={'cn': './assets/cn/os_ash/BEACON_REWARD.png', 'en': './assets/en/os_ash/BEACON_REWARD.png', 'jp': './assets/jp/os_ash/BEACON_REWARD.png', 'tw': './assets/tw/os_ash/BEACON_REWARD.png'})
BEACON_TIER = Button(area={'cn': (100, 562, 200, 637), 'en': (100, 562, 200, 637), 'jp': (100, 562, 200, 637), 'tw': (100, 562, 200, 637)}, color={'cn': (82, 83, 79), 'en': (82, 83, 79), 'jp': (82, 83, 79), 'tw': (82, 83, 79)}, button={'cn': (100, 562, 200, 637), 'en': (100, 562, 200, 637), 'jp': (100, 562, 200, 637), 'tw': (100, 562, 200, 637)}, file={'cn': './assets/cn/os_ash/BEACON_TIER.png', 'en': './assets/en/os_ash/BEACON_TIER.png', 'jp': './assets/jp/os_ash/BEACON_TIER.png', 'tw': './assets/tw/os_ash/BEACON_TIER.png'})
DOSSIER_LIST = Button(area={'cn': (22, 646, 221, 706), 'en': (27, 651, 217, 696), 'jp': (22, 645, 221, 706), 'tw': (22, 646, 221, 706)}, color={'cn': (116, 89, 77), 'en': (144, 121, 110), 'jp': (118, 90, 77), 'tw': (116, 89, 77)}, button={'cn': (22, 646, 221, 706), 'en': (27, 651, 217, 696), 'jp': (22, 645, 221, 706), 'tw': (22, 646, 221, 706)}, file={'cn': './assets/cn/os_ash/DOSSIER_LIST.png', 'en': './assets/en/os_ash/DOSSIER_LIST.png', 'jp': './assets/jp/os_ash/DOSSIER_LIST.png', 'tw': './assets/cn/os_ash/DOSSIER_LIST.png'})
DOSSIER_LIST = Button(area={'cn': (22, 646, 221, 706), 'en': (27, 651, 217, 696), 'jp': (22, 645, 221, 706), 'tw': (21, 643, 222, 708)}, color={'cn': (116, 89, 77), 'en': (144, 121, 110), 'jp': (118, 90, 77), 'tw': (116, 92, 82)}, button={'cn': (22, 646, 221, 706), 'en': (27, 651, 217, 696), 'jp': (22, 645, 221, 706), 'tw': (21, 643, 222, 708)}, file={'cn': './assets/cn/os_ash/DOSSIER_LIST.png', 'en': './assets/en/os_ash/DOSSIER_LIST.png', 'jp': './assets/jp/os_ash/DOSSIER_LIST.png', 'tw': './assets/tw/os_ash/DOSSIER_LIST.png'})
HELP_1 = Button(area={'cn': (391, 270, 557, 439), 'en': (391, 270, 557, 439), 'jp': (391, 270, 557, 439), 'tw': (391, 270, 557, 439)}, color={'cn': (83, 95, 118), 'en': (83, 95, 118), 'jp': (83, 95, 118), 'tw': (83, 95, 118)}, button={'cn': (391, 270, 557, 439), 'en': (391, 270, 557, 439), 'jp': (391, 270, 557, 439), 'tw': (391, 270, 557, 439)}, file={'cn': './assets/cn/os_ash/HELP_1.png', 'en': './assets/en/os_ash/HELP_1.png', 'jp': './assets/jp/os_ash/HELP_1.png', 'tw': './assets/tw/os_ash/HELP_1.png'})
HELP_2 = Button(area={'cn': (584, 270, 750, 439), 'en': (584, 270, 750, 439), 'jp': (584, 270, 750, 439), 'tw': (584, 270, 750, 439)}, color={'cn': (82, 95, 119), 'en': (82, 95, 119), 'jp': (82, 95, 119), 'tw': (82, 95, 119)}, button={'cn': (584, 270, 750, 439), 'en': (584, 270, 750, 439), 'jp': (584, 270, 750, 439), 'tw': (584, 270, 750, 439)}, file={'cn': './assets/cn/os_ash/HELP_2.png', 'en': './assets/en/os_ash/HELP_2.png', 'jp': './assets/jp/os_ash/HELP_2.png', 'tw': './assets/tw/os_ash/HELP_2.png'})
HELP_3 = Button(area={'cn': (778, 271, 941, 438), 'en': (778, 271, 941, 438), 'jp': (778, 271, 941, 438), 'tw': (778, 271, 941, 438)}, color={'cn': (83, 96, 118), 'en': (83, 96, 118), 'jp': (83, 96, 118), 'tw': (83, 96, 118)}, button={'cn': (778, 271, 941, 438), 'en': (778, 271, 941, 438), 'jp': (778, 271, 941, 438), 'tw': (778, 271, 941, 438)}, file={'cn': './assets/cn/os_ash/HELP_3.png', 'en': './assets/en/os_ash/HELP_3.png', 'jp': './assets/jp/os_ash/HELP_3.png', 'tw': './assets/tw/os_ash/HELP_3.png'})

View File

@ -67,7 +67,7 @@ class Meta(UI, MapEventHandler):
def _server_support():
return server.server in ['cn', 'en', 'jp']
return server.server in ['cn', 'en', 'jp','tw']
def _server_support_dossier_auto_attack():
@ -381,12 +381,7 @@ class OpsiAshBeacon(Meta):
if self._check_beacon_point():
self.device.click(META_BEGIN_ENTRANCE)
logger.info('Begin a beacon')
else:
# TW only support current meta
if server.server == 'tw':
return 0
self.appear_then_click(ASH_QUIT, offset=(10, 10), interval=2)
return 1
return True
# Page dossier
elif _server_support() \
and self.appear(DOSSIER_LIST, offset=(20, 20), interval=2):

View File

@ -61,4 +61,11 @@ STATUS_4 = Button(area={'cn': (790, 570, 796, 576), 'en': (790, 570, 796, 576),
STATUS_5 = Button(area={'cn': (1031, 541, 1037, 547), 'en': (1031, 541, 1037, 547), 'jp': (1031, 541, 1037, 547), 'tw': (1031, 541, 1037, 547)}, color={'cn': (115, 166, 222), 'en': (115, 166, 222), 'jp': (115, 166, 222), 'tw': (115, 166, 222)}, button={'cn': (1031, 541, 1037, 547), 'en': (1031, 541, 1037, 547), 'jp': (1031, 541, 1037, 547), 'tw': (1031, 541, 1037, 547)}, file={'cn': './assets/cn/research/STATUS_5.png', 'en': './assets/en/research/STATUS_5.png', 'jp': './assets/jp/research/STATUS_5.png', 'tw': './assets/tw/research/STATUS_5.png'})
TEMPLATE_DETAIL = Template(file={'cn': './assets/cn/research/TEMPLATE_DETAIL.png', 'en': './assets/en/research/TEMPLATE_DETAIL.png', 'jp': './assets/jp/research/TEMPLATE_DETAIL.png', 'tw': './assets/tw/research/TEMPLATE_DETAIL.png'})
TEMPLATE_RUNNING = Template(file={'cn': './assets/cn/research/TEMPLATE_RUNNING.png', 'en': './assets/en/research/TEMPLATE_RUNNING.png', 'jp': './assets/jp/research/TEMPLATE_RUNNING.png', 'tw': './assets/tw/research/TEMPLATE_RUNNING.png'})
TEMPLATE_S1 = Template(file={'cn': './assets/cn/research/TEMPLATE_S1.png', 'en': './assets/en/research/TEMPLATE_S1.png', 'jp': './assets/jp/research/TEMPLATE_S1.png', 'tw': './assets/tw/research/TEMPLATE_S1.png'})
TEMPLATE_S2 = Template(file={'cn': './assets/cn/research/TEMPLATE_S2.png', 'en': './assets/en/research/TEMPLATE_S2.png', 'jp': './assets/jp/research/TEMPLATE_S2.png', 'tw': './assets/tw/research/TEMPLATE_S2.png'})
TEMPLATE_S3 = Template(file={'cn': './assets/cn/research/TEMPLATE_S3.png', 'en': './assets/en/research/TEMPLATE_S3.png', 'jp': './assets/jp/research/TEMPLATE_S3.png', 'tw': './assets/tw/research/TEMPLATE_S3.png'})
TEMPLATE_S4 = Template(file={'cn': './assets/cn/research/TEMPLATE_S4.png', 'en': './assets/en/research/TEMPLATE_S4.png', 'jp': './assets/jp/research/TEMPLATE_S4.png', 'tw': './assets/tw/research/TEMPLATE_S4.png'})
TEMPLATE_S4_2 = Template(file={'cn': './assets/cn/research/TEMPLATE_S4_2.png', 'en': './assets/en/research/TEMPLATE_S4_2.png', 'jp': './assets/jp/research/TEMPLATE_S4_2.png', 'tw': './assets/tw/research/TEMPLATE_S4_2.png'})
TEMPLATE_S5 = Template(file={'cn': './assets/cn/research/TEMPLATE_S5.png', 'en': './assets/en/research/TEMPLATE_S5.png', 'jp': './assets/jp/research/TEMPLATE_S5.png', 'tw': './assets/tw/research/TEMPLATE_S5.png'})
TEMPLATE_S6 = Template(file={'cn': './assets/cn/research/TEMPLATE_S6.png', 'en': './assets/en/research/TEMPLATE_S6.png', 'jp': './assets/jp/research/TEMPLATE_S6.png', 'tw': './assets/tw/research/TEMPLATE_S6.png'})
TEMPLATE_WAITING = Template(file={'cn': './assets/cn/research/TEMPLATE_WAITING.png', 'en': './assets/en/research/TEMPLATE_WAITING.png', 'jp': './assets/jp/research/TEMPLATE_WAITING.png', 'tw': './assets/tw/research/TEMPLATE_WAITING.png'})

View File

@ -5,9 +5,10 @@ from scipy import signal
from module.base.decorator import cached_property
from module.base.utils import *
from module.logger import logger
from module.ocr.ocr import Ocr, Duration
from module.ocr.ocr import Duration, Ocr
from module.research.assets import *
from module.research.project_data import LIST_RESEARCH_PROJECT
from module.research.series import get_detail_series, get_research_series_3
from module.statistics.utils import *
RESEARCH_SERIES = (SERIES_1, SERIES_2, SERIES_3, SERIES_4, SERIES_5)
@ -246,9 +247,7 @@ def get_research_series_jp(image):
Returns:
str: Series like "S4"
"""
area = SERIES_DETAIL.area
img = crop(image, area)
series = _get_research_series(img)
series = get_detail_series(image)
return f'S{series}'
@ -387,7 +386,7 @@ def research_detect(image):
list[ResearchProject]:
"""
projects = []
for name, series in zip(get_research_name(image), get_research_series(image)):
for name, series in zip(get_research_name(image), get_research_series_3(image)):
project = ResearchProject(name=name, series=series)
logger.attr('Project', project)
projects.append(project)
@ -414,6 +413,7 @@ class ResearchProject:
out.append(number)
print(out)
"""
C_PROJECT_NUMBERS = ['153', '185', '038']
D_PROJECT_NUMBERS = [
'718', '731', '744', '759', '774', '792', '318', '331', '344', '359', '374', '392', '705', '712', '746', '757',
'779', '794', '305', '312', '346', '357', '379', '394', '721', '722', '772', '777', '795', '321', '322', '372',
@ -431,14 +431,14 @@ class ResearchProject:
series (int): Such as 1, 2, 3
"""
self.valid = True
# 'D-057-UL'
self.name = self.check_name(name)
if self.name != name:
logger.info(f'Research name {name} is revised to {self.name}')
# '4'
self.raw_series = series
# 'S4'
self.series = f'S{series}'
# 'D-057-UL'
self.name = self.check_name(name)
if self.name != name:
logger.info(f'Research name {name} is revised to {self.name}')
# 'D'
self.genre = ''
# '057'
@ -514,10 +514,15 @@ class ResearchProject:
number = number.replace('D', '0').replace('O', '0').replace('S', '5')
# E-316-MI -> E-315-MI
number = number.replace('316', '315')
# [TW] S5 D-349-MI -> S5 D-319-MI
if prefix == 'D' and number == '349' and self.raw_series == 5:
number = '319'
if prefix in ['I1', 'U']:
prefix = 'D'
prefix = prefix.strip('I1')
# LC-038-RF -> C-038-RF
prefix = prefix.replace('LC', 'C')
# S3 D-022-MI (S3-Drake-0.5) detected as 'D-022-ML', because of Drake's white cloth.
suffix = suffix.replace('ML', 'MI').replace('MIL', 'MI').replace('M1', 'MI')
@ -527,11 +532,18 @@ class ResearchProject:
suffix = suffix.replace('DC5', 'UL').replace('DC3', 'UL').replace('DC', 'UL')
# D-075-UL1 -> D-075-UL
suffix = suffix.replace('UL1', 'UL').replace('ULI', 'UL').replace('UL5', 'UL')
if suffix == 'U':
suffix = 'UL'
# TW ocr errors, convert B to D
if prefix == 'B' and number in ResearchProject.D_PROJECT_NUMBERS:
prefix = 'D'
# I-483-RF revised to -483-RF -> D-483-RF
if prefix == '' and number in ResearchProject.D_PROJECT_NUMBERS:
prefix = 'D'
# L-153-MI -> C-153-MI
if prefix == 'L' and number in ResearchProject.C_PROJECT_NUMBERS:
prefix = 'C'
return '-'.join([prefix, number, suffix])
elif len(parts) == 2:
# Trying to insert '-', for results like H339-MI

57
module/research/series.py Normal file
View File

@ -0,0 +1,57 @@
from module.base.utils import area_pad, crop, rgb2gray
from module.research.assets import *
RESEARCH_SERIES = (SERIES_1, SERIES_2, SERIES_3, SERIES_4, SERIES_5)
RESEARCH_SCALING = [
424 / 558,
491 / 558,
1.0,
491 / 558,
424 / 558,
]
def match_series(image, scaling):
image = rgb2gray(image)
if TEMPLATE_S6.match(image, scaling=scaling):
return 6
if TEMPLATE_S4_2.match(image, scaling=scaling):
return 4
if TEMPLATE_S4.match(image, scaling=scaling):
return 4
if TEMPLATE_S5.match(image, scaling=scaling):
return 5
if TEMPLATE_S3.match(image, scaling=scaling):
return 3
if TEMPLATE_S2.match(image, scaling=scaling):
return 2
if TEMPLATE_S1.match(image, scaling=scaling):
return 1
return 0
def get_research_series_3(image, series_button=RESEARCH_SERIES):
"""
Args:
image:
series_button (list[Button]):
Returns:
list[int]:
"""
return [
match_series(crop(image, area_pad(button.area, pad=-10)), scaling)
for scaling, button in zip(RESEARCH_SCALING, series_button)
]
def get_detail_series(image):
"""
Args:
image:
Returns:
int:
"""
return match_series(crop(image, area_pad(SERIES_DETAIL.area, pad=-30)), scaling=1.0)

View File

@ -4,17 +4,10 @@ from module.combat.assets import GET_ITEMS_1, GET_ITEMS_2, GET_ITEMS_3, GET_ITEM
from module.logger import logger
from module.research.assets import *
from module.research.project import RESEARCH_STATUS
from module.research.series import RESEARCH_SCALING
from module.ui.assets import RESEARCH_CHECK
from module.ui.ui import UI
TEMPLATE_SCALING = [
424 / 558,
491 / 558,
1.0,
491 / 558,
424 / 558,
]
class ResearchUI(UI):
def is_in_research(self):
@ -91,7 +84,7 @@ class ResearchUI(UI):
list[str]: List of project status
"""
out = []
for index, status, scaling in zip(range(5), RESEARCH_STATUS, TEMPLATE_SCALING):
for index, status, scaling in zip(range(5), RESEARCH_STATUS, RESEARCH_SCALING):
info = status.crop((0, -40, 200, 0))
piece = rgb2gray(crop(image, info.area))
if TEMPLATE_WAITING.match(piece, scaling=scaling, similarity=0.75):

View File

@ -4,12 +4,12 @@ from module.base.template import Template
# This file was automatically generated by dev_tools/button_extract.py.
# Don't modify it manually.
SHIPYARD_CONFIRM_DEV = Button(area={'cn': (1074, 497, 1152, 524), 'en': (1067, 492, 1163, 518), 'jp': (1058, 497, 1169, 534), 'tw': (1067, 492, 1163, 518)}, color={'cn': (106, 144, 211), 'en': (102, 140, 209), 'jp': (79, 122, 195), 'tw': (102, 140, 209)}, button={'cn': (1074, 497, 1152, 524), 'en': (1067, 492, 1163, 518), 'jp': (1058, 497, 1169, 534), 'tw': (1067, 492, 1163, 518)}, file={'cn': './assets/cn/shipyard/SHIPYARD_CONFIRM_DEV.png', 'en': './assets/en/shipyard/SHIPYARD_CONFIRM_DEV.png', 'jp': './assets/jp/shipyard/SHIPYARD_CONFIRM_DEV.png', 'tw': './assets/tw/shipyard/SHIPYARD_CONFIRM_DEV.png'})
SHIPYARD_CONFIRM_DEV = Button(area={'cn': (1074, 497, 1152, 524), 'en': (1067, 492, 1163, 518), 'jp': (1058, 497, 1169, 534), 'tw': (1084, 495, 1144, 523)}, color={'cn': (106, 144, 211), 'en': (102, 140, 209), 'jp': (79, 122, 195), 'tw': (112, 148, 213)}, button={'cn': (1074, 497, 1152, 524), 'en': (1067, 492, 1163, 518), 'jp': (1058, 497, 1169, 534), 'tw': (1084, 495, 1144, 523)}, file={'cn': './assets/cn/shipyard/SHIPYARD_CONFIRM_DEV.png', 'en': './assets/en/shipyard/SHIPYARD_CONFIRM_DEV.png', 'jp': './assets/jp/shipyard/SHIPYARD_CONFIRM_DEV.png', 'tw': './assets/tw/shipyard/SHIPYARD_CONFIRM_DEV.png'})
SHIPYARD_CONFIRM_FATE = Button(area={'cn': (1145, 523, 1221, 558), 'en': (1145, 522, 1242, 555), 'jp': (1137, 525, 1231, 556), 'tw': (1153, 521, 1215, 559)}, color={'cn': (109, 149, 203), 'en': (145, 173, 214), 'jp': (104, 144, 198), 'tw': (121, 159, 208)}, button={'cn': (1145, 523, 1221, 558), 'en': (1145, 522, 1242, 555), 'jp': (1137, 525, 1231, 556), 'tw': (1153, 521, 1215, 559)}, file={'cn': './assets/cn/shipyard/SHIPYARD_CONFIRM_FATE.png', 'en': './assets/en/shipyard/SHIPYARD_CONFIRM_FATE.png', 'jp': './assets/jp/shipyard/SHIPYARD_CONFIRM_FATE.png', 'tw': './assets/tw/shipyard/SHIPYARD_CONFIRM_FATE.png'})
SHIPYARD_GO_FATE = Button(area={'cn': (943, 508, 1031, 531), 'en': (943, 508, 1018, 531), 'jp': (944, 509, 1029, 530), 'tw': (943, 507, 1030, 531)}, color={'cn': (169, 165, 54), 'en': (181, 177, 58), 'jp': (146, 143, 46), 'tw': (160, 156, 50)}, button={'cn': (1080, 415, 1147, 505), 'en': (1080, 415, 1147, 505), 'jp': (1078, 414, 1149, 506), 'tw': (1080, 415, 1147, 505)}, file={'cn': './assets/cn/shipyard/SHIPYARD_GO_FATE.png', 'en': './assets/en/shipyard/SHIPYARD_GO_FATE.png', 'jp': './assets/jp/shipyard/SHIPYARD_GO_FATE.png', 'tw': './assets/tw/shipyard/SHIPYARD_GO_FATE.png'})
SHIPYARD_IN_DEV = Button(area={'cn': (5, 118, 90, 151), 'en': (956, 153, 1017, 165), 'jp': (8, 130, 82, 148), 'tw': (6, 129, 84, 151)}, color={'cn': (111, 131, 185), 'en': (148, 156, 180), 'jp': (152, 169, 202), 'tw': (133, 155, 212)}, button={'cn': (5, 118, 90, 151), 'en': (956, 153, 1017, 165), 'jp': (8, 130, 82, 148), 'tw': (6, 129, 84, 151)}, file={'cn': './assets/cn/shipyard/SHIPYARD_IN_DEV.png', 'en': './assets/en/shipyard/SHIPYARD_IN_DEV.png', 'jp': './assets/jp/shipyard/SHIPYARD_IN_DEV.png', 'tw': './assets/tw/shipyard/SHIPYARD_IN_DEV.png'})
SHIPYARD_IN_FATE = Button(area={'cn': (924, 122, 1025, 146), 'en': (924, 124, 1114, 144), 'jp': (925, 122, 1023, 145), 'tw': (924, 121, 1022, 146)}, color={'cn': (186, 181, 81), 'en': (167, 161, 68), 'jp': (176, 173, 76), 'tw': (178, 174, 79)}, button={'cn': (924, 122, 1025, 146), 'en': (924, 124, 1114, 144), 'jp': (925, 122, 1023, 145), 'tw': (924, 121, 1022, 146)}, file={'cn': './assets/cn/shipyard/SHIPYARD_IN_FATE.png', 'en': './assets/en/shipyard/SHIPYARD_IN_FATE.png', 'jp': './assets/jp/shipyard/SHIPYARD_IN_FATE.png', 'tw': './assets/tw/shipyard/SHIPYARD_IN_FATE.png'})
SHIPYARD_LEVEL_NOT_ENOUGH_DEV = Button(area={'cn': (1230, 155, 1273, 171), 'en': (1104, 149, 1273, 159), 'jp': (1230, 155, 1273, 171), 'tw': (1230, 155, 1273, 171)}, color={'cn': (125, 142, 174), 'en': (162, 166, 181), 'jp': (125, 142, 174), 'tw': (125, 142, 174)}, button={'cn': (1230, 155, 1273, 171), 'en': (1104, 149, 1273, 159), 'jp': (1230, 155, 1273, 171), 'tw': (1230, 155, 1273, 171)}, file={'cn': './assets/cn/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_DEV.png', 'en': './assets/en/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_DEV.png', 'jp': './assets/jp/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_DEV.png', 'tw': './assets/cn/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_DEV.png'})
SHIPYARD_LEVEL_NOT_ENOUGH_DEV = Button(area={'cn': (1230, 155, 1273, 171), 'en': (1104, 149, 1273, 159), 'jp': (1230, 155, 1273, 171), 'tw': (1230, 155, 1273, 171)}, color={'cn': (125, 142, 174), 'en': (162, 166, 181), 'jp': (125, 142, 174), 'tw': (125, 142, 174)}, button={'cn': (1230, 155, 1273, 171), 'en': (1104, 149, 1273, 159), 'jp': (1230, 155, 1273, 171), 'tw': (1230, 155, 1273, 171)}, file={'cn': './assets/cn/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_DEV.png', 'en': './assets/en/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_DEV.png', 'jp': './assets/jp/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_DEV.png', 'tw': './assets/tw/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_DEV.png'})
SHIPYARD_LEVEL_NOT_ENOUGH_FATE = Button(area={'cn': (1040, 160, 1147, 174), 'en': (1021, 160, 1151, 174), 'jp': (1019, 155, 1276, 199), 'tw': (1040, 160, 1147, 174)}, color={'cn': (97, 96, 97), 'en': (88, 88, 90), 'jp': (63, 42, 41), 'tw': (97, 96, 97)}, button={'cn': (1040, 160, 1147, 174), 'en': (1021, 160, 1151, 174), 'jp': (1019, 155, 1276, 199), 'tw': (1040, 160, 1147, 174)}, file={'cn': './assets/cn/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_FATE.png', 'en': './assets/en/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_FATE.png', 'jp': './assets/jp/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_FATE.png', 'tw': './assets/tw/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_FATE.png'})
SHIPYARD_MINUS_DEV = Button(area={'cn': (1049, 429, 1084, 463), 'en': (1051, 431, 1081, 461), 'jp': (1049, 429, 1084, 463), 'tw': (1049, 429, 1084, 463)}, color={'cn': (73, 126, 194), 'en': (76, 127, 195), 'jp': (73, 126, 194), 'tw': (73, 126, 194)}, button={'cn': (1049, 429, 1084, 463), 'en': (1051, 431, 1081, 461), 'jp': (1049, 429, 1084, 463), 'tw': (1049, 429, 1084, 463)}, file={'cn': './assets/cn/shipyard/SHIPYARD_MINUS_DEV.png', 'en': './assets/en/shipyard/SHIPYARD_MINUS_DEV.png', 'jp': './assets/jp/shipyard/SHIPYARD_MINUS_DEV.png', 'tw': './assets/tw/shipyard/SHIPYARD_MINUS_DEV.png'})
SHIPYARD_MINUS_FATE = Button(area={'cn': (1028, 453, 1063, 487), 'en': (1031, 450, 1067, 486), 'jp': (1028, 453, 1063, 487), 'tw': (1028, 453, 1063, 487)}, color={'cn': (72, 125, 193), 'en': (76, 127, 195), 'jp': (72, 125, 193), 'tw': (72, 125, 193)}, button={'cn': (1028, 453, 1063, 487), 'en': (1031, 450, 1067, 486), 'jp': (1028, 453, 1063, 487), 'tw': (1028, 453, 1063, 487)}, file={'cn': './assets/cn/shipyard/SHIPYARD_MINUS_FATE.png', 'en': './assets/en/shipyard/SHIPYARD_MINUS_FATE.png', 'jp': './assets/jp/shipyard/SHIPYARD_MINUS_FATE.png', 'tw': './assets/tw/shipyard/SHIPYARD_MINUS_FATE.png'})

View File

@ -12,7 +12,7 @@ SELECT_MINUS = Button(area={'cn': (562, 201, 588, 227), 'en': (562, 201, 588, 22
SELECT_PLUS = Button(area={'cn': (674, 201, 700, 227), 'en': (674, 201, 700, 227), 'jp': (674, 201, 700, 227), 'tw': (674, 201, 700, 227)}, color={'cn': (97, 70, 70), 'en': (97, 70, 70), 'jp': (97, 70, 70), 'tw': (97, 70, 70)}, button={'cn': (674, 201, 700, 227), 'en': (674, 201, 700, 227), 'jp': (674, 201, 700, 227), 'tw': (674, 201, 700, 227)}, file={'cn': './assets/cn/shop/SELECT_PLUS.png', 'en': './assets/en/shop/SELECT_PLUS.png', 'jp': './assets/jp/shop/SELECT_PLUS.png', 'tw': './assets/tw/shop/SELECT_PLUS.png'})
SHOP_AMOUNT = Button(area={'cn': (600, 310, 680, 340), 'en': (600, 310, 680, 340), 'jp': (600, 310, 680, 340), 'tw': (600, 310, 680, 340)}, color={'cn': (48, 52, 62), 'en': (48, 52, 62), 'jp': (48, 52, 62), 'tw': (48, 52, 62)}, button={'cn': (600, 310, 680, 340), 'en': (600, 310, 680, 340), 'jp': (600, 310, 680, 340), 'tw': (600, 310, 680, 340)}, file={'cn': './assets/cn/shop/SHOP_AMOUNT.png', 'en': './assets/en/shop/SHOP_AMOUNT.png', 'jp': './assets/jp/shop/SHOP_AMOUNT.png', 'tw': './assets/tw/shop/SHOP_AMOUNT.png'})
SHOP_BUY_CONFIRM = Button(area={'cn': (703, 483, 876, 540), 'en': (708, 487, 872, 534), 'jp': (720, 494, 862, 531), 'tw': (706, 485, 875, 537)}, color={'cn': (94, 142, 203), 'en': (115, 157, 210), 'jp': (100, 147, 205), 'tw': (95, 143, 203)}, button={'cn': (703, 483, 876, 540), 'en': (708, 487, 872, 534), 'jp': (720, 494, 862, 531), 'tw': (706, 485, 875, 537)}, file={'cn': './assets/cn/shop/SHOP_BUY_CONFIRM.png', 'en': './assets/en/shop/SHOP_BUY_CONFIRM.png', 'jp': './assets/jp/shop/SHOP_BUY_CONFIRM.png', 'tw': './assets/tw/shop/SHOP_BUY_CONFIRM.png'})
SHOP_BUY_CONFIRM_AMOUNT = Button(area={'cn': (729, 602, 800, 633), 'en': (689, 594, 839, 644), 'jp': (694, 596, 832, 640), 'tw': (729, 602, 800, 633)}, color={'cn': (137, 169, 210), 'en': (103, 146, 197), 'jp': (84, 132, 191), 'tw': (138, 171, 211)}, button={'cn': (729, 602, 800, 633), 'en': (689, 594, 839, 644), 'jp': (694, 596, 832, 640), 'tw': (729, 602, 800, 633)}, file={'cn': './assets/cn/shop/SHOP_BUY_CONFIRM_AMOUNT.png', 'en': './assets/en/shop/SHOP_BUY_CONFIRM_AMOUNT.png', 'jp': './assets/jp/shop/SHOP_BUY_CONFIRM_AMOUNT.png', 'tw': './assets/tw/shop/SHOP_BUY_CONFIRM_AMOUNT.png'})
SHOP_BUY_CONFIRM_AMOUNT = Button(area={'cn': (756, 622, 827, 653), 'en': (724, 623, 856, 650), 'jp': (756, 623, 826, 653), 'tw': (729, 602, 800, 633)}, color={'cn': (137, 168, 209), 'en': (146, 174, 211), 'jp': (123, 158, 204), 'tw': (138, 171, 211)}, button={'cn': (756, 622, 827, 653), 'en': (724, 623, 856, 650), 'jp': (756, 623, 826, 653), 'tw': (729, 602, 800, 633)}, file={'cn': './assets/cn/shop/SHOP_BUY_CONFIRM_AMOUNT.png', 'en': './assets/en/shop/SHOP_BUY_CONFIRM_AMOUNT.png', 'jp': './assets/jp/shop/SHOP_BUY_CONFIRM_AMOUNT.png', 'tw': './assets/tw/shop/SHOP_BUY_CONFIRM_AMOUNT.png'})
SHOP_BUY_CONFIRM_MISTAKE = Button(area={'cn': (590, 300, 612, 318), 'en': (590, 300, 612, 318), 'jp': (590, 300, 612, 318), 'tw': (590, 300, 612, 318)}, color={'cn': (154, 79, 103), 'en': (154, 79, 103), 'jp': (154, 79, 103), 'tw': (154, 79, 103)}, button={'cn': (590, 300, 612, 318), 'en': (590, 300, 612, 318), 'jp': (590, 300, 612, 318), 'tw': (590, 300, 612, 318)}, file={'cn': './assets/cn/shop/SHOP_BUY_CONFIRM_MISTAKE.png', 'en': './assets/en/shop/SHOP_BUY_CONFIRM_MISTAKE.png', 'jp': './assets/jp/shop/SHOP_BUY_CONFIRM_MISTAKE.png', 'tw': './assets/tw/shop/SHOP_BUY_CONFIRM_MISTAKE.png'})
SHOP_BUY_CONFIRM_SELECT = Button(area={'cn': (604, 642, 676, 671), 'en': (567, 630, 712, 675), 'jp': (588, 638, 689, 669), 'tw': (558, 627, 725, 680)}, color={'cn': (236, 191, 130), 'en': (229, 171, 90), 'jp': (230, 170, 89), 'tw': (225, 155, 60)}, button={'cn': (604, 642, 676, 671), 'en': (567, 630, 712, 675), 'jp': (588, 638, 689, 669), 'tw': (558, 627, 725, 680)}, file={'cn': './assets/cn/shop/SHOP_BUY_CONFIRM_SELECT.png', 'en': './assets/en/shop/SHOP_BUY_CONFIRM_SELECT.png', 'jp': './assets/jp/shop/SHOP_BUY_CONFIRM_SELECT.png', 'tw': './assets/tw/shop/SHOP_BUY_CONFIRM_SELECT.png'})
SHOP_CLICK_SAFE_AREA = Button(area={'cn': (108, 108, 143, 233), 'en': (108, 108, 143, 233), 'jp': (108, 108, 143, 233), 'tw': (108, 108, 143, 233)}, color={'cn': (50, 57, 76), 'en': (50, 57, 76), 'jp': (50, 57, 76), 'tw': (50, 57, 76)}, button={'cn': (108, 108, 143, 233), 'en': (108, 108, 143, 233), 'jp': (108, 108, 143, 233), 'tw': (108, 108, 143, 233)}, file={'cn': './assets/cn/shop/SHOP_CLICK_SAFE_AREA.png', 'en': './assets/en/shop/SHOP_CLICK_SAFE_AREA.png', 'jp': './assets/jp/shop/SHOP_CLICK_SAFE_AREA.png', 'tw': './assets/tw/shop/SHOP_CLICK_SAFE_AREA.png'})

View File

@ -6,8 +6,8 @@ from module.base.template import Template
BOX_USE = Button(area={'cn': (768, 486, 834, 522), 'en': (764, 495, 810, 514), 'jp': (823, 485, 919, 520), 'tw': (768, 486, 834, 522)}, color={'cn': (141, 173, 212), 'en': (162, 187, 220), 'jp': (141, 177, 223), 'tw': (141, 173, 212)}, button={'cn': (756, 480, 916, 528), 'en': (747, 485, 882, 520), 'jp': (757, 475, 919, 533), 'tw': (756, 480, 916, 528)}, file={'cn': './assets/cn/storage/BOX_USE.png', 'en': './assets/en/storage/BOX_USE.png', 'jp': './assets/jp/storage/BOX_USE.png', 'tw': './assets/cn/storage/BOX_USE.png'})
DISASSEMBLE = Button(area={'cn': (357, 666, 456, 690), 'en': (346, 668, 467, 684), 'jp': (357, 663, 456, 691), 'tw': (357, 666, 456, 690)}, color={'cn': (191, 192, 192), 'en': (193, 193, 194), 'jp': (169, 170, 170), 'tw': (191, 192, 192)}, button={'cn': (348, 661, 466, 696), 'en': (346, 659, 467, 698), 'jp': (349, 657, 468, 700), 'tw': (348, 661, 466, 696)}, file={'cn': './assets/cn/storage/DISASSEMBLE.png', 'en': './assets/en/storage/DISASSEMBLE.png', 'jp': './assets/jp/storage/DISASSEMBLE.png', 'tw': './assets/cn/storage/DISASSEMBLE.png'})
DISASSEMBLE_CANCEL = Button(area={'cn': (900, 659, 973, 690), 'en': (894, 665, 979, 684), 'jp': (899, 658, 971, 691), 'tw': (900, 659, 973, 690)}, color={'cn': (186, 186, 187), 'en': (192, 193, 193), 'jp': (167, 167, 168), 'tw': (186, 186, 187)}, button={'cn': (863, 649, 1015, 700), 'en': (868, 653, 1010, 695), 'jp': (860, 647, 1021, 704), 'tw': (863, 649, 1015, 700)}, file={'cn': './assets/cn/storage/DISASSEMBLE_CANCEL.png', 'en': './assets/en/storage/DISASSEMBLE_CANCEL.png', 'jp': './assets/jp/storage/DISASSEMBLE_CANCEL.png', 'tw': './assets/cn/storage/DISASSEMBLE_CANCEL.png'})
DISASSEMBLE_CONFIRM = Button(area={'cn': (1108, 657, 1183, 690), 'en': (1065, 663, 1227, 684), 'jp': (1108, 657, 1185, 691), 'tw': (1108, 657, 1183, 690)}, color={'cn': (202, 149, 143), 'en': (209, 160, 154), 'jp': (198, 134, 126), 'tw': (202, 149, 143)}, button={'cn': (1067, 650, 1225, 698), 'en': (1065, 653, 1227, 695), 'jp': (1070, 645, 1230, 704), 'tw': (1067, 650, 1225, 698)}, file={'cn': './assets/cn/storage/DISASSEMBLE_CONFIRM.png', 'en': './assets/en/storage/DISASSEMBLE_CONFIRM.png', 'jp': './assets/jp/storage/DISASSEMBLE_CONFIRM.png', 'tw': './assets/cn/storage/DISASSEMBLE_CONFIRM.png'})
DISASSEMBLE_CANCEL = Button(area={'cn': (900, 659, 973, 690), 'en': (881, 659, 993, 684), 'jp': (899, 658, 971, 691), 'tw': (900, 659, 973, 690)}, color={'cn': (186, 186, 187), 'en': (192, 192, 193), 'jp': (167, 167, 168), 'tw': (186, 186, 187)}, button={'cn': (863, 649, 1015, 700), 'en': (854, 649, 1021, 699), 'jp': (860, 647, 1021, 704), 'tw': (863, 649, 1015, 700)}, file={'cn': './assets/cn/storage/DISASSEMBLE_CANCEL.png', 'en': './assets/en/storage/DISASSEMBLE_CANCEL.png', 'jp': './assets/jp/storage/DISASSEMBLE_CANCEL.png', 'tw': './assets/cn/storage/DISASSEMBLE_CANCEL.png'})
DISASSEMBLE_CONFIRM = Button(area={'cn': (1108, 657, 1183, 690), 'en': (1063, 658, 1230, 681), 'jp': (1108, 657, 1185, 691), 'tw': (1108, 657, 1183, 690)}, color={'cn': (202, 149, 143), 'en': (204, 152, 145), 'jp': (198, 134, 126), 'tw': (202, 149, 143)}, button={'cn': (1067, 650, 1225, 698), 'en': (1063, 651, 1230, 697), 'jp': (1070, 645, 1230, 704), 'tw': (1067, 650, 1225, 698)}, file={'cn': './assets/cn/storage/DISASSEMBLE_CONFIRM.png', 'en': './assets/en/storage/DISASSEMBLE_CONFIRM.png', 'jp': './assets/jp/storage/DISASSEMBLE_CONFIRM.png', 'tw': './assets/cn/storage/DISASSEMBLE_CONFIRM.png'})
DISASSEMBLE_COUNT_OCR = Button(area={'cn': (612, 662, 687, 695), 'en': (625, 664, 685, 694), 'jp': (612, 662, 687, 695), 'tw': (612, 662, 687, 695)}, color={'cn': (60, 63, 81), 'en': (72, 74, 85), 'jp': (60, 63, 81), 'tw': (60, 63, 81)}, button={'cn': (612, 662, 687, 695), 'en': (625, 664, 685, 694), 'jp': (612, 662, 687, 695), 'tw': (612, 662, 687, 695)}, file={'cn': './assets/cn/storage/DISASSEMBLE_COUNT_OCR.png', 'en': './assets/en/storage/DISASSEMBLE_COUNT_OCR.png', 'jp': './assets/jp/storage/DISASSEMBLE_COUNT_OCR.png', 'tw': './assets/tw/storage/DISASSEMBLE_COUNT_OCR.png'})
DISASSEMBLE_POPUP_CONFIRM = Button(area={'cn': (746, 564, 815, 594), 'en': (717, 568, 841, 590), 'jp': (743, 564, 818, 596), 'tw': (746, 564, 815, 594)}, color={'cn': (148, 179, 219), 'en': (160, 187, 223), 'jp': (127, 166, 214), 'tw': (148, 179, 219)}, button={'cn': (707, 558, 854, 603), 'en': (708, 558, 851, 601), 'jp': (706, 553, 859, 608), 'tw': (707, 558, 854, 603)}, file={'cn': './assets/cn/storage/DISASSEMBLE_POPUP_CONFIRM.png', 'en': './assets/en/storage/DISASSEMBLE_POPUP_CONFIRM.png', 'jp': './assets/jp/storage/DISASSEMBLE_POPUP_CONFIRM.png', 'tw': './assets/cn/storage/DISASSEMBLE_POPUP_CONFIRM.png'})
EQUIPMENT_EMPTY = Button(area={'cn': (1127, 353, 1155, 395), 'en': (1127, 353, 1155, 395), 'jp': (1127, 353, 1155, 395), 'tw': (1127, 353, 1155, 395)}, color={'cn': (95, 74, 86), 'en': (95, 74, 86), 'jp': (95, 74, 86), 'tw': (95, 74, 86)}, button={'cn': (1127, 353, 1155, 395), 'en': (1127, 353, 1155, 395), 'jp': (1127, 353, 1155, 395), 'tw': (1127, 353, 1155, 395)}, file={'cn': './assets/cn/storage/EQUIPMENT_EMPTY.png', 'en': './assets/en/storage/EQUIPMENT_EMPTY.png', 'jp': './assets/jp/storage/EQUIPMENT_EMPTY.png', 'tw': './assets/tw/storage/EQUIPMENT_EMPTY.png'})

View File

@ -866,10 +866,11 @@
"MaaRoguelike": {
"Theme": {
"type": "select",
"value": "Phantom",
"value": "Sami",
"option": [
"Phantom",
"Mizuki"
"Mizuki",
"Sami"
]
},
"Mode": {

View File

@ -140,8 +140,8 @@ MaaMall:
MaaRoguelike:
Theme:
value: Phantom
option: [Phantom, Mizuki]
value: Sami
option: [Phantom, Mizuki, Sami]
Mode:
value: 0
option: [0, 1]

View File

@ -92,7 +92,7 @@ class GeneratedConfig:
MaaMall_BlackList = '碳 > 家具 > 加急许可'
# Group `MaaRoguelike`
MaaRoguelike_Theme = 'Phantom' # Phantom, Mizuki
MaaRoguelike_Theme = 'Sami' # Phantom, Mizuki, Sami
MaaRoguelike_Mode = 0 # 0, 1
MaaRoguelike_StartsCount = 9999999
MaaRoguelike_InvestmentsCount = 9999999

View File

@ -1,3 +1,6 @@
import sys
sys.path.append('i:/AzurLaneAutoScript')
from cached_property import cached_property
from module.base.timer import timer
@ -124,7 +127,7 @@ if __name__ == '__main__':
"""
# Ensure running in mod root folder
import os
os.chdir('../../')
os.chdir(os.path.join(os.path.dirname(__file__), "../../"))
ConfigGenerator().generate()
os.chdir('../../')
ConfigUpdater().update_file('template', is_template=True)

View File

@ -475,7 +475,8 @@
"name": "MaaRoguelike.Theme.name",
"help": "MaaRoguelike.Theme.help",
"Phantom": "Phantom",
"Mizuki": "Mizuki"
"Mizuki": "Mizuki",
"Sami": "Sami"
},
"Mode": {
"name": "MaaRoguelike.Mode.name",

View File

@ -475,7 +475,8 @@
"name": "MaaRoguelike.Theme.name",
"help": "MaaRoguelike.Theme.help",
"Phantom": "Phantom",
"Mizuki": "Mizuki"
"Mizuki": "Mizuki",
"Sami": "Sami"
},
"Mode": {
"name": "MaaRoguelike.Mode.name",

View File

@ -475,7 +475,8 @@
"name": "肉鸽主题",
"help": "需在集成战略界面手动将对应主题添加到终端",
"Phantom": "傀影与猩红血钻",
"Mizuki": "水月与深蓝之树"
"Mizuki": "水月与深蓝之树",
"Sami": "探索者的银凇止境"
},
"Mode": {
"name": "策略",

View File

@ -475,7 +475,8 @@
"name": "MaaRoguelike.Theme.name",
"help": "MaaRoguelike.Theme.help",
"Phantom": "Phantom",
"Mizuki": "Mizuki"
"Mizuki": "Mizuki",
"Sami": "Sami"
},
"Mode": {
"name": "MaaRoguelike.Mode.name",