diff --git a/campaign/campaign_main/campaign_5_1.py b/campaign/campaign_main/campaign_5_1.py new file mode 100644 index 000000000..ada07b882 --- /dev/null +++ b/campaign/campaign_main/campaign_5_1.py @@ -0,0 +1,77 @@ +from module.campaign.campaign_base import CampaignBase +from module.map.map_base import CampaignMap +from module.map.map_grids import SelectedGrids, RoadGrids +from module.logger import logger + + +MAP = CampaignMap() +MAP.shape = 'H6' +MAP.camera_data = ['D2', 'D4'] +MAP.map_data = ''' + MB MM ME ++ ++ ++ ++ ++ + SP -- -- -- ME -- -- MB + -- -- ME ME -- -- SP ME + -- ME -- ME -- ME ME MB + SP -- ME -- -- ++ ++ ++ + MB ME -- ME -- MA ++ ++ +''' +MAP.weight_data = ''' + 10 10 50 50 50 50 50 50 + 10 10 10 10 10 10 10 10 + 10 20 20 20 10 10 10 10 + 10 20 20 20 10 50 10 10 + 10 10 10 10 10 50 50 50 + 10 20 20 20 20 50 50 50 +''' +MAP.spawn_data = [ + {'battle': 0, 'enemy': 3, 'mystery': 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, \ + = MAP.flatten() + + +class Config: + FLEET_2 = 0 + SUBMARINE = 0 + MAP_MYSTERY_HAS_CARRIER = True + INTERNAL_LINES_FIND_PEAKS_PARAMETERS = { + 'height': (120, 255 - 40), + 'width': (1.5, 10), + 'prominence': 10, + 'distance': 35, + } + EDGE_LINES_FIND_PEAKS_PARAMETERS = { + 'height': (255 - 40, 255), + 'prominence': 10, + 'distance': 50, + 'wlen': 1000 + } + + +class Campaign(CampaignBase): + MAP = MAP + + def battle_0(self): + self.clear_all_mystery() + + return self.battle_default() + + def battle_4(self): + self.clear_all_mystery() + + boss = self.map.select(is_boss=True) + if boss: + if not self.check_accessibility(boss[0]): + return self.battle_default() + + return self.clear_boss() diff --git a/campaign/campaign_main/campaign_5_2.py b/campaign/campaign_main/campaign_5_2.py new file mode 100644 index 000000000..cd9e34a55 --- /dev/null +++ b/campaign/campaign_main/campaign_5_2.py @@ -0,0 +1,57 @@ +from module.campaign.campaign_base import CampaignBase +from module.map.map_base import CampaignMap +from module.map.map_grids import SelectedGrids, RoadGrids +from module.logger import logger +from campaign.campaign_main.campaign_5_1 import Config + + +MAP = CampaignMap() +MAP.shape = 'H5' +MAP.camera_data = ['D3', 'E3'] +MAP.map_data = ''' + ++ ++ ++ -- MB -- ME SP + SP -- ME -- ++ ++ -- ME + -- ME -- -- MB ++ MB -- + -- -- ME -- ME -- -- ME + ME -- SP ME -- ME ME MM +''' +MAP.weight_data = ''' + 50 50 50 10 10 20 20 30 + 50 50 30 10 10 10 20 30 + 50 30 30 10 10 10 10 30 + 50 50 30 10 10 10 10 20 + 50 50 50 30 30 30 20 20 +''' +MAP.spawn_data = [ + {'battle': 0, 'enemy': 2, 'mystery': 1}, + {'battle': 1, 'enemy': 1}, + {'battle': 2, 'enemy': 2}, + {'battle': 3, 'enemy': 1}, + {'battle': 4, '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, \ + = MAP.flatten() + + +class Campaign(CampaignBase): + MAP = MAP + + def battle_0(self): + self.clear_all_mystery() + + return self.battle_default() + + def battle_4(self): + self.clear_all_mystery() + + boss = self.map.select(is_boss=True) + if boss: + if not self.check_accessibility(boss[0]): + return self.battle_default() + + return self.clear_boss() diff --git a/campaign/campaign_main/campaign_5_3.py b/campaign/campaign_main/campaign_5_3.py new file mode 100644 index 000000000..85599e2c3 --- /dev/null +++ b/campaign/campaign_main/campaign_5_3.py @@ -0,0 +1,57 @@ +from module.campaign.campaign_base import CampaignBase +from module.map.map_base import CampaignMap +from module.map.map_grids import SelectedGrids, RoadGrids +from module.logger import logger +from campaign.campaign_main.campaign_5_1 import Config + + +MAP = CampaignMap() +MAP.shape = 'G5' +MAP.camera_data = ['D3'] +MAP.map_data = ''' + ++ MB ME SP ME MB ME + ++ ME -- ME -- -- -- + ++ ME ++ MM ME -- ME + ++ -- -- ME MB ME -- + SP ME -- -- ME -- SP +''' +MAP.weight_data = ''' + 50 10 20 20 20 10 50 + 50 10 10 10 10 10 50 + 50 50 50 10 10 50 50 + 50 20 20 10 10 50 50 + 50 50 50 50 50 50 50 +''' +MAP.spawn_data = [ + {'battle': 0, 'enemy': 2, 'mystery': 1}, + {'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, \ +A2, B2, C2, D2, E2, F2, G2, \ +A3, B3, C3, D3, E3, F3, G3, \ +A4, B4, C4, D4, E4, F4, G4, \ +A5, B5, C5, D5, E5, F5, G5, \ + = MAP.flatten() + + +class Campaign(CampaignBase): + MAP = MAP + + def battle_0(self): + self.clear_all_mystery() + + return self.battle_default() + + def battle_4(self): + self.clear_all_mystery() + + boss = self.map.select(is_boss=True) + if boss: + if not self.check_accessibility(boss[0]): + return self.battle_default() + + return self.clear_boss() diff --git a/campaign/campaign_main/campaign_5_4.py b/campaign/campaign_main/campaign_5_4.py new file mode 100644 index 000000000..b97e959d4 --- /dev/null +++ b/campaign/campaign_main/campaign_5_4.py @@ -0,0 +1,71 @@ +from module.campaign.campaign_base import CampaignBase +from module.map.map_base import CampaignMap +from module.map.map_grids import SelectedGrids, RoadGrids +from module.logger import logger +from campaign.campaign_main.campaign_5_1 import Config as Config51 + + +MAP = CampaignMap() +MAP.shape = 'H5' +MAP.camera_data = ['D3', 'E3'] +MAP.map_data = ''' + ++ ++ ++ SP MB ME -- MB + SP -- ME -- ME -- ME SP + -- -- -- ++ ++ ME __ ME + ME MB ME MA ++ -- ME -- + ++ ++ ME -- MB ME -- MB +''' +MAP.weight_data = ''' + 50 50 50 50 10 20 30 30 + 50 50 10 10 10 10 30 30 + 50 50 10 10 10 10 30 25 + 50 10 10 10 10 10 30 30 + 50 50 50 10 10 10 30 30 +''' +MAP.spawn_data = [ + {'battle': 0, 'enemy': 3}, + {'battle': 1, 'enemy': 2}, + {'battle': 2, 'enemy': 1}, + {'battle': 3, 'enemy': 2}, + {'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, \ + = MAP.flatten() + + +road_center = RoadGrids([C2, [E2, F1], C4, F5, [F3, G2, H3], [F3, G4, H3]]) +road_ring = RoadGrids([[E2, F1], [F1, G2, H3], [F5, G4, H3], [F3, G2, H3], [F3, G4, H3]]) + + +class Config(Config51): + MAP_MYSTERY_HAS_CARRIER = False + INTERNAL_LINES_HOUGHLINES_THRESHOLD = 40 + EDGE_LINES_HOUGHLINES_THRESHOLD = 40 + + +class Campaign(CampaignBase): + MAP = MAP + + def battle_0(self): + if self.clear_roadblocks([road_center]): + return True + if self.clear_potential_roadblocks([road_ring]): + return True + + return self.battle_default() + + def battle_4(self): + boss = self.map.select(is_boss=True) + if boss: + if not self.check_accessibility(boss[0]): + if self.clear_roadblocks([road_center]): + return True + if self.clear_potential_roadblocks([road_ring]): + return True + + return self.clear_boss()