Add: Heart-Linking Harmony chapter SP
BIN
assets/cn/template/TEMPLATE_SIREN_DidoIdol2.gif
Normal file
After Width: | Height: | Size: 6.2 KiB |
BIN
assets/cn/template/TEMPLATE_SIREN_Elizabeth3.gif
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
assets/cn/template/TEMPLATE_SIREN_GascogneIdol.gif
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
assets/cn/template/TEMPLATE_SIREN_Laffey6.gif
Normal file
After Width: | Height: | Size: 6.3 KiB |
BIN
assets/cn/template/TEMPLATE_SIREN_RoonIdol2.gif
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
assets/cn/template/TEMPLATE_SIREN_SheffieldIdol.gif
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
assets/cn/template/TEMPLATE_SIREN_TaihouIdol.gif
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
assets/cn/template/TEMPLATE_SIREN_TashkentIdol.gif
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
assets/cn/template/TEMPLATE_SIREN_Z23_5.gif
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
assets/en/template/TEMPLATE_SIREN_DidoIdol2.gif
Normal file
After Width: | Height: | Size: 6.2 KiB |
BIN
assets/en/template/TEMPLATE_SIREN_Elizabeth3.gif
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
assets/en/template/TEMPLATE_SIREN_GascogneIdol.gif
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
assets/en/template/TEMPLATE_SIREN_Laffey6.gif
Normal file
After Width: | Height: | Size: 6.3 KiB |
BIN
assets/en/template/TEMPLATE_SIREN_RoonIdol2.gif
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
assets/en/template/TEMPLATE_SIREN_SheffieldIdol.gif
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
assets/en/template/TEMPLATE_SIREN_TaihouIdol.gif
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
assets/en/template/TEMPLATE_SIREN_TashkentIdol.gif
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
assets/en/template/TEMPLATE_SIREN_Z23_5.gif
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
assets/jp/template/TEMPLATE_SIREN_DidoIdol2.gif
Normal file
After Width: | Height: | Size: 6.2 KiB |
BIN
assets/jp/template/TEMPLATE_SIREN_Elizabeth3.gif
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
assets/jp/template/TEMPLATE_SIREN_GascogneIdol.gif
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
assets/jp/template/TEMPLATE_SIREN_Laffey6.gif
Normal file
After Width: | Height: | Size: 6.3 KiB |
BIN
assets/jp/template/TEMPLATE_SIREN_RoonIdol2.gif
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
assets/jp/template/TEMPLATE_SIREN_SheffieldIdol.gif
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
assets/jp/template/TEMPLATE_SIREN_TaihouIdol.gif
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
assets/jp/template/TEMPLATE_SIREN_TashkentIdol.gif
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
assets/jp/template/TEMPLATE_SIREN_Z23_5.gif
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
assets/tw/template/TEMPLATE_SIREN_DidoIdol2.gif
Normal file
After Width: | Height: | Size: 6.2 KiB |
BIN
assets/tw/template/TEMPLATE_SIREN_Elizabeth3.gif
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
assets/tw/template/TEMPLATE_SIREN_GascogneIdol.gif
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
assets/tw/template/TEMPLATE_SIREN_Laffey6.gif
Normal file
After Width: | Height: | Size: 6.3 KiB |
BIN
assets/tw/template/TEMPLATE_SIREN_RoonIdol2.gif
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
assets/tw/template/TEMPLATE_SIREN_SheffieldIdol.gif
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
assets/tw/template/TEMPLATE_SIREN_TaihouIdol.gif
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
assets/tw/template/TEMPLATE_SIREN_TashkentIdol.gif
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
assets/tw/template/TEMPLATE_SIREN_Z23_5.gif
Normal file
After Width: | Height: | Size: 3.2 KiB |
50
campaign/event_20240425_cn/campaign_base.py
Normal file
@ -0,0 +1,50 @@
|
||||
from module.campaign.campaign_base import CampaignBase as CampaignBase_
|
||||
from module.logger import logger
|
||||
|
||||
|
||||
class CampaignBase(CampaignBase_):
|
||||
STAGE_INCREASE = [
|
||||
"""
|
||||
SP1 > SP2 > SP3 > SP4 > SP5
|
||||
""",
|
||||
"""
|
||||
ISP1 > ISP2 > ISP3 > ISP4 > ISP5 > ISP6
|
||||
""",
|
||||
]
|
||||
|
||||
def campaign_set_chapter_event(self, chapter, mode='normal'):
|
||||
self.ui_goto_event()
|
||||
self.campaign_ensure_chapter(index=chapter)
|
||||
return True
|
||||
# μ
|
||||
|
||||
def _campaign_get_chapter_index(self, name):
|
||||
"""
|
||||
Args:
|
||||
name (str, int):
|
||||
|
||||
Returns:
|
||||
int
|
||||
"""
|
||||
if name == 'sp':
|
||||
return 1
|
||||
if name == 'isp':
|
||||
return 2
|
||||
if name == 'ex_sp':
|
||||
return 3
|
||||
if name == 'ex_ex':
|
||||
return 4
|
||||
|
||||
return super(CampaignBase, CampaignBase)._campaign_get_chapter_index(name)
|
||||
|
||||
def is_event_animation(self):
|
||||
# Blue banner
|
||||
if self.image_color_count((1180, 285, 1280, 335), color=(140, 215, 255), count=1000):
|
||||
logger.info('Live start!')
|
||||
return True
|
||||
# Red-black banner with white bottom border
|
||||
if self.image_color_count((1193, 428, 1273, 436), color=(255, 255, 255), count=500):
|
||||
logger.info('Live start!')
|
||||
return True
|
||||
|
||||
return False
|
87
campaign/event_20240425_cn/sp1.py
Normal file
@ -0,0 +1,87 @@
|
||||
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 = 'I8'
|
||||
MAP.camera_data = ['C3', 'C6', 'E3', 'E6']
|
||||
MAP.camera_data_spawn_point = ['E3']
|
||||
MAP.camera_sight = (-2, -1, 3, 2)
|
||||
MAP.map_data = """
|
||||
-- -- -- -- -- -- -- -- --
|
||||
-- -- ME ++ ++ ++ -- ++ --
|
||||
++ ME -- ++ MB ++ ME -- ME
|
||||
++ -- -- ++ -- ++ -- -- --
|
||||
-- Me -- SP -- SP -- Me --
|
||||
ME -- -- -- __ -- -- -- ME
|
||||
-- ++ ME -- MS -- 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': 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:
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['Laffey6']
|
||||
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 =====
|
||||
|
||||
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (80, 255 - 33),
|
||||
'width': (0.9, 10),
|
||||
'prominence': 10,
|
||||
'distance': 35,
|
||||
}
|
||||
MAP_SWIPE_MULTIPLY = (1.062, 1.082)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.027, 1.046)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (0.997, 1.015)
|
||||
MAP_ENSURE_EDGE_INSIGHT_CORNER = 'bottom'
|
||||
MAP_WALK_USE_CURRENT_FLEET = True
|
||||
|
||||
|
||||
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.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()
|
78
campaign/event_20240425_cn/sp2.py
Normal file
@ -0,0 +1,78 @@
|
||||
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 = 'I7'
|
||||
MAP.camera_data = ['D2', 'D5', 'F5']
|
||||
MAP.camera_data_spawn_point = ['F2']
|
||||
MAP.camera_sight = (-2, -1, 3, 2)
|
||||
MAP.map_data = """
|
||||
-- -- ME -- -- MS -- -- SP
|
||||
-- ++ ++ Me __ Me MS -- --
|
||||
-- ++ ++ Me -- MS -- -- SP
|
||||
-- -- 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
|
||||
"""
|
||||
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, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['TashkentIdol', 'DidoIdol2']
|
||||
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 =====
|
||||
|
||||
HOMO_STORAGE = ((7, 4), [(179.668, 262.579), (1042.431, 262.579), (89.435, 660.188), (1122.585, 660.188)])
|
||||
MAP_SWIPE_MULTIPLY = (1.246, 1.269)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.205, 1.227)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.170, 1.191)
|
||||
|
||||
|
||||
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.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()
|
81
campaign/event_20240425_cn/sp3.py
Normal file
@ -0,0 +1,81 @@
|
||||
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 = ['C4', 'E4', 'E6']
|
||||
MAP.camera_data_spawn_point = ['C6']
|
||||
MAP.camera_sight = (-2, -1, 3, 2)
|
||||
MAP.map_data = """
|
||||
++ ++ ++ ++ -- ++ ++ ++ --
|
||||
-- ++ MB ++ ME -- ME -- --
|
||||
ME ++ -- ++ -- Me -- ME --
|
||||
-- Me -- Me -- ++ -- ME ++
|
||||
-- MS __ MS -- Me -- -- ++
|
||||
-- -- MS -- -- -- -- 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
|
||||
"""
|
||||
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, 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 = ['SheffieldIdol', 'RoonIdol2']
|
||||
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.069, 1.089)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.034, 1.053)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.004, 1.022)
|
||||
|
||||
|
||||
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.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()
|
81
campaign/event_20240425_cn/sp4.py
Normal file
@ -0,0 +1,81 @@
|
||||
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 = 'I8'
|
||||
MAP.camera_data = ['C3', 'C6', 'F3', 'F6']
|
||||
MAP.camera_data_spawn_point = ['D2']
|
||||
MAP.camera_sight = (-2, -1, 3, 2)
|
||||
MAP.map_data = """
|
||||
++ ++ ++ SP -- SP ++ ++ ++
|
||||
-- Me -- -- -- -- -- Me --
|
||||
ME -- MS -- MS -- MS -- ME
|
||||
-- ++ -- Me __ Me -- ++ --
|
||||
-- Me -- ++ ++ ++ -- Me --
|
||||
ME -- -- ++ MB ++ -- -- 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': 3, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 2},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'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 = ['Z23_5', 'Elizabeth3']
|
||||
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.251, 1.275)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.210, 1.232)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.175, 1.196)
|
||||
|
||||
|
||||
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.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()
|
93
campaign/event_20240425_cn/sp5.py
Normal file
@ -0,0 +1,93 @@
|
||||
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('SP5')
|
||||
MAP.shape = 'I9'
|
||||
MAP.camera_data = ['C4', 'C7', 'F4', 'F7']
|
||||
MAP.camera_data_spawn_point = ['C7']
|
||||
MAP.camera_sight = (-2, -1, 3, 2)
|
||||
MAP.map_data = """
|
||||
++ ++ -- ++ ++ ++ -- ++ ++
|
||||
++ ++ ME -- Me -- ME -- ++
|
||||
-- -- -- ME -- ME -- -- --
|
||||
-- ME -- ++ ++ ++ -- ME --
|
||||
ME ++ -- ++ MB ++ -- ++ ME
|
||||
-- ++ -- ++ -- ++ -- ++ --
|
||||
-- -- MS -- MS -- 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 50 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, 'enemy': 1},
|
||||
{'battle': 5},
|
||||
{'battle': 6, '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 = ['GascogneIdol', 'TaihouIdol']
|
||||
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.012, 1.031)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (0.979, 0.997)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (0.950, 0.968)
|
||||
|
||||
|
||||
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.clear_siren():
|
||||
return True
|
||||
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=1):
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_5(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_6(self):
|
||||
return self.fleet_boss.clear_boss()
|
@ -86,13 +86,16 @@ TEMPLATE_SIREN_Dace = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_
|
||||
TEMPLATE_SIREN_Deutschland = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Deutschland.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Deutschland.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Deutschland.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Deutschland.gif'})
|
||||
TEMPLATE_SIREN_Dewey = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Dewey.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Dewey.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Dewey.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Dewey.gif'})
|
||||
TEMPLATE_SIREN_DidoIdol = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_DidoIdol.gif', 'en': './assets/en/template/TEMPLATE_SIREN_DidoIdol.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_DidoIdol.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_DidoIdol.gif'})
|
||||
TEMPLATE_SIREN_DidoIdol2 = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_DidoIdol2.gif', 'en': './assets/en/template/TEMPLATE_SIREN_DidoIdol2.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_DidoIdol2.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_DidoIdol2.gif'})
|
||||
TEMPLATE_SIREN_Dilloy = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Dilloy.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Dilloy.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Dilloy.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Dilloy.gif'})
|
||||
TEMPLATE_SIREN_DogPink = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_DogPink.gif', 'en': './assets/en/template/TEMPLATE_SIREN_DogPink.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_DogPink.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_DogPink.gif'})
|
||||
TEMPLATE_SIREN_Dorsetshire = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Dorsetshire.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Dorsetshire.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Dorsetshire.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Dorsetshire.gif'})
|
||||
TEMPLATE_SIREN_DukeOfYork = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_DukeOfYork.gif', 'en': './assets/en/template/TEMPLATE_SIREN_DukeOfYork.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_DukeOfYork.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_DukeOfYork.gif'})
|
||||
TEMPLATE_SIREN_ELpurple = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_ELpurple.gif', 'en': './assets/en/template/TEMPLATE_SIREN_ELpurple.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_ELpurple.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_ELpurple.gif'})
|
||||
TEMPLATE_SIREN_Elizabeth3 = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Elizabeth3.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Elizabeth3.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Elizabeth3.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Elizabeth3.gif'})
|
||||
TEMPLATE_SIREN_Formidable = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Formidable.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Formidable.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Formidable.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Formidable.gif'})
|
||||
TEMPLATE_SIREN_Gascogne = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Gascogne.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Gascogne.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Gascogne.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Gascogne.gif'})
|
||||
TEMPLATE_SIREN_GascogneIdol = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_GascogneIdol.gif', 'en': './assets/en/template/TEMPLATE_SIREN_GascogneIdol.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_GascogneIdol.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_GascogneIdol.gif'})
|
||||
TEMPLATE_SIREN_Gloucester = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Gloucester.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Gloucester.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Gloucester.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Gloucester.gif'})
|
||||
TEMPLATE_SIREN_Gneisenau = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Gneisenau.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Gneisenau.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Gneisenau.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Gneisenau.gif'})
|
||||
TEMPLATE_SIREN_GrafZeppelin = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_GrafZeppelin.gif', 'en': './assets/en/template/TEMPLATE_SIREN_GrafZeppelin.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_GrafZeppelin.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_GrafZeppelin.gif'})
|
||||
@ -130,6 +133,7 @@ TEMPLATE_SIREN_Kinu = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_
|
||||
TEMPLATE_SIREN_Kirishima = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Kirishima.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Kirishima.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Kirishima.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Kirishima.gif'})
|
||||
TEMPLATE_SIREN_Kongo = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Kongo.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Kongo.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Kongo.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Kongo.gif'})
|
||||
TEMPLATE_SIREN_LaGalissonniere = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_LaGalissonniere.gif', 'en': './assets/en/template/TEMPLATE_SIREN_LaGalissonniere.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_LaGalissonniere.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_LaGalissonniere.gif'})
|
||||
TEMPLATE_SIREN_Laffey6 = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Laffey6.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Laffey6.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Laffey6.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Laffey6.gif'})
|
||||
TEMPLATE_SIREN_LeMalinIdol = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_LeMalinIdol.gif', 'en': './assets/en/template/TEMPLATE_SIREN_LeMalinIdol.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_LeMalinIdol.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_LeMalinIdol.gif'})
|
||||
TEMPLATE_SIREN_LeMars = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_LeMars.gif', 'en': './assets/en/template/TEMPLATE_SIREN_LeMars.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_LeMars.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_LeMars.gif'})
|
||||
TEMPLATE_SIREN_LeMars_ghost = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_LeMars_ghost.gif', 'en': './assets/en/template/TEMPLATE_SIREN_LeMars_ghost.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_LeMars_ghost.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_LeMars_ghost.gif'})
|
||||
@ -162,6 +166,7 @@ TEMPLATE_SIREN_Revenge = Template(file={'cn': './assets/cn/template/TEMPLATE_SIR
|
||||
TEMPLATE_SIREN_Rodney = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Rodney.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Rodney.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Rodney.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Rodney.gif'})
|
||||
TEMPLATE_SIREN_Roon = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Roon.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Roon.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Roon.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Roon.gif'})
|
||||
TEMPLATE_SIREN_RoonIdol = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_RoonIdol.gif', 'en': './assets/en/template/TEMPLATE_SIREN_RoonIdol.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_RoonIdol.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_RoonIdol.gif'})
|
||||
TEMPLATE_SIREN_RoonIdol2 = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_RoonIdol2.gif', 'en': './assets/en/template/TEMPLATE_SIREN_RoonIdol2.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_RoonIdol2.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_RoonIdol2.gif'})
|
||||
TEMPLATE_SIREN_Ryuuhou = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Ryuuhou.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Ryuuhou.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Ryuuhou.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Ryuuhou.gif'})
|
||||
TEMPLATE_SIREN_SK_BB = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_SK_BB.gif', 'en': './assets/en/template/TEMPLATE_SIREN_SK_BB.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_SK_BB.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_SK_BB.gif'})
|
||||
TEMPLATE_SIREN_SK_CA = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_SK_CA.gif', 'en': './assets/en/template/TEMPLATE_SIREN_SK_CA.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_SK_CA.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_SK_CA.gif'})
|
||||
@ -173,7 +178,8 @@ TEMPLATE_SIREN_Sakawa = Template(file={'cn': './assets/cn/template/TEMPLATE_SIRE
|
||||
TEMPLATE_SIREN_SanDiego = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_SanDiego.gif', 'en': './assets/en/template/TEMPLATE_SIREN_SanDiego.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_SanDiego.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_SanDiego.gif'})
|
||||
TEMPLATE_SIREN_Scharnhorst = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Scharnhorst.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Scharnhorst.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Scharnhorst.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Scharnhorst.gif'})
|
||||
TEMPLATE_SIREN_Sheffield = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Sheffield.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Sheffield.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Sheffield.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Sheffield.gif'})
|
||||
TEMPLATE_SIREN_SheffieldIdol = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_SheffieldIdol.png', 'en': './assets/en/template/TEMPLATE_SIREN_SheffieldIdol.png', 'jp': './assets/cn/template/TEMPLATE_SIREN_SheffieldIdol.png', 'tw': './assets/cn/template/TEMPLATE_SIREN_SheffieldIdol.png'})
|
||||
TEMPLATE_SIREN_SheffieldIdol = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_SheffieldIdol.png', 'en': './assets/en/template/TEMPLATE_SIREN_SheffieldIdol.png', 'jp': './assets/jp/template/TEMPLATE_SIREN_SheffieldIdol.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_SheffieldIdol.gif'})
|
||||
TEMPLATE_SIREN_SheffieldIdol = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_SheffieldIdol.png', 'en': './assets/en/template/TEMPLATE_SIREN_SheffieldIdol.png', 'jp': './assets/jp/template/TEMPLATE_SIREN_SheffieldIdol.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_SheffieldIdol.gif'})
|
||||
TEMPLATE_SIREN_Shokaku = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Shokaku.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Shokaku.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Shokaku.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Shokaku.gif'})
|
||||
TEMPLATE_SIREN_SirenBoss15 = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_SirenBoss15.gif', 'en': './assets/en/template/TEMPLATE_SIREN_SirenBoss15.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_SirenBoss15.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_SirenBoss15.gif'})
|
||||
TEMPLATE_SIREN_SirenBoss16 = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_SirenBoss16.gif', 'en': './assets/en/template/TEMPLATE_SIREN_SirenBoss16.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_SirenBoss16.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_SirenBoss16.gif'})
|
||||
@ -185,6 +191,8 @@ TEMPLATE_SIREN_Spee = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_
|
||||
TEMPLATE_SIREN_SpeeIdol = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_SpeeIdol.gif', 'en': './assets/en/template/TEMPLATE_SIREN_SpeeIdol.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_SpeeIdol.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_SpeeIdol.gif'})
|
||||
TEMPLATE_SIREN_Suzutsuki = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Suzutsuki.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Suzutsuki.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Suzutsuki.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Suzutsuki.gif'})
|
||||
TEMPLATE_SIREN_Swordfish = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Swordfish.png', 'en': './assets/en/template/TEMPLATE_SIREN_Swordfish.png', 'jp': './assets/jp/template/TEMPLATE_SIREN_Swordfish.png', 'tw': './assets/tw/template/TEMPLATE_SIREN_Swordfish.png'})
|
||||
TEMPLATE_SIREN_TaihouIdol = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_TaihouIdol.gif', 'en': './assets/en/template/TEMPLATE_SIREN_TaihouIdol.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_TaihouIdol.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_TaihouIdol.gif'})
|
||||
TEMPLATE_SIREN_TashkentIdol = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_TashkentIdol.gif', 'en': './assets/en/template/TEMPLATE_SIREN_TashkentIdol.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_TashkentIdol.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_TashkentIdol.gif'})
|
||||
TEMPLATE_SIREN_Tirpitz = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Tirpitz.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Tirpitz.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Tirpitz.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Tirpitz.gif'})
|
||||
TEMPLATE_SIREN_Trento = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Trento.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Trento.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Trento.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Trento.gif'})
|
||||
TEMPLATE_SIREN_U101 = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_U101.gif', 'en': './assets/en/template/TEMPLATE_SIREN_U101.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_U101.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_U101.gif'})
|
||||
@ -205,6 +213,7 @@ TEMPLATE_SIREN_Yuudachi = Template(file={'cn': './assets/cn/template/TEMPLATE_SI
|
||||
TEMPLATE_SIREN_Z18 = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Z18.png', 'en': './assets/en/template/TEMPLATE_SIREN_Z18.png', 'jp': './assets/jp/template/TEMPLATE_SIREN_Z18.png', 'tw': './assets/tw/template/TEMPLATE_SIREN_Z18.png'})
|
||||
TEMPLATE_SIREN_Z19 = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Z19.png', 'en': './assets/en/template/TEMPLATE_SIREN_Z19.png', 'jp': './assets/jp/template/TEMPLATE_SIREN_Z19.png', 'tw': './assets/tw/template/TEMPLATE_SIREN_Z19.png'})
|
||||
TEMPLATE_SIREN_Z2 = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Z2.png', 'en': './assets/en/template/TEMPLATE_SIREN_Z2.png', 'jp': './assets/jp/template/TEMPLATE_SIREN_Z2.png', 'tw': './assets/tw/template/TEMPLATE_SIREN_Z2.png'})
|
||||
TEMPLATE_SIREN_Z23_5 = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Z23_5.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Z23_5.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Z23_5.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Z23_5.gif'})
|
||||
TEMPLATE_SIREN_Z24 = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Z24.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Z24.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Z24.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Z24.gif'})
|
||||
TEMPLATE_SIREN_Z46 = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Z46.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Z46.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Z46.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Z46.gif'})
|
||||
TEMPLATE_SIREN_Zuiho = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Zuiho.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Zuiho.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Zuiho.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Zuiho.gif'})
|
||||
|