diff --git a/module/campaign/campaign_ui.py b/module/campaign/campaign_ui.py index f639baf1b..9ff1ca408 100644 --- a/module/campaign/campaign_ui.py +++ b/module/campaign/campaign_ui.py @@ -225,6 +225,11 @@ class CampaignUI(MapOperation, CampaignEvent, CampaignOcr): name = mode_name if name not in self.stage_entrance: + if name.lower() in ["hts1", "hts2", "ts1", "ts2"]: + if any(stage.upper() in [s.upper() for s in self.stage_entrance] for stage in ["T3", "T6", "HT3", "HT6"]): + logger.warning(f'Maybe already Pass the Stage: {name}') + raise CampaignNameError("AlreadyPassed") + logger.warning(f'Stage not found: {name}') raise CampaignNameError @@ -377,7 +382,9 @@ class CampaignUI(MapOperation, CampaignEvent, CampaignOcr): self.campaign_set_chapter(name, mode) self.ENTRANCE = self.campaign_get_entrance(name=name) return True - except CampaignNameError: + except CampaignNameError as e: + if getattr(e, 'args', [None])[0] == "AlreadyPassed": + return False pass if self.handle_campaign_ui_additional(): diff --git a/module/campaign/run.py b/module/campaign/run.py index f5d96c5e5..32b91da05 100644 --- a/module/campaign/run.py +++ b/module/campaign/run.py @@ -426,16 +426,20 @@ class CampaignRun(CampaignEvent, ShopStatus): self.campaign.withdraw() except CampaignEnd: pass - self.campaign.ensure_campaign_ui(name=self.stage, mode=mode) + ensure_campaign_ui_result = self.campaign.ensure_campaign_ui(name=self.stage, mode=mode) elif self.campaign.is_in_auto_search_menu(): if self.can_use_auto_search_continue(): logger.info('In auto search menu, skip ensure_campaign_ui.') else: logger.info('In auto search menu, closing.') # Because event_20240725 task balancer delete self.campaign.ensure_auto_search_exit() - self.campaign.ensure_campaign_ui(name=self.stage, mode=mode) + ensure_campaign_ui_result = self.campaign.ensure_campaign_ui(name=self.stage, mode=mode) else: - self.campaign.ensure_campaign_ui(name=self.stage, mode=mode) + ensure_campaign_ui_result = self.campaign.ensure_campaign_ui(name=self.stage, mode=mode) + if ensure_campaign_ui_result is False: + logger.info('Maybe Already pass the stage, goto next.') + self.campaign.handle_map_stop() + break self.disable_raid_on_event() self.handle_commission_notice()