Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
781 changes: 749 additions & 32 deletions assets/gui/js/alas-utils.js

Large diffs are not rendered by default.

Binary file added bin/scrcpy/ws-scrcpy-server-v1.19-ws7.jar
Binary file not shown.
1 change: 1 addition & 0 deletions campaign/Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -301,3 +301,4 @@ To add a new event, add a new row in here, and run `python -m module.config.conf
| 20260528 | event 20220818 cn | Operation Convergence | - | - | - | 復刻遠匯點作戰 |
| 20260605 | event 20260520 cn | Alliance Before the Hagiobull | - | - | - | 聖印前的同盟 |
| 20260618 | event 20240521 cn | Light of the Martyrium Rerun | 复刻绽放于辉光之城 | Light of the Martyrium Rerun | 赫輝のマルティリウム(復刻) | - |
| 20260625 | event 20260625 cn | - | 美梦巡演:奇妙夜 | - | - | - |
77 changes: 77 additions & 0 deletions campaign/event_20260625_cn/ht1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
from module.campaign.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('HT1')
MAP.shape = 'I7'
MAP.camera_data = ['D2', 'D5', 'F2', 'F5']
MAP.camera_data_spawn_point = ['D2', 'D5']
MAP.map_data = """
-- -- ME -- ME -- -- ++ MB
-- -- ++ ME -- ME ++ ME --
SP -- -- MS -- -- Me -- --
-- -- __ -- ++ -- -- -- ME
SP -- -- MS ++ 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
"""
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, \
= MAP.flatten()


class Config:
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = ['DD', '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
MAP_CHAPTER_SWITCH_20260326 = True
STAGE_ENTRANCE = ['half', '20240725']
MAP_HAS_MODE_SWITCH = True
STAGE_INCREASE_AB = True
MAP_WALK_USE_CURRENT_FLEET = True
# ===== End of generated config =====


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()
87 changes: 87 additions & 0 deletions campaign/event_20260625_cn/ht2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
from module.campaign.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 .ht1 import Config as ConfigBase

MAP = CampaignMap('HT2')
MAP.shape = 'I7'
MAP.camera_data = ['D2', 'D5', 'F2', 'F5']
MAP.camera_data_spawn_point = ['F2']
MAP.map_data = """
ME -- ME ++ ME -- -- ++ ++
-- -- -- -- -- -- SP -- ++
-- Me ++ ++ ++ -- -- SP --
-- -- -- Me -- MS -- -- --
ME -- ME ++ -- MS MS ++ Me
-- MB -- ++ __ -- -- ++ --
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
"""
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, \
= MAP.flatten()


class Config(ConfigBase):
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = ['DD', '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
MAP_CHAPTER_SWITCH_20260326 = True
STAGE_ENTRANCE = ['half', '20240725']
MAP_HAS_MODE_SWITCH = True
STAGE_INCREASE_AB = True
MAP_WALK_USE_CURRENT_FLEET = True
# ===== End of generated config =====


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()
90 changes: 90 additions & 0 deletions campaign/event_20260625_cn/ht3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
from module.campaign.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 .ht1 import Config as ConfigBase

MAP = CampaignMap('HT3')
MAP.shape = 'I8'
MAP.camera_data = ['D2', 'D5', 'F2', 'F5']
MAP.camera_data_spawn_point = ['F5', 'D5']
MAP.map_data = """
++ ++ ++ ++ MB ++ ++ ++ ++
++ -- Me Me -- Me Me -- ++
-- ME -- -- __ -- -- ME --
ME -- -- SP ++ SP -- -- ME
-- ME -- -- -- -- -- ME --
++ ++ ME -- MS -- ME ++ ++
++ ++ -- MS -- MS -- ++ ++
-- -- ++ ++ ++ ++ ++ -- --
"""
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, '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, \
= MAP.flatten()


class Config(ConfigBase):
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = ['DD', '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
MAP_CHAPTER_SWITCH_20260326 = True
STAGE_ENTRANCE = ['half', '20240725']
MAP_HAS_MODE_SWITCH = True
STAGE_INCREASE_AB = True
MAP_WALK_USE_CURRENT_FLEET = True
# ===== End of generated config =====


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()
99 changes: 99 additions & 0 deletions campaign/event_20260625_cn/sp.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
from module.campaign.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('SP')
MAP.shape = 'G10'
MAP.camera_data = ['D3', 'D7', 'D8']
MAP.camera_data_spawn_point = ['D8']
MAP.map_data = """
-- -- ++ -- ++ ++ --
++ ++ ++ MB ++ ++ ++
++ ME -- -- -- ME --
-- -- -- ME -- -- ME
ME -- ME ++ ++ -- --
++ -- -- -- ++ -- ME
++ -- MS __ MS -- ++
ME -- -- MS -- -- 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
"""
MAP.spawn_data = [
{'battle': 0, 'enemy': 10, 'siren': 3},
{'battle': 1},
{'battle': 2},
{'battle': 3},
{'battle': 4},
{'battle': 5},
{'battle': 6},
{'battle': 7, 'boss': 1},
]
A1, B1, C1, D1, E1, F1, G1, \
A2, B2, C2, D2, E2, F2, G2, \
A3, B3, C3, D3, E3, F3, G3, \
A4, B4, C4, D4, E4, F4, G4, \
A5, B5, C5, D5, E5, F5, G5, \
A6, B6, C6, D6, E6, F6, G6, \
A7, B7, C7, D7, E7, F7, G7, \
A8, B8, C8, D8, E8, F8, G8, \
A9, B9, C9, D9, E9, F9, G9, \
A10, B10, C10, D10, E10, F10, G10, \
= MAP.flatten()


class Config:
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = ['DD', 'DD']
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_MAP_STORY = False
MAP_HAS_FLEET_STEP = False
MAP_HAS_AMBUSH = False
MAP_HAS_MYSTERY = False
MAP_CHAPTER_SWITCH_20260326 = True
STAGE_ENTRANCE = ['half', '20240725']
MAP_HAS_MODE_SWITCH = True
STAGE_INCREASE_AB = True
MAP_WALK_USE_CURRENT_FLEET = True
STAR_REQUIRE_1 = 0
STAR_REQUIRE_2 = 0
STAR_REQUIRE_3 = 0
# ===== End of generated config =====


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=2):
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_7(self):
return self.fleet_boss.clear_boss()
Loading
Loading