Fix(Event):修复在已通过一次性关卡后的关卡递进错误

This commit is contained in:
POLARme 2025-06-20 13:40:42 +08:00
parent aaa0350dd7
commit 3fb7fe8048
2 changed files with 15 additions and 4 deletions

View File

@ -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():

View File

@ -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()