Compare commits
1 Commits
war_archiv
...
event_upda
| Author | SHA1 | Date | |
|---|---|---|---|
| 881ae62c85 |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 9.2 KiB |
BIN
assets/cn/campaign/EVENT_20201126_ENTRANCE_TEMP.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
BIN
assets/en/campaign/EVENT_20201126_ENTRANCE_TEMP.png
Normal file
|
After Width: | Height: | Size: 7.8 KiB |
BIN
assets/jp/campaign/EVENT_20201126_ENTRANCE_TEMP.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.5 KiB |
@@ -58,8 +58,6 @@ To add a new event, add a new row in here, and run `python -m module.config.conf
|
||||
| 20251106 | war archives 20220915 cn | Violet Tempest Blooming Lycoris | 紫绛槿岚 | Violet Tempest Blooming Lycoris | 赫の涙月 菫の暁風 | 紫絳槿嵐 |
|
||||
| 20251218 | war archives 20221222 cn | Parallel Superimposition | 定向折叠 | Parallel Superimposition | 積重なる事象の幻界 | 定向折疊 |
|
||||
| 20260129 | war archives 20230223 cn | Revelations of Dust | 湮烬尘墟 | Revelations of Dust | 黙示の遺構 | 湮燼塵墟 |
|
||||
| 20260409 | war archives 20220818 cn | Operation Convergence | 远汇点作战 | Operation Convergence | 結像点作戦 | 遠匯點作戰 |
|
||||
| 20260507 | war archives 20230803 cn | Anthem of Remembrance | 奏响鸢尾之歌 | Anthem of Remembrance | 燃ゆる聖都の回想曲 | 奏響鳶尾之歌 |
|
||||
| 20200227 | event 20200227 cn | Northern Overture | 北境序曲 | Northern Overture | 凍絶の北海 | - |
|
||||
| 20200312 | event 20200312 cn | The Solomon Ranger | 复刻斯图尔特的硝烟 | The Solomon Ranger Rerun | 南洋に靡く硝煙(復刻) | - |
|
||||
| 20200326 | event 20200326 cn | Microlayer Medley | 微层混合 | Microlayer Medley | 闇靄払う銀翼 | - |
|
||||
@@ -291,5 +289,3 @@ To add a new event, add a new row in here, and run `python -m module.config.conf
|
||||
| 20260416 | event 20220915 cn | Violet Tempest Blooming Lycoris | - | - | - | 復刻紫絳槿嵐 |
|
||||
| 20260417 | event 20260417 cn | Vacation Lane – Beachside Brilliance | 假日航线闪耀海滨 | Vacation Lane – Beachside Brilliance | バケーションレーン・きらめく砂浜 | - |
|
||||
| 20260417 | event 20201126 cn | Vacation Lane Rerun | 复刻假日航线 | Vacation Lane Rerun | バケーションレーン(復刻) | - |
|
||||
| 20260417 | event 20250424 cn | Toward Tulipa’s Seas Rerun | 复刻扬起郁金之旗 | Toward Tulipa’s Seas Rerun | チュリッパの海へ(復刻) | - |
|
||||
| 20260417 | event 20260417 cn | Vacation Lane – Beachside Brilliance | - | - | - | 假日航線閃耀海濱 |
|
||||
|
||||
@@ -107,10 +107,9 @@ class Campaign(CampaignBase):
|
||||
|
||||
def map_data_init(self, map_):
|
||||
super().map_data_init(map_)
|
||||
if not self.map_is_clear_mode:
|
||||
for override_grid in OVERRIDE:
|
||||
# Set may_enemy, but keep may_ambush
|
||||
self.map[override_grid.location].may_enemy = override_grid.may_enemy
|
||||
for override_grid in OVERRIDE:
|
||||
# Set may_enemy, but keep may_ambush
|
||||
self.map[override_grid.location].may_enemy = override_grid.may_enemy
|
||||
|
||||
def battle_0(self):
|
||||
self.pick_up_light_house(A9)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
from module.base.button import Button
|
||||
from module.campaign.assets import EVENT_20201126_PT_ICON, EVENT_20201126_DETAIL, EVENT_20201126_DETAIL_CHECK, EVENT_20201126_DETAIL_WHITE, EVENT_20201126_ENTRANCE
|
||||
from module.campaign.assets import EVENT_20201126_ENTRANCE_TEMP, EVENT_20201126_PT_ICON
|
||||
from module.campaign.campaign_base import CampaignBase as CampaignBase_
|
||||
from module.exception import CampaignNameError
|
||||
from module.logger import logger
|
||||
from module.ui.page import page_campaign_menu, page_event, page_main_white
|
||||
from module.ui.page import page_campaign_menu, page_event, page_main
|
||||
|
||||
EVENT_ANIMATION = Button(area=(49, 229, 119, 400), color=(118, 215, 240), button=(49, 229, 119, 400),
|
||||
name='EVENT_ANIMATION')
|
||||
@@ -19,18 +19,15 @@ class CampaignBase(CampaignBase_):
|
||||
"""
|
||||
|
||||
def ui_goto_event(self):
|
||||
if self.appear(EVENT_20201126_PT_ICON, offset=(40, 20)) and self.ui_page_appear(page_event):
|
||||
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_goto_main()
|
||||
if self.ui_page_appear(page_main_white):
|
||||
self.ui_click(EVENT_20201126_DETAIL_WHITE, check_button=EVENT_20201126_DETAIL_CHECK)
|
||||
else:
|
||||
self.ui_click(EVENT_20201126_DETAIL, check_button=EVENT_20201126_DETAIL_CHECK)
|
||||
self.ui_click(EVENT_20201126_ENTRANCE, check_button=EVENT_20201126_PT_ICON,
|
||||
appear_button=EVENT_20201126_DETAIL_CHECK, offset=(40, 20))
|
||||
self.ui_ensure(page_main)
|
||||
self.ui_click(EVENT_20201126_ENTRANCE_TEMP,
|
||||
check_button=EVENT_20201126_PT_ICON,
|
||||
appear_button=EVENT_20201126_ENTRANCE_TEMP)
|
||||
return True
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
from module.campaign.assets import EVENT_20250424_PT_ICON
|
||||
from module.campaign.campaign_base import CampaignBase as CampaignBase_
|
||||
from module.logger import logger
|
||||
from module.ui.page import page_campaign_menu, page_event
|
||||
from module.ui.page import page_event
|
||||
|
||||
|
||||
class CampaignBase(CampaignBase_):
|
||||
@@ -10,12 +8,3 @@ class CampaignBase(CampaignBase_):
|
||||
if self.ui_page_appear(page_event):
|
||||
return False
|
||||
return super().handle_exp_info()
|
||||
|
||||
def ui_goto_event(self):
|
||||
if self.appear(EVENT_20250424_PT_ICON, offset=(20, 20)) and self.ui_page_appear(page_event):
|
||||
logger.info('Already at EVENT_20250424')
|
||||
return True
|
||||
self.ui_ensure(page_campaign_menu)
|
||||
if self.is_event_entrance_available():
|
||||
self.ui_goto(page_event)
|
||||
return True
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
from module.base.button import Button
|
||||
from module.campaign.assets import EVENT_20260417_PT_ICON, EVENT_20260417_DETAIL, EVENT_20260417_DETAIL_CHECK, EVENT_20260417_DETAIL_WHITE, EVENT_20260417_ENTRANCE
|
||||
from module.campaign.assets import EVENT_20260417_PT_ICON
|
||||
from module.campaign.campaign_base import CampaignBase as CampaignBase_
|
||||
from module.logger import logger
|
||||
from module.ui.page import page_campaign_menu, page_event, page_main_white
|
||||
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),
|
||||
name='EVENT_ANIMATION')
|
||||
@@ -10,22 +10,13 @@ EVENT_ANIMATION = Button(area=(49, 229, 119, 400), color=(118, 215, 240), button
|
||||
|
||||
class CampaignBase(CampaignBase_):
|
||||
def ui_goto_event(self):
|
||||
if self.appear(EVENT_20260417_PT_ICON, offset=(40, 20)) and self.ui_page_appear(page_event):
|
||||
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():
|
||||
if self.config.SERVER == 'tw':
|
||||
self.ui_goto(page_event)
|
||||
else:
|
||||
self.ui_goto_main()
|
||||
if self.ui_page_appear(page_main_white):
|
||||
self.ui_click(EVENT_20260417_DETAIL_WHITE, check_button=EVENT_20260417_DETAIL_CHECK)
|
||||
else:
|
||||
self.ui_click(EVENT_20260417_DETAIL, check_button=EVENT_20260417_DETAIL_CHECK)
|
||||
self.ui_click(EVENT_20260417_ENTRANCE, check_button=EVENT_20260417_PT_ICON,
|
||||
appear_button=EVENT_20260417_DETAIL_CHECK, offset=(40, 20))
|
||||
return True
|
||||
self.ui_goto(page_event)
|
||||
return True
|
||||
|
||||
@staticmethod
|
||||
def _campaign_ocr_result_process(result):
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
from ..campaign_war_archives.campaign_base import CampaignBase as CampaignBase_
|
||||
|
||||
|
||||
class CampaignBase(CampaignBase_):
|
||||
def campaign_set_chapter_sp(self, chapter, mode='normal'):
|
||||
# SP event but has an `event` UI
|
||||
from module.logger import logger
|
||||
logger.info('Set chapter SP')
|
||||
if chapter in ['sp', 'sp_sp']:
|
||||
self.ui_goto_sp()
|
||||
self.campaign_ensure_chapter(chapter)
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def _campaign_separate_name(name):
|
||||
if name in ['esp', 'sp']:
|
||||
return 'sp_sp', '2'
|
||||
if name in ['ex']:
|
||||
return 'sp_ex', '3'
|
||||
return CampaignBase_._campaign_separate_name(name)
|
||||
|
||||
def campaign_get_entrance(self, name):
|
||||
if name == 'sp':
|
||||
name = 'esp'
|
||||
return super().campaign_get_entrance(name)
|
||||
|
||||
@staticmethod
|
||||
def _campaign_get_chapter_index(name):
|
||||
if name in ['sp_sp']:
|
||||
return 2
|
||||
if name in ['sp_ex']:
|
||||
return 3
|
||||
return CampaignBase_._campaign_get_chapter_index(name)
|
||||
@@ -1,77 +0,0 @@
|
||||
from .campaign_base import CampaignBase
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import SelectedGrids, RoadGrids
|
||||
from module.logger import logger
|
||||
|
||||
MAP = CampaignMap('SP1')
|
||||
MAP.shape = 'I7'
|
||||
MAP.camera_data = ['D4', 'E5', 'F4']
|
||||
MAP.camera_data_spawn_point = ['D3']
|
||||
MAP.map_data = """
|
||||
-- ++ -- SP -- SP -- ++ ++
|
||||
-- ++ -- -- -- -- -- ME --
|
||||
ME -- -- -- MS -- -- -- ME
|
||||
-- -- Me ++ Me ++ Me -- --
|
||||
ME -- -- -- __ -- -- -- ME
|
||||
-- ++ ++ ME -- ME -- ME --
|
||||
-- -- ++ -- MB -- ++ ++ ++
|
||||
"""
|
||||
MAP.weight_data = """
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 2, 'siren': 1},
|
||||
{'battle': 1, 'enemy': 2},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'boss': 1},
|
||||
]
|
||||
A1, B1, C1, D1, E1, F1, G1, H1, I1, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, \
|
||||
A7, B7, C7, D7, E7, F7, G7, H7, I7, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config:
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['Z46', 'PrinzHeinrich', 'GrafZeppelin']
|
||||
MOVABLE_ENEMY_TURN = (2,)
|
||||
MAP_HAS_SIREN = True
|
||||
MAP_HAS_MOVABLE_ENEMY = True
|
||||
MAP_HAS_MAP_STORY = True
|
||||
MAP_HAS_FLEET_STEP = True
|
||||
MAP_HAS_AMBUSH = True
|
||||
MAP_HAS_MYSTERY = False
|
||||
# ===== End of generated config =====
|
||||
|
||||
HOMO_EDGE_HOUGHLINES_THRESHOLD = 210
|
||||
MAP_SWIPE_MULTIPLY = (1.203, 1.226)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.164, 1.185)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.130, 1.150)
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
|
||||
MAP_AIR_RAID_OVERLAY_TRANSPARENCY_THRESHOLD = 0.25
|
||||
|
||||
def battle_0(self):
|
||||
if self.clear_siren():
|
||||
return True
|
||||
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_4(self):
|
||||
return self.clear_boss()
|
||||
@@ -1,76 +0,0 @@
|
||||
from .campaign_base import CampaignBase
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import SelectedGrids, RoadGrids
|
||||
from module.logger import logger
|
||||
from .sp1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('SP2')
|
||||
MAP.shape = 'I8'
|
||||
MAP.camera_data = ['D3', 'D6']
|
||||
MAP.camera_data_spawn_point = ['D3']
|
||||
MAP.map_data = """
|
||||
++ -- -- ++ -- -- ++ ++ --
|
||||
-- SP -- Me -- -- ++ ++ --
|
||||
-- -- -- -- -- MS -- -- --
|
||||
-- SP -- Me -- -- Me -- --
|
||||
++ ++ ++ -- ME __ -- ME --
|
||||
-- ME -- Me -- -- ME -- --
|
||||
MB -- -- -- -- Me ++ ++ --
|
||||
-- ME -- ME ++ -- -- -- --
|
||||
"""
|
||||
MAP.weight_data = """
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 3, 'siren': 1},
|
||||
{'battle': 1, 'enemy': 2},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'boss': 1},
|
||||
]
|
||||
A1, B1, C1, D1, E1, F1, G1, H1, I1, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, \
|
||||
A7, B7, C7, D7, E7, F7, G7, H7, I7, \
|
||||
A8, B8, C8, D8, E8, F8, G8, H8, I8, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['Magdeburg', 'PrinzAdalbert', 'GrafZeppelin']
|
||||
MOVABLE_ENEMY_TURN = (2,)
|
||||
MAP_HAS_SIREN = True
|
||||
MAP_HAS_MOVABLE_ENEMY = True
|
||||
MAP_HAS_MAP_STORY = True
|
||||
MAP_HAS_FLEET_STEP = True
|
||||
MAP_HAS_AMBUSH = True
|
||||
MAP_HAS_MYSTERY = False
|
||||
# ===== End of generated config =====
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
|
||||
MAP_AIR_RAID_OVERLAY_TRANSPARENCY_THRESHOLD = 0.25
|
||||
|
||||
def battle_0(self):
|
||||
if self.clear_siren():
|
||||
return True
|
||||
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_4(self):
|
||||
return self.clear_boss()
|
||||
@@ -1,81 +0,0 @@
|
||||
from .campaign_base import CampaignBase
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import SelectedGrids, RoadGrids
|
||||
from module.logger import logger
|
||||
from .sp1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('SP3')
|
||||
MAP.shape = 'H8'
|
||||
MAP.camera_data = ['D5', 'E3', 'E5']
|
||||
MAP.camera_data_spawn_point = ['D5']
|
||||
MAP.map_data = """
|
||||
-- -- -- -- ++ ++ -- --
|
||||
++ ++ Me -- Me ++ ME --
|
||||
-- -- -- -- -- ME -- --
|
||||
SP -- -- MS __ -- -- MB
|
||||
SP -- -- MS -- ME -- --
|
||||
-- ++ Me -- Me -- -- ME
|
||||
-- ME -- ++ ++ ME ME ++
|
||||
-- -- -- ++ ++ -- -- ++
|
||||
"""
|
||||
MAP.weight_data = """
|
||||
50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 3, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 2},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4},
|
||||
{'battle': 5, 'boss': 1},
|
||||
]
|
||||
A1, B1, C1, D1, E1, F1, G1, H1, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, \
|
||||
A7, B7, C7, D7, E7, F7, G7, H7, \
|
||||
A8, B8, C8, D8, E8, F8, G8, H8, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['GrafZeppelin', 'Weser', 'PeterStrasser']
|
||||
MOVABLE_ENEMY_TURN = (2,)
|
||||
MAP_HAS_SIREN = True
|
||||
MAP_HAS_MOVABLE_ENEMY = True
|
||||
MAP_HAS_MAP_STORY = True
|
||||
MAP_HAS_FLEET_STEP = True
|
||||
MAP_HAS_AMBUSH = True
|
||||
MAP_HAS_MYSTERY = False
|
||||
# ===== End of generated config =====
|
||||
|
||||
MAP_SWIPE_MULTIPLY = (1.091, 1.112)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.056, 1.075)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.025, 1.043)
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
|
||||
MAP_AIR_RAID_OVERLAY_TRANSPARENCY_THRESHOLD = 0.25
|
||||
|
||||
def battle_0(self):
|
||||
if self.clear_siren():
|
||||
return True
|
||||
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_5(self):
|
||||
return self.fleet_boss.clear_boss()
|
||||
@@ -1,84 +0,0 @@
|
||||
from .campaign_base import CampaignBase
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import SelectedGrids, RoadGrids
|
||||
from module.logger import logger
|
||||
from .sp1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('SP4')
|
||||
MAP.shape = 'I9'
|
||||
MAP.camera_data = ['D6', 'F6', 'E3']
|
||||
MAP.camera_data_spawn_point = ['E7']
|
||||
MAP.map_data = """
|
||||
-- -- -- ME -- ME -- -- --
|
||||
-- ++ ME -- MB -- ME ++ --
|
||||
-- -- -- -- Me -- -- -- --
|
||||
-- ++ ++ -- -- -- ++ ++ --
|
||||
-- ++ ++ Me MS Me ++ ++ --
|
||||
-- ME MS -- __ -- MS ME --
|
||||
ME -- -- ++ -- ++ -- -- ME
|
||||
-- ME -- -- -- -- -- ME --
|
||||
++ ++ ++ SP -- SP ++ ++ ++
|
||||
"""
|
||||
MAP.weight_data = """
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 3, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 2, 'siren': 1},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4},
|
||||
{'battle': 5, 'boss': 1},
|
||||
]
|
||||
A1, B1, C1, D1, E1, F1, G1, H1, I1, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, \
|
||||
A7, B7, C7, D7, E7, F7, G7, H7, I7, \
|
||||
A8, B8, C8, D8, E8, F8, G8, H8, I8, \
|
||||
A9, B9, C9, D9, E9, F9, G9, H9, I9, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['UlrichVonHutten']
|
||||
MOVABLE_ENEMY_TURN = (2,)
|
||||
MAP_HAS_SIREN = True
|
||||
MAP_HAS_MOVABLE_ENEMY = True
|
||||
MAP_HAS_MAP_STORY = False
|
||||
MAP_HAS_FLEET_STEP = True
|
||||
MAP_HAS_AMBUSH = True
|
||||
MAP_HAS_MYSTERY = False
|
||||
# ===== End of generated config =====
|
||||
|
||||
MAP_SWIPE_MULTIPLY = (0.995, 1.013)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (0.962, 0.980)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (0.934, 0.951)
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
|
||||
MAP_AIR_RAID_OVERLAY_TRANSPARENCY_THRESHOLD = 0.25
|
||||
|
||||
def battle_0(self):
|
||||
if self.clear_siren():
|
||||
return True
|
||||
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_5(self):
|
||||
return self.fleet_boss.clear_boss()
|
||||
@@ -1,7 +0,0 @@
|
||||
from ..campaign_war_archives.campaign_base import CampaignBase as CampaignBase_
|
||||
|
||||
|
||||
class CampaignBase(CampaignBase_):
|
||||
STAGE_INCREASE = [
|
||||
'SP1 > SP2 > SP3',
|
||||
]
|
||||
@@ -1,104 +0,0 @@
|
||||
from .campaign_base import CampaignBase
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import SelectedGrids, RoadGrids
|
||||
from module.logger import logger
|
||||
|
||||
MAP = CampaignMap('SP1')
|
||||
MAP.shape = 'I6'
|
||||
MAP.camera_data = ['F2', 'F4']
|
||||
MAP.camera_data_spawn_point = ['D2', 'D4']
|
||||
MAP.map_data = """
|
||||
++ ++ ++ -- -- ME -- -- --
|
||||
-- -- Me -- Me -- Me ++ ++
|
||||
SP -- -- -- -- ME -- MB ++
|
||||
-- -- -- MS -- -- __ -- ME
|
||||
SP -- -- -- ++ ME -- ME --
|
||||
-- ++ ME -- Me -- ME ++ --
|
||||
"""
|
||||
MAP.weight_data = """
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 1, 'siren': 1},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'boss': 1},
|
||||
]
|
||||
A1, B1, C1, D1, E1, F1, G1, H1, I1, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config:
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['DD']
|
||||
MOVABLE_ENEMY_TURN = (2,)
|
||||
MAP_HAS_SIREN = True
|
||||
MAP_HAS_MOVABLE_ENEMY = True
|
||||
MAP_HAS_MAP_STORY = False
|
||||
MAP_HAS_FLEET_STEP = True
|
||||
MAP_HAS_AMBUSH = False
|
||||
MAP_HAS_MYSTERY = False
|
||||
# ===== End of generated config =====
|
||||
|
||||
MAP_HAS_WALK_SPEEDUP = True
|
||||
MAP_HAS_MOVABLE_NORMAL_ENEMY = True
|
||||
MOVABLE_NORMAL_ENEMY_TURN = (2,)
|
||||
MAP_SIREN_MOVE_WAIT = 0.5
|
||||
|
||||
MAP_WALK_USE_CURRENT_FLEET = True
|
||||
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (80, 255 - 24),
|
||||
'width': (0.9, 10),
|
||||
'prominence': 10,
|
||||
'distance': 35,
|
||||
}
|
||||
EDGE_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (255 - 24, 255),
|
||||
'prominence': 10,
|
||||
'distance': 50,
|
||||
'wlen': 1000
|
||||
}
|
||||
HOMO_EDGE_COLOR_RANGE = (0, 24)
|
||||
MAP_ENSURE_EDGE_INSIGHT_CORNER = 'bottom'
|
||||
MAP_ENEMY_GENRE_DETECTION_SCALING = {
|
||||
'DD': 1.111,
|
||||
'CL': 1.111,
|
||||
'CAred': 1.111,
|
||||
'BBred': 1.111,
|
||||
'CV': 1.111,
|
||||
}
|
||||
|
||||
MAP_SWIPE_MULTIPLY = (1.179, 1.201)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.140, 1.161)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.107, 1.127)
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
|
||||
|
||||
def battle_0(self):
|
||||
if self.map_is_clear_mode:
|
||||
if self.clear_siren():
|
||||
return True
|
||||
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=1):
|
||||
return True
|
||||
else:
|
||||
if self.clear_any_enemy(sort=('cost_2',)):
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_4(self):
|
||||
return self.clear_boss()
|
||||
@@ -1,80 +0,0 @@
|
||||
from .campaign_base import CampaignBase
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import SelectedGrids, RoadGrids
|
||||
from module.logger import logger
|
||||
from .sp1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('SP2')
|
||||
MAP.shape = 'H7'
|
||||
MAP.camera_data = ['D2', 'D5', 'E2', 'E5']
|
||||
MAP.camera_data_spawn_point = ['E5', 'D5']
|
||||
MAP.map_data = """
|
||||
++ ME -- -- -- -- ME --
|
||||
ME -- -- Me Me -- ++ --
|
||||
ME -- Me ++ ++ ME ++ ME
|
||||
-- __ -- ++ ++ -- Me --
|
||||
ME -- MS MB MB MS __ ME
|
||||
++ -- -- -- -- -- -- ME
|
||||
++ ME -- SP SP -- ME ++
|
||||
"""
|
||||
MAP.weight_data = """
|
||||
50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 2, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 2},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'boss': 1},
|
||||
]
|
||||
A1, B1, C1, D1, E1, F1, G1, H1, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, \
|
||||
A7, B7, C7, D7, E7, F7, G7, H7, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['CL', 'CAred']
|
||||
MOVABLE_ENEMY_TURN = (2,)
|
||||
MAP_HAS_SIREN = True
|
||||
MAP_HAS_MOVABLE_ENEMY = True
|
||||
MAP_HAS_MAP_STORY = True
|
||||
MAP_HAS_FLEET_STEP = True
|
||||
MAP_HAS_AMBUSH = False
|
||||
MAP_HAS_MYSTERY = False
|
||||
# ===== End of generated config =====
|
||||
|
||||
MAP_SWIPE_MULTIPLY = (1.133, 1.155)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.096, 1.116)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.064, 1.083)
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
|
||||
|
||||
def battle_0(self):
|
||||
if self.map_is_clear_mode:
|
||||
if self.clear_siren():
|
||||
return True
|
||||
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=1):
|
||||
return True
|
||||
else:
|
||||
if self.clear_any_enemy(sort=('cost_2',)):
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_4(self):
|
||||
return self.clear_boss()
|
||||
@@ -1,86 +0,0 @@
|
||||
from .campaign_base import CampaignBase
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import SelectedGrids, RoadGrids
|
||||
from module.logger import logger
|
||||
from .sp1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('SP3')
|
||||
MAP.shape = 'I8'
|
||||
MAP.camera_data = ['D2', 'D4', 'D6', 'F2', 'F4', 'F6']
|
||||
MAP.camera_data_spawn_point = ['F2', 'D2']
|
||||
MAP.map_data = """
|
||||
-- -- ME ++ ++ ++ ME -- --
|
||||
++ Me -- -- MB -- -- Me ++
|
||||
ME -- -- SP -- SP -- -- ME
|
||||
-- MS -- -- __ -- -- MS --
|
||||
ME -- ++ -- ++ -- ++ -- ME
|
||||
-- Me ++ MS -- MS ++ Me --
|
||||
ME -- Me -- -- -- Me -- ME
|
||||
++ ME -- ++ ++ ++ -- ME ++
|
||||
"""
|
||||
MAP.weight_data = """
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 2, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 2, 'siren': 1},
|
||||
{'battle': 2, 'enemy': 2},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 1},
|
||||
{'battle': 5, 'boss': 1},
|
||||
]
|
||||
A1, B1, C1, D1, E1, F1, G1, H1, I1, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, \
|
||||
A7, B7, C7, D7, E7, F7, G7, H7, I7, \
|
||||
A8, B8, C8, D8, E8, F8, G8, H8, I8, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['SirenBoss15']
|
||||
MOVABLE_ENEMY_TURN = (2,)
|
||||
MAP_HAS_SIREN = True
|
||||
MAP_HAS_MOVABLE_ENEMY = True
|
||||
MAP_HAS_MAP_STORY = False
|
||||
MAP_HAS_FLEET_STEP = True
|
||||
MAP_HAS_AMBUSH = False
|
||||
MAP_HAS_MYSTERY = False
|
||||
# ===== End of generated config =====
|
||||
|
||||
HOMO_EDGE_HOUGHLINES_THRESHOLD = 210
|
||||
|
||||
MAP_SWIPE_MULTIPLY = (1.205, 1.227)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.165, 1.187)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.131, 1.151)
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
|
||||
|
||||
def battle_0(self):
|
||||
if self.map_is_clear_mode:
|
||||
if self.clear_siren():
|
||||
return True
|
||||
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=1):
|
||||
return True
|
||||
else:
|
||||
if self.clear_any_enemy(sort=('cost_2',)):
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_5(self):
|
||||
return self.fleet_boss.clear_boss()
|
||||
@@ -669,7 +669,7 @@
|
||||
},
|
||||
"Campaign": {
|
||||
"Name": "D3",
|
||||
"Event": "war_archives_20230803_cn",
|
||||
"Event": "war_archives_20230223_cn",
|
||||
"Mode": "normal",
|
||||
"UseClearMode": true,
|
||||
"UseFleetLock": true,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# docker build -t hgjazhgj/alas:latest .
|
||||
# docker run -v ${PWD}:/app/AzurLaneAutoScript -p 22267:22267 --name alas -it --rm hgjazhgj/alas
|
||||
|
||||
FROM python:3.7-slim-bullseye
|
||||
FROM python:3.7-slim
|
||||
|
||||
WORKDIR /app/AzurLaneAutoScript
|
||||
|
||||
@@ -10,12 +10,7 @@ COPY requirements.txt /tmp/requirements.txt
|
||||
# Initial download of UiAutomator2 is slow outside of China using appetizer mirror, switch to GitHub
|
||||
RUN apt update \
|
||||
&& apt install -y git adb libgomp1 openssh-client \
|
||||
&& apt install -y build-essential pkg-config \
|
||||
&& apt install -y libavformat-dev libavcodec-dev libavdevice-dev \
|
||||
&& apt install -y libavutil-dev libswscale-dev libswresample-dev libavfilter-dev \
|
||||
&& git config --global --add safe.directory '*' \
|
||||
&& pip install Cython==0.29.37 \
|
||||
&& pip install av==10.0.0 --no-build-isolation \
|
||||
&& pip install -r /tmp/requirements.txt \
|
||||
&& rm /tmp/requirements.txt \
|
||||
&& rm -r ~/.cache/pip
|
||||
|
||||
@@ -14,19 +14,16 @@ deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib\n\
|
||||
deb https://mirrors.aliyun.com/debian-security/ bullseye-security main\n\
|
||||
deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main\n\
|
||||
deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib\n\
|
||||
deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib" \
|
||||
deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib\n\
|
||||
deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib\n\
|
||||
deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib" \
|
||||
> /etc/apt/sources.list \
|
||||
&& apt update \
|
||||
&& apt install -y git adb libgomp1 openssh-client \
|
||||
&& apt install -y build-essential pkg-config \
|
||||
&& apt install -y libavformat-dev libavcodec-dev libavdevice-dev \
|
||||
&& apt install -y libavutil-dev libswscale-dev libswresample-dev libavfilter-dev \
|
||||
&& git config --global --add safe.directory '*' \
|
||||
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
|
||||
&& echo 'Asia/Shanghai' > /etc/timezone \
|
||||
&& pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple \
|
||||
&& pip install Cython==0.29.37 \
|
||||
&& pip install av==10.0.0 --no-build-isolation \
|
||||
&& pip install -r /tmp/requirements.txt \
|
||||
&& rm /tmp/requirements.txt \
|
||||
&& rm -r ~/.cache/pip
|
||||
|
||||
@@ -11,20 +11,12 @@ 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_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'})
|
||||
EVENT_20201126_DETAIL = Button(area={'cn': (617, 470, 659, 510), 'en': (617, 470, 659, 510), 'jp': (617, 470, 659, 510), 'tw': (617, 470, 659, 510)}, color={'cn': (188, 152, 166), 'en': (188, 152, 166), 'jp': (188, 152, 166), 'tw': (188, 152, 166)}, button={'cn': (617, 470, 659, 510), 'en': (617, 470, 659, 510), 'jp': (617, 470, 659, 510), 'tw': (617, 470, 659, 510)}, file={'cn': './assets/cn/campaign/EVENT_20201126_DETAIL.png', 'en': './assets/cn/campaign/EVENT_20201126_DETAIL.png', 'jp': './assets/cn/campaign/EVENT_20201126_DETAIL.png', 'tw': './assets/cn/campaign/EVENT_20201126_DETAIL.png'})
|
||||
EVENT_20201126_DETAIL_CHECK = Button(area={'cn': (1198, 20, 1244, 65), 'en': (1198, 20, 1244, 65), 'jp': (1198, 20, 1244, 65), 'tw': (1198, 20, 1244, 65)}, color={'cn': (176, 138, 121), 'en': (176, 138, 121), 'jp': (176, 138, 121), 'tw': (176, 138, 121)}, button={'cn': (1198, 20, 1244, 65), 'en': (1198, 20, 1244, 65), 'jp': (1198, 20, 1244, 65), 'tw': (1198, 20, 1244, 65)}, file={'cn': './assets/cn/campaign/EVENT_20201126_DETAIL_CHECK.png', 'en': './assets/cn/campaign/EVENT_20201126_DETAIL_CHECK.png', 'jp': './assets/cn/campaign/EVENT_20201126_DETAIL_CHECK.png', 'tw': './assets/cn/campaign/EVENT_20201126_DETAIL_CHECK.png'})
|
||||
EVENT_20201126_DETAIL_WHITE = Button(area={'cn': (969, 94, 1030, 156), 'en': (969, 94, 1030, 156), 'jp': (969, 94, 1030, 156), 'tw': (969, 94, 1030, 156)}, color={'cn': (178, 148, 165), 'en': (178, 148, 165), 'jp': (178, 148, 165), 'tw': (178, 148, 165)}, button={'cn': (969, 94, 1030, 156), 'en': (969, 94, 1030, 156), 'jp': (969, 94, 1030, 156), 'tw': (969, 94, 1030, 156)}, file={'cn': './assets/cn/campaign/EVENT_20201126_DETAIL_WHITE.png', 'en': './assets/cn/campaign/EVENT_20201126_DETAIL_WHITE.png', 'jp': './assets/cn/campaign/EVENT_20201126_DETAIL_WHITE.png', 'tw': './assets/cn/campaign/EVENT_20201126_DETAIL_WHITE.png'})
|
||||
EVENT_20201126_ENTRANCE = Button(area={'cn': (927, 599, 1054, 631), 'en': (927, 599, 1054, 631), 'jp': (927, 599, 1054, 631), 'tw': (927, 599, 1054, 631)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (927, 599, 1054, 631), 'en': (927, 599, 1054, 631), 'jp': (927, 599, 1054, 631), 'tw': (927, 599, 1054, 631)}, file={'cn': './assets/cn/campaign/EVENT_20201126_ENTRANCE.png', 'en': './assets/cn/campaign/EVENT_20201126_ENTRANCE.png', 'jp': './assets/cn/campaign/EVENT_20201126_ENTRANCE.png', 'tw': './assets/cn/campaign/EVENT_20201126_ENTRANCE.png'})
|
||||
EVENT_20201126_ENTRANCE_TEMP = Button(area={'cn': (1023, 368, 1100, 407), 'en': (1025, 367, 1095, 406), 'jp': (1023, 367, 1101, 402), 'tw': (1023, 368, 1100, 407)}, color={'cn': (160, 208, 243), 'en': (156, 206, 243), 'jp': (167, 213, 245), 'tw': (160, 208, 243)}, button={'cn': (1023, 368, 1100, 407), 'en': (1025, 367, 1095, 406), 'jp': (1023, 367, 1101, 402), 'tw': (1023, 368, 1100, 407)}, file={'cn': './assets/cn/campaign/EVENT_20201126_ENTRANCE_TEMP.png', 'en': './assets/en/campaign/EVENT_20201126_ENTRANCE_TEMP.png', 'jp': './assets/jp/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_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_20250424_PT_ICON = Button(area={'cn': (1109, 109, 1133, 131), 'en': (1109, 109, 1133, 131), 'jp': (1109, 109, 1133, 131), 'tw': (1109, 109, 1133, 131)}, color={'cn': (182, 173, 150), 'en': (182, 173, 150), 'jp': (182, 173, 150), 'tw': (182, 173, 150)}, button={'cn': (1109, 109, 1133, 131), 'en': (1109, 109, 1133, 131), 'jp': (1109, 109, 1133, 131), 'tw': (1109, 109, 1133, 131)}, file={'cn': './assets/cn/campaign/EVENT_20250424_PT_ICON.png', 'en': './assets/cn/campaign/EVENT_20250424_PT_ICON.png', 'jp': './assets/cn/campaign/EVENT_20250424_PT_ICON.png', 'tw': './assets/cn/campaign/EVENT_20250424_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_DETAIL = Button(area={'cn': (618, 251, 658, 290), 'en': (618, 251, 658, 290), 'jp': (618, 251, 658, 290), 'tw': (618, 251, 658, 290)}, color={'cn': (221, 188, 185), 'en': (221, 188, 185), 'jp': (221, 188, 185), 'tw': (221, 188, 185)}, button={'cn': (618, 251, 658, 290), 'en': (618, 251, 658, 290), 'jp': (618, 251, 658, 290), 'tw': (618, 251, 658, 290)}, file={'cn': './assets/cn/campaign/EVENT_20260417_DETAIL.png', 'en': './assets/cn/campaign/EVENT_20260417_DETAIL.png', 'jp': './assets/cn/campaign/EVENT_20260417_DETAIL.png', 'tw': './assets/cn/campaign/EVENT_20260417_DETAIL.png'})
|
||||
EVENT_20260417_DETAIL_CHECK = Button(area={'cn': (439, 216, 535, 293), 'en': (439, 216, 535, 293), 'jp': (439, 216, 535, 293), 'tw': (439, 216, 535, 293)}, color={'cn': (187, 160, 173), 'en': (187, 160, 173), 'jp': (187, 160, 173), 'tw': (187, 160, 173)}, button={'cn': (439, 216, 535, 293), 'en': (439, 216, 535, 293), 'jp': (439, 216, 535, 293), 'tw': (439, 216, 535, 293)}, file={'cn': './assets/cn/campaign/EVENT_20260417_DETAIL_CHECK.png', 'en': './assets/cn/campaign/EVENT_20260417_DETAIL_CHECK.png', 'jp': './assets/cn/campaign/EVENT_20260417_DETAIL_CHECK.png', 'tw': './assets/cn/campaign/EVENT_20260417_DETAIL_CHECK.png'})
|
||||
EVENT_20260417_DETAIL_WHITE = Button(area={'cn': (1081, 92, 1141, 153), 'en': (1081, 92, 1141, 153), 'jp': (1081, 92, 1141, 153), 'tw': (1081, 92, 1141, 153)}, color={'cn': (211, 173, 175), 'en': (211, 173, 175), 'jp': (211, 173, 175), 'tw': (211, 173, 175)}, button={'cn': (1081, 92, 1141, 153), 'en': (1081, 92, 1141, 153), 'jp': (1081, 92, 1141, 153), 'tw': (1081, 92, 1141, 153)}, file={'cn': './assets/cn/campaign/EVENT_20260417_DETAIL_WHITE.png', 'en': './assets/cn/campaign/EVENT_20260417_DETAIL_WHITE.png', 'jp': './assets/cn/campaign/EVENT_20260417_DETAIL_WHITE.png', 'tw': './assets/cn/campaign/EVENT_20260417_DETAIL_WHITE.png'})
|
||||
EVENT_20260417_ENTRANCE = Button(area={'cn': (957, 522, 1091, 573), 'en': (957, 522, 1091, 573), 'jp': (957, 522, 1091, 573), 'tw': (957, 522, 1091, 573)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (957, 522, 1091, 573), 'en': (957, 522, 1091, 573), 'jp': (957, 522, 1091, 573), 'tw': (957, 522, 1091, 573)}, file={'cn': './assets/cn/campaign/EVENT_20260417_ENTRANCE.png', 'en': './assets/cn/campaign/EVENT_20260417_ENTRANCE.png', 'jp': './assets/cn/campaign/EVENT_20260417_ENTRANCE.png', 'tw': './assets/cn/campaign/EVENT_20260417_ENTRANCE.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_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'})
|
||||
|
||||
@@ -11,5 +11,5 @@ COMMISSION_SCROLL_AREA = Button(area={'cn': (1254, 77, 1261, 676), 'en': (1254,
|
||||
COMMISSION_START = Button(area={'cn': (1028, 322, 1156, 383), 'en': (1053, 333, 1134, 361), 'jp': (1033, 340, 1153, 376), 'tw': (1027, 326, 1157, 389)}, color={'cn': (229, 175, 113), 'en': (237, 199, 149), 'jp': (231, 184, 121), 'tw': (231, 180, 120)}, button={'cn': (1028, 322, 1156, 383), 'en': (1053, 333, 1134, 361), 'jp': (1033, 340, 1153, 376), 'tw': (1027, 326, 1157, 389)}, file={'cn': './assets/cn/commission/COMMISSION_START.png', 'en': './assets/en/commission/COMMISSION_START.png', 'jp': './assets/jp/commission/COMMISSION_START.png', 'tw': './assets/tw/commission/COMMISSION_START.png'})
|
||||
COMMISSION_URGENT = Button(area={'cn': (35, 231, 68, 281), 'en': (28, 221, 76, 283), 'jp': (34, 266, 68, 279), 'tw': (35, 229, 69, 280)}, color={'cn': (215, 188, 124), 'en': (169, 138, 95), 'jp': (216, 190, 111), 'tw': (213, 186, 123)}, button={'cn': (35, 231, 68, 281), 'en': (28, 221, 76, 283), 'jp': (34, 266, 68, 279), 'tw': (35, 229, 69, 280)}, file={'cn': './assets/cn/commission/COMMISSION_URGENT.png', 'en': './assets/en/commission/COMMISSION_URGENT.png', 'jp': './assets/jp/commission/COMMISSION_URGENT.png', 'tw': './assets/tw/commission/COMMISSION_URGENT.png'})
|
||||
EXP_INFO_S_REWARD = Button(area={'cn': (498, 140, 557, 154), 'en': (1138, 40, 1266, 145), 'jp': (498, 140, 557, 154), 'tw': (498, 140, 557, 154)}, color={'cn': (233, 241, 127), 'en': (89, 115, 159), 'jp': (233, 241, 127), 'tw': (233, 241, 127)}, button={'cn': (498, 140, 557, 154), 'en': (1138, 40, 1266, 145), 'jp': (498, 140, 557, 154), 'tw': (498, 140, 557, 154)}, file={'cn': './assets/cn/commission/EXP_INFO_S_REWARD.png', 'en': './assets/en/commission/EXP_INFO_S_REWARD.png', 'jp': './assets/jp/commission/EXP_INFO_S_REWARD.png', 'tw': './assets/tw/commission/EXP_INFO_S_REWARD.png'})
|
||||
REWARD_1 = Button(area={'cn': (383, 285, 503, 297), 'en': (403, 274, 504, 290), 'jp': (432, 273, 476, 294), 'tw': (383, 285, 503, 297)}, color={'cn': (238, 168, 81), 'en': (241, 198, 145), 'jp': (241, 188, 122), 'tw': (238, 168, 81)}, button={'cn': (383, 285, 503, 297), 'en': (392, 262, 515, 303), 'jp': (403, 271, 514, 303), 'tw': (383, 285, 503, 297)}, file={'cn': './assets/cn/commission/REWARD_1.png', 'en': './assets/en/commission/REWARD_1.png', 'jp': './assets/jp/commission/REWARD_1.png', 'tw': './assets/tw/commission/REWARD_1.png'})
|
||||
REWARD_1 = Button(area={'cn': (383, 285, 503, 297), 'en': (403, 274, 504, 290), 'jp': (432, 273, 476, 294), 'tw': (383, 285, 503, 297)}, color={'cn': (238, 168, 81), 'en': (241, 198, 145), 'jp': (241, 188, 122), 'tw': (238, 168, 81)}, button={'cn': (383, 285, 503, 297), 'en': (392, 262, 515, 303), 'jp': (393, 262, 514, 303), 'tw': (383, 285, 503, 297)}, file={'cn': './assets/cn/commission/REWARD_1.png', 'en': './assets/en/commission/REWARD_1.png', 'jp': './assets/jp/commission/REWARD_1.png', 'tw': './assets/tw/commission/REWARD_1.png'})
|
||||
REWARD_SAVE_CLICK = Button(area={'cn': (415, 184, 496, 214), 'en': (415, 184, 496, 214), 'jp': (415, 184, 496, 214), 'tw': (415, 184, 496, 214)}, color={'cn': (152, 150, 168), 'en': (152, 150, 168), 'jp': (152, 150, 168), 'tw': (152, 150, 168)}, button={'cn': (415, 184, 496, 214), 'en': (415, 184, 496, 214), 'jp': (415, 184, 496, 214), 'tw': (415, 184, 496, 214)}, file={'cn': './assets/cn/commission/REWARD_SAVE_CLICK.png', 'en': './assets/en/commission/REWARD_SAVE_CLICK.png', 'jp': './assets/jp/commission/REWARD_SAVE_CLICK.png', 'tw': './assets/tw/commission/REWARD_SAVE_CLICK.png'})
|
||||
|
||||
@@ -1643,30 +1643,27 @@
|
||||
"value": "campaign_main",
|
||||
"option": [
|
||||
"event_20201126_cn",
|
||||
"event_20250424_cn",
|
||||
"event_20220915_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20260417_cn"
|
||||
"event_20220915_cn"
|
||||
],
|
||||
"option_bold": [
|
||||
"event_20201126_cn",
|
||||
"event_20250424_cn",
|
||||
"event_20220915_cn",
|
||||
"event_20260417_cn"
|
||||
]
|
||||
},
|
||||
@@ -1933,30 +1930,27 @@
|
||||
"value": "campaign_main",
|
||||
"option": [
|
||||
"event_20201126_cn",
|
||||
"event_20250424_cn",
|
||||
"event_20220915_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20260417_cn"
|
||||
"event_20220915_cn"
|
||||
],
|
||||
"option_bold": [
|
||||
"event_20201126_cn",
|
||||
"event_20250424_cn",
|
||||
"event_20220915_cn",
|
||||
"event_20260417_cn"
|
||||
]
|
||||
},
|
||||
@@ -2338,30 +2332,27 @@
|
||||
"value": "campaign_main",
|
||||
"option": [
|
||||
"event_20201126_cn",
|
||||
"event_20250424_cn",
|
||||
"event_20220915_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20260417_cn"
|
||||
"event_20220915_cn"
|
||||
],
|
||||
"option_bold": [
|
||||
"event_20201126_cn",
|
||||
"event_20250424_cn",
|
||||
"event_20220915_cn",
|
||||
"event_20260417_cn"
|
||||
]
|
||||
},
|
||||
@@ -3494,16 +3485,12 @@
|
||||
"war_archives_20220428_cn",
|
||||
"war_archives_20220526_cn",
|
||||
"war_archives_20220728_cn",
|
||||
"war_archives_20220818_cn",
|
||||
"war_archives_20220915_cn",
|
||||
"war_archives_20221222_cn",
|
||||
"war_archives_20230223_cn",
|
||||
"war_archives_20230803_cn",
|
||||
"war_archives_20231026_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"war_archives_20230803_cn",
|
||||
"war_archives_20220818_cn",
|
||||
"war_archives_20230223_cn",
|
||||
"war_archives_20221222_cn",
|
||||
"war_archives_20220915_cn",
|
||||
@@ -3550,8 +3537,6 @@
|
||||
"war_archives_20181020_en"
|
||||
],
|
||||
"option_en": [
|
||||
"war_archives_20230803_cn",
|
||||
"war_archives_20220818_cn",
|
||||
"war_archives_20230223_cn",
|
||||
"war_archives_20221222_cn",
|
||||
"war_archives_20220915_cn",
|
||||
@@ -3598,8 +3583,6 @@
|
||||
"war_archives_20181020_en"
|
||||
],
|
||||
"option_jp": [
|
||||
"war_archives_20230803_cn",
|
||||
"war_archives_20220818_cn",
|
||||
"war_archives_20230223_cn",
|
||||
"war_archives_20221222_cn",
|
||||
"war_archives_20220915_cn",
|
||||
@@ -3646,8 +3629,6 @@
|
||||
"war_archives_20181020_en"
|
||||
],
|
||||
"option_tw": [
|
||||
"war_archives_20230803_cn",
|
||||
"war_archives_20220818_cn",
|
||||
"war_archives_20230223_cn",
|
||||
"war_archives_20221222_cn",
|
||||
"war_archives_20220915_cn",
|
||||
@@ -4083,30 +4064,27 @@
|
||||
"value": "campaign_main",
|
||||
"option": [
|
||||
"event_20201126_cn",
|
||||
"event_20250424_cn",
|
||||
"event_20220915_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20260417_cn"
|
||||
"event_20220915_cn"
|
||||
],
|
||||
"option_bold": [
|
||||
"event_20201126_cn",
|
||||
"event_20250424_cn",
|
||||
"event_20220915_cn",
|
||||
"event_20260417_cn"
|
||||
]
|
||||
},
|
||||
@@ -4505,30 +4483,27 @@
|
||||
"value": "campaign_main",
|
||||
"option": [
|
||||
"event_20201126_cn",
|
||||
"event_20250424_cn",
|
||||
"event_20220915_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20260417_cn"
|
||||
"event_20220915_cn"
|
||||
],
|
||||
"option_bold": [
|
||||
"event_20201126_cn",
|
||||
"event_20250424_cn",
|
||||
"event_20220915_cn",
|
||||
"event_20260417_cn"
|
||||
]
|
||||
},
|
||||
@@ -4927,30 +4902,27 @@
|
||||
"value": "campaign_main",
|
||||
"option": [
|
||||
"event_20201126_cn",
|
||||
"event_20250424_cn",
|
||||
"event_20220915_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20260417_cn"
|
||||
"event_20220915_cn"
|
||||
],
|
||||
"option_bold": [
|
||||
"event_20201126_cn",
|
||||
"event_20250424_cn",
|
||||
"event_20220915_cn",
|
||||
"event_20260417_cn"
|
||||
]
|
||||
},
|
||||
@@ -5349,30 +5321,27 @@
|
||||
"value": "campaign_main",
|
||||
"option": [
|
||||
"event_20201126_cn",
|
||||
"event_20250424_cn",
|
||||
"event_20220915_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20260417_cn"
|
||||
"event_20220915_cn"
|
||||
],
|
||||
"option_bold": [
|
||||
"event_20201126_cn",
|
||||
"event_20250424_cn",
|
||||
"event_20220915_cn",
|
||||
"event_20260417_cn"
|
||||
]
|
||||
},
|
||||
@@ -5761,30 +5730,27 @@
|
||||
"value": "campaign_main",
|
||||
"option": [
|
||||
"event_20201126_cn",
|
||||
"event_20250424_cn",
|
||||
"event_20220915_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20250424_cn",
|
||||
"event_20201126_cn",
|
||||
"event_20260417_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20260417_cn"
|
||||
"event_20220915_cn"
|
||||
],
|
||||
"option_bold": [
|
||||
"event_20201126_cn",
|
||||
"event_20250424_cn",
|
||||
"event_20220915_cn",
|
||||
"event_20260417_cn"
|
||||
]
|
||||
},
|
||||
|
||||
@@ -760,7 +760,7 @@
|
||||
"event_20241121_cn": "Dangerous Inventions Incoming",
|
||||
"event_20241219_cn": "Substellar Crepuscule",
|
||||
"event_20250227_cn": "Paradiso of Shackled Light",
|
||||
"event_20250424_cn": "Toward Tulipa’s Seas Rerun",
|
||||
"event_20250424_cn": "Toward Tulipa’s Seas",
|
||||
"event_20250520_cn": "A Rose on the High Tower",
|
||||
"event_20250724_cn": "The Alchemist and the Tower of Horizons",
|
||||
"event_20250814_cn": "Secrets of the Abyss",
|
||||
@@ -821,11 +821,9 @@
|
||||
"war_archives_20220428_cn": "archives Rondo at Rainbows End",
|
||||
"war_archives_20220526_cn": "archives Pledge of the Radiant Court",
|
||||
"war_archives_20220728_cn": "archives Aquilifers Ballade",
|
||||
"war_archives_20220818_cn": "archives Operation Convergence",
|
||||
"war_archives_20220915_cn": "archives Violet Tempest Blooming Lycoris",
|
||||
"war_archives_20221222_cn": "archives Parallel Superimposition",
|
||||
"war_archives_20230223_cn": "archives Revelations of Dust",
|
||||
"war_archives_20230803_cn": "archives Anthem of Remembrance",
|
||||
"war_archives_20231026_cn": "archives Tempesta and the Fountain of Youth"
|
||||
},
|
||||
"Mode": {
|
||||
|
||||
@@ -760,7 +760,7 @@
|
||||
"event_20241121_cn": "危険発明接近中",
|
||||
"event_20241219_cn": "星降る夕影の残光",
|
||||
"event_20250227_cn": "籠檻に囚われし神光",
|
||||
"event_20250424_cn": "チュリッパの海へ(復刻)",
|
||||
"event_20250424_cn": "チュリッパの海へ",
|
||||
"event_20250520_cn": "高い塔の薔薇",
|
||||
"event_20250724_cn": "錬金術士と天空邂逅の塔",
|
||||
"event_20250814_cn": "淵層界の秘密",
|
||||
@@ -821,11 +821,9 @@
|
||||
"war_archives_20220428_cn": "檔案 吟ずる瑠璃の楽章",
|
||||
"war_archives_20220526_cn": "檔案 诚閃の剣 搖光の城",
|
||||
"war_archives_20220728_cn": "檔案 鋼鷲の冒険譚",
|
||||
"war_archives_20220818_cn": "檔案 結像点作戦",
|
||||
"war_archives_20220915_cn": "檔案 赫の涙月 菫の暁風",
|
||||
"war_archives_20221222_cn": "檔案 積重なる事象の幻界",
|
||||
"war_archives_20230223_cn": "檔案 黙示の遺構",
|
||||
"war_archives_20230803_cn": "檔案 燃ゆる聖都の回想曲",
|
||||
"war_archives_20231026_cn": "檔案 テンペスタと若返りの泉"
|
||||
},
|
||||
"Mode": {
|
||||
|
||||
@@ -760,7 +760,7 @@
|
||||
"event_20241121_cn": "危险发明迫近中",
|
||||
"event_20241219_cn": "星光下的余晖",
|
||||
"event_20250227_cn": "樊笼内的神光",
|
||||
"event_20250424_cn": "复刻扬起郁金之旗",
|
||||
"event_20250424_cn": "扬起郁金之旗",
|
||||
"event_20250520_cn": "高塔上的蔷薇",
|
||||
"event_20250724_cn": "优米雅的炼金工房",
|
||||
"event_20250814_cn": "奇渊下的秘密",
|
||||
@@ -821,11 +821,9 @@
|
||||
"war_archives_20220428_cn": "档案 虹彩的终幕曲",
|
||||
"war_archives_20220526_cn": "档案 泠誓光庭",
|
||||
"war_archives_20220728_cn": "档案 雄鹰的叙事歌",
|
||||
"war_archives_20220818_cn": "档案 远汇点作战",
|
||||
"war_archives_20220915_cn": "档案 紫绛槿岚",
|
||||
"war_archives_20221222_cn": "档案 定向折叠",
|
||||
"war_archives_20230223_cn": "档案 湮烬尘墟",
|
||||
"war_archives_20230803_cn": "档案 奏响鸢尾之歌",
|
||||
"war_archives_20231026_cn": "档案 飓风与青春之泉"
|
||||
},
|
||||
"Mode": {
|
||||
|
||||
@@ -769,7 +769,7 @@
|
||||
"event_20251218_cn": "響徹於天穹之音",
|
||||
"event_20260226_cn": "春滿客棧Online",
|
||||
"event_20260326_cn": "漫遊者招募計劃",
|
||||
"event_20260417_cn": "假日航線閃耀海濱",
|
||||
"event_20260417_cn": "Vacation Lane – Beachside Brilliance",
|
||||
"raid_20200624": "特別演習埃塞克斯級(復刻)",
|
||||
"raid_20210708": "復刻穿越彼方的水線",
|
||||
"raid_20220127": "演習神秘事件調查",
|
||||
@@ -821,11 +821,9 @@
|
||||
"war_archives_20220428_cn": "檔案 虹彩的終幕曲",
|
||||
"war_archives_20220526_cn": "檔案 泠誓光庭",
|
||||
"war_archives_20220728_cn": "檔案 雄鷹的敘事歌",
|
||||
"war_archives_20220818_cn": "檔案 遠匯點作戰",
|
||||
"war_archives_20220915_cn": "檔案 紫絳槿嵐",
|
||||
"war_archives_20221222_cn": "檔案 定向折疊",
|
||||
"war_archives_20230223_cn": "檔案 湮燼塵墟",
|
||||
"war_archives_20230803_cn": "檔案 奏響鳶尾之歌",
|
||||
"war_archives_20231026_cn": "檔案 飓風與青春之泉"
|
||||
},
|
||||
"Mode": {
|
||||
|
||||
@@ -8,7 +8,7 @@ ADD_NEW_STUDENT = Button(area={'cn': (417, 375, 438, 398), 'en': (417, 375, 438,
|
||||
BOOK_EMPTY_POPUP = Button(area={'cn': (880, 180, 908, 209), 'en': (880, 180, 908, 209), 'jp': (880, 180, 908, 209), 'tw': (880, 180, 908, 209)}, color={'cn': (211, 109, 105), 'en': (211, 109, 105), 'jp': (211, 109, 105), 'tw': (211, 109, 105)}, button={'cn': (880, 180, 908, 209), 'en': (880, 180, 908, 209), 'jp': (880, 180, 908, 209), 'tw': (880, 180, 908, 209)}, file={'cn': './assets/cn/tactical/BOOK_EMPTY_POPUP.png', 'en': './assets/en/tactical/BOOK_EMPTY_POPUP.png', 'jp': './assets/jp/tactical/BOOK_EMPTY_POPUP.png', 'tw': './assets/tw/tactical/BOOK_EMPTY_POPUP.png'})
|
||||
OCR_SKILL_EXP = Button(area={'cn': (771, 191, 951, 209), 'en': (771, 191, 951, 209), 'jp': (728, 189, 950, 211), 'tw': (771, 191, 951, 209)}, color={'cn': (72, 82, 83), 'en': (72, 82, 83), 'jp': (69, 78, 82), 'tw': (72, 82, 83)}, button={'cn': (771, 191, 951, 209), 'en': (771, 191, 951, 209), 'jp': (728, 189, 950, 211), 'tw': (771, 191, 951, 209)}, file={'cn': './assets/cn/tactical/OCR_SKILL_EXP.png', 'en': './assets/en/tactical/OCR_SKILL_EXP.png', 'jp': './assets/jp/tactical/OCR_SKILL_EXP.png', 'tw': './assets/tw/tactical/OCR_SKILL_EXP.png'})
|
||||
RAPID_TRAINING = Button(area={'cn': (518, 566, 583, 582), 'en': (518, 568, 585, 580), 'jp': (518, 566, 584, 583), 'tw': (518, 566, 583, 582)}, color={'cn': (233, 212, 171), 'en': (229, 205, 156), 'jp': (232, 209, 165), 'tw': (233, 212, 171)}, button={'cn': (518, 566, 583, 582), 'en': (518, 568, 585, 580), 'jp': (518, 566, 584, 583), 'tw': (518, 566, 583, 582)}, file={'cn': './assets/cn/tactical/RAPID_TRAINING.png', 'en': './assets/en/tactical/RAPID_TRAINING.png', 'jp': './assets/jp/tactical/RAPID_TRAINING.png', 'tw': './assets/cn/tactical/RAPID_TRAINING.png'})
|
||||
REWARD_2 = Button(area={'cn': (418, 413, 468, 434), 'en': (403, 416, 504, 432), 'jp': (432, 415, 476, 436), 'tw': (418, 413, 468, 434)}, color={'cn': (240, 191, 120), 'en': (240, 201, 145), 'jp': (240, 191, 121), 'tw': (240, 191, 120)}, button={'cn': (383, 404, 503, 444), 'en': (392, 404, 515, 445), 'jp': (403, 415, 520, 450), 'tw': (383, 404, 503, 444)}, file={'cn': './assets/cn/tactical/REWARD_2.png', 'en': './assets/en/tactical/REWARD_2.png', 'jp': './assets/jp/tactical/REWARD_2.png', 'tw': './assets/tw/tactical/REWARD_2.png'})
|
||||
REWARD_2 = Button(area={'cn': (418, 413, 468, 434), 'en': (403, 416, 504, 432), 'jp': (432, 415, 476, 436), 'tw': (418, 413, 468, 434)}, color={'cn': (240, 191, 120), 'en': (240, 201, 145), 'jp': (240, 191, 121), 'tw': (240, 191, 120)}, button={'cn': (383, 404, 503, 444), 'en': (392, 404, 515, 445), 'jp': (399, 415, 520, 450), 'tw': (383, 404, 503, 444)}, file={'cn': './assets/cn/tactical/REWARD_2.png', 'en': './assets/en/tactical/REWARD_2.png', 'jp': './assets/jp/tactical/REWARD_2.png', 'tw': './assets/tw/tactical/REWARD_2.png'})
|
||||
SKILL_CONFIRM = Button(area={'cn': (575, 563, 705, 594), 'en': (600, 558, 681, 581), 'jp': (576, 563, 705, 594), 'tw': (577, 563, 704, 593)}, color={'cn': (147, 177, 216), 'en': (167, 191, 223), 'jp': (136, 170, 213), 'tw': (161, 187, 220)}, button={'cn': (575, 563, 705, 594), 'en': (600, 558, 681, 581), 'jp': (576, 563, 705, 594), 'tw': (577, 563, 704, 593)}, file={'cn': './assets/cn/tactical/SKILL_CONFIRM.png', 'en': './assets/en/tactical/SKILL_CONFIRM.png', 'jp': './assets/jp/tactical/SKILL_CONFIRM.png', 'tw': './assets/tw/tactical/SKILL_CONFIRM.png'})
|
||||
TACTICAL_CLASS_CANCEL = Button(area={'cn': (818, 591, 990, 647), 'en': (836, 591, 973, 639), 'jp': (840, 606, 969, 637), 'tw': (819, 590, 989, 647)}, color={'cn': (153, 154, 154), 'en': (163, 164, 164), 'jp': (175, 176, 176), 'tw': (152, 153, 154)}, button={'cn': (818, 591, 990, 647), 'en': (836, 591, 973, 639), 'jp': (840, 606, 969, 637), 'tw': (819, 590, 989, 647)}, file={'cn': './assets/cn/tactical/TACTICAL_CLASS_CANCEL.png', 'en': './assets/en/tactical/TACTICAL_CLASS_CANCEL.png', 'jp': './assets/jp/tactical/TACTICAL_CLASS_CANCEL.png', 'tw': './assets/tw/tactical/TACTICAL_CLASS_CANCEL.png'})
|
||||
TACTICAL_CLASS_START = Button(area={'cn': (1024, 590, 1197, 648), 'en': (1045, 592, 1176, 640), 'jp': (1046, 606, 1176, 637), 'tw': (1026, 590, 1196, 647)}, color={'cn': (96, 139, 194), 'en': (95, 137, 190), 'jp': (132, 165, 208), 'tw': (101, 143, 196)}, button={'cn': (1024, 590, 1197, 648), 'en': (1045, 592, 1176, 640), 'jp': (1046, 606, 1176, 637), 'tw': (1026, 590, 1196, 647)}, file={'cn': './assets/cn/tactical/TACTICAL_CLASS_START.png', 'en': './assets/en/tactical/TACTICAL_CLASS_START.png', 'jp': './assets/jp/tactical/TACTICAL_CLASS_START.png', 'tw': './assets/tw/tactical/TACTICAL_CLASS_START.png'})
|
||||
|
||||
@@ -6,7 +6,6 @@ from module.base.template import Template
|
||||
|
||||
OCR_DATA_KEY_CAMPAIGN = Button(area={'cn': (1188, 107, 1272, 131), 'en': (1188, 107, 1272, 131), 'jp': (1188, 107, 1272, 131), 'tw': (1188, 107, 1272, 131)}, color={'cn': (104, 101, 107), 'en': (104, 101, 107), 'jp': (104, 101, 107), 'tw': (104, 101, 107)}, button={'cn': (1188, 107, 1272, 131), 'en': (1188, 107, 1272, 131), 'jp': (1188, 107, 1272, 131), 'tw': (1188, 107, 1272, 131)}, file={'cn': './assets/cn/war_archives/OCR_DATA_KEY_CAMPAIGN.png', 'en': './assets/en/war_archives/OCR_DATA_KEY_CAMPAIGN.png', 'jp': './assets/jp/war_archives/OCR_DATA_KEY_CAMPAIGN.png', 'tw': './assets/tw/war_archives/OCR_DATA_KEY_CAMPAIGN.png'})
|
||||
TEMPLATE_ABYSSAL_REFRAIN = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_ABYSSAL_REFRAIN.png', 'en': './assets/cn/war_archives/TEMPLATE_ABYSSAL_REFRAIN.png', 'jp': './assets/cn/war_archives/TEMPLATE_ABYSSAL_REFRAIN.png', 'tw': './assets/cn/war_archives/TEMPLATE_ABYSSAL_REFRAIN.png'})
|
||||
TEMPLATE_ANTHEM_OF_REMEMBRANCE = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_ANTHEM_OF_REMEMBRANCE.png', 'en': './assets/cn/war_archives/TEMPLATE_ANTHEM_OF_REMEMBRANCE.png', 'jp': './assets/cn/war_archives/TEMPLATE_ANTHEM_OF_REMEMBRANCE.png', 'tw': './assets/cn/war_archives/TEMPLATE_ANTHEM_OF_REMEMBRANCE.png'})
|
||||
TEMPLATE_AQUILIFERS_BALLADE = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_AQUILIFERS_BALLADE.png', 'en': './assets/cn/war_archives/TEMPLATE_AQUILIFERS_BALLADE.png', 'jp': './assets/cn/war_archives/TEMPLATE_AQUILIFERS_BALLADE.png', 'tw': './assets/cn/war_archives/TEMPLATE_AQUILIFERS_BALLADE.png'})
|
||||
TEMPLATE_ASHEN_SIMULACRUM = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_ASHEN_SIMULACRUM.png', 'en': './assets/en/war_archives/TEMPLATE_ASHEN_SIMULACRUM.png', 'jp': './assets/cn/war_archives/TEMPLATE_ASHEN_SIMULACRUM.png', 'tw': './assets/cn/war_archives/TEMPLATE_ASHEN_SIMULACRUM.png'})
|
||||
TEMPLATE_AURORA_NOCTIS = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_AURORA_NOCTIS.png', 'en': './assets/en/war_archives/TEMPLATE_AURORA_NOCTIS.png', 'jp': './assets/cn/war_archives/TEMPLATE_AURORA_NOCTIS.png', 'tw': './assets/cn/war_archives/TEMPLATE_AURORA_NOCTIS.png'})
|
||||
@@ -28,7 +27,6 @@ TEMPLATE_MICROLAYER_MEDLEY = Template(file={'cn': './assets/cn/war_archives/TEMP
|
||||
TEMPLATE_MIRROR_INVOLUTION = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_MIRROR_INVOLUTION.png', 'en': './assets/cn/war_archives/TEMPLATE_MIRROR_INVOLUTION.png', 'jp': './assets/cn/war_archives/TEMPLATE_MIRROR_INVOLUTION.png', 'tw': './assets/cn/war_archives/TEMPLATE_MIRROR_INVOLUTION.png'})
|
||||
TEMPLATE_MOONLIT_OVERTURE = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_MOONLIT_OVERTURE.png', 'en': './assets/cn/war_archives/TEMPLATE_MOONLIT_OVERTURE.png', 'jp': './assets/cn/war_archives/TEMPLATE_MOONLIT_OVERTURE.png', 'tw': './assets/cn/war_archives/TEMPLATE_MOONLIT_OVERTURE.png'})
|
||||
TEMPLATE_NORTHERN_OVERTURE = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_NORTHERN_OVERTURE.png', 'en': './assets/en/war_archives/TEMPLATE_NORTHERN_OVERTURE.png', 'jp': './assets/cn/war_archives/TEMPLATE_NORTHERN_OVERTURE.png', 'tw': './assets/cn/war_archives/TEMPLATE_NORTHERN_OVERTURE.png'})
|
||||
TEMPLATE_OPERATION_CONVERGENCE = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_OPERATION_CONVERGENCE.png', 'en': './assets/cn/war_archives/TEMPLATE_OPERATION_CONVERGENCE.png', 'jp': './assets/cn/war_archives/TEMPLATE_OPERATION_CONVERGENCE.png', 'tw': './assets/cn/war_archives/TEMPLATE_OPERATION_CONVERGENCE.png'})
|
||||
TEMPLATE_PARALLEL_SUPERIMPOSITION = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_PARALLEL_SUPERIMPOSITION.png', 'en': './assets/cn/war_archives/TEMPLATE_PARALLEL_SUPERIMPOSITION.png', 'jp': './assets/cn/war_archives/TEMPLATE_PARALLEL_SUPERIMPOSITION.png', 'tw': './assets/cn/war_archives/TEMPLATE_PARALLEL_SUPERIMPOSITION.png'})
|
||||
TEMPLATE_PLEDGE_OF_THE_RADIANT_COURT = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_PLEDGE_OF_THE_RADIANT_COURT.png', 'en': './assets/cn/war_archives/TEMPLATE_PLEDGE_OF_THE_RADIANT_COURT.png', 'jp': './assets/cn/war_archives/TEMPLATE_PLEDGE_OF_THE_RADIANT_COURT.png', 'tw': './assets/cn/war_archives/TEMPLATE_PLEDGE_OF_THE_RADIANT_COURT.png'})
|
||||
TEMPLATE_PRELUDE_UNDER_THE_MOON = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_PRELUDE_UNDER_THE_MOON.png', 'en': './assets/cn/war_archives/TEMPLATE_PRELUDE_UNDER_THE_MOON.png', 'jp': './assets/cn/war_archives/TEMPLATE_PRELUDE_UNDER_THE_MOON.png', 'tw': './assets/cn/war_archives/TEMPLATE_PRELUDE_UNDER_THE_MOON.png'})
|
||||
|
||||
@@ -45,6 +45,4 @@ dic_archives_template = {
|
||||
'war_archives_20220915_cn': TEMPLATE_VIOLET_TEMPEST_BLOOMING_LYCORIS,
|
||||
'war_archives_20221222_cn': TEMPLATE_PARALLEL_SUPERIMPOSITION,
|
||||
'war_archives_20230223_cn': TEMPLATE_REVELATIONS_OF_DUST,
|
||||
'war_archives_20220818_cn': TEMPLATE_OPERATION_CONVERGENCE,
|
||||
'war_archives_20230803_cn': TEMPLATE_ANTHEM_OF_REMEMBRANCE,
|
||||
}
|
||||
|
||||