mirror of
https://github.com/LmeSzinc/StarRailCopilot.git
synced 2024-11-25 01:49:41 +00:00
Add: Do quest Complete_Forgotten_Hall_1_time
This commit is contained in:
parent
e26be58a05
commit
e6c19268d6
35
route/daily/forgotten_hall/stage_1.py
Normal file
35
route/daily/forgotten_hall/stage_1.py
Normal file
@ -0,0 +1,35 @@
|
||||
from module.logger import logger
|
||||
from tasks.base.assets.assets_base_popup import POPUP_SINGLE
|
||||
from tasks.dungeon.keywords import KEYWORDS_DUNGEON_LIST
|
||||
from tasks.forgotten_hall.keywords import KEYWORDS_FORGOTTEN_HALL_STAGE
|
||||
from tasks.forgotten_hall.ui import ForgottenHallUI
|
||||
from tasks.map.control.waypoint import Waypoint
|
||||
from tasks.map.keywords.plane import Jarilo_BackwaterPass
|
||||
from tasks.map.route.base import RouteBase
|
||||
|
||||
|
||||
class Route(RouteBase, ForgottenHallUI):
|
||||
def combat_execute(self, expected_end=None):
|
||||
# Challenge completed, return button appears
|
||||
def combat_ended():
|
||||
return self.appear(POPUP_SINGLE)
|
||||
|
||||
return super().combat_execute(expected_end=combat_ended)
|
||||
|
||||
def route(self):
|
||||
"""
|
||||
Pages:
|
||||
in: Any
|
||||
out: page_forgotten_hall
|
||||
"""
|
||||
logger.hr('Forgotten hall stage 1')
|
||||
self.stage_goto(KEYWORDS_DUNGEON_LIST.The_Last_Vestiges_of_Towering_Citadel,
|
||||
KEYWORDS_FORGOTTEN_HALL_STAGE.Stage_1)
|
||||
self.team_choose_first_4()
|
||||
self.enter_forgotten_hall_dungeon()
|
||||
|
||||
self.map_init(plane=Jarilo_BackwaterPass, position=(369.4, 643.4))
|
||||
self.clear_enemy(
|
||||
Waypoint((313.4, 643.4)).run_2x()
|
||||
)
|
||||
self.exit_dungeon()
|
@ -118,8 +118,11 @@ class Combat(CombatInteract, CombatPrepare, CombatState, CombatTeam, CombatSuppo
|
||||
if self.handle_ascension_dungeon_prepare():
|
||||
continue
|
||||
|
||||
def combat_execute(self):
|
||||
def combat_execute(self, expected_end=None):
|
||||
"""
|
||||
Args:
|
||||
expected_end: A function returns bool, True represents end.
|
||||
|
||||
Pages:
|
||||
in: is_combat_executing
|
||||
out: COMBAT_AGAIN
|
||||
@ -135,6 +138,9 @@ class Combat(CombatInteract, CombatPrepare, CombatState, CombatTeam, CombatSuppo
|
||||
self.device.screenshot()
|
||||
|
||||
# End
|
||||
if callable(expected_end) and expected_end():
|
||||
logger.info(f'Combat execute ended at {expected_end.__name__}')
|
||||
break
|
||||
if self.appear(COMBAT_AGAIN):
|
||||
logger.info(f'Combat execute ended at {COMBAT_AGAIN}')
|
||||
break
|
||||
|
@ -22,6 +22,7 @@ from tasks.dungeon.keywords import KEYWORDS_DUNGEON_TAB
|
||||
from tasks.dungeon.ui import DungeonUI
|
||||
from tasks.item.consumable_usage import ConsumableUsageUI
|
||||
from tasks.item.relics import RelicsUI
|
||||
from tasks.map.route.loader import RouteLoader
|
||||
|
||||
|
||||
class DailyQuestOcr(Ocr):
|
||||
@ -61,7 +62,7 @@ class DailyQuestOcr(Ocr):
|
||||
return result
|
||||
|
||||
|
||||
class DailyQuestUI(DungeonUI):
|
||||
class DailyQuestUI(DungeonUI, RouteLoader):
|
||||
def _ensure_position(self, direction: str, skip_first_screenshot=True):
|
||||
interval = Timer(5)
|
||||
if direction == 'left':
|
||||
@ -258,6 +259,9 @@ class DailyQuestUI(DungeonUI):
|
||||
if KEYWORDS_DAILY_QUEST.Salvage_any_Relic in quests:
|
||||
if RelicsUI(self.config, self.device).salvage_relic():
|
||||
done += 1
|
||||
if KEYWORDS_DAILY_QUEST.Complete_Forgotten_Hall_1_time in quests:
|
||||
self.route_run('daily.forgotten_hall.stage_1')
|
||||
done += 1
|
||||
|
||||
return done
|
||||
|
||||
|
@ -57,7 +57,7 @@ class UseTechniqueUI(MapControlJoystick, ForgottenHallUI):
|
||||
self.stage_goto(KEYWORDS_DUNGEON_LIST.The_Last_Vestiges_of_Towering_Citadel,
|
||||
KEYWORDS_FORGOTTEN_HALL_STAGE.Stage_1)
|
||||
self.team_choose_first()
|
||||
self._enter_forgotten_hall_dungeon()
|
||||
self.enter_forgotten_hall_dungeon()
|
||||
self._use_technique(count, skip_first_screenshot=skip_first_screenshot)
|
||||
self.exit_dungeon()
|
||||
self.ui_goto_main()
|
||||
|
@ -207,8 +207,10 @@ class ForgottenHallUI(DungeonUI, ForgottenHallTeam):
|
||||
continue
|
||||
if self.handle_popup_confirm():
|
||||
continue
|
||||
if self.handle_popup_single():
|
||||
continue
|
||||
|
||||
def _enter_forgotten_hall_dungeon(self, skip_first_screenshot=True):
|
||||
def enter_forgotten_hall_dungeon(self, skip_first_screenshot=True):
|
||||
"""
|
||||
called after team is set
|
||||
|
||||
|
@ -135,6 +135,7 @@ class MapControl(Combat, AimDetectorMixin):
|
||||
logger.info('Walk result add: enemy')
|
||||
result.append('enemy')
|
||||
contact.up()
|
||||
logger.hr('Combat', level=2)
|
||||
self.combat_execute()
|
||||
if waypoint.early_stop:
|
||||
return result
|
||||
|
Loading…
Reference in New Issue
Block a user