1
0
mirror of https://gitee.com/sui-feng-cb/AzurLaneAutoScript1 synced 2026-05-16 13:49:40 +08:00

1 Commits

Author SHA1 Message Date
881ae62c85 Upd: [EN] asset EVENT_20201126_ENTRANCE_TEMP 2026-04-24 21:41:02 +08:00
45 changed files with 52 additions and 772 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@@ -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 Tulipas Seas Rerun | 复刻扬起郁金之旗 | Toward Tulipas Seas Rerun | チュリッパの海へ(復刻) | - |
| 20260417 | event 20260417 cn | Vacation Lane Beachside Brilliance | - | - | - | 假日航線閃耀海濱 |

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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):

View File

@@ -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)

View File

@@ -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()

View File

@@ -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()

View File

@@ -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()

View File

@@ -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()

View File

@@ -1,7 +0,0 @@
from ..campaign_war_archives.campaign_base import CampaignBase as CampaignBase_
class CampaignBase(CampaignBase_):
STAGE_INCREASE = [
'SP1 > SP2 > SP3',
]

View File

@@ -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()

View File

@@ -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()

View File

@@ -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()

View File

@@ -669,7 +669,7 @@
},
"Campaign": {
"Name": "D3",
"Event": "war_archives_20230803_cn",
"Event": "war_archives_20230223_cn",
"Mode": "normal",
"UseClearMode": true,
"UseFleetLock": true,

View File

@@ -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

View File

@@ -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

View File

@@ -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'})

View File

@@ -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'})

View File

@@ -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"
]
},

View File

@@ -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 Tulipas Seas Rerun",
"event_20250424_cn": "Toward Tulipas 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": {

View File

@@ -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": {

View File

@@ -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": {

View File

@@ -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": {

View File

@@ -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'})

View File

@@ -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'})

View File

@@ -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,
}