From 5e05db05d074aac425212b6cc46de4bed099110f Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Fri, 26 Jul 2024 02:09:55 +0800 Subject: [PATCH] Add: Switch mode in map preparation --- assets/cn/map/MAP_MODE_SWITCH_HARD.png | Bin 0 -> 7510 bytes assets/cn/map/MAP_MODE_SWITCH_NORMAL.png | Bin 0 -> 7510 bytes assets/en/map/MAP_MODE_SWITCH_HARD.png | Bin 0 -> 7510 bytes assets/en/map/MAP_MODE_SWITCH_NORMAL.png | Bin 0 -> 7510 bytes assets/jp/map/MAP_MODE_SWITCH_HARD.png | Bin 0 -> 7510 bytes assets/jp/map/MAP_MODE_SWITCH_NORMAL.png | Bin 0 -> 7510 bytes assets/tw/map/MAP_MODE_SWITCH_HARD.png | Bin 0 -> 7510 bytes assets/tw/map/MAP_MODE_SWITCH_NORMAL.png | Bin 0 -> 7510 bytes campaign/event_20240725_cn/campaign_base.py | 3 ++ module/campaign/campaign_ui.py | 38 ++++++++++++++-- module/config/config_manual.py | 1 + module/map/assets.py | 2 + module/map/map_operation.py | 46 +++++++++++++++++++- 13 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 assets/cn/map/MAP_MODE_SWITCH_HARD.png create mode 100644 assets/cn/map/MAP_MODE_SWITCH_NORMAL.png create mode 100644 assets/en/map/MAP_MODE_SWITCH_HARD.png create mode 100644 assets/en/map/MAP_MODE_SWITCH_NORMAL.png create mode 100644 assets/jp/map/MAP_MODE_SWITCH_HARD.png create mode 100644 assets/jp/map/MAP_MODE_SWITCH_NORMAL.png create mode 100644 assets/tw/map/MAP_MODE_SWITCH_HARD.png create mode 100644 assets/tw/map/MAP_MODE_SWITCH_NORMAL.png diff --git a/assets/cn/map/MAP_MODE_SWITCH_HARD.png b/assets/cn/map/MAP_MODE_SWITCH_HARD.png new file mode 100644 index 0000000000000000000000000000000000000000..fcff54fe99b7951c8798f378f5dc9bbd6544f58a GIT binary patch literal 7510 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 PpAR%tbyUh8+PwG=$Q!kP literal 0 HcmV?d00001 diff --git a/assets/cn/map/MAP_MODE_SWITCH_NORMAL.png b/assets/cn/map/MAP_MODE_SWITCH_NORMAL.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b75976efdce73f815b2be5342da4209016f8df GIT binary patch literal 7510 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 literal 0 HcmV?d00001 diff --git a/assets/en/map/MAP_MODE_SWITCH_HARD.png b/assets/en/map/MAP_MODE_SWITCH_HARD.png new file mode 100644 index 0000000000000000000000000000000000000000..fcff54fe99b7951c8798f378f5dc9bbd6544f58a GIT binary patch literal 7510 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 PpAR%tbyUh8+PwG=$Q!kP literal 0 HcmV?d00001 diff --git a/assets/en/map/MAP_MODE_SWITCH_NORMAL.png b/assets/en/map/MAP_MODE_SWITCH_NORMAL.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b75976efdce73f815b2be5342da4209016f8df GIT binary patch literal 7510 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 literal 0 HcmV?d00001 diff --git a/assets/jp/map/MAP_MODE_SWITCH_HARD.png b/assets/jp/map/MAP_MODE_SWITCH_HARD.png new file mode 100644 index 0000000000000000000000000000000000000000..fcff54fe99b7951c8798f378f5dc9bbd6544f58a GIT binary patch literal 7510 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 PpAR%tbyUh8+PwG=$Q!kP literal 0 HcmV?d00001 diff --git a/assets/jp/map/MAP_MODE_SWITCH_NORMAL.png b/assets/jp/map/MAP_MODE_SWITCH_NORMAL.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b75976efdce73f815b2be5342da4209016f8df GIT binary patch literal 7510 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 literal 0 HcmV?d00001 diff --git a/assets/tw/map/MAP_MODE_SWITCH_HARD.png b/assets/tw/map/MAP_MODE_SWITCH_HARD.png new file mode 100644 index 0000000000000000000000000000000000000000..fcff54fe99b7951c8798f378f5dc9bbd6544f58a GIT binary patch literal 7510 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 PpAR%tbyUh8+PwG=$Q!kP literal 0 HcmV?d00001 diff --git a/assets/tw/map/MAP_MODE_SWITCH_NORMAL.png b/assets/tw/map/MAP_MODE_SWITCH_NORMAL.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b75976efdce73f815b2be5342da4209016f8df GIT binary patch literal 7510 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 literal 0 HcmV?d00001 diff --git a/campaign/event_20240725_cn/campaign_base.py b/campaign/event_20240725_cn/campaign_base.py index 5f90681029..6da69fc052 100644 --- a/campaign/event_20240725_cn/campaign_base.py +++ b/campaign/event_20240725_cn/campaign_base.py @@ -17,6 +17,9 @@ def campaign_ensure_mode(self, mode='normal'): Returns: bool: If mode changed. """ + if mode == 'hard': + self.config.override(Campaign_Mode='hard') + if mode in ['normal', 'hard', 'ex']: MODE_SWITCH_20240725.set('combat', main=self) elif mode in ['story']: diff --git a/module/campaign/campaign_ui.py b/module/campaign/campaign_ui.py index f6fd2cacd1..7c0137f604 100644 --- a/module/campaign/campaign_ui.py +++ b/module/campaign/campaign_ui.py @@ -77,6 +77,9 @@ def campaign_ensure_mode(self, mode='normal'): Returns: bool: If mode changed. """ + if mode == 'hard': + self.config.override(Campaign_Mode='hard') + switch_2 = MODE_SWITCH_2.get(main=self) if switch_2 == 'unknown': @@ -100,6 +103,29 @@ def campaign_ensure_mode(self, mode='normal'): else: logger.warning(f'Unknown campaign mode: {mode}') + def campaign_get_mode_names(self, name): + """ + Get stage names in both 'normal' and 'hard' + t1 -> [t1, ht1] + ht1 -> [t1, ht1] + a1 -> [a1, c1] + + Args: + name (str): + + Returns: + list[str]: + """ + if name.startswith('t'): + return [f't{name[1:]}', f'ht{name[1:]}'] + if name.startswith('ht'): + return [f't{name[2:]}', f'ht{name[2:]}'] + if name.startswith('a') or name.startswith('c'): + return [f'a{name[1:]}', f'c{name[1:]}'] + if name.startswith('b') or name.startswith('d'): + return [f'b{name[1:]}', f'd{name[1:]}'] + return [name] + def campaign_get_entrance(self, name): """ Args: @@ -108,12 +134,18 @@ def campaign_get_entrance(self, name): Returns: Button: """ + entrance_name = name + if self.config.MAP_HAS_MODE_SWITCH: + for mode_name in self.campaign_get_mode_names(name): + if mode_name in self.stage_entrance: + name = mode_name + if name not in self.stage_entrance: logger.warning(f'Stage not found: {name}') raise CampaignNameError entrance = self.stage_entrance[name] - entrance.name = name + entrance.name = entrance_name return entrance def campaign_set_chapter_main(self, chapter, mode='normal'): @@ -132,11 +164,11 @@ def campaign_set_chapter_main(self, chapter, mode='normal'): return False def campaign_set_chapter_event(self, chapter, mode='normal'): - if chapter in ['a', 'b', 'c', 'd', 'ex_sp', 'as', 'bs', 'cs', 'ds', 't', 'ts', 'tss', 'hts']: + if chapter in ['a', 'b', 'c', 'd', 'ex_sp', 'as', 'bs', 'cs', 'ds', 't', 'ts', 'tss', 'ht', 'hts']: self.ui_goto_event() if chapter in ['a', 'b', 'as', 'bs', 't', 'ts', 'tss']: self.campaign_ensure_mode('normal') - elif chapter in ['c', 'd', 'cs', 'ds', 'hts']: + elif chapter in ['c', 'd', 'cs', 'ds', 'ht', 'hts']: self.campaign_ensure_mode('hard') elif chapter == 'ex_sp': self.campaign_ensure_mode('ex') diff --git a/module/config/config_manual.py b/module/config/config_manual.py index cd795c7e86..7165534495 100644 --- a/module/config/config_manual.py +++ b/module/config/config_manual.py @@ -113,6 +113,7 @@ def SERVER(self): """ module.map.fleet """ + MAP_HAS_MODE_SWITCH = False # event_20240725_cn has mode switch in map preparation MAP_HAS_CLEAR_PERCENTAGE = True MAP_HAS_WALK_SPEEDUP = False MAP_HAS_AMBUSH = True diff --git a/module/map/assets.py b/module/map/assets.py index 84842cf990..a0c937034d 100644 --- a/module/map/assets.py +++ b/module/map/assets.py @@ -22,6 +22,8 @@ FLEET_PREPARATION_CHECK = Button(area={'cn': (1146, 107, 1174, 136), 'en': (1129, 111, 1158, 140), 'jp': (1146, 107, 1174, 136), 'tw': (1145, 106, 1175, 136)}, color={'cn': (180, 98, 111), 'en': (189, 105, 109), 'jp': (180, 98, 111), 'tw': (180, 90, 92)}, button={'cn': (1146, 107, 1174, 136), 'en': (1129, 111, 1158, 140), 'jp': (1146, 107, 1174, 136), 'tw': (1145, 106, 1175, 136)}, file={'cn': './assets/cn/map/FLEET_PREPARATION_CHECK.png', 'en': './assets/en/map/FLEET_PREPARATION_CHECK.png', 'jp': './assets/jp/map/FLEET_PREPARATION_CHECK.png', 'tw': './assets/tw/map/FLEET_PREPARATION_CHECK.png'}) MAP_CAT_ATTACK = Button(area={'cn': (1237, 103, 1252, 153), 'en': (1237, 103, 1252, 153), 'jp': (1237, 103, 1252, 153), 'tw': (1237, 103, 1252, 153)}, color={'cn': (43, 45, 52), 'en': (43, 45, 52), 'jp': (43, 45, 52), 'tw': (43, 45, 52)}, button={'cn': (1148, 653, 1262, 705), 'en': (1147, 651, 1263, 701), 'jp': (1149, 653, 1261, 704), 'tw': (1148, 653, 1262, 705)}, file={'cn': './assets/cn/map/MAP_CAT_ATTACK.png', 'en': './assets/en/map/MAP_CAT_ATTACK.png', 'jp': './assets/jp/map/MAP_CAT_ATTACK.png', 'tw': './assets/tw/map/MAP_CAT_ATTACK.png'}) MAP_CAT_ATTACK_MIRROR = Button(area={'cn': (147, 145, 187, 157), 'en': (147, 145, 187, 157), 'jp': (147, 145, 187, 157), 'tw': (147, 145, 187, 157)}, color={'cn': (214, 191, 99), 'en': (214, 191, 99), 'jp': (214, 191, 99), 'tw': (214, 191, 99)}, button={'cn': (147, 145, 187, 157), 'en': (147, 145, 187, 157), 'jp': (147, 145, 187, 157), 'tw': (147, 145, 187, 157)}, file={'cn': './assets/cn/map/MAP_CAT_ATTACK_MIRROR.png', 'en': './assets/en/map/MAP_CAT_ATTACK_MIRROR.png', 'jp': './assets/jp/map/MAP_CAT_ATTACK_MIRROR.png', 'tw': './assets/tw/map/MAP_CAT_ATTACK_MIRROR.png'}) +MAP_MODE_SWITCH_HARD = Button(area={'cn': (341, 580, 374, 617), 'en': (341, 580, 374, 617), 'jp': (341, 580, 374, 617), 'tw': (341, 580, 374, 617)}, color={'cn': (234, 179, 179), 'en': (234, 179, 179), 'jp': (234, 179, 179), 'tw': (234, 179, 179)}, button={'cn': (341, 580, 374, 617), 'en': (341, 580, 374, 617), 'jp': (341, 580, 374, 617), 'tw': (341, 580, 374, 617)}, file={'cn': './assets/cn/map/MAP_MODE_SWITCH_HARD.png', 'en': './assets/en/map/MAP_MODE_SWITCH_HARD.png', 'jp': './assets/jp/map/MAP_MODE_SWITCH_HARD.png', 'tw': './assets/tw/map/MAP_MODE_SWITCH_HARD.png'}) +MAP_MODE_SWITCH_NORMAL = Button(area={'cn': (214, 584, 255, 615), 'en': (214, 584, 255, 615), 'jp': (214, 584, 255, 615), 'tw': (214, 584, 255, 615)}, color={'cn': (185, 201, 236), 'en': (185, 201, 236), 'jp': (185, 201, 236), 'tw': (185, 201, 236)}, button={'cn': (214, 584, 255, 615), 'en': (214, 584, 255, 615), 'jp': (214, 584, 255, 615), 'tw': (214, 584, 255, 615)}, file={'cn': './assets/cn/map/MAP_MODE_SWITCH_NORMAL.png', 'en': './assets/en/map/MAP_MODE_SWITCH_NORMAL.png', 'jp': './assets/jp/map/MAP_MODE_SWITCH_NORMAL.png', 'tw': './assets/tw/map/MAP_MODE_SWITCH_NORMAL.png'}) MAP_OFFENSIVE = Button(area={'cn': (1148, 653, 1262, 705), 'en': (1147, 652, 1263, 701), 'jp': (1147, 652, 1263, 706), 'tw': (1148, 653, 1262, 705)}, color={'cn': (234, 180, 108), 'en': (234, 183, 108), 'jp': (233, 184, 105), 'tw': (243, 199, 104)}, button={'cn': (1148, 653, 1262, 705), 'en': (1147, 652, 1263, 701), 'jp': (1147, 652, 1263, 706), 'tw': (1148, 653, 1262, 705)}, file={'cn': './assets/cn/map/MAP_OFFENSIVE.png', 'en': './assets/en/map/MAP_OFFENSIVE.png', 'jp': './assets/jp/map/MAP_OFFENSIVE.png', 'tw': './assets/tw/map/MAP_OFFENSIVE.png'}) MAP_PREPARATION = Button(area={'cn': (854, 488, 1052, 548), 'en': (852, 489, 1054, 553), 'jp': (850, 485, 1051, 548), 'tw': (854, 488, 1052, 548)}, color={'cn': (236, 186, 115), 'en': (234, 179, 93), 'jp': (232, 181, 101), 'tw': (236, 186, 115)}, button={'cn': (854, 488, 1052, 548), 'en': (852, 489, 1054, 553), 'jp': (850, 485, 1051, 548), 'tw': (854, 488, 1052, 548)}, file={'cn': './assets/cn/map/MAP_PREPARATION.png', 'en': './assets/en/map/MAP_PREPARATION.png', 'jp': './assets/jp/map/MAP_PREPARATION.png', 'tw': './assets/tw/map/MAP_PREPARATION.png'}) MAP_PREPARATION_CANCEL = Button(area={'cn': (234, 12, 278, 47), 'en': (234, 12, 278, 47), 'jp': (234, 12, 278, 47), 'tw': (234, 12, 278, 47)}, color={'cn': (45, 46, 69), 'en': (45, 46, 69), 'jp': (45, 46, 69), 'tw': (45, 46, 69)}, button={'cn': (234, 12, 278, 47), 'en': (234, 12, 278, 47), 'jp': (234, 12, 278, 47), 'tw': (234, 12, 278, 47)}, file={'cn': './assets/cn/map/MAP_PREPARATION_CANCEL.png', 'en': './assets/en/map/MAP_PREPARATION_CANCEL.png', 'jp': './assets/jp/map/MAP_PREPARATION_CANCEL.png', 'tw': './assets/tw/map/MAP_PREPARATION_CANCEL.png'}) diff --git a/module/map/map_operation.py b/module/map/map_operation.py index f42abc9bb3..ef857fc995 100644 --- a/module/map/map_operation.py +++ b/module/map/map_operation.py @@ -103,7 +103,7 @@ def enter_map(self, button, mode='normal', skip_first_screenshot=True): Args: button: Campaign to enter. - mode (str): 'normal' or 'hard' or 'cd' + mode (str): 'normal' or 'hard' skip_first_screenshot (bool): """ logger.hr('Enter map') @@ -115,6 +115,8 @@ def enter_map(self, button, mode='normal', skip_first_screenshot=True): fleet_click = 0 checked_in_map = False self.stage_entrance = button + self.map_clear_percentage_prev = -1 + self.map_clear_percentage_timer.reset() with self.stat.new( genre=self.config.campaign_name, method=self.config.DropRecord_CombatRecord @@ -153,7 +155,7 @@ def enter_map(self, button, mode='normal', skip_first_screenshot=True): continue # Map preparation - if map_timer.reached() and self.handle_map_preparation(): + if map_timer.reached() and self.handle_map_mode_switch(mode) and self.handle_map_preparation(): self.map_get_info() self.handle_map_walk_speedup() self.handle_fast_forward() @@ -254,6 +256,46 @@ def enter_map_cancel(self, skip_first_screenshot=True): return True + def handle_map_mode_switch(self, mode): + """ + Args: + mode (str): 'normal' or 'hard' + + Returns: + bool: If map mode satisfied + Always True if map doesn't have mode switch in map preparation + """ + if not self.config.MAP_HAS_MODE_SWITCH: + return True + + if mode == 'normal': + if self.appear(MAP_MODE_SWITCH_NORMAL, offset=(20, 20)) \ + and MAP_MODE_SWITCH_NORMAL.match_appear_on(self.device.image): + logger.attr('MAP_MODE_SWITCH', 'normal') + return True + elif self.appear(MAP_MODE_SWITCH_HARD, offset=(20, 20), interval=2): + logger.attr('MAP_MODE_SWITCH', 'hard') + MAP_MODE_SWITCH_NORMAL.clear_offset() + self.device.click(MAP_MODE_SWITCH_NORMAL) + return False + else: + return False + elif mode == 'hard': + if self.appear(MAP_MODE_SWITCH_HARD, offset=(20, 20)) \ + and MAP_MODE_SWITCH_HARD.match_appear_on(self.device.image): + logger.attr('MAP_MODE_SWITCH', 'hard') + return True + if self.appear(MAP_MODE_SWITCH_NORMAL, offset=(20, 20), interval=2): + logger.attr('MAP_MODE_SWITCH', 'normal') + MAP_MODE_SWITCH_HARD.clear_offset() + self.device.click(MAP_MODE_SWITCH_HARD) + return False + else: + return False + else: + logger.error(f'handle_map_mode_switch: Unknown mode={mode}') + return False + def handle_map_preparation(self): """ Returns: