diff --git a/module/campaign/campaign_ui.py b/module/campaign/campaign_ui.py index f2d2bf4e4..d55287106 100644 --- a/module/campaign/campaign_ui.py +++ b/module/campaign/campaign_ui.py @@ -1,4 +1,5 @@ from module.base.timer import Timer +from module.base.utils import area_offset from module.campaign.assets import * from module.campaign.campaign_event import CampaignEvent from module.campaign.campaign_ocr import CampaignOcr @@ -29,7 +30,7 @@ MODE_SWITCH_2.add_state('ex', SWITCH_2_EX) MODE_SWITCH_20241219 = ModeSwitch('Mode_switch_20241219', is_selector=True, offset=(30, 30)) MODE_SWITCH_20241219.add_state('combat', SWITCH_20241219_COMBAT) MODE_SWITCH_20241219.add_state('story', SWITCH_20241219_STORY) -ASIDE_SWITCH_20241219 = ModeSwitch('Aside_switch_20241219', is_selector=True, offset=(30, 30)) +ASIDE_SWITCH_20241219 = ModeSwitch('Aside_switch_20241219', is_selector=True, offset=(20, 20)) ASIDE_SWITCH_20241219.add_state('part1', CHAPTER_20241219_PART1) ASIDE_SWITCH_20241219.add_state('part2', CHAPTER_20241219_PART2) ASIDE_SWITCH_20241219.add_state('sp', CHAPTER_20241219_SP) @@ -321,6 +322,33 @@ class CampaignUI(MapOperation, CampaignEvent, CampaignOcr): self.campaign_ensure_aside_20241219('sp') self.campaign_ensure_chapter(chapter) return True + if self.config.MAP_CHAPTER_SWITCH_20241219_SPEX: + if self._campaign_name_is_hard(f'{chapter}{stage}'): + self.config.override(Campaign_Mode='hard') + # normal, sp, ex + try: + ASIDE_SWITCH_20241219.offset = area_offset((-20, -20, 20, 20), (0, -37)) + if chapter in ['sp', 't', 'ht']: + self.ui_goto_event() + self.campaign_ensure_mode_20241219('combat') + # normal is on the position of part2 + self.campaign_ensure_aside_20241219('part2') + self.campaign_ensure_chapter(chapter) + return True + if chapter in ['ex_sp']: + self.ui_goto_event() + self.campaign_ensure_mode_20241219('combat') + self.campaign_ensure_aside_20241219('sp') + self.campaign_ensure_chapter(chapter) + return True + if chapter in ['ex_sp']: + self.ui_goto_event() + self.campaign_ensure_mode_20241219('combat') + self.campaign_ensure_aside_20241219('sp') + self.campaign_ensure_chapter(chapter) + return True + finally: + ASIDE_SWITCH_20241219.offset = (20, 20) return False def campaign_set_chapter(self, name, mode='normal'): diff --git a/module/config/config_manual.py b/module/config/config_manual.py index f928f67f2..d8045f7fc 100644 --- a/module/config/config_manual.py +++ b/module/config/config_manual.py @@ -118,6 +118,7 @@ class ManualConfig: # Events from 20240725 to 20241219 introduced new chapter switches MAP_CHAPTER_SWITCH_20241219 = False MAP_CHAPTER_SWITCH_20241219_SP = False + MAP_CHAPTER_SWITCH_20241219_SPEX = False # Since event_20241219_cn chapter B unlocks event startup # which means chapter AB are continuous STAGE_INCREASE_AB = False diff --git a/module/ui/switch.py b/module/ui/switch.py index 1ce601ae4..98aa5a04f 100644 --- a/module/ui/switch.py +++ b/module/ui/switch.py @@ -29,7 +29,7 @@ class Switch: """ self.name = name self.is_selector = is_selector - self.offset = offset + self._offset = offset self.state_list = [] self.set_unknown_timer = Timer(5, count=10) self.set_click_timer = Timer(1, count=2) @@ -49,9 +49,19 @@ class Switch: 'state': state, 'check_button': check_button, 'click_button': click_button if click_button is not None else check_button, - 'offset': offset if offset else self.offset + 'offset': offset if offset else self._offset }) + @property + def offset(self): + return self._offset + + @offset.setter + def offset(self, value): + self._offset = value + for data in self.state_list: + data['offset'] = value + def appear(self, main): """ Args: