Upd: event 20201126 rerun
BIN
assets/cn/campaign/EVENT_20201126_ENTRANCE_TEMP.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
assets/cn/campaign/EVENT_20201126_PT_ICON.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
assets/cn/campaign/EVENT_20260417_PT_ICON.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
assets/shop/os/METARedBookT1_2.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
assets/shop/os/OrdnanceTestingReportT3_6.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
assets/shop/os/RepairPackFull2_2.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
assets/shop/os/RepairPackFull_2.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
assets/shop/os/TuningSampleOffence_4.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
@@ -289,3 +289,4 @@ To add a new event, add a new row in here, and run `python -m module.config.conf
|
|||||||
| 20260402 | event 20260326 cn | The Vagabond’s Recruitment Plan | - | - | - | 漫遊者招募計劃 |
|
| 20260402 | event 20260326 cn | The Vagabond’s Recruitment Plan | - | - | - | 漫遊者招募計劃 |
|
||||||
| 20260416 | event 20220915 cn | Violet Tempest Blooming Lycoris | - | - | - | 復刻紫絳槿嵐 |
|
| 20260416 | event 20220915 cn | Violet Tempest Blooming Lycoris | - | - | - | 復刻紫絳槿嵐 |
|
||||||
| 20260417 | event 20260417 cn | Vacation Lane – Beachside Brilliance | 假日航线闪耀海滨 | Vacation Lane – Beachside Brilliance | バケーションレーン・きらめく砂浜 | - |
|
| 20260417 | event 20260417 cn | Vacation Lane – Beachside Brilliance | 假日航线闪耀海滨 | Vacation Lane – Beachside Brilliance | バケーションレーン・きらめく砂浜 | - |
|
||||||
|
| 20260417 | event 20201126 cn | Vacation Lane Rerun | 复刻假日航线 | Vacation Lane Rerun | バケーションレーン(復刻) | - |
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
from module.base.button import Button
|
from module.base.button import Button
|
||||||
|
from module.campaign.assets import EVENT_20201126_ENTRANCE_TEMP, EVENT_20201126_PT_ICON
|
||||||
from module.campaign.campaign_base import CampaignBase as CampaignBase_
|
from module.campaign.campaign_base import CampaignBase as CampaignBase_
|
||||||
from module.exception import CampaignNameError
|
from module.exception import CampaignNameError
|
||||||
from module.logger import logger
|
from module.logger import logger
|
||||||
|
from module.ui.page import page_campaign_menu, page_event, page_main_white
|
||||||
|
|
||||||
EVENT_ANIMATION = Button(area=(49, 229, 119, 400), color=(118, 215, 240), button=(49, 229, 119, 400),
|
EVENT_ANIMATION = Button(area=(49, 229, 119, 400), color=(118, 215, 240), button=(49, 229, 119, 400),
|
||||||
name='EVENT_ANIMATION')
|
name='EVENT_ANIMATION')
|
||||||
@@ -16,6 +18,19 @@ class CampaignBase(CampaignBase_):
|
|||||||
Mode switch is meaningless.
|
Mode switch is meaningless.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def ui_goto_event(self):
|
||||||
|
if self.appear(EVENT_20201126_PT_ICON, offset=(20, 20)) and self.ui_page_appear(page_event):
|
||||||
|
logger.info('Already at EVENT_20201126')
|
||||||
|
return True
|
||||||
|
self.ui_ensure(page_campaign_menu)
|
||||||
|
if self.is_event_entrance_available():
|
||||||
|
self.ui_ensure(page_main_white)
|
||||||
|
self.ui_click(EVENT_20201126_ENTRANCE_TEMP,
|
||||||
|
check_button=EVENT_20201126_PT_ICON,
|
||||||
|
appear_button=EVENT_20201126_ENTRANCE_TEMP)
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _campaign_separate_name(name):
|
def _campaign_separate_name(name):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from module.base.utils import get_color, red_overlay_transparency
|
from module.base.utils import get_color, red_overlay_transparency
|
||||||
from module.campaign.campaign_base import CampaignBase as CampaignBase_
|
from module.campaign.campaign_base import CampaignBase as CampaignBase_
|
||||||
from module.handler.assets import MAP_ENEMY_SEARCHING
|
from module.handler.assets import MAP_ENEMY_SEARCHING
|
||||||
from module.map.assets import SWITCH_OVER
|
from module.ui.page import page_event
|
||||||
|
|
||||||
|
|
||||||
class CampaignBase(CampaignBase_):
|
class CampaignBase(CampaignBase_):
|
||||||
@@ -12,3 +12,9 @@ class CampaignBase(CampaignBase_):
|
|||||||
return red_overlay_transparency(
|
return red_overlay_transparency(
|
||||||
MAP_ENEMY_SEARCHING.color, get_color(self.device.image, MAP_ENEMY_SEARCHING.area)
|
MAP_ENEMY_SEARCHING.color, get_color(self.device.image, MAP_ENEMY_SEARCHING.area)
|
||||||
) > self.MAP_ENEMY_SEARCHING_OVERLAY_TRANSPARENCY_THRESHOLD
|
) > self.MAP_ENEMY_SEARCHING_OVERLAY_TRANSPARENCY_THRESHOLD
|
||||||
|
|
||||||
|
def handle_exp_info(self):
|
||||||
|
# Random background hits EXP_INFO_B
|
||||||
|
if self.ui_page_appear(page_event):
|
||||||
|
return False
|
||||||
|
return super().handle_exp_info()
|
||||||
|
|||||||
@@ -1,12 +1,23 @@
|
|||||||
from module.base.button import Button
|
from module.base.button import Button
|
||||||
|
from module.campaign.assets import EVENT_20260417_PT_ICON
|
||||||
from module.campaign.campaign_base import CampaignBase as CampaignBase_
|
from module.campaign.campaign_base import CampaignBase as CampaignBase_
|
||||||
from module.logger import logger
|
from module.logger import logger
|
||||||
|
from module.ui.page import page_campaign_menu, page_event
|
||||||
|
|
||||||
EVENT_ANIMATION = Button(area=(49, 229, 119, 400), color=(118, 215, 240), button=(49, 229, 119, 400),
|
EVENT_ANIMATION = Button(area=(49, 229, 119, 400), color=(118, 215, 240), button=(49, 229, 119, 400),
|
||||||
name='EVENT_ANIMATION')
|
name='EVENT_ANIMATION')
|
||||||
|
|
||||||
|
|
||||||
class CampaignBase(CampaignBase_):
|
class CampaignBase(CampaignBase_):
|
||||||
|
def ui_goto_event(self):
|
||||||
|
if self.appear(EVENT_20260417_PT_ICON, offset=(20, 20)) and self.ui_page_appear(page_event):
|
||||||
|
logger.info('Already at EVENT_20260417')
|
||||||
|
return True
|
||||||
|
self.ui_ensure(page_campaign_menu)
|
||||||
|
if self.is_event_entrance_available():
|
||||||
|
self.ui_goto(page_event)
|
||||||
|
return True
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _campaign_ocr_result_process(result):
|
def _campaign_ocr_result_process(result):
|
||||||
result = CampaignBase_._campaign_ocr_result_process(result)
|
result = CampaignBase_._campaign_ocr_result_process(result)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from module.base.utils import get_color, red_overlay_transparency
|
from module.base.utils import get_color, red_overlay_transparency
|
||||||
from ..campaign_war_archives.campaign_base import CampaignBase as CampaignBase_
|
|
||||||
from module.handler.assets import MAP_ENEMY_SEARCHING
|
from module.handler.assets import MAP_ENEMY_SEARCHING
|
||||||
from module.map.assets import SWITCH_OVER
|
from module.ui.page import page_event
|
||||||
|
from ..campaign_war_archives.campaign_base import CampaignBase as CampaignBase_
|
||||||
|
|
||||||
|
|
||||||
class CampaignBase(CampaignBase_):
|
class CampaignBase(CampaignBase_):
|
||||||
@@ -12,3 +12,9 @@ class CampaignBase(CampaignBase_):
|
|||||||
return red_overlay_transparency(
|
return red_overlay_transparency(
|
||||||
MAP_ENEMY_SEARCHING.color, get_color(self.device.image, MAP_ENEMY_SEARCHING.area)
|
MAP_ENEMY_SEARCHING.color, get_color(self.device.image, MAP_ENEMY_SEARCHING.area)
|
||||||
) > self.MAP_ENEMY_SEARCHING_OVERLAY_TRANSPARENCY_THRESHOLD
|
) > self.MAP_ENEMY_SEARCHING_OVERLAY_TRANSPARENCY_THRESHOLD
|
||||||
|
|
||||||
|
def handle_exp_info(self):
|
||||||
|
# Random background hits EXP_INFO_B
|
||||||
|
if self.ui_page_appear(page_event):
|
||||||
|
return False
|
||||||
|
return super().handle_exp_info()
|
||||||
|
|||||||
@@ -71,7 +71,10 @@ class GitManager(DeployConfig):
|
|||||||
@property
|
@property
|
||||||
def goc_client(self):
|
def goc_client(self):
|
||||||
client = GitOverCdnClient(
|
client = GitOverCdnClient(
|
||||||
url='https://vip.123pan.cn/1818706573/pack/LmeSzinc_AzurLaneAutoScript_master',
|
url=[
|
||||||
|
'https://vip.123pan.cn/1818706573/pack/LmeSzinc_AzurLaneAutoScript_master',
|
||||||
|
'https://1818706573.v.123yx.com/1818706573/pack/LmeSzinc_AzurLaneAutoScript_master',
|
||||||
|
],
|
||||||
folder=self.root_filepath,
|
folder=self.root_filepath,
|
||||||
source='origin',
|
source='origin',
|
||||||
branch='master',
|
branch='master',
|
||||||
|
|||||||
@@ -52,10 +52,14 @@ class GitOverCdnClient:
|
|||||||
def __init__(self, url, folder, source='origin', branch='master', git='git'):
|
def __init__(self, url, folder, source='origin', branch='master', git='git'):
|
||||||
"""
|
"""
|
||||||
Args:
|
Args:
|
||||||
url: http://127.0.0.1:22251/pack/LmeSzinc_AzurLaneAutoScript_master/
|
url (str | list[str]): http://127.0.0.1:22251/pack/LmeSzinc_AzurLaneAutoScript_master/
|
||||||
folder: D:/AzurLaneAutoScript
|
folder: D:/AzurLaneAutoScript
|
||||||
"""
|
"""
|
||||||
self.url = url.strip('/')
|
if isinstance(url, str):
|
||||||
|
self.urls = [url.strip('/')]
|
||||||
|
else:
|
||||||
|
self.urls = [u.strip('/') for u in url]
|
||||||
|
self.url = self.urls[0]
|
||||||
self.folder = folder.replace('\\', '/')
|
self.folder = folder.replace('\\', '/')
|
||||||
self.source = source
|
self.source = source
|
||||||
self.branch = branch
|
self.branch = branch
|
||||||
@@ -100,29 +104,31 @@ class GitOverCdnClient:
|
|||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def latest_commit(self) -> str:
|
def latest_commit(self) -> str:
|
||||||
try:
|
for url_base in self.urls:
|
||||||
|
self.url = url_base
|
||||||
url = self.urlpath('/latest.json')
|
url = self.urlpath('/latest.json')
|
||||||
self.logger.info(f'Fetch url: {url}')
|
self.logger.info(f'Fetch url: {url}')
|
||||||
resp = self.session.get(url, timeout=3)
|
|
||||||
except Exception as e:
|
|
||||||
self.logger.error(f'Failed to get remote commit: {e}')
|
|
||||||
return ''
|
|
||||||
|
|
||||||
if resp.status_code == 200:
|
|
||||||
try:
|
try:
|
||||||
info = json.loads(resp.text)
|
resp = self.session.get(url, timeout=3)
|
||||||
commit = info['commit']
|
except Exception as e:
|
||||||
self.logger.attr('LatestCommit', commit)
|
self.logger.error(f'Failed to get remote commit: {e}')
|
||||||
return commit
|
continue
|
||||||
except json.JSONDecodeError:
|
|
||||||
self.logger.error(f'Failed to get remote commit, response is not a json: {resp.text}')
|
if resp.status_code == 200:
|
||||||
return ''
|
try:
|
||||||
except KeyError:
|
info = json.loads(resp.text)
|
||||||
self.logger.error(f'Failed to get remote commit, key "commit" is not found: {resp.text}')
|
commit = info['commit']
|
||||||
return ''
|
self.logger.attr('LatestCommit', commit)
|
||||||
else:
|
return commit
|
||||||
self.logger.error(f'Failed to get remote commit, status={resp.status_code}, text={resp.text}')
|
except json.JSONDecodeError:
|
||||||
return ''
|
self.logger.error(f'Failed to get remote commit, response is not a json: {resp.text}')
|
||||||
|
except KeyError:
|
||||||
|
self.logger.error(f'Failed to get remote commit, key "commit" is not found: {resp.text}')
|
||||||
|
else:
|
||||||
|
self.logger.error(f'Failed to get remote commit, status={resp.status_code}, text={resp.text}')
|
||||||
|
|
||||||
|
self.url = self.urls[0]
|
||||||
|
return ''
|
||||||
|
|
||||||
def download_pack(self):
|
def download_pack(self):
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -11,10 +11,13 @@ CHAPTER_20241219_SP = Button(area={'cn': (17, 372, 34, 388), 'en': (17, 372, 34,
|
|||||||
CHAPTER_NEXT = Button(area={'cn': (1216, 362, 1232, 388), 'en': (1216, 362, 1232, 388), 'jp': (1216, 362, 1232, 388), 'tw': (1216, 362, 1232, 388)}, color={'cn': (121, 150, 198), 'en': (121, 150, 198), 'jp': (121, 150, 198), 'tw': (121, 150, 198)}, button={'cn': (1216, 362, 1232, 388), 'en': (1216, 362, 1232, 388), 'jp': (1216, 362, 1232, 388), 'tw': (1216, 362, 1232, 388)}, file={'cn': './assets/cn/campaign/CHAPTER_NEXT.png', 'en': './assets/en/campaign/CHAPTER_NEXT.png', 'jp': './assets/jp/campaign/CHAPTER_NEXT.png', 'tw': './assets/tw/campaign/CHAPTER_NEXT.png'})
|
CHAPTER_NEXT = Button(area={'cn': (1216, 362, 1232, 388), 'en': (1216, 362, 1232, 388), 'jp': (1216, 362, 1232, 388), 'tw': (1216, 362, 1232, 388)}, color={'cn': (121, 150, 198), 'en': (121, 150, 198), 'jp': (121, 150, 198), 'tw': (121, 150, 198)}, button={'cn': (1216, 362, 1232, 388), 'en': (1216, 362, 1232, 388), 'jp': (1216, 362, 1232, 388), 'tw': (1216, 362, 1232, 388)}, file={'cn': './assets/cn/campaign/CHAPTER_NEXT.png', 'en': './assets/en/campaign/CHAPTER_NEXT.png', 'jp': './assets/jp/campaign/CHAPTER_NEXT.png', 'tw': './assets/tw/campaign/CHAPTER_NEXT.png'})
|
||||||
CHAPTER_PREV = Button(area={'cn': (42, 360, 58, 387), 'en': (42, 360, 58, 387), 'jp': (42, 360, 58, 387), 'tw': (42, 360, 58, 387)}, color={'cn': (105, 133, 169), 'en': (105, 133, 169), 'jp': (105, 133, 169), 'tw': (105, 133, 169)}, button={'cn': (42, 360, 58, 387), 'en': (42, 360, 58, 387), 'jp': (42, 360, 58, 387), 'tw': (42, 360, 58, 387)}, file={'cn': './assets/cn/campaign/CHAPTER_PREV.png', 'en': './assets/en/campaign/CHAPTER_PREV.png', 'jp': './assets/jp/campaign/CHAPTER_PREV.png', 'tw': './assets/tw/campaign/CHAPTER_PREV.png'})
|
CHAPTER_PREV = Button(area={'cn': (42, 360, 58, 387), 'en': (42, 360, 58, 387), 'jp': (42, 360, 58, 387), 'tw': (42, 360, 58, 387)}, color={'cn': (105, 133, 169), 'en': (105, 133, 169), 'jp': (105, 133, 169), 'tw': (105, 133, 169)}, button={'cn': (42, 360, 58, 387), 'en': (42, 360, 58, 387), 'jp': (42, 360, 58, 387), 'tw': (42, 360, 58, 387)}, file={'cn': './assets/cn/campaign/CHAPTER_PREV.png', 'en': './assets/en/campaign/CHAPTER_PREV.png', 'jp': './assets/jp/campaign/CHAPTER_PREV.png', 'tw': './assets/tw/campaign/CHAPTER_PREV.png'})
|
||||||
COMMISSION_NOTICE_AT_CAMPAIGN = Button(area={'cn': (1077, 637, 1083, 643), 'en': (1077, 637, 1083, 643), 'jp': (1077, 637, 1083, 643), 'tw': (1077, 637, 1083, 643)}, color={'cn': (172, 72, 49), 'en': (172, 72, 49), 'jp': (172, 72, 49), 'tw': (172, 72, 49)}, button={'cn': (1077, 637, 1083, 643), 'en': (1077, 637, 1083, 643), 'jp': (1077, 637, 1083, 643), 'tw': (1077, 637, 1083, 643)}, file={'cn': './assets/cn/campaign/COMMISSION_NOTICE_AT_CAMPAIGN.png', 'en': './assets/en/campaign/COMMISSION_NOTICE_AT_CAMPAIGN.png', 'jp': './assets/jp/campaign/COMMISSION_NOTICE_AT_CAMPAIGN.png', 'tw': './assets/tw/campaign/COMMISSION_NOTICE_AT_CAMPAIGN.png'})
|
COMMISSION_NOTICE_AT_CAMPAIGN = Button(area={'cn': (1077, 637, 1083, 643), 'en': (1077, 637, 1083, 643), 'jp': (1077, 637, 1083, 643), 'tw': (1077, 637, 1083, 643)}, color={'cn': (172, 72, 49), 'en': (172, 72, 49), 'jp': (172, 72, 49), 'tw': (172, 72, 49)}, button={'cn': (1077, 637, 1083, 643), 'en': (1077, 637, 1083, 643), 'jp': (1077, 637, 1083, 643), 'tw': (1077, 637, 1083, 643)}, file={'cn': './assets/cn/campaign/COMMISSION_NOTICE_AT_CAMPAIGN.png', 'en': './assets/en/campaign/COMMISSION_NOTICE_AT_CAMPAIGN.png', 'jp': './assets/jp/campaign/COMMISSION_NOTICE_AT_CAMPAIGN.png', 'tw': './assets/tw/campaign/COMMISSION_NOTICE_AT_CAMPAIGN.png'})
|
||||||
|
EVENT_20201126_ENTRANCE_TEMP = Button(area={'cn': (1023, 368, 1100, 407), 'en': (1023, 368, 1100, 407), 'jp': (1023, 368, 1100, 407), 'tw': (1023, 368, 1100, 407)}, color={'cn': (160, 208, 243), 'en': (160, 208, 243), 'jp': (160, 208, 243), 'tw': (160, 208, 243)}, button={'cn': (1023, 368, 1100, 407), 'en': (1023, 368, 1100, 407), 'jp': (1023, 368, 1100, 407), 'tw': (1023, 368, 1100, 407)}, file={'cn': './assets/cn/campaign/EVENT_20201126_ENTRANCE_TEMP.png', 'en': './assets/cn/campaign/EVENT_20201126_ENTRANCE_TEMP.png', 'jp': './assets/cn/campaign/EVENT_20201126_ENTRANCE_TEMP.png', 'tw': './assets/cn/campaign/EVENT_20201126_ENTRANCE_TEMP.png'})
|
||||||
|
EVENT_20201126_PT_ICON = Button(area={'cn': (1108, 102, 1133, 127), 'en': (1108, 102, 1133, 127), 'jp': (1108, 102, 1133, 127), 'tw': (1108, 102, 1133, 127)}, color={'cn': (231, 121, 159), 'en': (231, 121, 159), 'jp': (231, 121, 159), 'tw': (231, 121, 159)}, button={'cn': (1108, 102, 1133, 127), 'en': (1108, 102, 1133, 127), 'jp': (1108, 102, 1133, 127), 'tw': (1108, 102, 1133, 127)}, file={'cn': './assets/cn/campaign/EVENT_20201126_PT_ICON.png', 'en': './assets/cn/campaign/EVENT_20201126_PT_ICON.png', 'jp': './assets/cn/campaign/EVENT_20201126_PT_ICON.png', 'tw': './assets/cn/campaign/EVENT_20201126_PT_ICON.png'})
|
||||||
EVENT_20221124_ENTRANCE = Button(area={'cn': (1037, 162, 1077, 195), 'en': (1037, 162, 1077, 195), 'jp': (1037, 162, 1077, 195), 'tw': (1037, 162, 1077, 195)}, color={'cn': (207, 168, 148), 'en': (207, 168, 148), 'jp': (207, 168, 148), 'tw': (207, 168, 148)}, button={'cn': (1037, 162, 1077, 195), 'en': (1037, 162, 1077, 195), 'jp': (1037, 162, 1077, 195), 'tw': (1037, 162, 1077, 195)}, file={'cn': './assets/cn/campaign/EVENT_20221124_ENTRANCE.png', 'en': './assets/cn/campaign/EVENT_20221124_ENTRANCE.png', 'jp': './assets/cn/campaign/EVENT_20221124_ENTRANCE.png', 'tw': './assets/cn/campaign/EVENT_20221124_ENTRANCE.png'})
|
EVENT_20221124_ENTRANCE = Button(area={'cn': (1037, 162, 1077, 195), 'en': (1037, 162, 1077, 195), 'jp': (1037, 162, 1077, 195), 'tw': (1037, 162, 1077, 195)}, color={'cn': (207, 168, 148), 'en': (207, 168, 148), 'jp': (207, 168, 148), 'tw': (207, 168, 148)}, button={'cn': (1037, 162, 1077, 195), 'en': (1037, 162, 1077, 195), 'jp': (1037, 162, 1077, 195), 'tw': (1037, 162, 1077, 195)}, file={'cn': './assets/cn/campaign/EVENT_20221124_ENTRANCE.png', 'en': './assets/cn/campaign/EVENT_20221124_ENTRANCE.png', 'jp': './assets/cn/campaign/EVENT_20221124_ENTRANCE.png', 'tw': './assets/cn/campaign/EVENT_20221124_ENTRANCE.png'})
|
||||||
EVENT_20221124_PT_ICON = Button(area={'cn': (1106, 109, 1135, 130), 'en': (1071, 109, 1101, 129), 'jp': (1106, 109, 1135, 130), 'tw': (1106, 109, 1135, 130)}, color={'cn': (151, 116, 139), 'en': (152, 115, 138), 'jp': (151, 116, 139), 'tw': (151, 116, 139)}, button={'cn': (1106, 109, 1135, 130), 'en': (1071, 109, 1101, 129), 'jp': (1106, 109, 1135, 130), 'tw': (1106, 109, 1135, 130)}, file={'cn': './assets/cn/campaign/EVENT_20221124_PT_ICON.png', 'en': './assets/en/campaign/EVENT_20221124_PT_ICON.png', 'jp': './assets/cn/campaign/EVENT_20221124_PT_ICON.png', 'tw': './assets/cn/campaign/EVENT_20221124_PT_ICON.png'})
|
EVENT_20221124_PT_ICON = Button(area={'cn': (1106, 109, 1135, 130), 'en': (1071, 109, 1101, 129), 'jp': (1106, 109, 1135, 130), 'tw': (1106, 109, 1135, 130)}, color={'cn': (151, 116, 139), 'en': (152, 115, 138), 'jp': (151, 116, 139), 'tw': (151, 116, 139)}, button={'cn': (1106, 109, 1135, 130), 'en': (1071, 109, 1101, 129), 'jp': (1106, 109, 1135, 130), 'tw': (1106, 109, 1135, 130)}, file={'cn': './assets/cn/campaign/EVENT_20221124_PT_ICON.png', 'en': './assets/en/campaign/EVENT_20221124_PT_ICON.png', 'jp': './assets/cn/campaign/EVENT_20221124_PT_ICON.png', 'tw': './assets/cn/campaign/EVENT_20221124_PT_ICON.png'})
|
||||||
EVENT_20230817_STORY = Button(area={'cn': (610, 320, 670, 380), 'en': (610, 320, 670, 380), 'jp': (610, 320, 670, 380), 'tw': (610, 320, 670, 380)}, color={'cn': (183, 180, 190), 'en': (183, 180, 190), 'jp': (183, 180, 190), 'tw': (183, 180, 190)}, button={'cn': (610, 320, 670, 380), 'en': (610, 320, 670, 380), 'jp': (610, 320, 670, 380), 'tw': (610, 320, 670, 380)}, file={'cn': './assets/cn/campaign/EVENT_20230817_STORY.png', 'en': './assets/en/campaign/EVENT_20230817_STORY.png', 'jp': './assets/jp/campaign/EVENT_20230817_STORY.png', 'tw': './assets/tw/campaign/EVENT_20230817_STORY.png'})
|
EVENT_20230817_STORY = Button(area={'cn': (610, 320, 670, 380), 'en': (610, 320, 670, 380), 'jp': (610, 320, 670, 380), 'tw': (610, 320, 670, 380)}, color={'cn': (183, 180, 190), 'en': (183, 180, 190), 'jp': (183, 180, 190), 'tw': (183, 180, 190)}, button={'cn': (610, 320, 670, 380), 'en': (610, 320, 670, 380), 'jp': (610, 320, 670, 380), 'tw': (610, 320, 670, 380)}, file={'cn': './assets/cn/campaign/EVENT_20230817_STORY.png', 'en': './assets/en/campaign/EVENT_20230817_STORY.png', 'jp': './assets/jp/campaign/EVENT_20230817_STORY.png', 'tw': './assets/tw/campaign/EVENT_20230817_STORY.png'})
|
||||||
EVENT_20250724_PT_ICON = Button(area={'cn': (1102, 106, 1139, 121), 'en': (1067, 108, 1104, 123), 'jp': (1102, 106, 1139, 121), 'tw': (1102, 106, 1139, 121)}, color={'cn': (95, 103, 93), 'en': (97, 101, 94), 'jp': (95, 103, 93), 'tw': (95, 103, 93)}, button={'cn': (1102, 106, 1139, 121), 'en': (1067, 108, 1104, 123), 'jp': (1102, 106, 1139, 121), 'tw': (1102, 106, 1139, 121)}, file={'cn': './assets/cn/campaign/EVENT_20250724_PT_ICON.png', 'en': './assets/en/campaign/EVENT_20250724_PT_ICON.png', 'jp': './assets/cn/campaign/EVENT_20250724_PT_ICON.png', 'tw': './assets/cn/campaign/EVENT_20250724_PT_ICON.png'})
|
EVENT_20250724_PT_ICON = Button(area={'cn': (1102, 106, 1139, 121), 'en': (1067, 108, 1104, 123), 'jp': (1102, 106, 1139, 121), 'tw': (1102, 106, 1139, 121)}, color={'cn': (95, 103, 93), 'en': (97, 101, 94), 'jp': (95, 103, 93), 'tw': (95, 103, 93)}, button={'cn': (1102, 106, 1139, 121), 'en': (1067, 108, 1104, 123), 'jp': (1102, 106, 1139, 121), 'tw': (1102, 106, 1139, 121)}, file={'cn': './assets/cn/campaign/EVENT_20250724_PT_ICON.png', 'en': './assets/en/campaign/EVENT_20250724_PT_ICON.png', 'jp': './assets/cn/campaign/EVENT_20250724_PT_ICON.png', 'tw': './assets/cn/campaign/EVENT_20250724_PT_ICON.png'})
|
||||||
|
EVENT_20260417_PT_ICON = Button(area={'cn': (1110, 106, 1133, 130), 'en': (1110, 106, 1133, 130), 'jp': (1110, 106, 1133, 130), 'tw': (1110, 106, 1133, 130)}, color={'cn': (119, 177, 213), 'en': (119, 177, 213), 'jp': (119, 177, 213), 'tw': (119, 177, 213)}, button={'cn': (1110, 106, 1133, 130), 'en': (1110, 106, 1133, 130), 'jp': (1110, 106, 1133, 130), 'tw': (1110, 106, 1133, 130)}, file={'cn': './assets/cn/campaign/EVENT_20260417_PT_ICON.png', 'en': './assets/cn/campaign/EVENT_20260417_PT_ICON.png', 'jp': './assets/cn/campaign/EVENT_20260417_PT_ICON.png', 'tw': './assets/cn/campaign/EVENT_20260417_PT_ICON.png'})
|
||||||
OCR_COIN = Button(area={'cn': (815, 23, 922, 51), 'en': (815, 23, 922, 51), 'jp': (815, 23, 922, 51), 'tw': (815, 23, 922, 51)}, color={'cn': (61, 61, 73), 'en': (61, 61, 73), 'jp': (61, 61, 73), 'tw': (61, 61, 73)}, button={'cn': (815, 23, 922, 51), 'en': (815, 23, 922, 51), 'jp': (815, 23, 922, 51), 'tw': (815, 23, 922, 51)}, file={'cn': './assets/cn/campaign/OCR_COIN.png', 'en': './assets/en/campaign/OCR_COIN.png', 'jp': './assets/jp/campaign/OCR_COIN.png', 'tw': './assets/tw/campaign/OCR_COIN.png'})
|
OCR_COIN = Button(area={'cn': (815, 23, 922, 51), 'en': (815, 23, 922, 51), 'jp': (815, 23, 922, 51), 'tw': (815, 23, 922, 51)}, color={'cn': (61, 61, 73), 'en': (61, 61, 73), 'jp': (61, 61, 73), 'tw': (61, 61, 73)}, button={'cn': (815, 23, 922, 51), 'en': (815, 23, 922, 51), 'jp': (815, 23, 922, 51), 'tw': (815, 23, 922, 51)}, file={'cn': './assets/cn/campaign/OCR_COIN.png', 'en': './assets/en/campaign/OCR_COIN.png', 'jp': './assets/jp/campaign/OCR_COIN.png', 'tw': './assets/tw/campaign/OCR_COIN.png'})
|
||||||
OCR_COIN_LIMIT = Button(area={'cn': (807, 0, 944, 19), 'en': (807, 0, 944, 19), 'jp': (807, 0, 944, 19), 'tw': (807, 0, 944, 19)}, color={'cn': (206, 206, 206), 'en': (206, 206, 206), 'jp': (206, 206, 206), 'tw': (206, 206, 206)}, button={'cn': (807, 0, 944, 19), 'en': (807, 0, 944, 19), 'jp': (807, 0, 944, 19), 'tw': (807, 0, 944, 19)}, file={'cn': './assets/cn/campaign/OCR_COIN_LIMIT.png', 'en': './assets/en/campaign/OCR_COIN_LIMIT.png', 'jp': './assets/jp/campaign/OCR_COIN_LIMIT.png', 'tw': './assets/tw/campaign/OCR_COIN_LIMIT.png'})
|
OCR_COIN_LIMIT = Button(area={'cn': (807, 0, 944, 19), 'en': (807, 0, 944, 19), 'jp': (807, 0, 944, 19), 'tw': (807, 0, 944, 19)}, color={'cn': (206, 206, 206), 'en': (206, 206, 206), 'jp': (206, 206, 206), 'tw': (206, 206, 206)}, button={'cn': (807, 0, 944, 19), 'en': (807, 0, 944, 19), 'jp': (807, 0, 944, 19), 'tw': (807, 0, 944, 19)}, file={'cn': './assets/cn/campaign/OCR_COIN_LIMIT.png', 'en': './assets/en/campaign/OCR_COIN_LIMIT.png', 'jp': './assets/jp/campaign/OCR_COIN_LIMIT.png', 'tw': './assets/tw/campaign/OCR_COIN_LIMIT.png'})
|
||||||
OCR_EVENT_PT = Button(area={'cn': (1196, 109, 1280, 131), 'en': (1190, 109, 1280, 129), 'jp': (1196, 109, 1280, 131), 'tw': (1196, 109, 1280, 131)}, color={'cn': (121, 110, 59), 'en': (88, 78, 51), 'jp': (121, 110, 59), 'tw': (121, 110, 59)}, button={'cn': (1196, 109, 1280, 131), 'en': (1190, 109, 1280, 129), 'jp': (1196, 109, 1280, 131), 'tw': (1196, 109, 1280, 131)}, file={'cn': './assets/cn/campaign/OCR_EVENT_PT.png', 'en': './assets/en/campaign/OCR_EVENT_PT.png', 'jp': './assets/jp/campaign/OCR_EVENT_PT.png', 'tw': './assets/tw/campaign/OCR_EVENT_PT.png'})
|
OCR_EVENT_PT = Button(area={'cn': (1196, 109, 1280, 131), 'en': (1190, 109, 1280, 129), 'jp': (1196, 109, 1280, 131), 'tw': (1196, 109, 1280, 131)}, color={'cn': (121, 110, 59), 'en': (88, 78, 51), 'jp': (121, 110, 59), 'tw': (121, 110, 59)}, button={'cn': (1196, 109, 1280, 131), 'en': (1190, 109, 1280, 129), 'jp': (1196, 109, 1280, 131), 'tw': (1196, 109, 1280, 131)}, file={'cn': './assets/cn/campaign/OCR_EVENT_PT.png', 'en': './assets/en/campaign/OCR_EVENT_PT.png', 'jp': './assets/jp/campaign/OCR_EVENT_PT.png', 'tw': './assets/tw/campaign/OCR_EVENT_PT.png'})
|
||||||
|
|||||||
@@ -177,6 +177,7 @@ class CampaignRun(CampaignEvent, ShopStatus):
|
|||||||
logger.info(f'Stage name {name} is from campaign_main')
|
logger.info(f'Stage name {name} is from campaign_main')
|
||||||
folder = 'campaign_main'
|
folder = 'campaign_main'
|
||||||
else:
|
else:
|
||||||
|
folder = self.config.cross_get('GemsFarming.Campaign.Event')
|
||||||
if folder is not None:
|
if folder is not None:
|
||||||
logger.info(f'Stage name {name} is from event {folder}')
|
logger.info(f'Stage name {name} is from event {folder}')
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -1967,23 +1967,27 @@
|
|||||||
"type": "select",
|
"type": "select",
|
||||||
"value": "campaign_main",
|
"value": "campaign_main",
|
||||||
"option": [
|
"option": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20220915_cn",
|
"event_20220915_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"display": "hide",
|
|
||||||
"option_cn": [
|
"option_cn": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_en": [
|
"option_en": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_jp": [
|
"option_jp": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_tw": [
|
"option_tw": [
|
||||||
"event_20220915_cn"
|
"event_20220915_cn"
|
||||||
],
|
],
|
||||||
"option_bold": [
|
"option_bold": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20220915_cn",
|
"event_20220915_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
]
|
]
|
||||||
@@ -2385,25 +2389,30 @@
|
|||||||
"value": "12-4"
|
"value": "12-4"
|
||||||
},
|
},
|
||||||
"Event": {
|
"Event": {
|
||||||
"type": "state",
|
"type": "select",
|
||||||
"value": "campaign_main",
|
"value": "campaign_main",
|
||||||
"option": [
|
"option": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20220915_cn",
|
"event_20220915_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_cn": [
|
"option_cn": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_en": [
|
"option_en": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_jp": [
|
"option_jp": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_tw": [
|
"option_tw": [
|
||||||
"event_20220915_cn"
|
"event_20220915_cn"
|
||||||
],
|
],
|
||||||
"option_bold": [
|
"option_bold": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20220915_cn",
|
"event_20220915_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
]
|
]
|
||||||
@@ -2799,25 +2808,30 @@
|
|||||||
"value": "12-4"
|
"value": "12-4"
|
||||||
},
|
},
|
||||||
"Event": {
|
"Event": {
|
||||||
"type": "state",
|
"type": "select",
|
||||||
"value": "campaign_main",
|
"value": "campaign_main",
|
||||||
"option": [
|
"option": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20220915_cn",
|
"event_20220915_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_cn": [
|
"option_cn": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_en": [
|
"option_en": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_jp": [
|
"option_jp": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_tw": [
|
"option_tw": [
|
||||||
"event_20220915_cn"
|
"event_20220915_cn"
|
||||||
],
|
],
|
||||||
"option_bold": [
|
"option_bold": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20220915_cn",
|
"event_20220915_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
]
|
]
|
||||||
@@ -3230,7 +3244,7 @@
|
|||||||
"display": "hide"
|
"display": "hide"
|
||||||
},
|
},
|
||||||
"Event": {
|
"Event": {
|
||||||
"type": "state",
|
"type": "select",
|
||||||
"value": "campaign_main",
|
"value": "campaign_main",
|
||||||
"option": [
|
"option": [
|
||||||
"raid_20260212"
|
"raid_20260212"
|
||||||
@@ -4606,25 +4620,30 @@
|
|||||||
"display": "hide"
|
"display": "hide"
|
||||||
},
|
},
|
||||||
"Event": {
|
"Event": {
|
||||||
"type": "state",
|
"type": "select",
|
||||||
"value": "campaign_main",
|
"value": "campaign_main",
|
||||||
"option": [
|
"option": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20220915_cn",
|
"event_20220915_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_cn": [
|
"option_cn": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_en": [
|
"option_en": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_jp": [
|
"option_jp": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_tw": [
|
"option_tw": [
|
||||||
"event_20220915_cn"
|
"event_20220915_cn"
|
||||||
],
|
],
|
||||||
"option_bold": [
|
"option_bold": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20220915_cn",
|
"event_20220915_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
]
|
]
|
||||||
@@ -5038,25 +5057,30 @@
|
|||||||
"display": "hide"
|
"display": "hide"
|
||||||
},
|
},
|
||||||
"Event": {
|
"Event": {
|
||||||
"type": "state",
|
"type": "select",
|
||||||
"value": "campaign_main",
|
"value": "campaign_main",
|
||||||
"option": [
|
"option": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20220915_cn",
|
"event_20220915_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_cn": [
|
"option_cn": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_en": [
|
"option_en": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_jp": [
|
"option_jp": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_tw": [
|
"option_tw": [
|
||||||
"event_20220915_cn"
|
"event_20220915_cn"
|
||||||
],
|
],
|
||||||
"option_bold": [
|
"option_bold": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20220915_cn",
|
"event_20220915_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
]
|
]
|
||||||
@@ -5470,25 +5494,30 @@
|
|||||||
"display": "hide"
|
"display": "hide"
|
||||||
},
|
},
|
||||||
"Event": {
|
"Event": {
|
||||||
"type": "state",
|
"type": "select",
|
||||||
"value": "campaign_main",
|
"value": "campaign_main",
|
||||||
"option": [
|
"option": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20220915_cn",
|
"event_20220915_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_cn": [
|
"option_cn": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_en": [
|
"option_en": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_jp": [
|
"option_jp": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_tw": [
|
"option_tw": [
|
||||||
"event_20220915_cn"
|
"event_20220915_cn"
|
||||||
],
|
],
|
||||||
"option_bold": [
|
"option_bold": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20220915_cn",
|
"event_20220915_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
]
|
]
|
||||||
@@ -5902,25 +5931,30 @@
|
|||||||
"display": "hide"
|
"display": "hide"
|
||||||
},
|
},
|
||||||
"Event": {
|
"Event": {
|
||||||
"type": "state",
|
"type": "select",
|
||||||
"value": "campaign_main",
|
"value": "campaign_main",
|
||||||
"option": [
|
"option": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20220915_cn",
|
"event_20220915_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_cn": [
|
"option_cn": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_en": [
|
"option_en": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_jp": [
|
"option_jp": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_tw": [
|
"option_tw": [
|
||||||
"event_20220915_cn"
|
"event_20220915_cn"
|
||||||
],
|
],
|
||||||
"option_bold": [
|
"option_bold": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20220915_cn",
|
"event_20220915_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
]
|
]
|
||||||
@@ -6324,25 +6358,30 @@
|
|||||||
"display": "hide"
|
"display": "hide"
|
||||||
},
|
},
|
||||||
"Event": {
|
"Event": {
|
||||||
"type": "state",
|
"type": "select",
|
||||||
"value": "campaign_main",
|
"value": "campaign_main",
|
||||||
"option": [
|
"option": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20220915_cn",
|
"event_20220915_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_cn": [
|
"option_cn": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_en": [
|
"option_en": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_jp": [
|
"option_jp": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
],
|
],
|
||||||
"option_tw": [
|
"option_tw": [
|
||||||
"event_20220915_cn"
|
"event_20220915_cn"
|
||||||
],
|
],
|
||||||
"option_bold": [
|
"option_bold": [
|
||||||
|
"event_20201126_cn",
|
||||||
"event_20220915_cn",
|
"event_20220915_cn",
|
||||||
"event_20260417_cn"
|
"event_20260417_cn"
|
||||||
]
|
]
|
||||||
@@ -6753,7 +6792,7 @@
|
|||||||
"display": "hide"
|
"display": "hide"
|
||||||
},
|
},
|
||||||
"Event": {
|
"Event": {
|
||||||
"type": "state",
|
"type": "select",
|
||||||
"value": "campaign_main",
|
"value": "campaign_main",
|
||||||
"option": [
|
"option": [
|
||||||
"raid_20260212"
|
"raid_20260212"
|
||||||
@@ -6995,7 +7034,7 @@
|
|||||||
"display": "hide"
|
"display": "hide"
|
||||||
},
|
},
|
||||||
"Event": {
|
"Event": {
|
||||||
"type": "state",
|
"type": "select",
|
||||||
"value": "campaign_main",
|
"value": "campaign_main",
|
||||||
"option": [
|
"option": [
|
||||||
"coalition_20260122"
|
"coalition_20260122"
|
||||||
|
|||||||
@@ -28,8 +28,6 @@ Main3:
|
|||||||
Event: campaign_main
|
Event: campaign_main
|
||||||
GemsFarming:
|
GemsFarming:
|
||||||
Campaign:
|
Campaign:
|
||||||
Event:
|
|
||||||
value: campaign_main
|
|
||||||
Mode: normal
|
Mode: normal
|
||||||
UseClearMode: true
|
UseClearMode: true
|
||||||
UseFleetLock: true
|
UseFleetLock: true
|
||||||
@@ -57,14 +55,10 @@ GemsFarming:
|
|||||||
Event:
|
Event:
|
||||||
Campaign:
|
Campaign:
|
||||||
Mode: normal
|
Mode: normal
|
||||||
Event:
|
|
||||||
type: state
|
|
||||||
AmbushEvade: true
|
AmbushEvade: true
|
||||||
Event2:
|
Event2:
|
||||||
Campaign:
|
Campaign:
|
||||||
Mode: normal
|
Mode: normal
|
||||||
Event:
|
|
||||||
type: state
|
|
||||||
AmbushEvade: true
|
AmbushEvade: true
|
||||||
EventA:
|
EventA:
|
||||||
Scheduler:
|
Scheduler:
|
||||||
@@ -73,8 +67,6 @@ EventA:
|
|||||||
ServerUpdate: 00:00
|
ServerUpdate: 00:00
|
||||||
Campaign:
|
Campaign:
|
||||||
Name: dynamic
|
Name: dynamic
|
||||||
Event:
|
|
||||||
type: state
|
|
||||||
Mode: normal
|
Mode: normal
|
||||||
Use2xBook: false
|
Use2xBook: false
|
||||||
AmbushEvade: true
|
AmbushEvade: true
|
||||||
@@ -92,8 +84,6 @@ EventB:
|
|||||||
ServerUpdate: 00:00
|
ServerUpdate: 00:00
|
||||||
Campaign:
|
Campaign:
|
||||||
Name: dynamic
|
Name: dynamic
|
||||||
Event:
|
|
||||||
type: state
|
|
||||||
Mode: normal
|
Mode: normal
|
||||||
Use2xBook: false
|
Use2xBook: false
|
||||||
AmbushEvade: true
|
AmbushEvade: true
|
||||||
@@ -111,8 +101,6 @@ EventC:
|
|||||||
ServerUpdate: 00:00
|
ServerUpdate: 00:00
|
||||||
Campaign:
|
Campaign:
|
||||||
Name: dynamic
|
Name: dynamic
|
||||||
Event:
|
|
||||||
type: state
|
|
||||||
Mode: normal
|
Mode: normal
|
||||||
Use2xBook: false
|
Use2xBook: false
|
||||||
AmbushEvade: true
|
AmbushEvade: true
|
||||||
@@ -130,8 +118,6 @@ EventD:
|
|||||||
ServerUpdate: 00:00
|
ServerUpdate: 00:00
|
||||||
Campaign:
|
Campaign:
|
||||||
Name: dynamic
|
Name: dynamic
|
||||||
Event:
|
|
||||||
type: state
|
|
||||||
Mode: normal
|
Mode: normal
|
||||||
Use2xBook: false
|
Use2xBook: false
|
||||||
AmbushEvade: true
|
AmbushEvade: true
|
||||||
@@ -149,8 +135,6 @@ EventSp:
|
|||||||
ServerUpdate: 00:00
|
ServerUpdate: 00:00
|
||||||
Campaign:
|
Campaign:
|
||||||
Name: sp
|
Name: sp
|
||||||
Event:
|
|
||||||
type: state
|
|
||||||
Mode: normal
|
Mode: normal
|
||||||
Use2xBook: false
|
Use2xBook: false
|
||||||
AmbushEvade: true
|
AmbushEvade: true
|
||||||
@@ -166,8 +150,6 @@ EventSp:
|
|||||||
Raid:
|
Raid:
|
||||||
Campaign:
|
Campaign:
|
||||||
Name: dynamic
|
Name: dynamic
|
||||||
Event:
|
|
||||||
type: state
|
|
||||||
Mode: normal
|
Mode: normal
|
||||||
UseClearMode: true
|
UseClearMode: true
|
||||||
UseFleetLock: true
|
UseFleetLock: true
|
||||||
@@ -212,8 +194,6 @@ RaidDaily:
|
|||||||
ServerUpdate: 00:00
|
ServerUpdate: 00:00
|
||||||
Campaign:
|
Campaign:
|
||||||
Name: dynamic
|
Name: dynamic
|
||||||
Event:
|
|
||||||
type: state
|
|
||||||
Mode: normal
|
Mode: normal
|
||||||
UseClearMode: true
|
UseClearMode: true
|
||||||
UseFleetLock: true
|
UseFleetLock: true
|
||||||
@@ -245,8 +225,6 @@ Coalition:
|
|||||||
FailureInterval: 30
|
FailureInterval: 30
|
||||||
ServerUpdate: 00:00
|
ServerUpdate: 00:00
|
||||||
Campaign:
|
Campaign:
|
||||||
Event:
|
|
||||||
type: state
|
|
||||||
Name: dynamic
|
Name: dynamic
|
||||||
Event:
|
Event:
|
||||||
type: state
|
type: state
|
||||||
@@ -279,8 +257,6 @@ CoalitionSp:
|
|||||||
ServerUpdate: 00:00
|
ServerUpdate: 00:00
|
||||||
Campaign:
|
Campaign:
|
||||||
Name: sp
|
Name: sp
|
||||||
Event:
|
|
||||||
type: state
|
|
||||||
Mode: normal
|
Mode: normal
|
||||||
UseClearMode: true
|
UseClearMode: true
|
||||||
UseFleetLock: true
|
UseFleetLock: true
|
||||||
|
|||||||
@@ -657,17 +657,24 @@ class ConfigUpdater:
|
|||||||
if not is_template:
|
if not is_template:
|
||||||
for task in EVENTS + GEMS_FARMINGS + RAIDS + COALITIONS:
|
for task in EVENTS + GEMS_FARMINGS + RAIDS + COALITIONS:
|
||||||
opts = deep_get(self.args, keys=f'{task}.Campaign.Event.option_{server}', default=[])
|
opts = deep_get(self.args, keys=f'{task}.Campaign.Event.option_{server}', default=[])
|
||||||
if not deep_get(new, keys=f'{task}.Campaign.Event', default='campaign_main') in opts:
|
if opts and not deep_get(new, keys=f'{task}.Campaign.Event', default='campaign_main') in opts:
|
||||||
deep_set(new,
|
deep_set(new,
|
||||||
keys=f'{task}.Campaign.Event',
|
keys=f'{task}.Campaign.Event',
|
||||||
value=opts[0])
|
value=opts[0])
|
||||||
|
|
||||||
|
for task in ['GemsFarming']:
|
||||||
|
opts = deep_get(self.args, keys=f'{task}.Campaign.Event.option_{server}', default=[])
|
||||||
|
if opts and deep_get(new, keys=f'{task}.Campaign.Event', default='campaign_main') not in opts:
|
||||||
|
deep_set(new,
|
||||||
|
keys=f'{task}.Campaign.Event',
|
||||||
|
value=opts[0])
|
||||||
# War archive does not allow campaign_main
|
# War archive does not allow campaign_main
|
||||||
for task in WAR_ARCHIVES:
|
for task in WAR_ARCHIVES:
|
||||||
if deep_get(new, keys=f'{task}.Campaign.Event', default='campaign_main') == 'campaign_main':
|
opts = deep_get(self.args, keys=f'{task}.Campaign.Event.option_{server}', default=[])
|
||||||
|
if opts and deep_get(new, keys=f'{task}.Campaign.Event', default='campaign_main') == 'campaign_main':
|
||||||
deep_set(new,
|
deep_set(new,
|
||||||
keys=f'{task}.Campaign.Event',
|
keys=f'{task}.Campaign.Event',
|
||||||
value=deep_get(self.args, f'{task}.Campaign.Event.option_{server}')[0])
|
value=opts[0])
|
||||||
|
|
||||||
# Events does not allow default stage 12-4
|
# Events does not allow default stage 12-4
|
||||||
def default_stage(t, stage):
|
def default_stage(t, stage):
|
||||||
|
|||||||
@@ -736,7 +736,7 @@
|
|||||||
"event_20201002_en": "Counterattack Within the Fjord",
|
"event_20201002_en": "Counterattack Within the Fjord",
|
||||||
"event_20201012_cn": "Sundered Blue Rerun",
|
"event_20201012_cn": "Sundered Blue Rerun",
|
||||||
"event_20201029_cn": "Universe in Unison",
|
"event_20201029_cn": "Universe in Unison",
|
||||||
"event_20201126_cn": "Vacation Lane",
|
"event_20201126_cn": "Vacation Lane Rerun",
|
||||||
"event_20201229_cn": "Inverted Orthant Rerun",
|
"event_20201229_cn": "Inverted Orthant Rerun",
|
||||||
"event_20210121_cn": "Empyreal Tragicomedy Rerun",
|
"event_20210121_cn": "Empyreal Tragicomedy Rerun",
|
||||||
"event_20210225_cn": "Khorovod of Dawns Rime Rerun",
|
"event_20210225_cn": "Khorovod of Dawns Rime Rerun",
|
||||||
|
|||||||
@@ -736,7 +736,7 @@
|
|||||||
"event_20201002_en": "Counterattack Within the Fjord",
|
"event_20201002_en": "Counterattack Within the Fjord",
|
||||||
"event_20201012_cn": "奔る彩帆の青(復刻)",
|
"event_20201012_cn": "奔る彩帆の青(復刻)",
|
||||||
"event_20201029_cn": "激唱のユニバース",
|
"event_20201029_cn": "激唱のユニバース",
|
||||||
"event_20201126_cn": "バケーションレーン",
|
"event_20201126_cn": "バケーションレーン(復刻)",
|
||||||
"event_20201229_cn": "虚畳なりし限象(復刻)",
|
"event_20201229_cn": "虚畳なりし限象(復刻)",
|
||||||
"event_20210121_cn": "悲歎せし焔海の詩(復刻)",
|
"event_20210121_cn": "悲歎せし焔海の詩(復刻)",
|
||||||
"event_20210225_cn": "暁射す氷華の嵐(復刻)",
|
"event_20210225_cn": "暁射す氷華の嵐(復刻)",
|
||||||
|
|||||||
@@ -736,7 +736,7 @@
|
|||||||
"event_20201002_en": "Counterattack Within the Fjord",
|
"event_20201002_en": "Counterattack Within the Fjord",
|
||||||
"event_20201012_cn": "复刻划破海空之翼",
|
"event_20201012_cn": "复刻划破海空之翼",
|
||||||
"event_20201029_cn": "激唱的UNIVERSE",
|
"event_20201029_cn": "激唱的UNIVERSE",
|
||||||
"event_20201126_cn": "假日航线",
|
"event_20201126_cn": "复刻假日航线",
|
||||||
"event_20201229_cn": "复刻负象限作战",
|
"event_20201229_cn": "复刻负象限作战",
|
||||||
"event_20210121_cn": "复刻神圣的悲喜剧",
|
"event_20210121_cn": "复刻神圣的悲喜剧",
|
||||||
"event_20210225_cn": "复刻破晓冰华",
|
"event_20210225_cn": "复刻破晓冰华",
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
from module.base.button import ButtonGrid
|
from module.base.button import ButtonGrid
|
||||||
from module.base.decorator import cached_property
|
from module.base.decorator import cached_property
|
||||||
from module.base.template import Template
|
from module.base.template import Template
|
||||||
@@ -6,9 +7,9 @@ from module.logger import logger
|
|||||||
from module.map_detection.utils import Points
|
from module.map_detection.utils import Points
|
||||||
from module.os_handler.map_event import MapEventHandler
|
from module.os_handler.map_event import MapEventHandler
|
||||||
from module.os_handler.os_status import OSStatus
|
from module.os_handler.os_status import OSStatus
|
||||||
|
from module.os_shop.item import OSShopItem as Item, OSShopItemGrid as ItemGrid
|
||||||
from module.os_shop.selector import Selector
|
from module.os_shop.selector import Selector
|
||||||
from module.os_shop.ui import OSShopUI, OS_SHOP_SCROLL
|
from module.os_shop.ui import OSShopUI, OS_SHOP_SCROLL
|
||||||
from module.os_shop.item import OSShopItem as Item, OSShopItemGrid as ItemGrid
|
|
||||||
from module.statistics.utils import load_folder
|
from module.statistics.utils import load_folder
|
||||||
|
|
||||||
|
|
||||||
@@ -133,19 +134,21 @@ class PortShop(OSStatus, OSShopUI, Selector, MapEventHandler):
|
|||||||
|
|
||||||
while True:
|
while True:
|
||||||
pre_pos = self.pre_scroll(pre_pos, cur_pos)
|
pre_pos = self.pre_scroll(pre_pos, cur_pos)
|
||||||
_items = self.os_shop_get_items(i, cur_pos)
|
|
||||||
|
|
||||||
for _ in range(2):
|
_items = []
|
||||||
|
for _ in range(3):
|
||||||
|
_items = self.os_shop_get_items(i, cur_pos)
|
||||||
if not len(_items) or any(not item.is_known_item() for item in _items):
|
if not len(_items) or any(not item.is_known_item() for item in _items):
|
||||||
logger.warning('Empty OS shop or empty items, confirming')
|
logger.warning('Empty OS shop or empty items, confirming')
|
||||||
self.device.sleep((0.3, 0.5))
|
self.device.sleep((0.3, 0.5))
|
||||||
self.device.screenshot()
|
self.device.screenshot()
|
||||||
_items = self.os_shop_get_items(i, cur_pos)
|
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
items += _items
|
|
||||||
logger.info(f'Found {len(_items)} items in shop {i + 1} at pos {cur_pos:.2f}')
|
logger.info(f'Found {len(_items)} items in shop {i + 1} at pos {cur_pos:.2f}')
|
||||||
break
|
break
|
||||||
|
# always add items, even if last item list contains unknown items
|
||||||
|
# so any known items can be scanned
|
||||||
|
items += _items
|
||||||
|
|
||||||
if OS_SHOP_SCROLL.at_bottom(main=self):
|
if OS_SHOP_SCROLL.at_bottom(main=self):
|
||||||
logger.info('OS shop reach bottom, stop')
|
logger.info('OS shop reach bottom, stop')
|
||||||
|
|||||||
@@ -340,6 +340,7 @@ class AlasGUI(Frame):
|
|||||||
@use_scope("groups")
|
@use_scope("groups")
|
||||||
def set_group(self, group, arg_dict, config, task):
|
def set_group(self, group, arg_dict, config, task):
|
||||||
group_name = group[0]
|
group_name = group[0]
|
||||||
|
server = to_server(deep_get(config, "Alas.Emulator.PackageName", "cn"))
|
||||||
|
|
||||||
output_list: List[Output] = []
|
output_list: List[Output] = []
|
||||||
for arg, arg_dict in deep_iter(arg_dict, depth=1):
|
for arg, arg_dict in deep_iter(arg_dict, depth=1):
|
||||||
@@ -371,11 +372,22 @@ class AlasGUI(Frame):
|
|||||||
output_kwargs["value"] = value
|
output_kwargs["value"] = value
|
||||||
# Options
|
# Options
|
||||||
options = output_kwargs.pop("option", [])
|
options = output_kwargs.pop("option", [])
|
||||||
server = to_server(deep_get(config, 'Alas.Emulator.PackageName', 'cn'))
|
server_options = output_kwargs.get(f"option_{server}")
|
||||||
available_events = deep_get(self.ALAS_ARGS, keys=f'{task}.{group_name}.{arg_name}.option_{server}')
|
if output_kwargs["widget_type"] == "select" and isinstance(server_options, list) and server_options:
|
||||||
if available_events is not None:
|
options = server_options
|
||||||
options = [opt for opt in options if opt in available_events]
|
|
||||||
output_kwargs["options"] = options
|
output_kwargs["options"] = options
|
||||||
|
if (
|
||||||
|
task == "GemsFarming"
|
||||||
|
and group_name == "Campaign"
|
||||||
|
and arg_name == "Event"
|
||||||
|
and output_kwargs["widget_type"] == "select"
|
||||||
|
and len(options) == 1
|
||||||
|
):
|
||||||
|
continue
|
||||||
|
if output_kwargs["widget_type"] == "select" and len(options) == 1:
|
||||||
|
only_option = options[0]
|
||||||
|
if only_option in output_kwargs.get("option_bold", []):
|
||||||
|
output_kwargs["widget_type"] = "state"
|
||||||
# Options label
|
# Options label
|
||||||
options_label = []
|
options_label = []
|
||||||
for opt in options:
|
for opt in options:
|
||||||
|
|||||||