StarRailCopilot/route/rogue/Combat/Luofu_Cloudford_F1Rogue.py
2023-11-18 03:53:58 +08:00

108 lines
4.7 KiB
Python

from module.logger import logger
from tasks.map.control.waypoint import Waypoint
from tasks.map.keywords.plane import Luofu_Cloudford
from tasks.rogue.route.base import RouteBase
class Route(RouteBase):
def Luofu_Cloudford_F1Rogue_X59Y405(self):
"""
| Waypoint | Position | Direction | Rotation |
| ------------ | ------------------------- | --------- | -------- |
| spawn | Waypoint((59.3, 405.6)), | 96.7 | 91 |
| item1 | Waypoint((96.9, 393.0)), | 87.7 | 84 |
| enemy1 | Waypoint((126.2, 402.5)), | 96.8 | 101 |
| node2 | Waypoint((142.9, 413.0)), | 96.8 | 101 |
| enemy2top | Waypoint((214.6, 432.8)), | 94.1 | 87 |
| enemy2bottom | Waypoint((211.4, 483.3)), | 191.8 | 174 |
| enemy3 | Waypoint((288.0, 452.2)), | 87.7 | 260 |
| exit_ | Waypoint((291.8, 454.4)), | 5.7 | 91 |
| exit1 | Waypoint((295.0, 451.4)), | 96.7 | 89 |
| exit2 | Waypoint((296.0, 460.2)), | 96.9 | 89 |
"""
self.map_init(plane=Luofu_Cloudford, floor="F1Rogue", position=(59.3, 405.6))
self.register_domain_exit(
Waypoint((291.8, 454.4)), end_rotation=91,
left_door=Waypoint((295.0, 451.4)), right_door=Waypoint((296.0, 460.2)))
item1 = Waypoint((96.9, 393.0))
enemy1 = Waypoint((126.2, 402.5))
node2 = Waypoint((142.9, 413.0))
enemy2top = Waypoint((214.6, 432.8))
enemy2bottom = Waypoint((211.4, 483.3))
enemy3 = Waypoint((288.0, 452.2))
# ===== End of generated waypoints =====
self.rotation_set(120)
self.minimap.lock_rotation(120)
# 1, ignore item1, which position may cause detection error
# self.clear_item(item1)
self.clear_enemy(enemy1)
# 2 moving enemy
# Ignore enemy2, it might be a pig, you can never catch it.
# self.clear_enemy(
# enemy2top,
# enemy2bottom.straight_run(),
# )
# 3
self.clear_enemy(
node2.set_threshold(3),
enemy3,
)
if self.minimap.position_diff(enemy3.position) > 60:
logger.info('Cleared an enemy but have not reached enemy3')
self.clear_enemy(enemy3)
def Luofu_Cloudford_F1Rogue_X49Y405(self):
"""
| Waypoint | Position | Direction | Rotation |
| ------------ | ------------------------- | --------- | -------- |
| spawn | Waypoint((59.3, 405.6)), | 96.7 | 91 |
| item1 | Waypoint((96.9, 393.0)), | 87.7 | 84 |
| enemy1 | Waypoint((126.2, 402.5)), | 96.8 | 101 |
| node2 | Waypoint((142.9, 413.0)), | 96.8 | 101 |
| enemy2top | Waypoint((214.6, 432.8)), | 94.1 | 87 |
| enemy2bottom | Waypoint((211.4, 483.3)), | 191.8 | 174 |
| enemy3 | Waypoint((288.0, 452.2)), | 87.7 | 260 |
| exit_ | Waypoint((291.8, 454.4)), | 5.7 | 91 |
| exit1 | Waypoint((295.0, 451.4)), | 96.7 | 89 |
| exit2 | Waypoint((296.0, 460.2)), | 96.9 | 89 |
"""
self.map_init(plane=Luofu_Cloudford, floor="F1Rogue", position=(49.3, 405.6))
self.register_domain_exit(
Waypoint((291.8, 454.4)), end_rotation=91,
left_door=Waypoint((295.0, 451.4)), right_door=Waypoint((296.0, 460.2)))
item1 = Waypoint((96.9, 393.0))
enemy1 = Waypoint((126.2, 402.5))
node2 = Waypoint((142.9, 413.0))
enemy2top = Waypoint((214.6, 432.8))
enemy2bottom = Waypoint((211.4, 483.3))
enemy3 = Waypoint((288.0, 452.2))
# ===== End of generated waypoints =====
self.rotation_set(120)
self.minimap.lock_rotation(120)
# 1, ignore item1, which position may cause detection error
# self.clear_item(item1)
self.clear_enemy(enemy1)
# 2 moving enemy
# Ignore enemy2, it might be a pig, you can never catch it.
# self.clear_enemy(
# enemy2top,
# enemy2bottom.straight_run(),
# )
# 3
self.clear_enemy(
node2.set_threshold(3),
enemy3,
)
if self.minimap.position_diff(enemy3.position) > 60:
logger.info('Cleared an enemy but have not reached enemy3')
self.clear_enemy(enemy3)
"""
Notes
Luofu_Cloudford_F1Rogue_X49Y405 is the same as Luofu_Cloudford_F1Rogue_X59Y405
but for wrong spawn point detected
"""