1
0
mirror of https://gitee.com/sui-feng-cb/AzurLaneAutoScript1 synced 2026-03-22 05:53:44 +08:00

Upd: Update World-spanning Arclight

- Fix: Varies map mode switches
- Fix: Handle stories in map detection
- Upd: GAME_TIPS
This commit is contained in:
LmeSzinc
2021-11-26 00:07:03 +08:00
parent 9b5df053f9
commit 8ac6e59f2a
24 changed files with 154 additions and 33 deletions

View File

@@ -0,0 +1,65 @@
from module.base.mask import Mask
from module.map_detection.utils_assets import ASSETS
# Patch ui_mask, get rid of map mechanism
_ = ASSETS.ui_mask
ASSETS.ui_mask = Mask(file='./assets/mask/MASK_MAP_UI_20211125.png').image
from module.campaign.campaign_base import CampaignBase as CampaignBase_
class CampaignBase(CampaignBase_):
def campaign_ensure_mode(self, mode='normal'):
"""
Args:
mode (str): 'normal', 'hard', 'ex'
Returns:
bool: If mode changed.
"""
# No need to switch
pass
def _campaign_get_chapter_index(self, name):
"""
Args:
name (str, int):
Returns:
int
"""
if name == 't':
return 1
if name == 'ex_sp':
return 2
return super(CampaignBase, CampaignBase)._campaign_get_chapter_index(name)
@staticmethod
def _campaign_separate_name(name):
"""
Args:
name (str): Stage name in lowercase, such as 7-2, d3, sp3.
Returns:
tuple[str]: Campaign_name and stage index in lowercase, Such as ['7', '2'], ['d', '3'], ['sp', '3'].
"""
if 'sss' in name:
return ['ex_sp', '1']
return super(CampaignBase, CampaignBase)._campaign_separate_name(name)
def campaign_get_entrance(self, name):
"""
Args:
name (str): Campaign name, such as '7-2', 'd3', 'sp3'.
Returns:
Button:
"""
if name == 'sp':
for stage_name, stage_obj in self.stage_entrance.items():
if 'sss' in stage_name.lower():
name = stage_name
return super().campaign_get_entrance(name)

View File

@@ -1,9 +1,9 @@
from module.campaign.campaign_base import CampaignBase
from .campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
MAP = CampaignMap('SSSS.SP ')
MAP = CampaignMap('SP')
MAP.shape = 'H8'
MAP.camera_data = ['D2', 'D6', 'E2', 'E6']
MAP.camera_data_spawn_point = ['E6']
@@ -50,7 +50,7 @@ A8, B8, C8, D8, E8, F8, G8, H8, \
class Config:
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = ['zhongxun_gulite', 'zhanlie_gulite', 'hangmu_gulite']
MAP_SIREN_TEMPLATE = ['GridmanCL', 'GridmanCA']
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
@@ -63,6 +63,24 @@ class Config:
STAR_REQUIRE_3 = 0
# ===== End of generated config =====
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
'height': (150, 255 - 24),
'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.492
MAP_SWIPE_MULTIPLY_MINITOUCH = 1.442
class Campaign(CampaignBase):
MAP = MAP

View File

@@ -1,4 +1,4 @@
from module.campaign.campaign_base import CampaignBase
from .campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
@@ -50,8 +50,22 @@ class Config:
MAP_HAS_MYSTERY = False
# ===== End of generated config =====
INTERNAL_LINES_FIND_PEAKS_PARAMETERS = {
'height': (150, 255 - 24),
'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_ENSURE_EDGE_INSIGHT_CORNER = 'bottom'
MAP_SWIPE_MULTIPLY = 1.856
MAP_SWIPE_MULTIPLY_MINITOUCH = 1.794

View File

@@ -1,4 +1,4 @@
from module.campaign.campaign_base import CampaignBase
from .campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
@@ -48,7 +48,7 @@ A8, B8, C8, D8, E8, F8, G8, H8, \
class Config(ConfigBase):
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = ['qingxun_gulite']
MAP_SIREN_TEMPLATE = ['GridmanCL']
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
@@ -58,6 +58,9 @@ class Config(ConfigBase):
MAP_HAS_MYSTERY = False
# ===== End of generated config =====
MAP_SWIPE_MULTIPLY = 1.464
MAP_SWIPE_MULTIPLY_MINITOUCH = 1.415
class Campaign(CampaignBase):
MAP = MAP

View File

@@ -1,4 +1,4 @@
from module.campaign.campaign_base import CampaignBase
from .campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
@@ -24,9 +24,9 @@ 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
90 90 90 50 50 50 50 50
90 90 90 50 50 50 50 50
90 90 90 90 50 50 50 50
"""
MAP.spawn_data = [
{'battle': 0, 'enemy': 3, 'siren': 2},
@@ -49,7 +49,7 @@ A8, B8, C8, D8, E8, F8, G8, H8, \
class Config(ConfigBase):
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = ['qingxun_gulite', 'zhongxun_gulite']
MAP_SIREN_TEMPLATE = ['GridmanCL', 'GridmanCA']
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
@@ -59,6 +59,9 @@ class Config(ConfigBase):
MAP_HAS_MYSTERY = False
# ===== End of generated config =====
MAP_SWIPE_MULTIPLY = 1.626
MAP_SWIPE_MULTIPLY_MINITOUCH = 1.572
class Campaign(CampaignBase):
MAP = MAP

View File

@@ -1,8 +1,10 @@
from module.campaign.campaign_base import CampaignBase
from .campaign_base import CampaignBase
from module.map.map_base import CampaignMap
from module.map.map_grids import SelectedGrids, RoadGrids
from module.logger import logger
from .t1 import Config as ConfigBase
from module.base.timer import Timer
from module.exception import MapDetectionError
MAP = CampaignMap('T4')
MAP.shape = 'K7'
@@ -26,6 +28,8 @@ 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
"""
MAP.fortress_data = [('C2', 'C6', 'I2', 'I6'), 'F3']
MAP.map_covered = ['F2']
MAP.spawn_data = [
{'battle': 0, 'enemy': 4, 'siren': 1},
{'battle': 1, 'enemy': 1, 'siren': 1},
@@ -46,7 +50,7 @@ A7, B7, C7, D7, E7, F7, G7, H7, I7, J7, K7, \
class Config(ConfigBase):
# ===== Start of generated config =====
MAP_SIREN_TEMPLATE = ['zhongxun_gulite', 'zhanlie_gulite', 'hangmu_gulite']
MAP_SIREN_TEMPLATE = ['GridmanCL', 'GridmanCA']
MOVABLE_ENEMY_TURN = (2,)
MAP_HAS_SIREN = True
MAP_HAS_MOVABLE_ENEMY = True
@@ -56,6 +60,11 @@ class Config(ConfigBase):
MAP_HAS_MYSTERY = False
# ===== End of generated config =====
MAP_ENSURE_EDGE_INSIGHT_CORNER = 'upper'
MAP_HAS_FORTRESS = True
MAP_SWIPE_MULTIPLY = 1.605
MAP_SWIPE_MULTIPLY_MINITOUCH = 1.552
class Campaign(CampaignBase):
MAP = MAP
@@ -70,4 +79,18 @@ class Campaign(CampaignBase):
return self.battle_default()
def battle_5(self):
if not self.map_is_clear_mode:
if self.clear_siren():
return True
return self.fleet_boss.clear_boss()
def catch_camera_repositioning(self, destination):
if super().catch_camera_repositioning(destination):
return True
if destination.is_fortress:
logger.info('Catch camera re-positioning after fortress cleared')
# Poor implementation to wait camera move
self.device.sleep(3)
return True
return False