Skip to content

Commit 0fefeea

Browse files
committed
Merge remote-tracking branch 'upstream/master'
2 parents 6f45c8b + 2a2901d commit 0fefeea

22 files changed

Lines changed: 1152 additions & 61 deletions

File tree

campaign/Readme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,3 +281,4 @@ To add a new event, add a new row in here, and run `python -m module.config.conf
281281
| 20260129 | coalition 20260122 | Light & Shadow Fashion Shoot! | - | - | - | 光影風尚-拍攝進行時 |
282282
| 20260205 | raid 20240328 | From Zero to Hero | 复刻从零开始的魔王讨伐之旅 | From Zero to Hero Rerun | ゼロから頑張る魔王討伐(復刻) | - |
283283
| 20260212 | raid 20260212 | Spring Auction Adventure | 春宴怀玉香满庭 | Spring Auction Adventure | 新春玉逸品会 | 春宴懷玉香滿庭 |
284+
| 20260226 | event 20260226 cn | Springtide Inn Online | 春满客栈Online | Springtide Inn Online | 春色旅籠Online | - |

campaign/event_20260226_cn/a1.py

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
from module.campaign.campaign_base import CampaignBase
2+
from module.map.map_base import CampaignMap
3+
from module.map.map_grids import SelectedGrids, RoadGrids
4+
from module.logger import logger
5+
6+
MAP = CampaignMap('A1')
7+
MAP.shape = 'I8'
8+
MAP.camera_data = ['E2', 'E6']
9+
MAP.camera_data_spawn_point = ['E2']
10+
MAP.map_data = """
11+
-- -- ME -- ME -- -- -- --
12+
-- ++ -- -- -- ME ++ ++ --
13+
-- ++ -- SP -- -- Me ++ --
14+
-- ME -- -- SP -- -- ME --
15+
++ -- Me -- -- -- Me -- --
16+
-- ME ++ MS -- MS ++ ++ ++
17+
-- -- ME -- __ -- ME ++ --
18+
-- -- -- -- MB -- -- -- --
19+
"""
20+
MAP.weight_data = """
21+
50 50 50 50 50 50 50 50 50
22+
50 50 50 50 50 50 50 50 50
23+
50 50 50 50 50 50 50 50 50
24+
50 50 50 50 50 50 50 50 50
25+
50 50 50 50 50 50 50 50 50
26+
50 50 50 50 50 50 50 50 50
27+
50 50 50 50 50 50 50 50 50
28+
50 50 50 50 50 50 50 50 50
29+
"""
30+
MAP.spawn_data = [
31+
{'battle': 0, 'enemy': 2, 'siren': 1},
32+
{'battle': 1, 'enemy': 1},
33+
{'battle': 2, 'enemy': 1},
34+
{'battle': 3, 'enemy': 1, 'boss': 1},
35+
{'battle': 4, 'enemy': 1},
36+
]
37+
A1, B1, C1, D1, E1, F1, G1, H1, I1, \
38+
A2, B2, C2, D2, E2, F2, G2, H2, I2, \
39+
A3, B3, C3, D3, E3, F3, G3, H3, I3, \
40+
A4, B4, C4, D4, E4, F4, G4, H4, I4, \
41+
A5, B5, C5, D5, E5, F5, G5, H5, I5, \
42+
A6, B6, C6, D6, E6, F6, G6, H6, I6, \
43+
A7, B7, C7, D7, E7, F7, G7, H7, I7, \
44+
A8, B8, C8, D8, E8, F8, G8, H8, I8, \
45+
= MAP.flatten()
46+
47+
48+
class Config:
49+
# ===== Start of generated config =====
50+
MAP_SIREN_TEMPLATE = []
51+
MOVABLE_ENEMY_TURN = (2,)
52+
MAP_HAS_SIREN = True
53+
MAP_HAS_MOVABLE_ENEMY = True
54+
MAP_HAS_MAP_STORY = False
55+
MAP_HAS_FLEET_STEP = True
56+
MAP_HAS_AMBUSH = False
57+
MAP_HAS_MYSTERY = False
58+
# ===== End of generated config =====
59+
60+
MAP_CHAPTER_SWITCH_20241219 = True
61+
STAGE_ENTRANCE = ['half', '20240725']
62+
MAP_HAS_MODE_SWITCH = True
63+
STAGE_INCREASE_AB = True
64+
MAP_WALK_USE_CURRENT_FLEET = True
65+
MAP_SIREN_HAS_BOSS_ICON_SMALL = True
66+
MAP_SWIPE_MULTIPLY = (1.179, 1.201)
67+
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.140, 1.161)
68+
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.107, 1.127)
69+
70+
71+
class Campaign(CampaignBase):
72+
MAP = MAP
73+
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
74+
75+
def battle_0(self):
76+
if self.clear_siren():
77+
return True
78+
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
79+
return True
80+
81+
return self.battle_default()
82+
83+
def battle_3(self):
84+
return self.clear_boss()

campaign/event_20260226_cn/a2.py

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
from module.campaign.campaign_base import CampaignBase
2+
from module.map.map_base import CampaignMap
3+
from module.map.map_grids import SelectedGrids, RoadGrids
4+
from module.logger import logger
5+
from .a1 import Config as ConfigBase
6+
7+
MAP = CampaignMap('A2')
8+
MAP.shape = 'J7'
9+
MAP.camera_data = ['D2', 'D5', 'E4']
10+
MAP.camera_data_spawn_point = ['D5']
11+
MAP.map_data = """
12+
-- ME -- -- ME ++ ++ -- -- --
13+
MB -- ME -- -- -- ++ ME ME ++
14+
++ -- ++ ++ Me -- Me -- -- ++
15+
-- -- ++ ++ -- __ -- -- ME --
16+
-- MS -- -- MS -- -- ME ++ --
17+
ME -- -- -- -- -- ME -- -- --
18+
++ -- SP SP -- ++ ++ ++ -- --
19+
"""
20+
MAP.weight_data = """
21+
50 50 50 50 50 50 50 50 50 50
22+
50 50 50 50 50 50 50 50 50 50
23+
50 50 50 50 50 50 50 50 50 50
24+
50 50 50 50 50 50 50 50 50 50
25+
50 50 50 50 50 50 50 50 50 50
26+
50 50 50 50 50 50 50 50 50 50
27+
50 50 50 50 50 50 50 50 50 50
28+
"""
29+
MAP.spawn_data = [
30+
{'battle': 0, 'enemy': 2, 'siren': 1},
31+
{'battle': 1, 'enemy': 1},
32+
{'battle': 2, 'enemy': 1},
33+
{'battle': 3, 'enemy': 1},
34+
{'battle': 4, 'enemy': 1, 'boss': 1},
35+
]
36+
A1, B1, C1, D1, E1, F1, G1, H1, I1, J1, \
37+
A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, \
38+
A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, \
39+
A4, B4, C4, D4, E4, F4, G4, H4, I4, J4, \
40+
A5, B5, C5, D5, E5, F5, G5, H5, I5, J5, \
41+
A6, B6, C6, D6, E6, F6, G6, H6, I6, J6, \
42+
A7, B7, C7, D7, E7, F7, G7, H7, I7, J7, \
43+
= MAP.flatten()
44+
45+
46+
class Config(ConfigBase):
47+
# ===== Start of generated config =====
48+
MAP_SIREN_TEMPLATE = []
49+
MOVABLE_ENEMY_TURN = (2,)
50+
MAP_HAS_SIREN = True
51+
MAP_HAS_MOVABLE_ENEMY = True
52+
MAP_HAS_MAP_STORY = False
53+
MAP_HAS_FLEET_STEP = True
54+
MAP_HAS_AMBUSH = False
55+
MAP_HAS_MYSTERY = False
56+
# ===== End of generated config =====
57+
58+
MAP_ENSURE_EDGE_INSIGHT_CORNER = 'bottom-left'
59+
60+
61+
class Campaign(CampaignBase):
62+
MAP = MAP
63+
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
64+
65+
def battle_0(self):
66+
if self.clear_siren():
67+
return True
68+
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
69+
return True
70+
71+
return self.battle_default()
72+
73+
def battle_4(self):
74+
return self.clear_boss()

campaign/event_20260226_cn/a3.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
from module.campaign.campaign_base import CampaignBase
2+
from module.map.map_base import CampaignMap
3+
from module.map.map_grids import SelectedGrids, RoadGrids
4+
from module.logger import logger
5+
from .a1 import Config as ConfigBase
6+
7+
MAP = CampaignMap('A3')
8+
MAP.shape = 'H8'
9+
MAP.camera_data = ['D4', 'D6', 'E3']
10+
MAP.camera_data_spawn_point = ['D4']
11+
MAP.map_data = """
12+
++ ++ -- -- ME -- -- ME
13+
++ ++ MS -- -- -- ME --
14+
SP -- -- MS -- ++ -- --
15+
SP -- -- MS -- ++ ME --
16+
++ Me __ -- -- -- -- --
17+
++ ME -- Me ++ ++ ++ --
18+
-- -- -- -- Me -- ME --
19+
MB ++ Me ME -- ME -- --
20+
"""
21+
MAP.weight_data = """
22+
50 50 50 50 50 50 50 50
23+
50 50 50 50 50 50 50 50
24+
50 50 50 50 50 50 50 50
25+
50 50 50 50 50 50 50 50
26+
50 50 50 50 50 50 50 50
27+
50 50 50 50 50 50 50 50
28+
50 50 50 50 50 50 50 50
29+
50 50 50 50 50 50 50 50
30+
"""
31+
MAP.spawn_data = [
32+
{'battle': 0, 'enemy': 2, 'siren': 1},
33+
{'battle': 1, 'enemy': 1},
34+
{'battle': 2, 'enemy': 1},
35+
{'battle': 3, 'enemy': 1},
36+
{'battle': 4, 'enemy': 1, 'boss': 1},
37+
]
38+
A1, B1, C1, D1, E1, F1, G1, H1, \
39+
A2, B2, C2, D2, E2, F2, G2, H2, \
40+
A3, B3, C3, D3, E3, F3, G3, H3, \
41+
A4, B4, C4, D4, E4, F4, G4, H4, \
42+
A5, B5, C5, D5, E5, F5, G5, H5, \
43+
A6, B6, C6, D6, E6, F6, G6, H6, \
44+
A7, B7, C7, D7, E7, F7, G7, H7, \
45+
A8, B8, C8, D8, E8, F8, G8, H8, \
46+
= MAP.flatten()
47+
48+
49+
class Config(ConfigBase):
50+
# ===== Start of generated config =====
51+
MAP_SIREN_TEMPLATE = []
52+
MOVABLE_ENEMY_TURN = (2,)
53+
MAP_HAS_SIREN = True
54+
MAP_HAS_MOVABLE_ENEMY = True
55+
MAP_HAS_MAP_STORY = False
56+
MAP_HAS_FLEET_STEP = True
57+
MAP_HAS_AMBUSH = False
58+
MAP_HAS_MYSTERY = False
59+
# ===== End of generated config =====
60+
61+
62+
class Campaign(CampaignBase):
63+
MAP = MAP
64+
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
65+
66+
def battle_0(self):
67+
if self.clear_siren():
68+
return True
69+
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
70+
return True
71+
72+
return self.battle_default()
73+
74+
def battle_4(self):
75+
return self.clear_boss()

campaign/event_20260226_cn/b1.py

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
from module.campaign.campaign_base import CampaignBase
2+
from module.map.map_base import CampaignMap
3+
from module.map.map_grids import SelectedGrids, RoadGrids
4+
from module.logger import logger
5+
6+
MAP = CampaignMap('B1')
7+
MAP.shape = 'I8'
8+
MAP.camera_data = ['D3', 'D6', 'F3', 'F6']
9+
MAP.camera_data_spawn_point = ['D6']
10+
MAP.map_data = """
11+
++ -- -- -- -- -- -- -- --
12+
ME -- ME ++ ++ ++ -- -- ++
13+
-- ME -- MS -- MS -- ME ++
14+
-- ++ MS -- -- -- Me -- ME
15+
-- Me -- -- SP -- -- __ Me
16+
-- -- -- SP -- -- Me -- --
17+
++ ++ Me -- -- ++ -- MB --
18+
++ ++ -- ME ME ++ ME -- ME
19+
"""
20+
MAP.weight_data = """
21+
50 50 50 50 50 50 50 50 50
22+
50 50 50 50 50 50 50 50 50
23+
50 50 50 50 50 50 50 50 50
24+
50 50 50 50 50 50 50 50 50
25+
50 50 50 50 50 50 50 50 50
26+
50 50 50 50 50 50 50 50 50
27+
50 50 50 50 50 50 50 50 50
28+
50 50 50 50 50 50 50 50 50
29+
"""
30+
MAP.spawn_data = [
31+
{'battle': 0, 'enemy': 2, 'siren': 1},
32+
{'battle': 1, 'enemy': 1},
33+
{'battle': 2, 'enemy': 2},
34+
{'battle': 3, 'enemy': 1},
35+
{'battle': 4, 'enemy': 2, 'boss': 1},
36+
{'battle': 5, 'enemy': 1},
37+
]
38+
A1, B1, C1, D1, E1, F1, G1, H1, I1, \
39+
A2, B2, C2, D2, E2, F2, G2, H2, I2, \
40+
A3, B3, C3, D3, E3, F3, G3, H3, I3, \
41+
A4, B4, C4, D4, E4, F4, G4, H4, I4, \
42+
A5, B5, C5, D5, E5, F5, G5, H5, I5, \
43+
A6, B6, C6, D6, E6, F6, G6, H6, I6, \
44+
A7, B7, C7, D7, E7, F7, G7, H7, I7, \
45+
A8, B8, C8, D8, E8, F8, G8, H8, I8, \
46+
= MAP.flatten()
47+
48+
49+
class Config:
50+
# ===== Start of generated config =====
51+
MAP_SIREN_TEMPLATE = []
52+
MOVABLE_ENEMY_TURN = (2,)
53+
MAP_HAS_SIREN = True
54+
MAP_HAS_MOVABLE_ENEMY = True
55+
MAP_HAS_MAP_STORY = False
56+
MAP_HAS_FLEET_STEP = True
57+
MAP_HAS_AMBUSH = False
58+
MAP_HAS_MYSTERY = False
59+
# ===== End of generated config =====
60+
61+
MAP_CHAPTER_SWITCH_20241219 = True
62+
STAGE_ENTRANCE = ['half', '20240725']
63+
MAP_HAS_MODE_SWITCH = True
64+
STAGE_INCREASE_AB = True
65+
MAP_WALK_USE_CURRENT_FLEET = True
66+
MAP_SIREN_HAS_BOSS_ICON_SMALL = True
67+
MAP_SWIPE_MULTIPLY = (1.138, 1.160)
68+
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.101, 1.121)
69+
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.069, 1.088)
70+
71+
72+
class Campaign(CampaignBase):
73+
MAP = MAP
74+
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
75+
76+
def battle_0(self):
77+
if self.clear_siren():
78+
return True
79+
if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0):
80+
return True
81+
82+
return self.battle_default()
83+
84+
def battle_4(self):
85+
return self.clear_boss()

0 commit comments

Comments
 (0)