mirror of
https://github.com/LmeSzinc/AzurLaneAutoScript.git
synced 2025-01-07 07:07:15 +08:00
parent
078c6bb606
commit
17b13f6c6c
BIN
assets/cn/war_archives/TEMPLATE_INVERTED_ORTHANT.png
Normal file
BIN
assets/cn/war_archives/TEMPLATE_INVERTED_ORTHANT.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 33 KiB |
@ -34,8 +34,9 @@ To add a new event, add a new row in here, and run `python -m module.config.conf
|
||||
| 20221117 | war archives 20200903 cn | Stars of the Shimmering Fjord | 峡湾间的星辰 | Stars of the Shimmering Fjord | 輝ける峡湾の星 | - |
|
||||
| 20221117 | war archives 20210819 cn | Microlayer Medley | 微层混合 | Microlayer Medley | 闇靄払う銀翼 | - |
|
||||
| 20211028 | war archives 20211028 cn | Skybound Oratorio | 穹顶下的圣咏曲 | Skybound Oratorio | 神穹を衝く聖歌 | 穹頂下的聖詠曲 |
|
||||
| 20230420 | war archives 20220210 cn | Northern Overture | 北境序曲 | Northern Overture | 凍絶の北海 | 北境序曲 |
|
||||
| 20230420 | war archives 20220210 cn | Northern Overture | 北境序曲 | Northern Overture | 凍絶の北海 | 北境序曲 |
|
||||
| 20230511 | war archives 20220414 cn | Aurora Noctis | 永夜幻光 | Aurora Noctis | 極夜照らす幻光 | 永夜幻光 |
|
||||
| 20230831 | war archives 20201229 cn | Inverted Orthant | 负象限作战 | Inverted Orthant | 虚畳なりし限象 | - |
|
||||
| 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 | 闇靄払う銀翼 | - |
|
||||
@ -135,25 +136,11 @@ To add a new event, add a new row in here, and run `python -m module.config.conf
|
||||
| 20230118 | raid 20220127 | - | - | - | - | 演習神秘事件調查 |
|
||||
| 20230202 | event 20200806 cn | The Enigma and the Shark | - | - | - | 復刻最重要的寶物 |
|
||||
| 20230216 | event 20220224 cn | Abyssal Refrain | - | - | - | 深度回音 |
|
||||
| 20230223 | event 20230223 cn | Revelations of Dust | 湮烬尘墟 | Revelations of Dust | 黙示の遺構 | - |
|
||||
| 20230223 | event 20230223 cn | Revelations of Dust | 湮烬尘墟 | Revelations of Dust | 黙示の遺構 | - |
|
||||
| 20230309 | event 20210624 cn | Swirling Cherry Blossoms | - | - | - | 復刻-浮櫻影華 |
|
||||
| 20230309 | event 20210422 cn | Daedalian Hymn | 复刻复兴的赞美诗 | Daedalian Hymn Rerun | 讃える復興の迷路(復刻) | - |
|
||||
| 20230309 | event 20210422 cn | Daedalian Hymn | 复刻复兴的赞美诗 | Daedalian Hymn Rerun | 讃える復興の迷路(復刻) | - |
|
||||
| 20230323 | raid 20220630 | Angel of Iris | - | - | - | 來自鳶尾的天使 |
|
||||
| 20230323 | coalition 20230323 | Frostfall | 极地风暴 | Frostfall | 星霜海嵐 | - |
|
||||
| 20230413 | event 20211111 cn | The Flame-Touched Dagger | 复刻杰诺瓦的焰火 | The Flame-Touched Dagger Rerun | 復刻-燈火のシニエ | - |
|
||||
| 20230323 | coalition 20230323 | Frostfall | 极地风暴 | Frostfall | 星霜海嵐 | - |
|
||||
| 20230413 | event 20211111 cn | The Flame-Touched Dagger | 复刻杰诺瓦的焰火 | The Flame-Touched Dagger Rerun | 復刻-燈火のシニエ | - |
|
||||
| 20230413 | event 20210819 cn | Microlayer Medley | - | - | - | 復刻-微層混合 |
|
||||
| 20230427 | event 20201126 cn | Vacation Lane | 假日航线 | Vacation Lane | バケーションレーン | 假日航線 |
|
||||
| 20230525 | event 20220526 cn | Pledge of the Radiant Court | - | - | - | 泠誓光庭 |
|
||||
| 20230525 | event 20230525 cn | Confluence of Nothingness | 空相交汇点 | Confluence of Nothingness | 覆天せし万象の塵 | - |
|
||||
| 20230615 | event 20200603 cn | Counterattack Within the Fjord | - | - | - | 復刻峽灣間的反擊 |
|
||||
| 20230621 | event 20210527 cn | Mirror Involution Rerun | 复刻镜位螺旋 | Mirror Involution Rerun | 照らす螺旋の鏡海(復刻) | - |
|
||||
| 20230629 | event 20220428 cn | Rondo at Rainbow's End | - | - | - | 虹彩的終幕曲 |
|
||||
| 20230629 | raid 20230629 | Reflections of the Oasis | 绿洲往事 | Reflections of the Oasis | 緑地伽話 | - |
|
||||
| 20230713 | event 20220818 cn | Operation Convergence | - | - | 結像点作戦 | 遠匯點作戰 |
|
||||
| 20230720 | event 20211125 cn | World-spanning Arclight | 复刻交汇世界的弧光 | World-spanning Arclight Rerun | 弧光は交わる世界にて(復刻) | - |
|
||||
| 20230727 | event 20200917 cn | Dreamwaker's Butterfly | - | - | - | 復刻-蝶海夢花 |
|
||||
| 20230803 | event 20211125 cn | World-spanning Arclight | - | - | - | 復刻-交匯世界的弧光 |
|
||||
| 20230803 | event 20230803 cn | Anthem of Remembrance | 奏响鸢尾之歌 | Anthem of Remembrance | 燃ゆる聖都の回想曲 | - |
|
||||
| 20230817 | event 20230817 cn | The Fool's Scales | 愚者的天平 | The Fool's Scales | 愚者の天秤 | - |
|
||||
| 20230817 | event 20220414 cn | Aurora Noctis | - | - | - | 復刻-永夜幻光 |
|
||||
| 20230824 | coalition 20230323 | Frostfall | - | - | - | 極地風暴 |
|
||||
| 20230427 | event 20201126 cn | Vacation Lane | 假日航线 | Vacation Lane | バケーションレーン | 假日航線 |
|
||||
|
100
campaign/war_archives_20201229_cn/a1.py
Normal file
100
campaign/war_archives_20201229_cn/a1.py
Normal file
@ -0,0 +1,100 @@
|
||||
from ..campaign_war_archives.campaign_base import CampaignBase
|
||||
from module.logger import logger
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import RoadGrids, SelectedGrids
|
||||
|
||||
MAP = CampaignMap('A1')
|
||||
MAP.shape = 'I7'
|
||||
MAP.camera_data = ['D2', 'D5', 'F2', 'F5']
|
||||
MAP.camera_data_spawn_point = ['D2', 'D5']
|
||||
MAP.map_data = """
|
||||
++ -- MS -- ME -- -- ++ ++
|
||||
SP -- -- ++ ME -- Me ++ ++
|
||||
-- -- -- -- __ -- -- Me --
|
||||
SP -- -- MS -- ME -- -- --
|
||||
++ ++ -- ++ ++ ++ -- ++ ++
|
||||
++ ME -- ME MB ME -- ME ++
|
||||
-- -- -- -- -- -- -- -- --
|
||||
"""
|
||||
MAP.weight_data = """
|
||||
50 50 50 50 50 50 10 90 90
|
||||
50 50 50 50 50 50 10 90 90
|
||||
50 50 50 50 50 50 10 10 10
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 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},
|
||||
]
|
||||
MAP.spawn_data_loop = [
|
||||
{'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, I1, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, \
|
||||
A7, B7, C7, D7, E7, F7, G7, H7, I7, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config:
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['DD', 'CL']
|
||||
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
|
||||
# ===== End of generated config =====
|
||||
|
||||
MAP_HAS_MYSTERY = False
|
||||
|
||||
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (80, 255 - 24),
|
||||
'width': (0.9, 10),
|
||||
'prominence': 10,
|
||||
'distance': 35,
|
||||
}
|
||||
EDGE_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (255 - 24, 255),
|
||||
'prominence': 10,
|
||||
'distance': 50,
|
||||
'width': (0, 10),
|
||||
'wlen': 1000,
|
||||
}
|
||||
MAP_SWIPE_MULTIPLY = (1.196, 1.218)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.156, 1.178)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.122, 1.143)
|
||||
MAP_ENEMY_GENRE_DETECTION_SCALING = {
|
||||
'DD': 1.111,
|
||||
'CL': 1.111,
|
||||
'CA': 1.111,
|
||||
'CV': 1.111,
|
||||
'BB': 1.111,
|
||||
}
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
|
||||
def battle_0(self):
|
||||
if self.clear_siren():
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_3(self):
|
||||
return self.clear_boss()
|
73
campaign/war_archives_20201229_cn/a2.py
Normal file
73
campaign/war_archives_20201229_cn/a2.py
Normal file
@ -0,0 +1,73 @@
|
||||
from ..campaign_war_archives.campaign_base import CampaignBase
|
||||
from module.logger import logger
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import RoadGrids, SelectedGrids
|
||||
|
||||
from .a1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('A2')
|
||||
MAP.shape = 'J6'
|
||||
MAP.camera_data = ['D2', 'D4', 'G2', 'G4']
|
||||
MAP.camera_data_spawn_point = ['D2']
|
||||
MAP.map_data = """
|
||||
++ SP -- SP -- -- ++ -- ++ ++
|
||||
++ -- -- -- -- -- -- ME -- ++
|
||||
ME -- MS ++ -- MS -- -- ME --
|
||||
ME -- -- -- -- ++ 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 10 10 10 10 50 50 50 50 50
|
||||
50 10 90 90 10 50 50 50 50 50
|
||||
50 10 90 90 10 50 50 50 50 50
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 3, 'siren': 1},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'boss': 1},
|
||||
]
|
||||
MAP.spawn_data_loop = [
|
||||
{'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, I1, J1, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, J4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, J5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, J6, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['Dorsetshire', 'Rodney', 'ArkRoyal']
|
||||
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
|
||||
# ===== End of generated config =====
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
|
||||
def battle_0(self):
|
||||
if self.clear_siren():
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_4(self):
|
||||
return self.clear_boss()
|
73
campaign/war_archives_20201229_cn/a3.py
Normal file
73
campaign/war_archives_20201229_cn/a3.py
Normal file
@ -0,0 +1,73 @@
|
||||
from ..campaign_war_archives.campaign_base import CampaignBase
|
||||
from module.logger import logger
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import RoadGrids, SelectedGrids
|
||||
|
||||
from .a1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('A3')
|
||||
MAP.shape = 'J6'
|
||||
MAP.camera_data = ['D2', 'D4', 'G2', 'G4']
|
||||
MAP.camera_data_spawn_point = ['D4']
|
||||
MAP.map_data = """
|
||||
-- -- ME -- ++ ++ -- ++ ++ ++
|
||||
-- ++ -- Me ++ ++ Me -- ME ME
|
||||
++ MS -- -- MB MB -- -- -- --
|
||||
++ -- -- -- -- -- __ ++ ++ ME
|
||||
SP -- -- MS ME ME -- ME ++ --
|
||||
-- SP -- ++ ++ ++ -- -- ME --
|
||||
"""
|
||||
MAP.weight_data = """
|
||||
50 50 50 10 90 90 10 50 50 50
|
||||
50 50 50 10 90 90 10 50 50 50
|
||||
50 50 50 10 10 10 10 50 50 50
|
||||
50 50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50 50
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 3, 'siren': 1},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'boss': 1},
|
||||
]
|
||||
MAP.spawn_data_loop = [
|
||||
{'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, I1, J1, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, J4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, J5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, J6, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['Kongo', 'Yamashiro']
|
||||
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
|
||||
# ===== End of generated config =====
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
|
||||
def battle_0(self):
|
||||
if self.clear_siren():
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_4(self):
|
||||
return self.clear_boss()
|
104
campaign/war_archives_20201229_cn/b1.py
Normal file
104
campaign/war_archives_20201229_cn/b1.py
Normal file
@ -0,0 +1,104 @@
|
||||
from ..campaign_war_archives.campaign_base import CampaignBase
|
||||
from module.logger import logger
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import RoadGrids, SelectedGrids
|
||||
|
||||
MAP = CampaignMap('B1')
|
||||
MAP.shape = 'I8'
|
||||
MAP.camera_data = ['D2', 'D6', 'F2', 'F6']
|
||||
MAP.camera_data_spawn_point = ['D6']
|
||||
MAP.map_data = """
|
||||
-- -- ++ -- -- ME ++ ++ ++
|
||||
-- ++ ++ Me -- -- ME -- --
|
||||
++ ++ ++ -- ++ -- -- -- MB
|
||||
-- Me -- Me -- -- ME -- --
|
||||
-- -- MS -- __ MS ++ ++ ME
|
||||
++ ++ ++ -- -- -- ++ ME --
|
||||
++ -- SP -- MS -- -- -- ME
|
||||
++ -- SP -- ++ ME -- ME --
|
||||
"""
|
||||
MAP.weight_data = """
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 4, 'siren': 1},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 1, 'boss': 1},
|
||||
{'battle': 5, 'enemy': 1},
|
||||
]
|
||||
MAP.spawn_data_loop = [
|
||||
{'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, I1, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, \
|
||||
A7, B7, C7, D7, E7, F7, G7, H7, I7, \
|
||||
A8, B8, C8, D8, E8, F8, G8, H8, I8, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config:
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['Z24', 'Nuremberg', 'Carabiniere']
|
||||
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
|
||||
# ===== End of generated config =====
|
||||
|
||||
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (150, 255 - 17),
|
||||
'width': (0.9, 10),
|
||||
'prominence': 10,
|
||||
'distance': 35,
|
||||
}
|
||||
EDGE_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (255 - 17, 255),
|
||||
'prominence': 10,
|
||||
'distance': 50,
|
||||
'wlen': 1000
|
||||
}
|
||||
HOMO_EDGE_COLOR_RANGE = (0, 17)
|
||||
MAP_SWIPE_MULTIPLY = (1.021, 1.041)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (0.988, 1.006)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (0.959, 0.976)
|
||||
MAP_ENEMY_GENRE_DETECTION_SCALING = {
|
||||
'DD': 1.111,
|
||||
'CL': 1.111,
|
||||
'CA': 1.111,
|
||||
'CV': 1.111,
|
||||
'BB': 1.111,
|
||||
}
|
||||
HOMO_EDGE_HOUGHLINES_THRESHOLD = 180
|
||||
MAP_ENSURE_EDGE_INSIGHT_CORNER = 'bottom'
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
|
||||
def battle_0(self):
|
||||
if self.clear_siren():
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_4(self):
|
||||
return self.clear_boss()
|
82
campaign/war_archives_20201229_cn/b2.py
Normal file
82
campaign/war_archives_20201229_cn/b2.py
Normal file
@ -0,0 +1,82 @@
|
||||
from ..campaign_war_archives.campaign_base import CampaignBase
|
||||
from module.logger import logger
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import RoadGrids, SelectedGrids
|
||||
|
||||
from .b1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('B2')
|
||||
MAP.shape = 'K7'
|
||||
MAP.camera_data = ['D3', 'D5', 'H3', 'H5']
|
||||
MAP.camera_data_spawn_point = ['D2']
|
||||
MAP.map_data = """
|
||||
-- ++ -- ++ ++ ++ MB MB ++ ++ ++
|
||||
-- -- -- ++ -- ME -- -- -- ME ++
|
||||
SP -- SP ++ ME -- ++ ME -- ME ++
|
||||
-- -- -- -- -- __ -- ++ -- -- --
|
||||
++ -- ++ ++ ME -- ME -- -- Me Me
|
||||
MS -- MS ++ -- -- -- -- Me ++ ++
|
||||
-- MS -- 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
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 4, 'siren': 1},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 1},
|
||||
{'battle': 5, 'enemy': 1, 'boss': 1},
|
||||
]
|
||||
MAP.spawn_data_loop = [
|
||||
{'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, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, K2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, K3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, J4, K4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, J5, K5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, J6, K6, \
|
||||
A7, B7, C7, D7, E7, F7, G7, H7, I7, J7, K7, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['Z24', 'Carabiniere', 'Kongo', 'Yamashiro']
|
||||
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
|
||||
# ===== End of generated config =====
|
||||
|
||||
MAP_SWIPE_MULTIPLY = (1.167, 1.189)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.128, 1.149)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.095, 1.115)
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
|
||||
def battle_0(self):
|
||||
if self.clear_siren():
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_5(self):
|
||||
return self.fleet_boss.clear_boss()
|
94
campaign/war_archives_20201229_cn/b3.py
Normal file
94
campaign/war_archives_20201229_cn/b3.py
Normal file
@ -0,0 +1,94 @@
|
||||
from ..campaign_war_archives.campaign_base import CampaignBase
|
||||
from module.logger import logger
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import RoadGrids, SelectedGrids
|
||||
|
||||
from .b1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('B3')
|
||||
MAP.shape = 'J10'
|
||||
MAP.camera_data = ['D2', 'D6', 'D8', 'G2', 'G6', 'G8']
|
||||
MAP.camera_data_spawn_point = ['D8', 'G8']
|
||||
MAP.map_data = """
|
||||
++ -- -- ME -- -- ME -- -- ++
|
||||
-- -- ++ -- MB MB -- ++ -- --
|
||||
++ -- -- ME -- -- ME -- -- ++
|
||||
-- ++ ++ ME -- -- ME ++ ++ --
|
||||
++ ++ MS -- __ __ -- MS ++ ++
|
||||
++ ME -- -- ++ ++ -- -- ME ++
|
||||
-- ME -- Me ++ ++ Me -- ME --
|
||||
++ ++ -- -- Me Me -- -- ++ ++
|
||||
-- ++ MS -- -- -- -- 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 10 10 10 10 50 50 50
|
||||
50 50 50 10 90 90 10 50 50 50
|
||||
50 50 50 10 90 90 10 50 50 50
|
||||
50 50 50 10 10 10 10 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': 4, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 1},
|
||||
{'battle': 5, 'enemy': 1, 'boss': 1},
|
||||
]
|
||||
MAP.spawn_data_loop = [
|
||||
{'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, J1, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, J4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, J5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, J6, \
|
||||
A7, B7, C7, D7, E7, F7, G7, H7, I7, J7, \
|
||||
A8, B8, C8, D8, E8, F8, G8, H8, I8, J8, \
|
||||
A9, B9, C9, D9, E9, F9, G9, H9, I9, J9, \
|
||||
A10, B10, C10, D10, E10, F10, G10, H10, I10, J10, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['DD', 'CL', 'Intruder']
|
||||
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
|
||||
# ===== End of generated config =====
|
||||
|
||||
MAP_SWIPE_MULTIPLY = (0.946, 0.963)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (0.914, 0.931)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (0.888, 0.904)
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
|
||||
def battle_0(self):
|
||||
if self.fleet_2_protect():
|
||||
return True
|
||||
|
||||
if self.clear_siren():
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_5(self):
|
||||
return self.fleet_boss.clear_boss()
|
103
campaign/war_archives_20201229_cn/c1.py
Normal file
103
campaign/war_archives_20201229_cn/c1.py
Normal file
@ -0,0 +1,103 @@
|
||||
from ..campaign_war_archives.campaign_base import CampaignBase
|
||||
from module.logger import logger
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import RoadGrids, SelectedGrids
|
||||
|
||||
MAP = CampaignMap('C1')
|
||||
MAP.shape = 'I7'
|
||||
MAP.camera_data = ['D2', 'D4', 'F2', 'F4']
|
||||
MAP.camera_data_spawn_point = ['D2', 'D5']
|
||||
MAP.map_data = """
|
||||
++ -- MS -- ME -- -- ++ ++
|
||||
SP -- -- ++ ME -- Me ++ ++
|
||||
-- -- -- -- __ -- -- Me --
|
||||
SP -- -- MS -- ME -- -- --
|
||||
++ ++ -- ++ ++ ++ -- ++ ++
|
||||
++ ME -- ME MB ME -- ME ++
|
||||
-- -- -- -- -- -- -- -- --
|
||||
"""
|
||||
MAP.weight_data = """
|
||||
50 50 50 50 50 50 10 90 90
|
||||
50 50 50 50 50 50 10 90 90
|
||||
50 50 50 50 50 50 10 10 10
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 3, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 1, 'boss': 1},
|
||||
]
|
||||
MAP.spawn_data_loop = [
|
||||
{'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, I1, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, \
|
||||
A7, B7, C7, D7, E7, F7, G7, H7, I7, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config:
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['CL', 'CA']
|
||||
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
|
||||
# ===== End of generated config =====
|
||||
|
||||
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (150, 255 - 17),
|
||||
'width': (0.9, 10),
|
||||
'prominence': 10,
|
||||
'distance': 35,
|
||||
}
|
||||
EDGE_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (255 - 17, 255),
|
||||
'prominence': 10,
|
||||
'distance': 50,
|
||||
'wlen': 1000
|
||||
}
|
||||
HOMO_EDGE_COLOR_RANGE = (0, 17)
|
||||
HOMO_EDGE_HOUGHLINES_THRESHOLD = 180
|
||||
MAP_SWIPE_MULTIPLY = (1.196, 1.218)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.156, 1.178)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.122, 1.143)
|
||||
MAP_ENEMY_GENRE_DETECTION_SCALING = {
|
||||
'DD': 1.111,
|
||||
'CL': 1.111,
|
||||
'CA': 1.111,
|
||||
'CV': 1.111,
|
||||
'BB': 1.111,
|
||||
}
|
||||
MAP_ENSURE_EDGE_INSIGHT_CORNER = 'bottom'
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
|
||||
def battle_0(self):
|
||||
if self.fleet_2_protect():
|
||||
return True
|
||||
|
||||
if self.clear_siren():
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_4(self):
|
||||
return self.clear_boss()
|
76
campaign/war_archives_20201229_cn/c2.py
Normal file
76
campaign/war_archives_20201229_cn/c2.py
Normal file
@ -0,0 +1,76 @@
|
||||
from ..campaign_war_archives.campaign_base import CampaignBase
|
||||
from module.logger import logger
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import RoadGrids, SelectedGrids
|
||||
|
||||
from .c1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('C2')
|
||||
MAP.shape = 'J6'
|
||||
MAP.camera_data = ['D2', 'D4', 'G2', 'G4']
|
||||
MAP.camera_data_spawn_point = ['D2']
|
||||
MAP.map_data = """
|
||||
++ SP -- SP -- -- ++ -- ++ ++
|
||||
++ -- -- -- -- -- -- ME -- ++
|
||||
ME -- MS ++ -- MS -- -- ME --
|
||||
ME -- -- -- -- ++ 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 10 10 10 10 50 50 50 50 50
|
||||
50 10 90 90 10 50 50 50 50 50
|
||||
50 10 90 90 10 50 50 50 50 50
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 3, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 1, 'boss': 1},
|
||||
]
|
||||
MAP.spawn_data_loop = [
|
||||
{'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, I1, J1, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, J4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, J5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, J6, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['Dorsetshire', 'Rodney', 'ArkRoyal']
|
||||
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
|
||||
# ===== End of generated config =====
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
|
||||
def battle_0(self):
|
||||
if self.fleet_2_protect():
|
||||
return True
|
||||
|
||||
if self.clear_siren():
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_4(self):
|
||||
return self.clear_boss()
|
78
campaign/war_archives_20201229_cn/c3.py
Normal file
78
campaign/war_archives_20201229_cn/c3.py
Normal file
@ -0,0 +1,78 @@
|
||||
from ..campaign_war_archives.campaign_base import CampaignBase
|
||||
from module.logger import logger
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import RoadGrids, SelectedGrids
|
||||
|
||||
from .c1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('C3')
|
||||
MAP.shape = 'J6'
|
||||
MAP.camera_data = ['D2', 'D4', 'G2', 'G4']
|
||||
MAP.camera_data_spawn_point = ['D4']
|
||||
MAP.map_data = """
|
||||
-- -- ME -- ++ ++ -- ++ ++ ++
|
||||
-- ++ -- Me ++ ++ Me -- ME ME
|
||||
++ MS -- -- MB MB -- -- -- --
|
||||
++ -- -- -- -- -- __ ++ ++ ME
|
||||
SP -- -- MS ME ME -- ME ++ --
|
||||
-- SP -- ++ ++ ++ -- -- ME --
|
||||
"""
|
||||
MAP.weight_data = """
|
||||
50 50 50 10 90 90 10 50 50 50
|
||||
50 50 50 10 90 90 10 50 50 50
|
||||
50 50 50 10 10 10 10 50 50 50
|
||||
50 50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50 50
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 3, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 1},
|
||||
{'battle': 5, 'boss': 1},
|
||||
]
|
||||
MAP.spawn_data_loop = [
|
||||
{'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, I1, J1, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, J4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, J5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, J6, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['Kongo', 'Yamashiro', 'Shokaku', 'Zuikaku']
|
||||
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
|
||||
# ===== End of generated config =====
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
|
||||
def battle_0(self):
|
||||
if self.fleet_2_protect():
|
||||
return True
|
||||
|
||||
if self.clear_siren():
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_5(self):
|
||||
return self.fleet_boss.clear_boss()
|
119
campaign/war_archives_20201229_cn/d1.py
Normal file
119
campaign/war_archives_20201229_cn/d1.py
Normal file
@ -0,0 +1,119 @@
|
||||
from ..campaign_war_archives.campaign_base import CampaignBase
|
||||
from module.logger import logger
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import RoadGrids, SelectedGrids
|
||||
|
||||
MAP = CampaignMap('D1')
|
||||
MAP.shape = 'I8'
|
||||
MAP.camera_data = ['D3', 'D6', 'F3', 'F6']
|
||||
MAP.camera_data_spawn_point = ['D6']
|
||||
MAP.map_data = """
|
||||
-- -- ++ -- -- ME ++ ++ ++
|
||||
-- ++ ++ Me -- -- ME -- --
|
||||
++ ++ ++ -- ++ -- -- -- MB
|
||||
-- Me -- Me -- -- ME -- --
|
||||
-- -- MS -- __ MS ++ ++ ME
|
||||
++ ++ ++ -- -- -- ++ ME --
|
||||
++ -- SP -- MS -- -- -- ME
|
||||
++ -- SP -- ++ ME -- ME --
|
||||
"""
|
||||
MAP.weight_data = """
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 50 50 50
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 4, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 1},
|
||||
{'battle': 5, 'enemy': 1, 'boss': 1},
|
||||
]
|
||||
MAP.spawn_data_loop = [
|
||||
{'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, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config:
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['Z24', 'Nuremberg', 'Carabiniere']
|
||||
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
|
||||
# ===== End of generated config =====
|
||||
|
||||
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (150, 255 - 17),
|
||||
'width': (0.9, 10),
|
||||
'prominence': 10,
|
||||
'distance': 35,
|
||||
}
|
||||
EDGE_LINES_FIND_PEAKS_PARAMETERS = {
|
||||
'height': (255 - 17, 255),
|
||||
'prominence': 10,
|
||||
'distance': 50,
|
||||
'wlen': 1000
|
||||
}
|
||||
HOMO_EDGE_COLOR_RANGE = (0, 17)
|
||||
INTERNAL_LINES_HOUGHLINES_THRESHOLD = 40
|
||||
EDGE_LINES_HOUGHLINES_THRESHOLD = 40
|
||||
COINCIDENT_POINT_ENCOURAGE_DISTANCE = 1.5
|
||||
HOMO_EDGE_HOUGHLINES_THRESHOLD = 180
|
||||
MAP_ENEMY_GENRE_DETECTION_SCALING = {
|
||||
'DD': 1.111,
|
||||
'CL': 1.111,
|
||||
'CA': 1.111,
|
||||
'CV': 1.111,
|
||||
'BB': 1.111,
|
||||
}
|
||||
MAP_SWIPE_MULTIPLY = (1.033, 1.053)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (0.999, 1.018)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (0.970, 0.988)
|
||||
MAP_ENEMY_TEMPLATE = ['LightInvertedOrthant', 'MainInvertedOrthant', 'CarrierInvertedOrthant']
|
||||
MAP_ENSURE_EDGE_INSIGHT_CORNER = 'bottom'
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
|
||||
def battle_0(self):
|
||||
if self.clear_siren():
|
||||
return True
|
||||
if self.clear_enemy(scale=(1,)):
|
||||
return True
|
||||
if self.clear_enemy(scale=(2,), genre=['LightInvertedOrthant', 'MainInvertedOrthant']):
|
||||
return True
|
||||
if self.clear_enemy(scale=(3,), genre=['LightInvertedOrthant', 'MainInvertedOrthant']):
|
||||
return True
|
||||
if self.clear_enemy(scale=(2,), genre=['Enemy', 'CarrierInvertedOrthant']):
|
||||
return True
|
||||
if self.clear_enemy(scale=(3,), genre=['Enemy', 'CarrierInvertedOrthant']):
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_5(self):
|
||||
return self.fleet_boss.clear_boss()
|
84
campaign/war_archives_20201229_cn/d2.py
Normal file
84
campaign/war_archives_20201229_cn/d2.py
Normal file
@ -0,0 +1,84 @@
|
||||
from ..campaign_war_archives.campaign_base import CampaignBase
|
||||
from module.logger import logger
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import RoadGrids, SelectedGrids
|
||||
|
||||
from .d1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('D2')
|
||||
MAP.shape = 'K7'
|
||||
MAP.camera_data = ['D3', 'D5', 'H3', 'H5']
|
||||
MAP.camera_data_spawn_point = ['D2']
|
||||
MAP.map_data = """
|
||||
-- ++ -- ++ ++ ++ MB MB ++ ++ ++
|
||||
-- -- -- ++ -- ME -- -- -- ME ++
|
||||
SP -- SP ++ ME -- ++ ME -- ME ++
|
||||
-- -- -- -- -- __ -- ++ -- -- --
|
||||
++ -- ++ ++ ME -- ME -- -- Me Me
|
||||
MS -- MS ++ -- -- -- -- Me ++ ++
|
||||
-- MS -- 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
|
||||
"""
|
||||
MAP.spawn_data = [
|
||||
{'battle': 0, 'enemy': 4, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 1, 'siren': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 1},
|
||||
{'battle': 5, 'enemy': 1},
|
||||
{'battle': 6, 'boss': 1},
|
||||
]
|
||||
MAP.spawn_data_loop = [
|
||||
{'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, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, K2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, K3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, J4, K4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, J5, K5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, J6, K6, \
|
||||
A7, B7, C7, D7, E7, F7, G7, H7, I7, J7, K7, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['Z24', 'Carabiniere', 'Kongo', 'Yamashiro']
|
||||
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
|
||||
# ===== End of generated config =====
|
||||
|
||||
MAP_SWIPE_MULTIPLY = (1.167, 1.189)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (1.128, 1.149)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (1.095, 1.115)
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
|
||||
def battle_0(self):
|
||||
if self.clear_siren():
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_6(self):
|
||||
return self.fleet_boss.clear_boss()
|
128
campaign/war_archives_20201229_cn/d3.py
Normal file
128
campaign/war_archives_20201229_cn/d3.py
Normal file
@ -0,0 +1,128 @@
|
||||
from ..campaign_war_archives.campaign_base import CampaignBase
|
||||
from module.logger import logger
|
||||
from module.map.map_base import CampaignMap
|
||||
from module.map.map_grids import RoadGrids, SelectedGrids
|
||||
|
||||
from .d1 import Config as ConfigBase
|
||||
|
||||
MAP = CampaignMap('D3')
|
||||
MAP.shape = 'J10'
|
||||
MAP.camera_data = ['D2', 'D6', 'D8', 'G2', 'G6', 'G8']
|
||||
MAP.camera_data_spawn_point = ['D8', 'G8']
|
||||
MAP.map_data = """
|
||||
++ -- -- ME -- -- ME -- -- ++
|
||||
-- -- ++ -- MB MB -- ++ -- --
|
||||
++ -- -- ME -- -- ME -- -- ++
|
||||
-- ++ ++ ME -- -- ME ++ ++ --
|
||||
++ ++ MS -- __ __ -- MS ++ ++
|
||||
++ ME -- -- ++ ++ -- -- ME ++
|
||||
-- ME -- Me ++ ++ Me -- ME --
|
||||
++ ++ -- -- Me Me -- -- ++ ++
|
||||
-- ++ MS -- -- -- -- 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 50 50 50 50 50 50
|
||||
50 50 50 50 50 50 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': 4, 'siren': 2},
|
||||
{'battle': 1, 'enemy': 1},
|
||||
{'battle': 2, 'enemy': 1, 'siren': 1},
|
||||
{'battle': 3, 'enemy': 1},
|
||||
{'battle': 4, 'enemy': 1},
|
||||
{'battle': 5, 'enemy': 1},
|
||||
{'battle': 6, 'boss': 1},
|
||||
]
|
||||
MAP.spawn_data_loop = [
|
||||
{'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, \
|
||||
A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, \
|
||||
A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, \
|
||||
A4, B4, C4, D4, E4, F4, G4, H4, I4, J4, \
|
||||
A5, B5, C5, D5, E5, F5, G5, H5, I5, J5, \
|
||||
A6, B6, C6, D6, E6, F6, G6, H6, I6, J6, \
|
||||
A7, B7, C7, D7, E7, F7, G7, H7, I7, J7, \
|
||||
A8, B8, C8, D8, E8, F8, G8, H8, I8, J8, \
|
||||
A9, B9, C9, D9, E9, F9, G9, H9, I9, J9, \
|
||||
A10, B10, C10, D10, E10, F10, G10, H10, I10, J10, \
|
||||
= MAP.flatten()
|
||||
|
||||
|
||||
class Config(ConfigBase):
|
||||
# ===== Start of generated config =====
|
||||
MAP_SIREN_TEMPLATE = ['BBpurple', 'CVpurple', 'Intruder']
|
||||
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
|
||||
# ===== End of generated config =====
|
||||
|
||||
MAP_SWIPE_MULTIPLY = (0.946, 0.963)
|
||||
MAP_SWIPE_MULTIPLY_MINITOUCH = (0.914, 0.931)
|
||||
MAP_SWIPE_MULTIPLY_MAATOUCH = (0.888, 0.904)
|
||||
MAP_ENEMY_GENRE_DETECTION_SCALING = {
|
||||
'BBpurple': 1.111,
|
||||
'CVpurple': 1.111,
|
||||
}
|
||||
MAP_ENEMY_TEMPLATE = ['MainPurple', 'CarrierPurple']
|
||||
|
||||
|
||||
class Campaign(CampaignBase):
|
||||
MAP = MAP
|
||||
|
||||
def battle_0(self):
|
||||
if self.fleet_2_protect():
|
||||
return True
|
||||
|
||||
if self.clear_siren():
|
||||
return True
|
||||
if self.clear_enemy(scale=(2,), genre=['LightInvertedOrthant', 'MainInvertedOrthant']):
|
||||
return True
|
||||
if self.clear_enemy(scale=(3,), genre=['LightInvertedOrthant', 'MainInvertedOrthant']):
|
||||
return True
|
||||
if self.clear_enemy(scale=(2,), genre=['Enemy', 'CarrierInvertedOrthant']):
|
||||
return True
|
||||
if self.clear_enemy(scale=(3,), genre=['Enemy', 'CarrierInvertedOrthant']):
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_5(self):
|
||||
if self.fleet_2_protect():
|
||||
return True
|
||||
|
||||
if self.clear_siren():
|
||||
return True
|
||||
if self.clear_enemy(scale=(1,)):
|
||||
return True
|
||||
if self.clear_enemy(scale=(2,), genre=['LightInvertedOrthant', 'MainInvertedOrthant']):
|
||||
return True
|
||||
if self.clear_enemy(scale=(3,), genre=['LightInvertedOrthant', 'MainInvertedOrthant']):
|
||||
return True
|
||||
if self.clear_enemy(scale=(2,), genre=['Enemy', 'CarrierInvertedOrthant']):
|
||||
return True
|
||||
if self.clear_enemy(scale=(3,), genre=['Enemy', 'CarrierInvertedOrthant']):
|
||||
return True
|
||||
|
||||
return self.battle_default()
|
||||
|
||||
def battle_6(self):
|
||||
return self.fleet_boss.clear_boss()
|
@ -3289,6 +3289,7 @@
|
||||
"type": "select",
|
||||
"value": "campaign_main",
|
||||
"option": [
|
||||
"war_archives_20201229_cn",
|
||||
"war_archives_20220414_cn",
|
||||
"war_archives_20220210_cn",
|
||||
"war_archives_20211028_cn",
|
||||
@ -3312,10 +3313,10 @@
|
||||
"war_archives_20191031_en",
|
||||
"war_archives_20181020_en"
|
||||
],
|
||||
"cn": "war_archives_20220414_cn",
|
||||
"en": "war_archives_20220414_cn",
|
||||
"jp": "war_archives_20220414_cn",
|
||||
"tw": "war_archives_20220414_cn"
|
||||
"cn": "war_archives_20201229_cn",
|
||||
"en": "war_archives_20201229_cn",
|
||||
"jp": "war_archives_20201229_cn",
|
||||
"tw": "war_archives_20201229_cn"
|
||||
},
|
||||
"Mode": {
|
||||
"type": "select",
|
||||
|
@ -708,6 +708,7 @@
|
||||
"event_20200423_cn": "Crimson Echoes Rerun",
|
||||
"event_20200326_cn": "Microlayer Medley",
|
||||
"event_20200227_cn": "Northern Overture",
|
||||
"war_archives_20201229_cn": "archives Inverted Orthant",
|
||||
"war_archives_20220414_cn": "archives Aurora Noctis",
|
||||
"war_archives_20220210_cn": "archives Northern Overture",
|
||||
"war_archives_20211028_cn": "archives Skybound Oratorio",
|
||||
|
@ -708,6 +708,7 @@
|
||||
"event_20200423_cn": "縹映る深緋の残響(復刻)",
|
||||
"event_20200326_cn": "闇靄払う銀翼",
|
||||
"event_20200227_cn": "凍絶の北海",
|
||||
"war_archives_20201229_cn": "檔案 虚畳なりし限象",
|
||||
"war_archives_20220414_cn": "檔案 極夜照らす幻光",
|
||||
"war_archives_20220210_cn": "檔案 凍絶の北海",
|
||||
"war_archives_20211028_cn": "檔案 神穹を衝く聖歌",
|
||||
|
@ -708,6 +708,7 @@
|
||||
"event_20200423_cn": "复刻苍红的回响",
|
||||
"event_20200326_cn": "微层混合",
|
||||
"event_20200227_cn": "北境序曲",
|
||||
"war_archives_20201229_cn": "档案 负象限作战",
|
||||
"war_archives_20220414_cn": "档案 永夜幻光",
|
||||
"war_archives_20220210_cn": "档案 北境序曲",
|
||||
"war_archives_20211028_cn": "档案 穹顶下的圣咏曲",
|
||||
|
@ -708,6 +708,7 @@
|
||||
"event_20200423_cn": "Crimson Echoes Rerun",
|
||||
"event_20200326_cn": "Microlayer Medley",
|
||||
"event_20200227_cn": "Northern Overture",
|
||||
"war_archives_20201229_cn": "檔案 負象限作戰",
|
||||
"war_archives_20220414_cn": "檔案 永夜幻光",
|
||||
"war_archives_20220210_cn": "檔案 北境序曲",
|
||||
"war_archives_20211028_cn": "檔案 穹頂下的聖詠曲",
|
||||
|
@ -15,6 +15,7 @@ TEMPLATE_ENCIRCLING_GRAF_SPEE = Template(file={'cn': './assets/cn/war_archives/T
|
||||
TEMPLATE_FALLEN_WINGS = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_FALLEN_WINGS.png', 'en': './assets/en/war_archives/TEMPLATE_FALLEN_WINGS.png', 'jp': './assets/jp/war_archives/TEMPLATE_FALLEN_WINGS.png', 'tw': './assets/tw/war_archives/TEMPLATE_FALLEN_WINGS.png'})
|
||||
TEMPLATE_GLORIOUS_BATTLE = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_GLORIOUS_BATTLE.png', 'en': './assets/en/war_archives/TEMPLATE_GLORIOUS_BATTLE.png', 'jp': './assets/jp/war_archives/TEMPLATE_GLORIOUS_BATTLE.png', 'tw': './assets/tw/war_archives/TEMPLATE_GLORIOUS_BATTLE.png'})
|
||||
TEMPLATE_INK_STAINED_STEEL_SAKURA = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_INK_STAINED_STEEL_SAKURA.png', 'en': './assets/en/war_archives/TEMPLATE_INK_STAINED_STEEL_SAKURA.png', 'jp': './assets/jp/war_archives/TEMPLATE_INK_STAINED_STEEL_SAKURA.png', 'tw': './assets/cn/war_archives/TEMPLATE_INK_STAINED_STEEL_SAKURA.png'})
|
||||
TEMPLATE_INVERTED_ORTHANT = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_INVERTED_ORTHANT.png', 'en': './assets/cn/war_archives/TEMPLATE_INVERTED_ORTHANT.png', 'jp': './assets/cn/war_archives/TEMPLATE_INVERTED_ORTHANT.png', 'tw': './assets/cn/war_archives/TEMPLATE_INVERTED_ORTHANT.png'})
|
||||
TEMPLATE_IRIS_OF_LIGHT_AND_DARK = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_IRIS_OF_LIGHT_AND_DARK.png', 'en': './assets/en/war_archives/TEMPLATE_IRIS_OF_LIGHT_AND_DARK.png', 'jp': './assets/jp/war_archives/TEMPLATE_IRIS_OF_LIGHT_AND_DARK.png', 'tw': './assets/cn/war_archives/TEMPLATE_IRIS_OF_LIGHT_AND_DARK.png'})
|
||||
TEMPLATE_MICROLAYER_MEDLEY = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_MICROLAYER_MEDLEY.png', 'en': './assets/en/war_archives/TEMPLATE_MICROLAYER_MEDLEY.png', 'jp': './assets/cn/war_archives/TEMPLATE_MICROLAYER_MEDLEY.png', 'tw': './assets/cn/war_archives/TEMPLATE_MICROLAYER_MEDLEY.png'})
|
||||
TEMPLATE_NORTHERN_OVERTURE = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_NORTHERN_OVERTURE.png', 'en': './assets/en/war_archives/TEMPLATE_NORTHERN_OVERTURE.png', 'jp': './assets/cn/war_archives/TEMPLATE_NORTHERN_OVERTURE.png', 'tw': './assets/cn/war_archives/TEMPLATE_NORTHERN_OVERTURE.png'})
|
||||
|
@ -23,4 +23,5 @@ dic_archives_template = {
|
||||
'war_archives_20210819_cn': TEMPLATE_MICROLAYER_MEDLEY,
|
||||
'war_archives_20220210_cn': TEMPLATE_NORTHERN_OVERTURE,
|
||||
'war_archives_20220414_cn': TEMPLATE_AURORA_NOCTIS,
|
||||
'war_archives_20201229_cn': TEMPLATE_INVERTED_ORTHANT,
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user