add war_archive: Inverted orthant (#3089)

新增作战档案:负象限作战
This commit is contained in:
somegituser 2023-09-08 01:14:18 +08:00 committed by GitHub
parent 078c6bb606
commit 17b13f6c6c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 1132 additions and 24 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -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 | バケーションレーン | 假日航線 |

View 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()

View 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()

View 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()

View 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()

View 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()

View 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()

View 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()

View 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()

View 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()

View 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()

View 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()

View 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()

View File

@ -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",

View File

@ -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",

View File

@ -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": "檔案 神穹を衝く聖歌",

View File

@ -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": "档案 穹顶下的圣咏曲",

View File

@ -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": "檔案 穹頂下的聖詠曲",

View File

@ -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'})

View File

@ -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,
}