New EN assets and new maps support

- Added new EN assets
- Added support to maps A1, A2, A3, B1, B2, B3, C1, C2, C3, D1 and D3
This commit is contained in:
kyO The NinjA 2020-05-27 18:51:05 -03:00
parent 0645d5cb3f
commit ba9ae67d63
19 changed files with 551 additions and 17 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,48 @@
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('a1')
MAP.shape = 'I5'
MAP.map_data = '''
SP -- ++ ME -- ME ++ ++ --
-- ME -- -- ME -- ME ++ ME
-- -- MS -- -- -- __ -- --
-- ME -- -- ++ ME -- ME --
SP -- -- ME ++ -- ME -- MB
'''
class Config:
SUBMARINE = 1
FLEET_BOSS = 1
POOR_MAP_DATA = True
MAP_HAS_AMBUSH = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_SIREN = True
MAP_HAS_DYNAMIC_RED_BORDER = True
MAP_SIREN_COUNT = 1
TRUST_EDGE_LINES = True
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
'height': (80, 255 - 40),
'width': (0.9, 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

View File

@ -0,0 +1,49 @@
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('a2')
MAP.shape = 'J6'
MAP.map_data = '''
SP -- ME -- ME -- -- -- ME MB
-- -- -- -- -- -- ++ -- - --
++ ++ ++ ME MS -- ++ __ ME ++
SP -- -- -- ME -- ME -- -- ME
-- -- ME -- -- -- -- ME -- --
++ ME ME -- ++ ME MM -- -- MB
'''
class Config:
SUBMARINE = 1
FLEET_BOSS = 1
POOR_MAP_DATA = True
MAP_HAS_AMBUSH = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_SIREN = True
MAP_HAS_DYNAMIC_RED_BORDER = True
MAP_SIREN_COUNT = 1
TRUST_EDGE_LINES = True
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
'height': (80, 255 - 40),
'width': (0.9, 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

View File

@ -0,0 +1,30 @@
from module.campaign.campaign_base import CampaignBase
from module.map.map_base import CampaignMap
MAP = CampaignMap('a3')
MAP.shape = 'K7'
MAP.map_data = '''
SP ++ ++ ++ ME -- -- -- ME -- MM
-- -- -- -- -- -- ME -- -- -- --
ME -- ++ ME -- -- -- -- ++ ++ --
ME -- -- -- MS ++ __ -- MB ++ --
-- -- ME -- -- -- -- -- -- -- --
-- -- ++ ++ ME ME -- ME ++ ++ ++
SP -- ++ ++ ME -- -- -- -- ME MM
'''
class Config:
SUBMARINE = 1
FLEET_BOSS = 1
POOR_MAP_DATA = True
MAP_HAS_AMBUSH = False
MAP_HAS_FLEET_STEP = False
MAP_HAS_MOVABLE_ENEMY = False
MAP_HAS_SIREN = True
MAP_HAS_DYNAMIC_RED_BORDER = False
MAP_HAS_MAP_STORY = False
MAP_SIREN_COUNT = 1
class Campaign(CampaignBase):
MAP = MAP

View File

@ -0,0 +1,49 @@
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('b1')
MAP.shape = 'H6'
MAP.map_data = '''
++ ++ ++ -- -- -- -- MB
-- -- -- -- __ ME ME --
ME -- ME ++ ++ ME -- --
SP -- ME ++ ++ MS ME --
ME -- -- -- -- -- -- --
SP -- -- ME -- ME -- MB
'''
class Config:
SUBMARINE = 1
FLEET_BOSS = 1
POOR_MAP_DATA = True
MAP_HAS_AMBUSH = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_SIREN = True
MAP_HAS_DYNAMIC_RED_BORDER = True
MAP_SIREN_COUNT = 1
TRUST_EDGE_LINES = True
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
'height': (80, 255 - 40),
'width': (0.9, 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

View File

@ -0,0 +1,50 @@
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('b2')
MAP.shape = 'I7'
MAP.map_data = '''
SP -- -- -- -- -- ME ++ MB
-- ME -- -- ME -- -- ++ --
-- -- ME ++ ++ ++ -- -- --
ME __ -- ME ME ME -- MS --
ME MS -- ++ ++ ++ -- -- --
-- ME -- ME -- -- -- ++ --
SP -- -- -- -- ME -- ++ MB
'''
class Config:
SUBMARINE = 1
FLEET_BOSS = 1
POOR_MAP_DATA = True
MAP_HAS_AMBUSH = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_SIREN = True
MAP_HAS_DYNAMIC_RED_BORDER = True
MAP_SIREN_COUNT = 2
TRUST_EDGE_LINES = True
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
'height': (80, 255 - 40),
'width': (0.9, 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

View File

@ -0,0 +1,52 @@
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('b3')
MAP.shape = 'I9'
MAP.map_data = '''
SP -- ++ ++ -- -- -- ME --
-- ME ++ ++ -- ME -- -- --
-- -- -- -- -- -- ME ME --
ME -- ME ME -- ME ++ ++ ++
-- -- ++ __ -- -- -- MB ++
-- ME ++ -- -- ME ++ ++ ++
-- -- MS -- ++ ME -- ME --
SP -- -- -- ++ -- -- ME --
SP -- MS -- -- ME -- -- --
'''
class Config:
SUBMARINE = 1
FLEET_BOSS = 1
POOR_MAP_DATA = True
MAP_HAS_AMBUSH = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_SIREN = True
MAP_HAS_DYNAMIC_RED_BORDER = True
MAP_SIREN_COUNT = 2
TRUST_EDGE_LINES = True
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
'height': (80, 255 - 40),
'width': (0.9, 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

View File

@ -0,0 +1,48 @@
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('c1')
MAP.shape = 'I5'
MAP.map_data = '''
SP -- ++ ME -- ME ++ -- --
-- ME -- -- ME -- ME ++ ME
-- -- MS -- -- MS __ -- --
-- ME -- -- ++ ME -- ME --
SP -- -- ME ++ -- ME -- MB
'''
class Config:
SUBMARINE = 1
FLEET_BOSS = 1
POOR_MAP_DATA = True
MAP_HAS_AMBUSH = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_SIREN = True
MAP_HAS_DYNAMIC_RED_BORDER = True
MAP_SIREN_COUNT = 2
TRUST_EDGE_LINES = True
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
'height': (80, 255 - 40),
'width': (0.9, 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

View File

@ -0,0 +1,49 @@
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('c2')
MAP.shape = 'J6'
MAP.map_data = '''
SP -- ME MS ME -- -- -- ME MB
-- -- -- -- -- -- ++ -- - --
++ ++ ++ ME MS -- ++ __ ME ++
SP -- -- -- ME -- ME -- -- ME
-- -- ME -- -- -- -- ME -- --
++ ME ME -- ++ ME MM -- -- MB
'''
class Config:
SUBMARINE = 1
FLEET_BOSS = 1
POOR_MAP_DATA = True
MAP_HAS_AMBUSH = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_SIREN = True
MAP_HAS_DYNAMIC_RED_BORDER = True
MAP_SIREN_COUNT = 2
TRUST_EDGE_LINES = True
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
'height': (80, 255 - 40),
'width': (0.9, 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

View File

@ -0,0 +1,50 @@
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('c3')
MAP.shape = 'K7'
MAP.map_data = '''
SP ++ ++ ++ ME -- -- MS ME -- MM
-- -- -- -- -- -- ME -- -- -- --
ME -- ++ ME -- -- -- -- ++ ++ --
ME -- -- -- MS ++ __ -- MB ++ --
-- -- ME -- -- -- -- -- -- -- --
-- -- ++ ++ ME ME -- ME ++ ++ ++
SP -- ++ ++ ME -- -- -- -- ME MM
'''
class Config:
SUBMARINE = 1
FLEET_BOSS = 1
POOR_MAP_DATA = True
MAP_HAS_AMBUSH = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_SIREN = True
MAP_HAS_DYNAMIC_RED_BORDER = True
MAP_SIREN_COUNT = 2
TRUST_EDGE_LINES = True
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
'height': (80, 255 - 40),
'width': (0.9, 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

View File

@ -0,0 +1,49 @@
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('d1')
MAP.shape = 'H6'
MAP.map_data = '''
++ ++ ++ -- -- -- -- MB
MS -- -- -- __ ME ME --
ME -- ME ++ ++ MS -- --
SP -- ME ++ ++ MS ME --
ME -- -- -- -- -- -- --
SP -- -- ME MS ME -- MB
'''
class Config:
SUBMARINE = 1
FLEET_BOSS = 2
POOR_MAP_DATA = True
MAP_HAS_AMBUSH = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_SIREN = True
MAP_HAS_DYNAMIC_RED_BORDER = True
MAP_SIREN_COUNT = 4
TRUST_EDGE_LINES = True
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
'height': (80, 255 - 40),
'width': (0.9, 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

View File

@ -23,18 +23,26 @@ MAP.weight_data = """
40 30 40 30 40 40 40 40 40
40 40 40 40 40 30 40 40 20
"""
MAP.spawn_data = [
{'battle': 0, 'enemy': 2, 'siren': 3},
{'battle': 1, 'enemy': 1},
{'battle': 2, 'enemy': 2, 'siren': 2},
{'battle': 3, 'enemy': 1},
{'battle': 4, 'enemy': 2, 'siren': 1},
{'battle': 5, 'enemy': 1},
{'battle': 6, 'boss': 1},
]
class Config:
CAMPAIGN_MODE = 'hard'
SUBMARINE = 1
FLEET_BOSS = 2
POOR_MAP_DATA = False
POOR_MAP_DATA = True
MAP_HAS_AMBUSH = False
MAP_HAS_FLEET_STEP = False
MAP_HAS_MOVABLE_ENEMY = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_SIREN = True
MAP_HAS_DYNAMIC_RED_BORDER = False
MAP_HAS_MAP_STORY = False
MAP_HAS_DYNAMIC_RED_BORDER = True
MAP_SIREN_COUNT = 3
class Campaign(CampaignBase):

View File

@ -0,0 +1,52 @@
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('d3')
MAP.shape = 'I9'
MAP.map_data = '''
SP -- ++ ++ -- MS -- ME --
-- ME ++ ++ -- ME -- -- --
-- -- -- -- -- -- ME ME --
ME -- ME ME -- ME ++ ++ ++
-- -- ++ __ -- -- -- MB ++
-- ME ++ -- -- ME ++ ++ ++
-- -- MS -- ++ ME -- ME --
SP -- -- -- ++ -- -- ME --
SP -- MS -- -- ME -- -- --
'''
class Config:
SUBMARINE = 1
FLEET_BOSS = 2
POOR_MAP_DATA = True
MAP_HAS_AMBUSH = False
MAP_HAS_FLEET_STEP = True
MAP_HAS_MOVABLE_ENEMY = True
MAP_HAS_SIREN = True
MAP_HAS_DYNAMIC_RED_BORDER = True
MAP_SIREN_COUNT = 3
TRUST_EDGE_LINES = True
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
'height': (80, 255 - 40),
'width': (0.9, 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

View File

@ -20,7 +20,7 @@ EMERGENCY_REPAIR_CONFIRM = Button(area={'cn': (669, 418, 842, 475), 'en': (669,
EXP_INFO_A = Button(area={'cn': (389, 100, 444, 116), 'en': (389, 100, 444, 116)}, color={'cn': (236, 231, 116), 'en': (236, 231, 116)}, button={'cn': (1000, 631, 1055, 689), 'en': (999, 630, 1047, 691)}, file={'cn': './assets/cn/combat/EXP_INFO_A.png', 'en': './assets/en/combat/EXP_INFO_A.png'})
EXP_INFO_S = Button(area={'cn': (396, 122, 457, 137), 'en': (396, 122, 457, 137)}, color={'cn': (233, 241, 127), 'en': (233, 241, 127)}, button={'cn': (1000, 631, 1055, 689), 'en': (999, 630, 1047, 691)}, file={'cn': './assets/cn/combat/EXP_INFO_S.png', 'en': './assets/en/combat/EXP_INFO_S.png'})
GET_ITEMS_1 = Button(area={'cn': (538, 217, 741, 253), 'en': (550, 215, 739, 246)}, color={'cn': (160, 192, 248), 'en': (157, 187, 233)}, button={'cn': (1000, 631, 1055, 689), 'en': (999, 630, 1047, 691)}, file={'cn': './assets/cn/combat/GET_ITEMS_1.png', 'en': './assets/en/combat/GET_ITEMS_1.png'})
GET_ITEMS_2 = Button(area={'cn': (538, 146, 742, 182), 'en': (538, 146, 742, 182)}, color={'cn': (160, 192, 248), 'en': (160, 192, 248)}, button={'cn': (1000, 631, 1055, 689), 'en': (999, 630, 1047, 691)}, file={'cn': './assets/cn/combat/GET_ITEMS_2.png', 'en': './assets/en/combat/GET_ITEMS_2.png'})
GET_ITEMS_2 = Button(area={'cn': (538, 146, 742, 182), 'en': (549, 140, 740, 176)}, color={'cn': (160, 192, 248), 'en': (152, 185, 236)}, button={'cn': (1000, 631, 1055, 689), 'en': (999, 630, 1047, 691)}, file={'cn': './assets/cn/combat/GET_ITEMS_2.png', 'en': './assets/en/combat/GET_ITEMS_2.png'})
GET_SHIP = Button(area={'cn': (1104, 610, 1110, 630), 'en': (1104, 610, 1110, 630)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255)}, button={'cn': (1000, 631, 1055, 689), 'en': (999, 630, 1047, 691)}, file={'cn': './assets/cn/combat/GET_SHIP.png', 'en': './assets/en/combat/GET_SHIP.png'})
LOADING_BAR = Button(area={'cn': (33, 676, 1247, 680), 'en': (33, 676, 1247, 680)}, color={'cn': (172, 205, 232), 'en': (172, 205, 232)}, button={'cn': (33, 676, 1247, 680), 'en': (33, 676, 1247, 680)}, file={'cn': './assets/cn/combat/LOADING_BAR.png', 'en': './assets/en/combat/LOADING_BAR.png'})
MOVE_DOWN = Button(area={'cn': (148, 647, 155, 669), 'en': (148, 647, 155, 669)}, color={'cn': (21, 28, 57), 'en': (21, 28, 57)}, button={'cn': (148, 647, 155, 669), 'en': (148, 647, 155, 669)}, file={'cn': './assets/cn/combat/MOVE_DOWN.png', 'en': './assets/en/combat/MOVE_DOWN.png'})

View File

@ -331,7 +331,7 @@ def main(ini_name=''):
"""
event = event_parser.add_argument_group(
'Choose a level', '\n'.join([line.strip() for line in description.strip().split('\n')]))
event.add_argument('--event_stagesp_stage', default=default('--event_stagesp_stage'),
event.add_argument('--event_stage', default=default('--event_stage'),
choices=['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3', 'd1', 'd2', 'd3'],
help='E.g d3')
event.add_argument('--sp_stage', default=default('--sp_stage'),
@ -346,17 +346,17 @@ def main(ini_name=''):
semi.add_argument('--enable_semi_story_skip', default=default('--enable_semi_story_skip'), help='Note that this will automatically confirm all the prompt boxes, including the red face attack', choices=['yes', 'no'])
# ==========c72_mystery_farming==========
c_7_2_parser = subs.add_parser('c72_mystery_farming')
c_7_2_parser = subs.add_parser('c7-2_mystery_farming')
c_7_2 = c_7_2_parser.add_argument_group('c72_mystery_farming', '')
c_7_2.add_argument('--boss_fleet_step_on_a3', default=default('--boss_fleet_step_on_a3'), choices=['yes', 'no'], help='A3 has enemies, G3, C3, E3')
# ==========c122_leveling==========
c_12_2_parser = subs.add_parser('c122_leveling')
c_12_2_parser = subs.add_parser('c12-2_leveling')
c_12_2 = c_12_2_parser.add_argument_group('12-2 enemy search settings', '')
c_12_2.add_argument('--s3_enemy_tolerance', default=default('--s3_enemy_tolerance'), choices=['0', '1', '2', '10'], help='The maximum number of battles to fight against large enemies')
# ==========c124_leveling==========
c_12_4_parser = subs.add_parser('c124_leveling')
c_12_4_parser = subs.add_parser('c12-4_leveling')
c_12_4 = c_12_4_parser.add_argument_group('12-4 Search enemy settings', 'Need to ensure that the team has a certain strength')
c_12_4.add_argument('--non_s3_enemy_enter_tolerance', default=default('--non_s3_enemy_enter_tolerance'), choices=['0', '1', '2'], help='Endure how many battles to enter without big')
c_12_4.add_argument('--non_s3_enemy_withdraw_tolerance', default=default('--non_s3_enemy_withdraw_tolerance'), choices=['0', '1', '2', '10'], help='How many battles will be fought after there is no large scale')

View File

@ -32,9 +32,9 @@ dic_true_eng_to_eng = {
'main': 'main',
'event': 'event',
'semi_auto': 'semi_auto',
'c72_mystery_farming': 'c72_mystery_farming',
'c122_leveling': 'c122_leveling',
'c124_leveling': 'c124_leveling',
'c7-2_mystery_farming': 'c72_mystery_farming',
'c12-2_leveling': 'c122_leveling',
'c12-4_leveling': 'c124_leveling',
# Argument
'enable_stop_condition': 'enable_stop_condition',

View File

@ -19,9 +19,9 @@ MAP_CAT_ATTACK = Button(area={'cn': (1237, 103, 1252, 153), 'en': (1237, 103, 12
MAP_OFFENSIVE = Button(area={'cn': (1148, 653, 1262, 705), 'en': (1147, 652, 1263, 701)}, color={'cn': (234, 180, 108), 'en': (234, 183, 108)}, button={'cn': (1148, 653, 1262, 705), 'en': (1147, 652, 1263, 701)}, file={'cn': './assets/cn/map/MAP_OFFENSIVE.png', 'en': './assets/en/map/MAP_OFFENSIVE.png'})
MAP_PREPARATION = Button(area={'cn': (854, 488, 1052, 548), 'en': (852, 489, 1054, 553)}, color={'cn': (236, 186, 115), 'en': (234, 179, 93)}, button={'cn': (854, 488, 1052, 548), 'en': (852, 489, 1054, 553)}, file={'cn': './assets/cn/map/MAP_PREPARATION.png', 'en': './assets/en/map/MAP_PREPARATION.png'})
MAP_PREPARATION_CANCEL = Button(area={'cn': (234, 12, 278, 47), 'en': (234, 12, 278, 47)}, color={'cn': (45, 46, 69), 'en': (45, 46, 69)}, button={'cn': (234, 12, 278, 47), 'en': (234, 12, 278, 47)}, file={'cn': './assets/cn/map/MAP_PREPARATION_CANCEL.png', 'en': './assets/en/map/MAP_PREPARATION_CANCEL.png'})
SUBMARINE_BAR = Button(area={'cn': (1015, 525, 1186, 602), 'en': (1015, 525, 1186, 602)}, color={'cn': (193, 177, 144), 'en': (193, 177, 144)}, button={'cn': (1015, 525, 1186, 602), 'en': (1015, 525, 1186, 602)}, file={'cn': './assets/cn/map/SUBMARINE_BAR.png', 'en': './assets/en/map/SUBMARINE_BAR.png'})
SUBMARINE_CHOOSE = Button(area={'cn': (1026, 447, 1090, 505), 'en': (1026, 447, 1090, 505)}, color={'cn': (208, 164, 103), 'en': (208, 164, 103)}, button={'cn': (1026, 447, 1090, 505), 'en': (1026, 447, 1090, 505)}, file={'cn': './assets/cn/map/SUBMARINE_CHOOSE.png', 'en': './assets/en/map/SUBMARINE_CHOOSE.png'})
SUBMARINE_CLEAR = Button(area={'cn': (1108, 447, 1172, 505), 'en': (1108, 447, 1172, 505)}, color={'cn': (152, 153, 154), 'en': (152, 153, 154)}, button={'cn': (1108, 447, 1172, 505), 'en': (1108, 447, 1172, 505)}, file={'cn': './assets/cn/map/SUBMARINE_CLEAR.png', 'en': './assets/en/map/SUBMARINE_CLEAR.png'})
SUBMARINE_BAR = Button(area={'cn': (1015, 525, 1186, 602), 'en': (1013, 521, 1184, 599)}, color={'cn': (193, 177, 144), 'en': (196, 180, 148)}, button={'cn': (1015, 525, 1186, 602), 'en': (1013, 521, 1184, 599)}, file={'cn': './assets/cn/map/SUBMARINE_BAR.png', 'en': './assets/en/map/SUBMARINE_BAR.png'})
SUBMARINE_CHOOSE = Button(area={'cn': (1026, 447, 1090, 505), 'en': (1021, 443, 1086, 502)}, color={'cn': (208, 164, 103), 'en': (199, 149, 84)}, button={'cn': (1026, 447, 1090, 505), 'en': (1021, 443, 1086, 502)}, file={'cn': './assets/cn/map/SUBMARINE_CHOOSE.png', 'en': './assets/en/map/SUBMARINE_CHOOSE.png'})
SUBMARINE_CLEAR = Button(area={'cn': (1108, 447, 1172, 505), 'en': (1107, 443, 1172, 502)}, color={'cn': (152, 153, 154), 'en': (141, 141, 142)}, button={'cn': (1108, 447, 1172, 505), 'en': (1107, 443, 1172, 502)}, file={'cn': './assets/cn/map/SUBMARINE_CLEAR.png', 'en': './assets/en/map/SUBMARINE_CLEAR.png'})
SUBMARINE_IN_USE = Button(area={'cn': (454, 439, 537, 521), 'en': (454, 439, 537, 521)}, color={'cn': (42, 54, 76), 'en': (42, 54, 76)}, button={'cn': (454, 439, 537, 521), 'en': (454, 439, 537, 521)}, file={'cn': './assets/cn/map/SUBMARINE_IN_USE.png', 'en': './assets/en/map/SUBMARINE_IN_USE.png'})
SWITCH_OVER = Button(area={'cn': (947, 654, 1118, 706), 'en': (945, 647, 1119, 702)}, color={'cn': (144, 158, 198), 'en': (139, 154, 194)}, button={'cn': (947, 654, 1118, 706), 'en': (945, 647, 1119, 702)}, file={'cn': './assets/cn/map/SWITCH_OVER.png', 'en': './assets/en/map/SWITCH_OVER.png'})
WITHDRAW = Button(area={'cn': (749, 654, 921, 707), 'en': (748, 652, 922, 702)}, color={'cn': (213, 124, 124), 'en': (211, 124, 124)}, button={'cn': (749, 654, 921, 707), 'en': (748, 652, 922, 702)}, file={'cn': './assets/cn/map/WITHDRAW.png', 'en': './assets/en/map/WITHDRAW.png'})