From fa5364e7656c230db20879a670f9b9b724bd768f Mon Sep 17 00:00:00 2001 From: tmarenko Date: Thu, 15 Oct 2020 18:22:33 +0300 Subject: [PATCH] epic quests: continue battles even when cannot restart game --- lib/game/battle_bot.py | 4 ++++ lib/game/missions/epic_quests.py | 29 ++++++++++++++--------------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/lib/game/battle_bot.py b/lib/game/battle_bot.py index 12b161a..ecb562e 100644 --- a/lib/game/battle_bot.py +++ b/lib/game/battle_bot.py @@ -72,6 +72,10 @@ class AutoBattleBot(BattleBot): def fight(self): """Start battle and wait until the end.""" + if self.is_battle_over(): + logger.info("Battle is already over") + return + def wait_battle(): self.skip_cutscene() return self.is_battle() diff --git a/lib/game/missions/epic_quests.py b/lib/game/missions/epic_quests.py index 95136ea..0de1223 100644 --- a/lib/game/missions/epic_quests.py +++ b/lib/game/missions/epic_quests.py @@ -28,25 +28,24 @@ def start_stage(self, stage_button, stage_num, farm_shifter_bios=False): self.player.click_button(stage_button) wait_until(self.player.is_ui_element_on_screen, timeout=3, ui_element=self.ui['START_BUTTON']) if not self.press_start_button(): - logger.error(f"Cannot start Epic Quest stage {stage_button}, exiting.") + logger.error(f"Cannot start Epic Quest stage {self.mode_name}, exiting.") return 0 auto_battle_bot = AutoBattleBot(self.game, self.battle_over_conditions) ally_appeared = auto_battle_bot.wait_until_shifter_appeared() if farm_shifter_bios else True - if ally_appeared: - auto_battle_bot.fight() - stage_num -= 1 - logger.debug(f"{stage_num} stages left to complete") - self.close_mission_notifications() - if stage_num > 0: - self.press_repeat_button() - else: - self.press_home_button() - return stage_num - elif farm_shifter_bios and not ally_appeared: + if farm_shifter_bios and not ally_appeared: logger.info("No ally, restarting") - if not self.game.restart_game(repeat_while=auto_battle_bot.is_battle): - return 0 - self.game.select_mode(self.mode_name) + if self.game.restart_game(repeat_while=auto_battle_bot.is_battle): + self.game.select_mode(self.mode_name) + return stage_num + + auto_battle_bot.fight() + stage_num -= 1 + logger.debug(f"{stage_num} stages left to complete") + self.close_mission_notifications() + if stage_num > 0: + self.press_repeat_button() + else: + self.press_home_button() return stage_num def do_missions(self, times=None, farm_shifter_bios=False):