Merge remote-tracking branch 'LmeSzinc/master' into refactor
# Conflicts: # module/config/argument/args.json
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 2.9 KiB |
BIN
assets/cn/private_quarters/PRIVATE_QUARTERS_SHIP_TAIHOU.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
BIN
assets/en/private_quarters/PRIVATE_QUARTERS_SHIP_NEW_JERSEY.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
assets/en/private_quarters/PRIVATE_QUARTERS_SHIP_TAIHOU.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
BIN
assets/jp/private_quarters/PRIVATE_QUARTERS_SHIP_TAIHOU.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
BIN
assets/shop/guild/BookT3_4.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
assets/tw/private_quarters/PRIVATE_QUARTERS_SHIP_NEW_JERSEY.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
assets/tw/private_quarters/PRIVATE_QUARTERS_SHIP_TAIHOU.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
@@ -55,6 +55,7 @@ To add a new event, add a new row in here, and run `python -m module.config.conf
|
||||
| 20250619 | war archives 20220728 cn | Aquilifer's Ballade | 雄鹰的叙事歌 | Aquilifer's Ballade | 鋼鷲の冒険譚 | 雄鷹的敘事歌 |
|
||||
| 20250717 | war archives 20220428 cn | Rondo at Rainbow's End | 虹彩的终幕曲 | Rondo at Rainbow's End | 吟ずる瑠璃の楽章 | 虹彩的終幕曲 |
|
||||
| 20251016 | war archives 20231026 cn | Tempesta and the Fountain of Youth | 飓风与青春之泉 | Tempesta and the Fountain of Youth | テンペスタと若返りの泉 | 飓風與青春之泉 |
|
||||
| 20251106 | war archives 20220915 cn | Violet Tempest Blooming Lycoris | 紫绛槿岚 | Violet Tempest Blooming Lycoris | 赫の涙月 菫の暁風 | 紫絳槿嵐 |
|
||||
| 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 | 闇靄払う銀翼 | - |
|
||||
@@ -263,3 +264,5 @@ To add a new event, add a new row in here, and run `python -m module.config.conf
|
||||
| 20251009 | coalition 20250626 | The Neon City Investigator | - | - | - | 迷彩都市的尋蹤者 |
|
||||
| 20251016 | event 20230817 cn | The Fool's Scales | 复刻愚者的天平 | The Fool's Scales Rerun | 愚者の天秤(復刻) | - |
|
||||
| 20251023 | event 20251023 cn | Tempesta and Islas de Libertád | 飓风与自由群岛 | Tempesta and Islas de Libertád | テンペスタと自由群島 | - |
|
||||
| 20251106 | event 20230803 cn | Anthem of Remembrance | 复刻奏响鸢尾之歌 | Anthem of Remembrance Rerun | 燃ゆる聖都の回想曲(復刻) | - |
|
||||
| 20251106 | event 20250227 cn | Paradiso of Shackled Light | - | - | - | 樊籠內的神光 |
|
||||
|
||||
@@ -74,6 +74,7 @@ class Config:
|
||||
HOMO_EDGE_COLOR_RANGE = (0, 17)
|
||||
HOMO_EDGE_HOUGHLINES_THRESHOLD = 210
|
||||
MAP_SIREN_HAS_BOSS_ICON_SMALL = True
|
||||
MAP_ENSURE_EDGE_INSIGHT_CORNER = 'bottom'
|
||||
MAP_SWIPE_MULTIPLY = (1.089, 1.109)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.053, 1.072)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.022, 1.041)
|
||||
|
||||
@@ -58,8 +58,6 @@ class Config(ConfigBase):
|
||||
MAP_HAS_MYSTERY = False
|
||||
# ===== End of generated config =====
|
||||
|
||||
# topleft is spawn points
|
||||
MAP_ENSURE_EDGE_INSIGHT_CORNER = 'top-right'
|
||||
MAP_SWIPE_MULTIPLY = (1.255, 1.279)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.214, 1.236)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.179, 1.200)
|
||||
|
||||
@@ -59,7 +59,6 @@ class Config(ConfigBase):
|
||||
MAP_HAS_MYSTERY = False
|
||||
# ===== End of generated config =====
|
||||
|
||||
MAP_ENSURE_EDGE_INSIGHT_CORNER = 'bottom'
|
||||
# swipe multiply same as T1
|
||||
|
||||
|
||||
|
||||
94
campaign/war_archives_20220915_cn/a1.py
Normal file
@@ -0,0 +1,94 @@
|
||||
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('A1')
|
||||
MAP.shape = 'H8'
|
||||
MAP.camera_data = ['D3', 'E4', 'E6']
|
||||
MAP.camera_data_spawn_point = ['D6']
|
||||
MAP.map_data = """
|
||||
-- ++ ++ -- -- -- -- --
|
||||
-- ME ++ ME Me ++ ++ --
|
||||
ME -- -- -- -- ++ ++ --
|
||||
MS -- MS -- Me -- MB --
|
||||
-- -- ++ ME __ -- -- ME
|
||||
-- -- ++ MS -- Me ME --
|
||||
SP -- -- -- Me ++ ++ --
|
||||
-- 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
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 2, 'siren': 1},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1, 'boss': 1},
|
||||
{'battle': 4, 'enemy': 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:
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['Wakaba', 'Suzutsuki']
|
||||
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,
|
||||
}
|
||||
EDGE_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (255 - 33, 255),
|
||||
'prominence': 10,
|
||||
'distance': 50,
|
||||
# 'width': (0, 7),
|
||||
'wlen': 1000
|
||||
}
|
||||
MAP_SWIPE_MULTIPLY = (1.093, 1.113)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.057, 1.076)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.026, 1.045)
|
||||
HOMO_EDGE_HOUGHLINES_THRESHOLD = 210
|
||||
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'
|
||||
MAP_ENEMY_SEARCHING_OVERLAY_TRANSPARENCY_THRESHOLD = 0.65
|
||||
|
||||
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_3(self):
|
||||
return self.clear_boss()
|
||||
80
campaign/war_archives_20220915_cn/a2.py
Normal file
@@ -0,0 +1,80 @@
|
||||
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 .a1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('A2')
|
||||
MAP.shape = 'H8'
|
||||
MAP.camera_data = ['D4', 'D6', 'E3']
|
||||
MAP.camera_data_spawn_point = ['D2']
|
||||
MAP.map_data = """
|
||||
-- SP ++ ++ -- ME -- ME
|
||||
SP -- -- ++ Me -- -- --
|
||||
-- -- ME MS -- Me -- ++
|
||||
Me -- -- -- __ -- -- ++
|
||||
-- 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 50
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 2, 'siren': 1},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 1, '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 = ['Miyuki', 'Jintsuu']
|
||||
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.220, 1.243)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.180, 1.201)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.145, 1.166)
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
|
||||
MAP_ENEMY_SEARCHING_OVERLAY_TRANSPARENCY_THRESHOLD = 0.65
|
||||
|
||||
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()
|
||||
80
campaign/war_archives_20220915_cn/a3.py
Normal file
@@ -0,0 +1,80 @@
|
||||
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 .a1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('A3')
|
||||
MAP.shape = 'H8'
|
||||
MAP.camera_data = ['D3', 'E4', 'E6']
|
||||
MAP.camera_data_spawn_point = ['E2']
|
||||
MAP.map_data = """
|
||||
++ ++ ++ ME -- -- SP --
|
||||
ME -- Me -- MS -- -- SP
|
||||
-- -- -- -- -- ++ -- --
|
||||
ME -- ME -- Me -- MS --
|
||||
-- ++ ++ ++ ME __ -- ME
|
||||
-- ++ ++ ++ -- -- Me --
|
||||
-- ++ ++ MB -- 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': 2, 'siren': 1},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 1, '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 = ['Hatakaze', 'Kinu', 'Haguro']
|
||||
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.220, 1.243)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.180, 1.201)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.145, 1.166)
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
|
||||
MAP_ENEMY_SEARCHING_OVERLAY_TRANSPARENCY_THRESHOLD = 0.65
|
||||
|
||||
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()
|
||||
94
campaign/war_archives_20220915_cn/b1.py
Normal file
@@ -0,0 +1,94 @@
|
||||
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('B1')
|
||||
MAP.shape = 'H8'
|
||||
MAP.camera_data = ['D3', 'D5']
|
||||
MAP.camera_data_spawn_point = ['E6']
|
||||
MAP.map_data = """
|
||||
++ -- -- -- ME -- -- --
|
||||
-- -- -- ME -- ME ++ --
|
||||
-- ++ ++ ME -- Me ++ ME
|
||||
-- MB -- -- -- -- -- --
|
||||
Me -- -- __ Me ME MS --
|
||||
++ ME -- ME -- ++ -- --
|
||||
-- -- Me -- MS -- -- 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
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 2, 'siren': 1},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 2},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 2, 'boss': 1},
|
||||
{'battle': 5, 'enemy': 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:
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['Harutsuki', 'Kawakaze', 'Hiei']
|
||||
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,
|
||||
}
|
||||
EDGE_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (255 - 33, 255),
|
||||
'prominence': 10,
|
||||
'distance': 50,
|
||||
# 'width': (0, 7),
|
||||
'wlen': 1000
|
||||
}
|
||||
MAP_WALK_USE_CURRENT_FLEET = True
|
||||
MAP_SWIPE_MULTIPLY = (1.023, 1.043)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (0.990, 1.008)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (0.961, 0.978)
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
|
||||
MAP_ENEMY_SEARCHING_OVERLAY_TRANSPARENCY_THRESHOLD = 0.65
|
||||
|
||||
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()
|
||||
75
campaign/war_archives_20220915_cn/b2.py
Normal file
@@ -0,0 +1,75 @@
|
||||
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 .b1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('B2')
|
||||
MAP.shape = 'M6'
|
||||
MAP.camera_data = ['D4', 'E3', 'G3', 'G4']
|
||||
MAP.camera_data_spawn_point = ['H3']
|
||||
MAP.map_data = """
|
||||
-- -- -- -- ME -- ++ ++ -- Me ++ ++ ++
|
||||
++ ++ ++ ME -- Me ++ ++ MS -- -- -- --
|
||||
++ ++ ++ ME -- __ -- MS -- -- SP ++ ++
|
||||
++ ++ MB -- -- __ -- MS -- -- SP ++ ++
|
||||
ME -- -- -- -- Me ++ ++ 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 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': 1},
|
||||
{'battle': 2, 'enemy': 2},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 2},
|
||||
{'battle': 5, 'enemy': 1, 'boss': 1},
|
||||
]
|
||||
A1, B1, C1, D1, E1, F1, G1, H1, I1, J1, K1, L1, M1, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, K2, L2, M2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, K3, L3, M3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, J4, K4, L4, M4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, J5, K5, L5, M5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, J6, K6, L6, M6, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['Kongo', 'Yamashiro', 'Akagi', 'Kaga']
|
||||
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.123, 1.144)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.086, 1.106)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.054, 1.073)
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
|
||||
MAP_ENEMY_SEARCHING_OVERLAY_TRANSPARENCY_THRESHOLD = 0.65
|
||||
|
||||
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()
|
||||
85
campaign/war_archives_20220915_cn/b3.py
Normal file
@@ -0,0 +1,85 @@
|
||||
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 .b1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('B3')
|
||||
MAP.shape = 'I9'
|
||||
MAP.camera_data = ['D3', 'D5', 'E5']
|
||||
MAP.camera_data_spawn_point = ['D7']
|
||||
MAP.map_covered = ['E3']
|
||||
MAP.map_data = """
|
||||
++ -- -- -- ME -- -- -- ++
|
||||
-- ME ME -- -- -- ME ME --
|
||||
-- ME ++ Me MS Me ++ ME --
|
||||
-- -- Me -- -- -- Me -- --
|
||||
ME -- MS -- ++ -- MS -- ME
|
||||
-- -- Me -- MB -- Me -- --
|
||||
-- ME ++ -- MS -- ++ 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': 2, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 2},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 2},
|
||||
{'battle': 5, 'enemy': 1, '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 = ['Mikasa', 'Nagato', 'Akagi', 'Kaga']
|
||||
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 = (0.985, 1.003)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (0.952, 0.970)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (0.925, 0.941)
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
|
||||
MAP_ENEMY_SEARCHING_OVERLAY_TRANSPARENCY_THRESHOLD = 0.65
|
||||
|
||||
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()
|
||||
79
campaign/war_archives_20220915_cn/c1.py
Normal file
@@ -0,0 +1,79 @@
|
||||
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('C1')
|
||||
MAP.shape = 'H8'
|
||||
MAP.camera_data = ['D3', 'E4', 'E6']
|
||||
MAP.camera_data_spawn_point = ['D6']
|
||||
MAP.map_data = """
|
||||
-- ++ ++ -- -- -- -- --
|
||||
-- ME ++ ME Me ++ ++ --
|
||||
ME -- -- -- -- ++ ++ --
|
||||
MS -- MS -- Me -- MB --
|
||||
-- -- ++ ME __ -- -- ME
|
||||
-- -- ++ MS -- Me ME --
|
||||
SP -- -- -- Me ++ ++ --
|
||||
-- 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
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 2, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 2},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 1, '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:
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['Sakawa', 'Chitose', 'Chiyoda']
|
||||
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.093, 1.113)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.057, 1.076)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.026, 1.045)
|
||||
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()
|
||||
79
campaign/war_archives_20220915_cn/c2.py
Normal file
@@ -0,0 +1,79 @@
|
||||
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 .c1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('C2')
|
||||
MAP.shape = 'H8'
|
||||
MAP.camera_data = ['D4', 'D6', 'E3']
|
||||
MAP.camera_data_spawn_point = ['D2']
|
||||
MAP.map_data = """
|
||||
-- SP ++ ++ -- ME -- ME
|
||||
SP -- -- ++ Me -- -- --
|
||||
-- -- ME MS -- Me -- ++
|
||||
Me -- -- -- __ -- -- ++
|
||||
-- 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 50
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 2, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 2},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 1, '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 = ['Jintsuu', 'Ryuuhou', 'Kaga']
|
||||
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.220, 1.243)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.180, 1.201)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.145, 1.166)
|
||||
|
||||
|
||||
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()
|
||||
80
campaign/war_archives_20220915_cn/c3.py
Normal file
@@ -0,0 +1,80 @@
|
||||
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 .c1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('C3')
|
||||
MAP.shape = 'H8'
|
||||
MAP.camera_data = ['D3', 'E4', 'E6']
|
||||
MAP.camera_data_spawn_point = ['E2']
|
||||
MAP.map_data = """
|
||||
++ ++ ++ ME -- -- SP --
|
||||
ME -- Me -- MS -- -- SP
|
||||
-- -- -- -- -- ++ -- --
|
||||
ME -- ME -- Me -- MS --
|
||||
-- ++ ++ ++ ME __ -- ME
|
||||
-- ++ ++ ++ -- -- Me --
|
||||
-- ++ ++ MB -- 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': 2, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 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, \
|
||||
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 = ['Haguro', 'Kongo', 'Kirishima']
|
||||
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.220, 1.243)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.180, 1.201)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.145, 1.166)
|
||||
|
||||
|
||||
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()
|
||||
14
campaign/war_archives_20220915_cn/campaign_base.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from module.base.utils import get_color, red_overlay_transparency
|
||||
from ..campaign_war_archives.campaign_base import CampaignBase as CampaignBase_
|
||||
from module.handler.assets import MAP_ENEMY_SEARCHING
|
||||
from module.map.assets import SWITCH_OVER
|
||||
|
||||
|
||||
class CampaignBase(CampaignBase_):
|
||||
def enemy_searching_appear(self):
|
||||
if not self.appear(SWITCH_OVER, offset=(20, 20)):
|
||||
return False
|
||||
|
||||
return red_overlay_transparency(
|
||||
MAP_ENEMY_SEARCHING.color, get_color(self.device.image, MAP_ENEMY_SEARCHING.area)
|
||||
) > self.MAP_ENEMY_SEARCHING_OVERLAY_TRANSPARENCY_THRESHOLD
|
||||
93
campaign/war_archives_20220915_cn/d1.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
|
||||
|
||||
MAP = CampaignMap('D1')
|
||||
MAP.shape = 'H8'
|
||||
MAP.camera_data = ['D3', 'D5']
|
||||
MAP.camera_data_spawn_point = ['E6']
|
||||
MAP.map_data = """
|
||||
++ -- -- -- ME -- -- --
|
||||
-- -- -- ME -- ME ++ --
|
||||
-- ++ ++ ME -- Me ++ ME
|
||||
-- MB -- -- -- -- -- --
|
||||
Me -- -- __ Me ME MS --
|
||||
++ ME -- ME -- ++ -- --
|
||||
-- -- Me -- MS -- -- 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
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 2, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 2},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 2},
|
||||
{'battle': 5, 'enemy': 1, '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:
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['Hiei', 'Haruna', 'Shokaku']
|
||||
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,
|
||||
}
|
||||
EDGE_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (255 - 33, 255),
|
||||
'prominence': 10,
|
||||
'distance': 50,
|
||||
# 'width': (0, 7),
|
||||
'wlen': 1000
|
||||
}
|
||||
MAP_WALK_USE_CURRENT_FLEET = True
|
||||
MAP_SWIPE_MULTIPLY = (1.023, 1.043)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (0.990, 1.008)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (0.961, 0.978)
|
||||
|
||||
|
||||
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()
|
||||
83
campaign/war_archives_20220915_cn/d2.py
Normal file
@@ -0,0 +1,83 @@
|
||||
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 .d1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('D2')
|
||||
MAP.shape = 'M6'
|
||||
MAP.camera_data = ['D4', 'E3', 'G3', 'G4']
|
||||
MAP.camera_data_spawn_point = ['H3']
|
||||
MAP.map_data = """
|
||||
-- -- -- -- ME -- ++ ++ -- Me ++ ++ ++
|
||||
++ ++ ++ ME -- Me ++ ++ MS -- -- -- --
|
||||
++ ++ ++ ME -- __ -- MS -- -- SP ++ ++
|
||||
++ ++ MB -- -- __ -- MS -- -- SP ++ ++
|
||||
ME -- -- -- -- Me ++ ++ 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 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': 1},
|
||||
{'battle': 2, 'enemy': 2, 'siren': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 2},
|
||||
{'battle': 5, 'enemy': 1},
|
||||
{'battle': 6, 'boss': 1},
|
||||
]
|
||||
A1, B1, C1, D1, E1, F1, G1, H1, I1, J1, K1, L1, M1, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, K2, L2, M2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, K3, L3, M3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, J4, K4, L4, M4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, J5, K5, L5, M5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, J6, K6, L6, M6, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['Kongo', 'Yamashiro', 'Akagi', 'Kaga']
|
||||
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.123, 1.144)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.086, 1.106)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.054, 1.073)
|
||||
|
||||
|
||||
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()
|
||||
93
campaign/war_archives_20220915_cn/d3.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 .d1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('D3')
|
||||
MAP.shape = 'I9'
|
||||
MAP.camera_data = ['D3', 'D5', 'E5']
|
||||
MAP.camera_data_spawn_point = ['D7']
|
||||
MAP.map_covered = ['E3']
|
||||
MAP.map_data = """
|
||||
++ -- -- -- ME -- -- -- ++
|
||||
-- ME ME -- -- -- ME ME --
|
||||
-- ME ++ Me MS Me ++ ME --
|
||||
-- -- Me -- -- -- Me -- --
|
||||
ME -- MS -- ++ -- MS -- ME
|
||||
-- -- Me -- MB -- Me -- --
|
||||
-- ME ++ -- MS -- ++ 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': 2, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 2, 'siren': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 2},
|
||||
{'battle': 5, 'enemy': 1},
|
||||
{'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 = ['Mikasa', 'Nagato', 'Akagi', 'Kaga']
|
||||
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 = (0.985, 1.003)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (0.952, 0.970)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (0.925, 0.941)
|
||||
|
||||
|
||||
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()
|
||||
@@ -1402,7 +1402,7 @@
|
||||
},
|
||||
"Campaign": {
|
||||
"Name": "D3",
|
||||
"Event": "war_archives_20231026_cn",
|
||||
"Event": "war_archives_20220915_cn",
|
||||
"Mode": "normal",
|
||||
"UseClearMode": true,
|
||||
"UseFleetLock": true,
|
||||
|
||||
@@ -107,6 +107,8 @@ class Commission:
|
||||
# DALY RESOURCE EXTRACTION -> DAILY RESOURCE EXTRACTION
|
||||
result = result.replace('DALY', 'DAILY')
|
||||
result = result.replace('NVB', 'NYB')
|
||||
# PYEIN PROTECTION COMMISSION I
|
||||
result = result.replace('PYEIN', 'VEIN').replace('YEIN', 'VEIN')
|
||||
self.name = result
|
||||
self.genre = self.commission_name_parse(self.name)
|
||||
|
||||
|
||||
@@ -3443,6 +3443,7 @@
|
||||
],
|
||||
"display": "hide",
|
||||
"option_cn": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -3478,7 +3479,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -3510,6 +3510,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -3545,7 +3546,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -3581,6 +3581,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -3616,7 +3617,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -3648,6 +3648,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20250227_cn",
|
||||
"event_20250912_cn",
|
||||
"event_20250814_cn",
|
||||
"event_20220224_cn",
|
||||
@@ -4226,6 +4227,7 @@
|
||||
"event_20251023_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -4261,7 +4263,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -4293,6 +4294,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -4328,7 +4330,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -4364,6 +4365,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -4399,7 +4401,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -4431,6 +4432,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20250227_cn",
|
||||
"event_20250912_cn",
|
||||
"event_20250814_cn",
|
||||
"event_20220224_cn",
|
||||
@@ -4956,6 +4958,7 @@
|
||||
"event_20251023_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -4991,7 +4994,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -5023,6 +5025,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -5058,7 +5061,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -5094,6 +5096,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -5129,7 +5132,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -5161,6 +5163,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20250227_cn",
|
||||
"event_20250912_cn",
|
||||
"event_20250814_cn",
|
||||
"event_20220224_cn",
|
||||
@@ -5686,6 +5689,7 @@
|
||||
"event_20251023_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -5721,7 +5725,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -5753,6 +5756,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -5788,7 +5792,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -5824,6 +5827,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -5859,7 +5863,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -5891,6 +5894,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20250227_cn",
|
||||
"event_20250912_cn",
|
||||
"event_20250814_cn",
|
||||
"event_20220224_cn",
|
||||
@@ -6416,6 +6420,7 @@
|
||||
"event_20251023_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -6451,7 +6456,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -6483,6 +6487,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -6518,7 +6523,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -6554,6 +6558,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -6589,7 +6594,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -6621,6 +6625,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20250227_cn",
|
||||
"event_20250912_cn",
|
||||
"event_20250814_cn",
|
||||
"event_20220224_cn",
|
||||
@@ -7146,6 +7151,7 @@
|
||||
"event_20251023_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -7181,7 +7187,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -7213,6 +7218,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -7248,7 +7254,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -7284,6 +7289,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -7319,7 +7325,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -7351,6 +7356,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20250227_cn",
|
||||
"event_20250912_cn",
|
||||
"event_20250814_cn",
|
||||
"event_20220224_cn",
|
||||
@@ -7876,6 +7882,7 @@
|
||||
"event_20251023_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -7911,7 +7918,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -7943,6 +7949,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -7978,7 +7985,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -8014,6 +8020,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -8049,7 +8056,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -8081,6 +8087,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20250227_cn",
|
||||
"event_20250912_cn",
|
||||
"event_20250814_cn",
|
||||
"event_20220224_cn",
|
||||
@@ -9398,9 +9405,11 @@
|
||||
"war_archives_20220428_cn",
|
||||
"war_archives_20220526_cn",
|
||||
"war_archives_20220728_cn",
|
||||
"war_archives_20220915_cn",
|
||||
"war_archives_20231026_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"war_archives_20220915_cn",
|
||||
"war_archives_20231026_cn",
|
||||
"war_archives_20220428_cn",
|
||||
"war_archives_20220728_cn",
|
||||
@@ -9444,6 +9453,7 @@
|
||||
"war_archives_20181020_en"
|
||||
],
|
||||
"option_en": [
|
||||
"war_archives_20220915_cn",
|
||||
"war_archives_20231026_cn",
|
||||
"war_archives_20220428_cn",
|
||||
"war_archives_20220728_cn",
|
||||
@@ -9487,6 +9497,7 @@
|
||||
"war_archives_20181020_en"
|
||||
],
|
||||
"option_jp": [
|
||||
"war_archives_20220915_cn",
|
||||
"war_archives_20231026_cn",
|
||||
"war_archives_20220428_cn",
|
||||
"war_archives_20220728_cn",
|
||||
@@ -9530,6 +9541,7 @@
|
||||
"war_archives_20181020_en"
|
||||
],
|
||||
"option_tw": [
|
||||
"war_archives_20220915_cn",
|
||||
"war_archives_20231026_cn",
|
||||
"war_archives_20220428_cn",
|
||||
"war_archives_20220728_cn",
|
||||
@@ -10040,6 +10052,7 @@
|
||||
"event_20251023_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -10075,7 +10088,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -10107,6 +10119,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -10142,7 +10155,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -10178,6 +10190,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -10213,7 +10226,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -10245,6 +10257,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20250227_cn",
|
||||
"event_20250912_cn",
|
||||
"event_20250814_cn",
|
||||
"event_20220224_cn",
|
||||
@@ -10787,6 +10800,7 @@
|
||||
"event_20251023_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -10822,7 +10836,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -10854,6 +10867,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -10889,7 +10903,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -10925,6 +10938,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -10960,7 +10974,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -10992,6 +11005,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20250227_cn",
|
||||
"event_20250912_cn",
|
||||
"event_20250814_cn",
|
||||
"event_20220224_cn",
|
||||
@@ -11534,6 +11548,7 @@
|
||||
"event_20251023_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -11569,7 +11584,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -11601,6 +11615,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -11636,7 +11651,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -11672,6 +11686,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -11707,7 +11722,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -11739,6 +11753,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20250227_cn",
|
||||
"event_20250912_cn",
|
||||
"event_20250814_cn",
|
||||
"event_20220224_cn",
|
||||
@@ -12281,6 +12296,7 @@
|
||||
"event_20251023_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -12316,7 +12332,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -12348,6 +12363,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -12383,7 +12399,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -12419,6 +12434,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -12454,7 +12470,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -12486,6 +12501,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20250227_cn",
|
||||
"event_20250912_cn",
|
||||
"event_20250814_cn",
|
||||
"event_20220224_cn",
|
||||
@@ -13018,6 +13034,7 @@
|
||||
"event_20251023_cn"
|
||||
],
|
||||
"option_cn": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -13053,7 +13070,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -13085,6 +13101,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_en": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -13120,7 +13137,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -13156,6 +13172,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_jp": [
|
||||
"event_20230803_cn",
|
||||
"event_20251023_cn",
|
||||
"event_20230817_cn",
|
||||
"event_20250912_cn",
|
||||
@@ -13191,7 +13208,6 @@
|
||||
"event_20210916_cn",
|
||||
"event_20231026_cn",
|
||||
"event_20230914_cn",
|
||||
"event_20230803_cn",
|
||||
"event_20211125_cn",
|
||||
"event_20210527_cn",
|
||||
"event_20201126_cn",
|
||||
@@ -13223,6 +13239,7 @@
|
||||
"event_20200227_cn"
|
||||
],
|
||||
"option_tw": [
|
||||
"event_20250227_cn",
|
||||
"event_20250912_cn",
|
||||
"event_20250814_cn",
|
||||
"event_20220224_cn",
|
||||
@@ -15920,7 +15937,8 @@
|
||||
"anchorage",
|
||||
"noshiro",
|
||||
"sirius",
|
||||
"new_jersey"
|
||||
"new_jersey",
|
||||
"taihou"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -600,7 +600,7 @@ PrivateQuarters:
|
||||
TargetInteract: true
|
||||
TargetShip:
|
||||
value: anchorage
|
||||
option: [ anchorage, noshiro, sirius, new_jersey ]
|
||||
option: [ anchorage, noshiro, sirius, new_jersey, taihou ]
|
||||
# ==================== Daily ====================
|
||||
|
||||
Daily:
|
||||
|
||||
@@ -348,7 +348,7 @@ class GeneratedConfig:
|
||||
PrivateQuarters_BuyRoses = True
|
||||
PrivateQuarters_BuyCake = False
|
||||
PrivateQuarters_TargetInteract = True
|
||||
PrivateQuarters_TargetShip = 'anchorage' # anchorage, noshiro, sirius, new_jersey
|
||||
PrivateQuarters_TargetShip = 'anchorage' # anchorage, noshiro, sirius, new_jersey, taihou
|
||||
|
||||
# Group `Daily`
|
||||
Daily_UseDailySkip = True
|
||||
|
||||
@@ -791,7 +791,7 @@
|
||||
"event_20221222_cn": "Parallel Superimposition Rerun",
|
||||
"event_20230223_cn": "Revelations of Dust Rerun",
|
||||
"event_20230525_cn": "Confluence of Nothingness Rerun",
|
||||
"event_20230803_cn": "Anthem of Remembrance",
|
||||
"event_20230803_cn": "Anthem of Remembrance Rerun",
|
||||
"event_20230817_cn": "The Fools Scales Rerun",
|
||||
"event_20230914_cn": "Effulgence Before Eclipse",
|
||||
"event_20231026_cn": "Tempesta and the Fountain of Youth",
|
||||
@@ -864,6 +864,7 @@
|
||||
"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_20220915_cn": "archives Violet Tempest Blooming Lycoris",
|
||||
"war_archives_20231026_cn": "archives Tempesta and the Fountain of Youth"
|
||||
},
|
||||
"Mode": {
|
||||
@@ -1232,7 +1233,7 @@
|
||||
},
|
||||
"ChangeFlagship": {
|
||||
"name": "Change Flagship",
|
||||
"help": "Change flagship if flagship level >= 32 or either flagship or vanguard are emotion exhausted (if Change Vanguard is enabled). If you choose not to change, your fleet will ignore the low emotion warning and continue combat.\nSwitch out to new common CV/CVL whose level is in range of 1 to 31, after current has reached level 32+. Meanwhile, abandoned flagships will be retired. Any common CV/CVL whose level is 2+ will be regarded as targets. Do confirm that your own ships which is not a target has been locked\n\nThe flagship's equipment is replaced when being switched out by first recording the current setup\nOnly populated equipment slots will be replaced. If the CV/CVL preference has been configured, all 5 slots will be populated otherwise only the auxiliary slots will be populated.",
|
||||
"help": "Change flagship if flagship level >= 32 or either flagship or vanguard are emotion exhausted. If you choose not to change, your fleet will ignore the low emotion warning and continue combat.\nSwitch out to new common CV/CVL whose level is in range of 1 to 31, after current has reached level 32+. Meanwhile, abandoned flagships will be retired. Any common CV/CVL whose level is 2+ will be regarded as targets. Do confirm that your own ships which is not a target has been locked\n\nThe flagship's equipment is replaced when being switched out by first recording the current setup\nOnly populated equipment slots will be replaced. If the CV/CVL preference has been configured, all 5 slots will be populated otherwise only the auxiliary slots will be populated.",
|
||||
"ship": "Change Ship",
|
||||
"ship_equip": "Change Ship + Gears"
|
||||
},
|
||||
@@ -2169,7 +2170,8 @@
|
||||
"anchorage": "Anchorage",
|
||||
"noshiro": "Noshiro",
|
||||
"sirius": "Sirius",
|
||||
"new_jersey": "New Jersey"
|
||||
"new_jersey": "New Jersey",
|
||||
"taihou": "Taihou"
|
||||
}
|
||||
},
|
||||
"Daily": {
|
||||
|
||||
@@ -791,7 +791,7 @@
|
||||
"event_20221222_cn": "積重なる事象の幻界(復刻)",
|
||||
"event_20230223_cn": "黙示の遺構(復刻)",
|
||||
"event_20230525_cn": "覆天せし万象の塵(復刻)",
|
||||
"event_20230803_cn": "燃ゆる聖都の回想曲",
|
||||
"event_20230803_cn": "燃ゆる聖都の回想曲(復刻)",
|
||||
"event_20230817_cn": "愚者の天秤(復刻)",
|
||||
"event_20230914_cn": "須臾望月抄",
|
||||
"event_20231026_cn": "テンペスタと若返りの泉",
|
||||
@@ -864,6 +864,7 @@
|
||||
"war_archives_20220428_cn": "檔案 吟ずる瑠璃の楽章",
|
||||
"war_archives_20220526_cn": "檔案 诚閃の剣 搖光の城",
|
||||
"war_archives_20220728_cn": "檔案 鋼鷲の冒険譚",
|
||||
"war_archives_20220915_cn": "檔案 赫の涙月 菫の暁風",
|
||||
"war_archives_20231026_cn": "檔案 テンペスタと若返りの泉"
|
||||
},
|
||||
"Mode": {
|
||||
@@ -2169,7 +2170,8 @@
|
||||
"anchorage": "anchorage",
|
||||
"noshiro": "noshiro",
|
||||
"sirius": "sirius",
|
||||
"new_jersey": "new_jersey"
|
||||
"new_jersey": "new_jersey",
|
||||
"taihou": "taihou"
|
||||
}
|
||||
},
|
||||
"Daily": {
|
||||
|
||||
@@ -791,7 +791,7 @@
|
||||
"event_20221222_cn": "复刻定向折叠",
|
||||
"event_20230223_cn": "复刻湮烬尘墟",
|
||||
"event_20230525_cn": "复刻空相交汇点",
|
||||
"event_20230803_cn": "奏响鸢尾之歌",
|
||||
"event_20230803_cn": "复刻奏响鸢尾之歌",
|
||||
"event_20230817_cn": "复刻愚者的天平",
|
||||
"event_20230914_cn": "须臾望月抄",
|
||||
"event_20231026_cn": "飓风与青春之泉",
|
||||
@@ -864,6 +864,7 @@
|
||||
"war_archives_20220428_cn": "档案 虹彩的终幕曲",
|
||||
"war_archives_20220526_cn": "档案 泠誓光庭",
|
||||
"war_archives_20220728_cn": "档案 雄鹰的叙事歌",
|
||||
"war_archives_20220915_cn": "档案 紫绛槿岚",
|
||||
"war_archives_20231026_cn": "档案 飓风与青春之泉"
|
||||
},
|
||||
"Mode": {
|
||||
@@ -1232,7 +1233,7 @@
|
||||
},
|
||||
"ChangeFlagship": {
|
||||
"name": "更换旗舰",
|
||||
"help": "当旗舰等级>=32或红脸时更换旗舰,选择不更换则会强制红脸出击\n寻找等级在1-31之间的白皮航母,同时会在退役时选择更换下来的旗舰。所有等级大于1级的白皮航母均会被视为退役目标,请务必锁定不是目标的船。换船时更换旗舰装备,这通过记录之前的装备完成。\n\n换装备只会更换正在装备中的栏位,即使是白装也会更换。如果指定了旗舰,则会更换全部5个装备,未指定旗舰只会更换设备。",
|
||||
"help": "当旗舰等级>=32或红脸时更换旗舰\n寻找等级在1-31之间的白皮航母,同时会在退役时选择更换下来的旗舰。所有等级大于1级的白皮航母均会被视为退役目标,请务必锁定不是目标的船。换船时更换旗舰装备,这通过记录之前的装备完成。\n\n换装备只会更换正在装备中的栏位,即使是白装也会更换。如果指定了旗舰,则会更换全部5个装备,未指定旗舰只会更换设备。",
|
||||
"ship": "更换舰船",
|
||||
"ship_equip": "更换舰船 + 装备"
|
||||
},
|
||||
@@ -2169,7 +2170,8 @@
|
||||
"anchorage": "安克雷奇",
|
||||
"noshiro": "能代",
|
||||
"sirius": "天狼星",
|
||||
"new_jersey": "新泽西"
|
||||
"new_jersey": "新泽西",
|
||||
"taihou": "鹩"
|
||||
}
|
||||
},
|
||||
"Daily": {
|
||||
|
||||
@@ -807,7 +807,7 @@
|
||||
"event_20241024_cn": "颶風與沉眠之海",
|
||||
"event_20241121_cn": "危險發明逼近中",
|
||||
"event_20241219_cn": "星光下的餘暉",
|
||||
"event_20250227_cn": "Paradiso of Shackled Light",
|
||||
"event_20250227_cn": "樊籠內的神光",
|
||||
"event_20250424_cn": "揚起鬱金之旗",
|
||||
"event_20250520_cn": "高塔上的薔薇",
|
||||
"event_20250724_cn": "鍊金術士與天際交會之塔",
|
||||
@@ -864,6 +864,7 @@
|
||||
"war_archives_20220428_cn": "檔案 虹彩的終幕曲",
|
||||
"war_archives_20220526_cn": "檔案 泠誓光庭",
|
||||
"war_archives_20220728_cn": "檔案 雄鷹的敘事歌",
|
||||
"war_archives_20220915_cn": "檔案 紫絳槿嵐",
|
||||
"war_archives_20231026_cn": "檔案 飓風與青春之泉"
|
||||
},
|
||||
"Mode": {
|
||||
@@ -1232,7 +1233,7 @@
|
||||
},
|
||||
"ChangeFlagship": {
|
||||
"name": "更換旗艦",
|
||||
"help": "當旗艦等級>=32或紅臉時更換旗艦,選擇不更換則會強制紅臉出擊\n尋找等級在1-31之間的白皮航母,同時會在退役時選擇更換下來的旗艦。所有等級大於1級的白船航母均會被視為退役目標,請務必鎖定不是目標的船。換船時更換旗艦裝備,這通過記錄之前的裝備完成。\n\n換裝備只會更換正在裝備中的欄位,即使是白裝也會更換。如果指定了旗艦,則會更換全部5個裝備,未指定旗艦隻會更換設備。",
|
||||
"help": "當旗艦等級>=32或紅臉時更換旗艦\n尋找等級在1-31之間的白皮航母,同時會在退役時選擇更換下來的旗艦。所有等級大於1級的白船航母均會被視為退役目標,請務必鎖定不是目標的船。換船時更換旗艦裝備,這通過記錄之前的裝備完成。\n\n換裝備只會更換正在裝備中的欄位,即使是白裝也會更換。如果指定了旗艦,則會更換全部5個裝備,未指定旗艦隻會更換設備。",
|
||||
"ship": "更換艦船",
|
||||
"ship_equip": "更換艦船 + 裝備"
|
||||
},
|
||||
@@ -2169,7 +2170,8 @@
|
||||
"anchorage": "anchorage",
|
||||
"noshiro": "noshiro",
|
||||
"sirius": "sirius",
|
||||
"new_jersey": "new_jersey"
|
||||
"new_jersey": "new_jersey",
|
||||
"taihou": "taihou"
|
||||
}
|
||||
},
|
||||
"Daily": {
|
||||
|
||||
@@ -100,5 +100,5 @@ SUBMARINE_VIEW_ON = Button(area={'cn': (1140, 435, 1170, 468), 'en': (1140, 435,
|
||||
TEMPLATE_MANJUU = Template(file={'cn': './assets/cn/handler/TEMPLATE_MANJUU.png', 'en': './assets/cn/handler/TEMPLATE_MANJUU.png', 'jp': './assets/cn/handler/TEMPLATE_MANJUU.png', 'tw': './assets/cn/handler/TEMPLATE_MANJUU.png'})
|
||||
USER_AGREEMENT_CONFIRM = Button(area={'cn': (709, 526, 742, 542), 'en': (709, 526, 742, 542), 'jp': (709, 526, 742, 542), 'tw': (709, 526, 742, 542)}, color={'cn': (151, 216, 243), 'en': (151, 216, 243), 'jp': (151, 216, 243), 'tw': (151, 216, 243)}, button={'cn': (709, 526, 742, 542), 'en': (709, 526, 742, 542), 'jp': (709, 526, 742, 542), 'tw': (709, 526, 742, 542)}, file={'cn': './assets/cn/handler/USER_AGREEMENT_CONFIRM.png', 'en': './assets/en/handler/USER_AGREEMENT_CONFIRM.png', 'jp': './assets/jp/handler/USER_AGREEMENT_CONFIRM.png', 'tw': './assets/tw/handler/USER_AGREEMENT_CONFIRM.png'})
|
||||
USE_DATA_KEY = Button(area={'cn': (688, 316, 781, 338), 'en': (759, 323, 889, 342), 'jp': (627, 300, 743, 321), 'tw': (688, 316, 782, 338)}, color={'cn': (165, 154, 99), 'en': (170, 160, 94), 'jp': (127, 128, 116), 'tw': (159, 150, 97)}, button={'cn': (688, 316, 781, 338), 'en': (759, 323, 889, 342), 'jp': (627, 300, 743, 321), 'tw': (688, 316, 782, 338)}, file={'cn': './assets/cn/handler/USE_DATA_KEY.png', 'en': './assets/en/handler/USE_DATA_KEY.png', 'jp': './assets/jp/handler/USE_DATA_KEY.png', 'tw': './assets/tw/handler/USE_DATA_KEY.png'})
|
||||
USE_DATA_KEY_NOTIFIED = Button(area={'cn': (770, 434, 793, 456), 'en': (820, 440, 837, 456), 'jp': (686, 430, 709, 456), 'tw': (782, 440, 799, 456)}, color={'cn': (41, 44, 49), 'en': (33, 40, 41), 'jp': (33, 44, 49), 'tw': (34, 40, 48)}, button={'cn': (770, 434, 793, 456), 'en': (820, 440, 837, 456), 'jp': (686, 430, 709, 456), 'tw': (782, 440, 799, 456)}, file={'cn': './assets/cn/handler/USE_DATA_KEY_NOTIFIED.png', 'en': './assets/en/handler/USE_DATA_KEY_NOTIFIED.png', 'jp': './assets/jp/handler/USE_DATA_KEY_NOTIFIED.png', 'tw': './assets/tw/handler/USE_DATA_KEY_NOTIFIED.png'})
|
||||
USE_DATA_KEY_NOTIFIED = Button(area={'cn': (690, 185, 713, 207), 'en': (820, 440, 837, 456), 'jp': (686, 430, 709, 456), 'tw': (782, 440, 799, 456)}, color={'cn': (34, 49, 75), 'en': (33, 40, 41), 'jp': (33, 44, 49), 'tw': (34, 40, 48)}, button={'cn': (690, 185, 713, 207), 'en': (820, 440, 837, 456), 'jp': (686, 430, 709, 456), 'tw': (782, 440, 799, 456)}, file={'cn': './assets/cn/handler/USE_DATA_KEY_NOTIFIED.png', 'en': './assets/en/handler/USE_DATA_KEY_NOTIFIED.png', 'jp': './assets/jp/handler/USE_DATA_KEY_NOTIFIED.png', 'tw': './assets/tw/handler/USE_DATA_KEY_NOTIFIED.png'})
|
||||
VOTE_CANCEL = Button(area={'cn': (404, 483, 576, 539), 'en': (413, 489, 566, 532), 'jp': (407, 483, 577, 538), 'tw': (404, 483, 576, 539)}, color={'cn': (167, 169, 171), 'en': (169, 170, 172), 'jp': (163, 164, 166), 'tw': (167, 169, 171)}, button={'cn': (404, 483, 576, 539), 'en': (413, 489, 566, 532), 'jp': (407, 483, 577, 538), 'tw': (404, 483, 576, 539)}, file={'cn': './assets/cn/handler/VOTE_CANCEL.png', 'en': './assets/en/handler/VOTE_CANCEL.png', 'jp': './assets/jp/handler/VOTE_CANCEL.png', 'tw': './assets/cn/handler/VOTE_CANCEL.png'})
|
||||
|
||||
@@ -96,6 +96,10 @@ class OSMapOperation(MapOrderHandler, MissionHandler, PortHandler, StorageHandle
|
||||
name = name.replace('ジブフルタル', 'ジブラルタル')
|
||||
name = name.replace('タント', 'タラント').replace('タフント', 'タラント')
|
||||
name = name.replace('N海域', 'NA海域')
|
||||
# リバープル -> リバープール
|
||||
name = name.replace('リバプル', 'リバープール')
|
||||
name = name.replace('リバープル', 'リバープール')
|
||||
name = name.replace('リバプール', 'リバープール')
|
||||
return name
|
||||
|
||||
@Config.when(SERVER='tw')
|
||||
|
||||
@@ -20,9 +20,10 @@ PRIVATE_QUARTERS_ROOM_TARGET_CHECK_2 = Button(area={'cn': (667, 71, 717, 86), 'e
|
||||
PRIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA = Button(area={'cn': (504, 45, 784, 625), 'en': (504, 45, 784, 625), 'jp': (504, 45, 784, 625), 'tw': (504, 45, 784, 625)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (504, 45, 784, 625), 'en': (504, 45, 784, 625), 'jp': (504, 45, 784, 625), 'tw': (504, 45, 784, 625)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_CLICK_AREA.png'})
|
||||
PRIVATE_QUARTERS_ROOM_TARGET_INTIMACY_MAX = Button(area={'cn': (1157, 40, 1197, 60), 'en': (1157, 40, 1197, 60), 'jp': (1157, 40, 1197, 60), 'tw': (1157, 40, 1197, 60)}, color={'cn': (173, 161, 155), 'en': (173, 161, 155), 'jp': (173, 161, 155), 'tw': (173, 161, 155)}, button={'cn': (1157, 40, 1197, 60), 'en': (1157, 40, 1197, 60), 'jp': (1157, 40, 1197, 60), 'tw': (1157, 40, 1197, 60)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_INTIMACY_MAX.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_INTIMACY_MAX.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_INTIMACY_MAX.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_ROOM_TARGET_INTIMACY_MAX.png'})
|
||||
PRIVATE_QUARTERS_SHIP_ANCHORAGE = Button(area={'cn': (713, 246, 778, 311), 'en': (713, 246, 778, 311), 'jp': (713, 246, 778, 311), 'tw': (713, 246, 778, 311)}, color={'cn': (214, 184, 176), 'en': (214, 184, 176), 'jp': (214, 184, 176), 'tw': (214, 184, 176)}, button={'cn': (713, 246, 778, 311), 'en': (713, 246, 778, 311), 'jp': (713, 246, 778, 311), 'tw': (713, 246, 778, 311)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_SHIP_ANCHORAGE.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_SHIP_ANCHORAGE.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_SHIP_ANCHORAGE.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_SHIP_ANCHORAGE.png'})
|
||||
PRIVATE_QUARTERS_SHIP_NEW_JERSEY = Button(area={'cn': (973, 307, 1023, 347), 'en': (973, 307, 1023, 347), 'jp': (973, 307, 1023, 347), 'tw': (973, 307, 1023, 347)}, color={'cn': (149, 141, 173), 'en': (149, 141, 173), 'jp': (149, 141, 173), 'tw': (149, 141, 173)}, button={'cn': (973, 307, 1023, 347), 'en': (973, 307, 1023, 347), 'jp': (973, 307, 1023, 347), 'tw': (973, 307, 1023, 347)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_SHIP_NEW_JERSEY.png', 'en': './assets/cn/private_quarters/PRIVATE_QUARTERS_SHIP_NEW_JERSEY.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_SHIP_NEW_JERSEY.png', 'tw': './assets/cn/private_quarters/PRIVATE_QUARTERS_SHIP_NEW_JERSEY.png'})
|
||||
PRIVATE_QUARTERS_SHIP_NEW_JERSEY = Button(area={'cn': (973, 307, 1023, 347), 'en': (973, 307, 1023, 347), 'jp': (973, 307, 1023, 347), 'tw': (973, 307, 1023, 347)}, color={'cn': (149, 141, 173), 'en': (149, 141, 173), 'jp': (149, 141, 173), 'tw': (149, 141, 173)}, button={'cn': (973, 307, 1023, 347), 'en': (973, 307, 1023, 347), 'jp': (973, 307, 1023, 347), 'tw': (973, 307, 1023, 347)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_SHIP_NEW_JERSEY.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_SHIP_NEW_JERSEY.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_SHIP_NEW_JERSEY.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_SHIP_NEW_JERSEY.png'})
|
||||
PRIVATE_QUARTERS_SHIP_NOSHIRO = Button(area={'cn': (965, 289, 1027, 362), 'en': (962, 295, 1027, 360), 'jp': (962, 295, 1027, 360), 'tw': (962, 295, 1027, 360)}, color={'cn': (143, 120, 127), 'en': (102, 93, 102), 'jp': (102, 93, 102), 'tw': (102, 93, 102)}, button={'cn': (965, 289, 1027, 362), 'en': (962, 295, 1027, 360), 'jp': (962, 295, 1027, 360), 'tw': (962, 295, 1027, 360)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_SHIP_NOSHIRO.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_SHIP_NOSHIRO.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_SHIP_NOSHIRO.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_SHIP_NOSHIRO.png'})
|
||||
PRIVATE_QUARTERS_SHIP_SIRIUS = Button(area={'cn': (908, 411, 966, 478), 'en': (905, 414, 970, 479), 'jp': (905, 414, 970, 479), 'tw': (905, 414, 970, 479)}, color={'cn': (219, 207, 214), 'en': (156, 153, 165), 'jp': (156, 153, 165), 'tw': (156, 153, 165)}, button={'cn': (908, 411, 966, 478), 'en': (905, 414, 970, 479), 'jp': (905, 414, 970, 479), 'tw': (905, 414, 970, 479)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_SHIP_SIRIUS.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_SHIP_SIRIUS.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_SHIP_SIRIUS.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_SHIP_SIRIUS.png'})
|
||||
PRIVATE_QUARTERS_SHIP_TAIHOU = Button(area={'cn': (814, 190, 856, 232), 'en': (814, 190, 856, 232), 'jp': (814, 190, 856, 232), 'tw': (814, 190, 856, 232)}, color={'cn': (134, 111, 109), 'en': (134, 111, 109), 'jp': (134, 111, 109), 'tw': (134, 111, 109)}, button={'cn': (814, 190, 856, 232), 'en': (814, 190, 856, 232), 'jp': (814, 190, 856, 232), 'tw': (814, 190, 856, 232)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_SHIP_TAIHOU.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_SHIP_TAIHOU.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_SHIP_TAIHOU.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_SHIP_TAIHOU.png'})
|
||||
PRIVATE_QUARTERS_SHOP_AMOUNT_MAX = Button(area={'cn': (848, 504, 888, 524), 'en': (848, 504, 888, 524), 'jp': (848, 504, 888, 524), 'tw': (848, 504, 888, 524)}, color={'cn': (227, 231, 235), 'en': (227, 231, 235), 'jp': (227, 231, 235), 'tw': (227, 231, 235)}, button={'cn': (848, 504, 888, 524), 'en': (848, 504, 888, 524), 'jp': (848, 504, 888, 524), 'tw': (848, 504, 888, 524)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_SHOP_AMOUNT_MAX.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_SHOP_AMOUNT_MAX.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_SHOP_AMOUNT_MAX.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_SHOP_AMOUNT_MAX.png'})
|
||||
PRIVATE_QUARTERS_SHOP_BACK = Button(area={'cn': (40, 35, 60, 55), 'en': (40, 35, 60, 55), 'jp': (40, 35, 60, 55), 'tw': (40, 35, 60, 55)}, color={'cn': (202, 202, 202), 'en': (202, 202, 202), 'jp': (202, 202, 202), 'tw': (202, 202, 202)}, button={'cn': (35, 30, 95, 60), 'en': (35, 30, 95, 60), 'jp': (35, 30, 95, 60), 'tw': (35, 30, 95, 60)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_SHOP_BACK.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_SHOP_BACK.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_SHOP_BACK.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_SHOP_BACK.png'})
|
||||
PRIVATE_QUARTERS_SHOP_CHECK = Button(area={'cn': (124, 18, 218, 48), 'en': (129, 25, 284, 40), 'jp': (126, 20, 260, 44), 'tw': (129, 25, 284, 40)}, color={'cn': (86, 92, 98), 'en': (142, 147, 155), 'jp': (82, 88, 94), 'tw': (142, 147, 155)}, button={'cn': (124, 18, 218, 48), 'en': (129, 25, 284, 40), 'jp': (126, 20, 260, 44), 'tw': (129, 25, 284, 40)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_SHOP_CHECK.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_SHOP_CHECK.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_SHOP_CHECK.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_SHOP_CHECK.png'})
|
||||
|
||||
@@ -16,14 +16,45 @@ class PQInteract(UI):
|
||||
'noshiro': (PRIVATE_QUARTERS_SHIP_NOSHIRO, PRIVATE_QUARTERS_PAGE_LOCALE_BEACH),
|
||||
'sirius': (PRIVATE_QUARTERS_SHIP_SIRIUS, PRIVATE_QUARTERS_PAGE_LOCALE_BEACH),
|
||||
'new_jersey': (PRIVATE_QUARTERS_SHIP_NEW_JERSEY, PRIVATE_QUARTERS_PAGE_LOCALE_LOFT),
|
||||
'taihou': (PRIVATE_QUARTERS_SHIP_TAIHOU, PRIVATE_QUARTERS_PAGE_LOCALE_LOFT),
|
||||
}
|
||||
|
||||
def _pq_handle_dialogue(self):
|
||||
"""
|
||||
Handles dialogue sequence of target
|
||||
After the addition of Taihou this sequence
|
||||
has been discovered lagging on rare cases
|
||||
Hence this call is used in other states
|
||||
besides on room enter
|
||||
"""
|
||||
|
||||
# Helper funcs to hold off spam clicking until loading
|
||||
# state is not present
|
||||
def after_loading_state():
|
||||
return not self.appear(PRIVATE_QUARTERS_LOADING_CHECK, offset=(20, 20))
|
||||
|
||||
def additional():
|
||||
return True
|
||||
|
||||
self.ui_click(
|
||||
click_button=PRIVATE_QUARTERS_ROOM_SAFE_CLICK_AREA,
|
||||
check_button=PRIVATE_QUARTERS_ROOM_CHECK,
|
||||
appear_button=after_loading_state,
|
||||
additional=additional,
|
||||
confirm_wait=3,
|
||||
offset=(20, 20),
|
||||
retry_wait=1.5
|
||||
)
|
||||
|
||||
def _pq_target_appear(self):
|
||||
"""
|
||||
Callable wrapper to validate target's appearance
|
||||
offset=(100, 100) detectable for anchorage, noshiro, sirus, and new_jersey
|
||||
offset=(100, 100) detectable for anchorage, noshiro, sirus, new_jersey, and taihou
|
||||
When more ships added may need to adjust or capture specific bubble position per
|
||||
ship, can use the available_targets to store similarly into tuples instead
|
||||
|
||||
Returns:
|
||||
bool
|
||||
"""
|
||||
settle_timer = Timer(1.5, count=3).start()
|
||||
skip_first_screenshot = True
|
||||
@@ -43,11 +74,20 @@ class PQInteract(UI):
|
||||
if settle_timer.reached():
|
||||
return False
|
||||
|
||||
# Factor in couple drag up actions to
|
||||
# counter odd default distance/zoom on target
|
||||
p1, p2 = random_rectangle_vector(
|
||||
(0, -30), box=PRIVATE_QUARTERS_ROOM_SAFE_CLICK_AREA.area, random_range=(-10, -10, 10, 10), padding=5)
|
||||
self.device.drag(p1, p2, segments=2, shake=(0, 25), point_random=(0, 0, 0, 0), shake_random=(0, -5, 0, 5))
|
||||
if self.appear(PRIVATE_QUARTERS_ROOM_CHECK, offset=(20, 20)):
|
||||
# Factor in couple drag up actions to
|
||||
# counter odd default distance/zoom on target
|
||||
p1, p2 = random_rectangle_vector(
|
||||
(0, -30), box=PRIVATE_QUARTERS_ROOM_SAFE_CLICK_AREA.area,
|
||||
random_range=(-10, -10, 10, 10), padding=5)
|
||||
self.device.drag(p1, p2, segments=2,
|
||||
shake=(0, 25), point_random=(0, 0, 0, 0),
|
||||
shake_random=(0, -5, 0, 5))
|
||||
settle_timer.reset()
|
||||
else:
|
||||
# Absence of check likely means dialogue is ongoing
|
||||
self._pq_handle_dialogue()
|
||||
settle_timer.reset()
|
||||
|
||||
def _pq_goto_room_seek(self, target_ship):
|
||||
"""
|
||||
@@ -112,8 +152,11 @@ class PQInteract(UI):
|
||||
"""
|
||||
Callable wrapper for whether is loading or blocked by download asset popup
|
||||
"""
|
||||
return self.appear(PRIVATE_QUARTERS_LOADING_CHECK, offset=(20, 20)) \
|
||||
or self.appear(POPUP_CANCEL, offset=(20, 20))
|
||||
if self.appear(PRIVATE_QUARTERS_LOADING_CHECK, offset=(20, 20)):
|
||||
return True
|
||||
if self.appear(POPUP_CANCEL, offset=(20, 20)):
|
||||
return True
|
||||
return False
|
||||
|
||||
def _pq_goto_room_enter(self, target_ship):
|
||||
"""
|
||||
@@ -155,25 +198,7 @@ class PQInteract(UI):
|
||||
|
||||
# Fully enter into target's room
|
||||
# through click progression
|
||||
click_timer = Timer(1.5, count=3).start()
|
||||
skip_first_screenshot = True
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
skip_first_screenshot = False
|
||||
else:
|
||||
self.device.screenshot()
|
||||
|
||||
# End
|
||||
if self.appear(PRIVATE_QUARTERS_ROOM_CHECK, offset=(20, 20)):
|
||||
break
|
||||
|
||||
# Continue without clicking, mitigate too many click exception
|
||||
if self.appear(PRIVATE_QUARTERS_LOADING_CHECK, offset=(20, 20)):
|
||||
continue
|
||||
|
||||
if click_timer.reached():
|
||||
self.device.click(PRIVATE_QUARTERS_ROOM_SAFE_CLICK_AREA)
|
||||
click_timer.reset()
|
||||
self._pq_handle_dialogue()
|
||||
|
||||
# If target's intimacy is maxed
|
||||
# Terminate the run
|
||||
@@ -188,6 +213,12 @@ class PQInteract(UI):
|
||||
"""
|
||||
Execute room exit routine
|
||||
"""
|
||||
# Rare case in the middle of dialogue, so address
|
||||
# before initiating room exit
|
||||
if (not self.appear(PRIVATE_QUARTERS_ROOM_CHECK, offset=(20, 20)) and
|
||||
not self.appear(PRIVATE_QUARTERS_INTERACT, offset=(0, 60))):
|
||||
self._pq_handle_dialogue()
|
||||
|
||||
self.interval_clear(PRIVATE_QUARTERS_ROOM_BACK)
|
||||
self.ui_click(
|
||||
click_button=PRIVATE_QUARTERS_ROOM_BACK,
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
from module.base.button import ButtonGrid
|
||||
from module.base.decorator import cached_property
|
||||
from module.base.timer import Timer
|
||||
from module.handler.assets import POPUP_CONFIRM
|
||||
from module.logger import logger
|
||||
from module.shop.assets import *
|
||||
@@ -72,44 +71,46 @@ class ShopUI(UI):
|
||||
switch.add_state(TAB_PROTOTYPE, check_button=TAB_PROTOTYPE)
|
||||
return switch
|
||||
|
||||
def shop_refresh(self, skip_first_screenshot=True):
|
||||
def shop_refresh(self):
|
||||
"""
|
||||
Args:
|
||||
skip_first_screenshot: bool
|
||||
|
||||
Returns:
|
||||
bool: If refreshed
|
||||
"""
|
||||
logger.info('Shop refresh')
|
||||
refreshed = False
|
||||
exit_timer = Timer(3, count=6).start()
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
skip_first_screenshot = False
|
||||
else:
|
||||
self.device.screenshot()
|
||||
|
||||
if self.appear_then_click(SHOP_REFRESH, interval=3):
|
||||
exit_timer.reset()
|
||||
continue
|
||||
if self.appear(SHOP_BUY_CONFIRM_MISTAKE, interval=3, offset=(200, 200)) \
|
||||
and self.appear(POPUP_CONFIRM, offset=(3, 30)):
|
||||
# SHOP_REFRESH -> POPUP_CONFIRM
|
||||
for _ in self.loop():
|
||||
if self.appear(POPUP_CONFIRM, offset=(30, 30)):
|
||||
break
|
||||
if self.appear(SHOP_REFRESH, offset=(30, 30), interval=3):
|
||||
# SHOP_REFRESH has two kinds of color when active
|
||||
if self.image_color_count(SHOP_REFRESH.button, color=(49, 142, 207), threshold=221, count=50):
|
||||
self.device.click(SHOP_REFRESH)
|
||||
continue
|
||||
if self.image_color_count(SHOP_REFRESH.button, color=(54, 117, 161), threshold=221, count=50):
|
||||
self.device.click(SHOP_REFRESH)
|
||||
continue
|
||||
if self.image_color_count(SHOP_REFRESH.button, color=(52, 74, 94), threshold=221, count=50):
|
||||
logger.info('Refresh not available')
|
||||
break
|
||||
# no `continue`, act like SHOP_REFRESH not matched
|
||||
self.interval_clear(SHOP_REFRESH)
|
||||
|
||||
# POPUP_CONFIRM -> SHOP_BACK_ARROW
|
||||
for _ in self.loop():
|
||||
if self.appear(SHOP_BACK_ARROW, offset=(30, 30)):
|
||||
break
|
||||
if self.appear(SHOP_BUY_CONFIRM_MISTAKE, interval=3, offset=(200, 200)):
|
||||
logger.warning('SHOP_BUY_CONFIRM_MISTAKE')
|
||||
self.ui_click(SHOP_CLICK_SAFE_AREA, appear_button=POPUP_CONFIRM, check_button=SHOP_BACK_ARROW,
|
||||
offset=(20, 30), skip_first_screenshot=True)
|
||||
exit_timer.reset()
|
||||
refreshed = False
|
||||
break
|
||||
if self.handle_popup_confirm('SHOP_REFRESH_CONFIRM'):
|
||||
exit_timer.reset()
|
||||
refreshed = True
|
||||
continue
|
||||
|
||||
# End
|
||||
if self.appear(SHOP_BACK_ARROW, offset=(30, 30)):
|
||||
if exit_timer.reached():
|
||||
break
|
||||
else:
|
||||
exit_timer.reset()
|
||||
|
||||
self.handle_info_bar()
|
||||
return refreshed
|
||||
|
||||
|
||||
@@ -611,6 +611,8 @@ class UI(InfoHandler):
|
||||
self.interval_reset(GET_SHIP)
|
||||
if button == DORMMENU_GOTO_DORM:
|
||||
self.interval_reset(GET_SHIP)
|
||||
if button == DORMMENU_GOTO_MEOWFFICER:
|
||||
self.interval_reset(GET_SHIP)
|
||||
for switch_button in page_main.links.values():
|
||||
if button == switch_button:
|
||||
self.interval_reset(GET_SHIP)
|
||||
|
||||
@@ -44,6 +44,7 @@ TEMPLATE_THE_WAY_HOME_IN_THE_NIGHT = Template(file={'cn': './assets/cn/war_archi
|
||||
TEMPLATE_TOWER_OF_TRANSCENDENCE = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_TOWER_OF_TRANSCENDENCE.png', 'en': './assets/cn/war_archives/TEMPLATE_TOWER_OF_TRANSCENDENCE.png', 'jp': './assets/cn/war_archives/TEMPLATE_TOWER_OF_TRANSCENDENCE.png', 'tw': './assets/cn/war_archives/TEMPLATE_TOWER_OF_TRANSCENDENCE.png'})
|
||||
TEMPLATE_UNIVERSE_IN_UNISON = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_UNIVERSE_IN_UNISON.png', 'en': './assets/en/war_archives/TEMPLATE_UNIVERSE_IN_UNISON.png', 'jp': './assets/jp/war_archives/TEMPLATE_UNIVERSE_IN_UNISON.png', 'tw': './assets/cn/war_archives/TEMPLATE_UNIVERSE_IN_UNISON.png'})
|
||||
TEMPLATE_UPON_THE_SHIMMERING_BLUE = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_UPON_THE_SHIMMERING_BLUE.png', 'en': './assets/cn/war_archives/TEMPLATE_UPON_THE_SHIMMERING_BLUE.png', 'jp': './assets/cn/war_archives/TEMPLATE_UPON_THE_SHIMMERING_BLUE.png', 'tw': './assets/cn/war_archives/TEMPLATE_UPON_THE_SHIMMERING_BLUE.png'})
|
||||
TEMPLATE_VIOLET_TEMPEST_BLOOMING_LYCORIS = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_VIOLET_TEMPEST_BLOOMING_LYCORIS.png', 'en': './assets/cn/war_archives/TEMPLATE_VIOLET_TEMPEST_BLOOMING_LYCORIS.png', 'jp': './assets/cn/war_archives/TEMPLATE_VIOLET_TEMPEST_BLOOMING_LYCORIS.png', 'tw': './assets/cn/war_archives/TEMPLATE_VIOLET_TEMPEST_BLOOMING_LYCORIS.png'})
|
||||
TEMPLATE_VIRTUAL_TOWER = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_VIRTUAL_TOWER.png', 'en': './assets/cn/war_archives/TEMPLATE_VIRTUAL_TOWER.png', 'jp': './assets/cn/war_archives/TEMPLATE_VIRTUAL_TOWER.png', 'tw': './assets/cn/war_archives/TEMPLATE_VIRTUAL_TOWER.png'})
|
||||
TEMPLATE_VISITORS_DYED_IN_RED = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_VISITORS_DYED_IN_RED.png', 'en': './assets/en/war_archives/TEMPLATE_VISITORS_DYED_IN_RED.png', 'jp': './assets/jp/war_archives/TEMPLATE_VISITORS_DYED_IN_RED.png', 'tw': './assets/tw/war_archives/TEMPLATE_VISITORS_DYED_IN_RED.png'})
|
||||
TEMPLATE_WINTERS_CROWN = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_WINTERS_CROWN.png', 'en': './assets/en/war_archives/TEMPLATE_WINTERS_CROWN.png', 'jp': './assets/jp/war_archives/TEMPLATE_WINTERS_CROWN.png', 'tw': './assets/tw/war_archives/TEMPLATE_WINTERS_CROWN.png'})
|
||||
|
||||
@@ -42,4 +42,5 @@ dic_archives_template = {
|
||||
'war_archives_20220728_cn': TEMPLATE_AQUILIFERS_BALLADE,
|
||||
'war_archives_20220428_cn': TEMPLATE_RONDO_AT_RAINBOWS_END,
|
||||
'war_archives_20231026_cn': TEMPLATE_TEMPESTA_AND_THE_FOUNTAIN_OF_YOUTH,
|
||||
'war_archives_20220915_cn': TEMPLATE_VIOLET_TEMPEST_BLOOMING_LYCORIS,
|
||||
}
|
||||
|
||||