Refactor: Record both doors of each rogue domain

This commit is contained in:
LmeSzinc 2023-11-12 22:17:26 +08:00
parent 725c78212e
commit 1a2310ca9e
54 changed files with 347 additions and 209 deletions

View File

@ -111,6 +111,37 @@ def get_position_from_name(name):
return position
def position2direction(target, origin):
"""
Args:
target: Target position (x, y)
origin: Origin position (x, y)
Returns:
float: Direction from current position to target position (0~360)
"""
diff = np.subtract(target, origin)
distance = np.linalg.norm(diff)
if distance < 0.05:
return 0
theta = np.rad2deg(np.arccos(-diff[1] / distance))
if diff[0] < 0:
theta = 360 - theta
theta = round(theta, 3)
return theta
def swap_exit(exit_, exit1, exit2):
diff = position2direction(exit1.position, exit_.position) - position2direction(exit2.position, exit_.position)
diff = diff % 360
if diff > 180:
diff -= 360
if diff < 0:
return exit1, exit2
else:
return exit2, exit1
class RouteDetect:
GEN_END = '===== End of generated waypoints ====='
@ -205,8 +236,8 @@ class RouteDetect:
@staticmethod
def sort_waypoints(waypoints: list[RogueWaypointModel]) -> list[RogueWaypointModel]:
waypoints = sorted(waypoints, key=lambda point: point.waypoint, reverse=True)
middle = [point for point in waypoints if not point.is_spawn and not point.is_exit]
waypoints = sorted(waypoints, key=lambda point: point.waypoint)
middle = [point for point in waypoints if point.is_middle]
if not middle:
return waypoints
@ -228,7 +259,8 @@ class RouteDetect:
middle.pop(index)
end = [point for point in waypoints if point.is_exit]
waypoints = [spawn] + sorted_middle + end
door = [point for point in waypoints if point.is_exit_door]
waypoints = [spawn] + sorted_middle + end + door
return waypoints
def write(self):
@ -240,6 +272,8 @@ class RouteDetect:
spawn: RogueWaypointModel = waypoints.select(is_spawn=True).first_or_none()
exit_: RogueWaypointModel = waypoints.select(is_exit=True).first_or_none()
exit1: RogueWaypointModel = waypoints.select(is_exit1=True).first_or_none()
exit2: RogueWaypointModel = waypoints.select(is_exit2=True).first_or_none()
if spawn is None or exit_ is None:
return
@ -256,7 +290,6 @@ class RouteDetect:
def call(func, name):
ws = waypoints.filter(lambda x: x.waypoint.startswith(name)).get('waypoint')
ws = ['exit_' if w == 'exit' else w for w in ws]
if ws:
ws = ', '.join(ws)
gen.add(f'self.{func}({ws})')
@ -280,18 +313,21 @@ class RouteDetect:
if spawn.is_DomainBoss or spawn.is_DomainElite or spawn.is_DomainRespite:
# Domain has only 1 exit
pass
elif exit1 and exit2:
exit1, exit2 = swap_exit(exit_, exit1, exit2)
gen.add(f'self.register_domain_exit(')
gen.add(f' {WaypointRepr(exit_)}, end_rotation={exit_.rotation},')
gen.add(f' left_door={WaypointRepr(exit1)}, right_door={WaypointRepr(exit2)})')
else:
gen.add(f'self.register_domain_exit({WaypointRepr(exit_)}, end_rotation={exit_.rotation})')
# Waypoint attributes
for waypoint in waypoints:
if waypoint.is_spawn:
continue
if waypoint.is_exit and not (spawn.is_DomainBoss or spawn.is_DomainElite or spawn.is_DomainRespite):
if (waypoint.is_exit or waypoint.is_exit_door) \
and (spawn.is_DomainCombat or spawn.is_DomainOccurrence):
continue
name = waypoint.waypoint
if name == 'exit':
name = 'exit_'
gen.Value(key=name, value=WaypointRepr(waypoint))
gen.Value(key=waypoint.waypoint, value=WaypointRepr(waypoint))
# Domain specific
if spawn.is_DomainBoss or spawn.is_DomainElite:

View File

@ -19,7 +19,7 @@ class Route(RouteBase):
| item5 | Waypoint((332.8, 304.8)), | 96.8 | 96 |
| node5 | Waypoint((336.2, 312.0)), | 102.9 | 98 |
| enemy5 | Waypoint((392.5, 312.4)), | 4.1 | 91 |
| exit | Waypoint((392.5, 312.4)), | 4.1 | 91 |
| exit_ | Waypoint((392.5, 312.4)), | 4.1 | 91 |
"""
self.map_init(plane=Herta_StorageZone, floor="F1", position=(225.8, 258.8))
self.register_domain_exit(Waypoint((392.5, 312.4)), end_rotation=91)
@ -59,7 +59,7 @@ class Route(RouteBase):
| item | Waypoint((244.2, 66.3)), | 334.7 | 331 |
| door | Waypoint((215.4, 65.1)), | 303.8 | 301 |
| enemy | Waypoint((202.7, 57.9)), | 297.8 | 294 |
| exit | Waypoint((202.4, 58.1)), | 302.9 | 301 |
| exit_ | Waypoint((202.4, 58.1)), | 302.9 | 301 |
"""
self.map_init(plane=Herta_StorageZone, floor="F1", position=(257.3, 85.5))
self.register_domain_exit(Waypoint((202.4, 58.1)), end_rotation=301)
@ -101,7 +101,7 @@ class Route(RouteBase):
| door | Waypoint((640.2, 82.2)), | 260.3 | 258 |
| node | Waypoint((599.2, 91.0)), | 256.7 | 255 |
| enemy3 | Waypoint((598.3, 129.1)), | 181.3 | 174 |
| exit | Waypoint((598.3, 129.1)), | 181.3 | 174 |
| exit_ | Waypoint((598.3, 129.1)), | 181.3 | 174 |
"""
self.map_init(plane=Herta_StorageZone, floor="F1", position=(692.0, 62.0))
self.register_domain_exit(Waypoint((598.3, 129.1)), end_rotation=174)
@ -145,7 +145,7 @@ class Route(RouteBase):
| node3 | Waypoint((598.6, 93.9)), | 256.7 | 253 |
| item3 | Waypoint((588.6, 102.2)), | 245.0 | 246 |
| enemy3 | Waypoint((597.2, 131.0)), | 282.9 | 179 |
| exit | Waypoint((597.2, 131.0)), | 282.9 | 179 |
| exit_ | Waypoint((597.2, 131.0)), | 282.9 | 179 |
"""
self.map_init(plane=Herta_StorageZone, floor="F1", position=(749.5, 45.6))
self.register_domain_exit(Waypoint((597.2, 131.0)), end_rotation=179)
@ -195,7 +195,7 @@ class Route(RouteBase):
| node3 | Waypoint((598.6, 93.9)), | 256.7 | 253 |
| item3 | Waypoint((588.6, 102.2)), | 245.0 | 246 |
| enemy3 | Waypoint((597.2, 131.0)), | 282.9 | 179 |
| exit | Waypoint((597.2, 131.0)), | 282.9 | 179 |
| exit_ | Waypoint((597.2, 131.0)), | 282.9 | 179 |
"""
self.map_init(plane=Herta_StorageZone, floor="F1", position=(769, 39))
self.register_domain_exit(Waypoint((597.2, 131.0)), end_rotation=179)

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((351.4, 164.9)), | 274.2 | 274 |
| item | Waypoint((342.8, 155.7)), | 274.2 | 274 |
| enemy | Waypoint((304.0, 165.4)), | 261.9 | 264 |
| exit | Waypoint((300.8, 163.8)), | 2.6 | 262 |
| exit_ | Waypoint((300.8, 163.8)), | 2.6 | 262 |
"""
self.map_init(plane=Herta_StorageZone, floor="F2", position=(351.4, 164.9))
self.register_domain_exit(Waypoint((300.8, 163.8)), end_rotation=262)
@ -30,7 +30,7 @@ class Route(RouteBase):
| spawn | Waypoint((365.1, 167.2)), | 274.2 | 274 |
| item | Waypoint((330.0, 175.6)), | 271.8 | 267 |
| enemy | Waypoint((300.2, 166.0)), | 284.9 | 94 |
| exit | Waypoint((304.0, 166.0)), | 271.8 | 267 |
| exit_ | Waypoint((304.0, 166.0)), | 271.8 | 267 |
"""
self.map_init(plane=Herta_StorageZone, floor="F2", position=(365.1, 167.2))
self.register_domain_exit(Waypoint((304.0, 166.0)), end_rotation=267)
@ -56,7 +56,7 @@ class Route(RouteBase):
| node3 | Waypoint((402.2, 199.4)), | 282.9 | 276 |
| enemy3 | Waypoint((370.7, 163.1)), | 215.8 | 304 |
| enemy4 | Waypoint((301.8, 164.4)), | 278.3 | 276 |
| exit | Waypoint((300.4, 164.5)), | 274.2 | 274 |
| exit_ | Waypoint((300.4, 164.5)), | 274.2 | 274 |
"""
self.map_init(plane=Herta_StorageZone, floor="F2", position=(515.5, 219.3))
self.register_domain_exit(Waypoint((300.4, 164.5)), end_rotation=274)

View File

@ -19,7 +19,7 @@ class Route(RouteBase):
| enemy2right_X55Y247 | Waypoint((55.2, 247.2)), | 96.7 | 91 |
| item3 | Waypoint((68.5, 226.5)), | 30.2 | 29 |
| enemy3_X114Y234 | Waypoint((114.4, 234.7)), | 105.5 | 101 |
| exit | Waypoint((119.1, 235.4)), | 6.8 | 96 |
| exit_ | Waypoint((119.1, 235.4)), | 6.8 | 96 |
"""
self.map_init(plane=Herta_SupplyZone, floor="F2", position=(45.5, 369.5))
self.register_domain_exit(Waypoint((119.1, 235.4)), end_rotation=96)
@ -81,7 +81,7 @@ class Route(RouteBase):
| item1 | Waypoint((540.3, 136.6)), | 2.7 | 357 |
| item2 | Waypoint((560.6, 132.9)), | 82.6 | 75 |
| enemy2 | Waypoint((586.2, 128.9)), | 91.3 | 84 |
| exit | Waypoint((588.4, 126.8)), | 5.7 | 1 |
| exit_ | Waypoint((588.4, 126.8)), | 5.7 | 1 |
"""
self.map_init(plane=Herta_SupplyZone, floor="F2", position=(543.4, 255.2))
self.register_domain_exit(Waypoint((588.4, 126.8)), end_rotation=1)
@ -106,7 +106,7 @@ class Route(RouteBase):
| enemy2 | Waypoint((542.2, 168.6)), | 11.1 | 177 |
| enemy3 | Waypoint((586.5, 128.3)), | 87.7 | 260 |
| item3 | Waypoint((564.2, 130.9)), | 67.2 | 66 |
| exit | Waypoint((586.9, 135.8)), | 266.1 | 1 |
| exit_ | Waypoint((586.9, 135.8)), | 266.1 | 1 |
"""
self.map_init(plane=Herta_SupplyZone, floor="F2", position=(594.3, 247.5))
self.register_domain_exit(Waypoint((586.9, 135.8)), end_rotation=1)
@ -138,7 +138,7 @@ class Route(RouteBase):
| enemy3 | Waypoint((586.5, 128.3)), | 87.7 | 260 |
| enemy2 | Waypoint((542.2, 168.6)), | 11.1 | 177 |
| item3 | Waypoint((564.2, 130.9)), | 67.2 | 66 |
| exit | Waypoint((586.9, 135.8)), | 266.1 | 1 |
| exit_ | Waypoint((586.9, 135.8)), | 266.1 | 1 |
"""
self.map_init(plane=Herta_SupplyZone, floor="F2", position=(656.7, 247.5))
self.register_domain_exit(Waypoint((586.9, 135.8)), end_rotation=1)

View File

@ -15,7 +15,7 @@ class Route(RouteBase):
| item2 | Waypoint((448.4, 116.3)), | 245.9 | 248 |
| enemy2 | Waypoint((464.2, 168.0)), | 166.8 | 341 |
| enemy3 | Waypoint((500.9, 202.8)), | 135.8 | 133 |
| exit | Waypoint((500.9, 202.8)), | 135.8 | 133 |
| exit_ | Waypoint((500.9, 202.8)), | 135.8 | 133 |
"""
self.map_init(plane=Jarilo_BackwaterPass, floor="F1", position=(475.2, 49.5))
self.register_domain_exit(Waypoint((500.9, 202.8)), end_rotation=133)
@ -47,7 +47,7 @@ class Route(RouteBase):
| -------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((483.5, 105.1)), | 275.8 | 87 |
| enemy | Waypoint((457.4, 101.0)), | 126.1 | 276 |
| exit | Waypoint((441.4, 101.6)), | 275.9 | 274 |
| exit_ | Waypoint((441.4, 101.6)), | 275.9 | 274 |
"""
self.map_init(plane=Jarilo_BackwaterPass, floor="F1", position=(483.5, 105.1))
self.register_domain_exit(Waypoint((441.4, 101.6)), end_rotation=274)
@ -64,7 +64,7 @@ class Route(RouteBase):
| enemy1 | Waypoint((507.0, 644.0)), | 12.6 | 6 |
| enemy2left | Waypoint((536.0, 630.5)), | 48.1 | 43 |
| enemy3 | Waypoint((557.0, 585.2)), | 114.1 | 6 |
| exit | Waypoint((557.0, 585.2)), | 114.1 | 6 |
| exit_ | Waypoint((557.0, 585.2)), | 114.1 | 6 |
"""
self.map_init(plane=Jarilo_BackwaterPass, floor="F1", position=(507.2, 733.7))
self.register_domain_exit(Waypoint((557.0, 585.2)), end_rotation=6)
@ -84,7 +84,7 @@ class Route(RouteBase):
| spawn | Waypoint((555.6, 643.2)), | 282.3 | 274 |
| item | Waypoint((524.8, 612.4)), | 318.0 | 322 |
| enemy | Waypoint((505.7, 642.9)), | 14.1 | 274 |
| exit | Waypoint((505.7, 642.9)), | 14.1 | 274 |
| exit_ | Waypoint((505.7, 642.9)), | 14.1 | 274 |
"""
self.map_init(plane=Jarilo_BackwaterPass, floor="F1", position=(555.6, 643.2))
self.register_domain_exit(Waypoint((505.7, 642.9)), end_rotation=274)
@ -131,7 +131,7 @@ class Route(RouteBase):
| spawn | Waypoint((580.5, 741.2)), | 96.7 | 91 |
| item | Waypoint((621.4, 751.2)), | 129.8 | 124 |
| enemy | Waypoint((641.4, 743.1)), | 92.7 | 84 |
| exit | Waypoint((641.4, 743.1)), | 92.7 | 84 |
| exit_ | Waypoint((641.4, 743.1)), | 92.7 | 84 |
"""
self.map_init(plane=Jarilo_BackwaterPass, floor="F1", position=(580.5, 741.2))
self.register_domain_exit(Waypoint((641.4, 743.1)), end_rotation=84)
@ -149,7 +149,7 @@ class Route(RouteBase):
| -------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((595.5, 681.5)), | 96.7 | 91 |
| enemy | Waypoint((631.8, 705.4)), | 134.2 | 91 |
| exit | Waypoint((635.5, 706.9)), | 129.9 | 126 |
| exit_ | Waypoint((635.5, 706.9)), | 129.9 | 126 |
"""
self.map_init(plane=Jarilo_BackwaterPass, floor="F1", position=(595.5, 681.5))
self.register_domain_exit(Waypoint((635.5, 706.9)), end_rotation=126)

View File

@ -11,7 +11,7 @@ class Route(RouteBase):
| -------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((115.5, 911.3)), | 274.2 | 274 |
| enemy | Waypoint((64.2, 909.2)), | 282.6 | 276 |
| exit | Waypoint((64.2, 909.2)), | 282.6 | 276 |
| exit_ | Waypoint((64.2, 909.2)), | 282.6 | 276 |
"""
self.map_init(plane=Jarilo_CorridorofFadingEchoes, floor="F1", position=(115.5, 911.3))
self.register_domain_exit(Waypoint((64.2, 909.2)), end_rotation=276)
@ -31,7 +31,7 @@ class Route(RouteBase):
| enemy2left | Waypoint((105.2, 1012.0)), | 317.9 | 315 |
| enemy2right | Waypoint((102.2, 976.4)), | 11.1 | 193 |
| enemy3 | Waypoint((103.4, 919.2)), | 6.7 | 4 |
| exit | Waypoint((103.4, 919.2)), | 6.7 | 4 |
| exit_ | Waypoint((103.4, 919.2)), | 6.7 | 4 |
"""
self.map_init(plane=Jarilo_CorridorofFadingEchoes, floor="F1", position=(201.2, 1071.4))
self.register_domain_exit(Waypoint((103.4, 919.2)), end_rotation=4)
@ -65,7 +65,7 @@ class Route(RouteBase):
| -------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((267.0, 457.2)), | 274.2 | 274 |
| enemy | Waypoint((220.2, 457.6)), | 185.8 | 274 |
| exit | Waypoint((208.6, 458.6)), | 274.2 | 276 |
| exit_ | Waypoint((208.6, 458.6)), | 274.2 | 276 |
"""
self.map_init(plane=Jarilo_CorridorofFadingEchoes, floor="F1", position=(267.0, 457.2))
self.register_domain_exit(Waypoint((208.6, 458.6)), end_rotation=276)
@ -81,7 +81,7 @@ class Route(RouteBase):
| spawn | Waypoint((291.1, 765.3)), | 190.1 | 184 |
| item | Waypoint((282.1, 782.4)), | 216.3 | 211 |
| enemy | Waypoint((291.2, 821.2)), | 188.1 | 181 |
| exit | Waypoint((291.2, 821.2)), | 188.1 | 181 |
| exit_ | Waypoint((291.2, 821.2)), | 188.1 | 181 |
"""
self.map_init(plane=Jarilo_CorridorofFadingEchoes, floor="F1", position=(291.1, 765.3))
self.register_domain_exit(Waypoint((291.2, 821.2)), end_rotation=181)
@ -99,7 +99,7 @@ class Route(RouteBase):
| spawn | Waypoint((319.4, 949.3)), | 96.7 | 91 |
| item | Waypoint((340.4, 940.6)), | 59.1 | 54 |
| enemy | Waypoint((380.2, 948.0)), | 261.8 | 73 |
| exit | Waypoint((386.2, 944.2)), | 96.7 | 89 |
| exit_ | Waypoint((386.2, 944.2)), | 96.7 | 89 |
"""
self.map_init(plane=Jarilo_CorridorofFadingEchoes, floor="F1", position=(319.4, 949.3))
self.register_domain_exit(Waypoint((386.2, 944.2)), end_rotation=89)
@ -121,7 +121,7 @@ class Route(RouteBase):
| enemy2left | Waypoint((475.0, 462.4)), | 67.2 | 64 |
| node4 | Waypoint((493.0, 437.4)), | 4.1 | 359 |
| node3 | Waypoint((493.0, 449.0)), | 190.0 | 43 |
| exit | Waypoint((452.2, 392.2)), | 318.0 | 318 |
| exit_ | Waypoint((452.2, 392.2)), | 318.0 | 318 |
"""
self.map_init(plane=Jarilo_CorridorofFadingEchoes, floor="F1", position=(369.4, 439.2))
self.register_domain_exit(Waypoint((452.2, 392.2)), end_rotation=318)
@ -155,7 +155,7 @@ class Route(RouteBase):
| node3 | Waypoint((548.6, 135.0)), | 166.8 | 163 |
| item3 | Waypoint((562.4, 168.8)), | 157.2 | 154 |
| enemy3 | Waypoint((556.1, 192.5)), | 188.2 | 184 |
| exit | Waypoint((555.0, 204.8)), | 188.2 | 184 |
| exit_ | Waypoint((555.0, 204.8)), | 188.2 | 184 |
"""
self.map_init(plane=Jarilo_CorridorofFadingEchoes, floor="F1", position=(437.4, 122.9))
self.register_domain_exit(Waypoint((555.0, 204.8)), end_rotation=184)
@ -185,7 +185,7 @@ class Route(RouteBase):
| enemy1 | Waypoint((544.4, 128.5)), | 129.9 | 128 |
| node2 | Waypoint((554.6, 143.6)), | 166.6 | 158 |
| enemy2 | Waypoint((556.4, 206.8)), | 190.1 | 184 |
| exit | Waypoint((556.4, 206.8)), | 190.1 | 184 |
| exit_ | Waypoint((556.4, 206.8)), | 190.1 | 184 |
"""
self.map_init(plane=Jarilo_CorridorofFadingEchoes, floor="F1", position=(463.3, 123.5))
self.register_domain_exit(Waypoint((556.4, 206.8)), end_rotation=184)

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((84.4, 378.7)), | 334.8 | 331 |
| item | Waypoint((60.2, 358.5)), | 319.8 | 308 |
| enemy | Waypoint((56.2, 330.8)), | 340.7 | 149 |
| exit | Waypoint((57.4, 329.5)), | 22.8 | 334 |
| exit_ | Waypoint((57.4, 329.5)), | 22.8 | 334 |
"""
self.map_init(plane=Jarilo_GreatMine, floor="F1", position=(84.4, 378.7))
self.register_domain_exit(Waypoint((57.4, 329.5)), end_rotation=334)
@ -30,7 +30,7 @@ class Route(RouteBase):
| spawn | Waypoint((91.4, 392.4)), | 334.8 | 331 |
| item | Waypoint((60.2, 358.4)), | 308.0 | 304 |
| enemy | Waypoint((57.2, 330.8)), | 85.8 | 336 |
| exit | Waypoint((57.2, 330.8)), | 85.8 | 336 |
| exit_ | Waypoint((57.2, 330.8)), | 85.8 | 336 |
"""
self.map_init(plane=Jarilo_GreatMine, floor="F1", position=(91.4, 392.4))
self.register_domain_exit(Waypoint((57.2, 330.8)), end_rotation=336)
@ -48,7 +48,7 @@ class Route(RouteBase):
| spawn | Waypoint((133.3, 465.6)), | 334.8 | 331 |
| item | Waypoint((108.7, 448.1)), | 318.0 | 320 |
| enemy | Waypoint((110.1, 420.6)), | 337.4 | 338 |
| exit | Waypoint((104.0, 414.0)), | 334.8 | 331 |
| exit_ | Waypoint((104.0, 414.0)), | 334.8 | 331 |
"""
self.map_init(plane=Jarilo_GreatMine, floor="F1", position=(133.3, 465.6))
self.register_domain_exit(Waypoint((104.0, 414.0)), end_rotation=331)
@ -67,7 +67,7 @@ class Route(RouteBase):
| node | Waypoint((174.1, 269.0)), | 67.2 | 61 |
| item | Waypoint((180.4, 250.8)), | 36.0 | 31 |
| enemy | Waypoint((202.4, 256.6)), | 76.4 | 71 |
| exit | Waypoint((202.4, 256.6)), | 76.4 | 71 |
| exit_ | Waypoint((202.4, 256.6)), | 76.4 | 71 |
"""
self.map_init(plane=Jarilo_GreatMine, floor="F1", position=(149.7, 273.5))
self.register_domain_exit(Waypoint((202.4, 256.6)), end_rotation=71)
@ -88,7 +88,7 @@ class Route(RouteBase):
| enemy1 | Waypoint((218.2, 582.4)), | 129.8 | 304 |
| node2 | Waypoint((234.0, 586.6)), | 129.8 | 121 |
| enemy2 | Waypoint((244.8, 626.0)), | 182.7 | 177 |
| exit | Waypoint((243.4, 622.2)), | 2.6 | 174 |
| exit_ | Waypoint((243.4, 622.2)), | 2.6 | 174 |
"""
self.map_init(plane=Jarilo_GreatMine, floor="F1", position=(165.5, 537.8))
self.register_domain_exit(Waypoint((243.4, 622.2)), end_rotation=174)
@ -112,7 +112,7 @@ class Route(RouteBase):
| spawn | Waypoint((299.3, 255.3)), | 274.2 | 274 |
| item | Waypoint((282.4, 240.8)), | 295.5 | 292 |
| enemy | Waypoint((246.2, 248.4)), | 282.8 | 281 |
| exit | Waypoint((246.6, 248.8)), | 96.8 | 274 |
| exit_ | Waypoint((246.6, 248.8)), | 96.8 | 274 |
"""
self.map_init(plane=Jarilo_GreatMine, floor="F1", position=(299.3, 255.3))
self.register_domain_exit(Waypoint((246.6, 248.8)), end_rotation=274)
@ -133,7 +133,7 @@ class Route(RouteBase):
| item2 | Waypoint((378.2, 610.6)), | 143.8 | 232 |
| enemy3_X340Y595 | Waypoint((339.0, 595.4)), | 297.8 | 294 |
| enemy4 | Waypoint((312.7, 575.6)), | 312.1 | 318 |
| exit | Waypoint((315.6, 572.6)), | 334.7 | 329 |
| exit_ | Waypoint((315.6, 572.6)), | 334.7 | 329 |
"""
self.map_init(plane=Jarilo_GreatMine, floor="F1", position=(407.2, 572.8))
self.register_domain_exit(Waypoint((315.6, 572.6)), end_rotation=329)
@ -170,7 +170,7 @@ class Route(RouteBase):
| enemy4 | Waypoint((512.2, 548.2)), | 59.1 | 59 |
| item3 | Waypoint((460.3, 570.3)), | 193.0 | 188 |
| node4 | Waypoint((480.3, 575.6)), | 105.5 | 101 |
| exit | Waypoint((549.0, 515.6)), | 112.7 | 15 |
| exit_ | Waypoint((549.0, 515.6)), | 112.7 | 15 |
"""
self.map_init(plane=Jarilo_GreatMine, floor="F1", position=(485.5, 450.4))
self.register_domain_exit(Waypoint((549.0, 515.6)), end_rotation=15)
@ -209,7 +209,7 @@ class Route(RouteBase):
| enemy3 | Waypoint((485.1, 456.8)), | 102.9 | 4 |
| node1 | Waypoint((478.5, 576.5)), | 237.2 | 237 |
| item1 | Waypoint((461.4, 572.2)), | 289.1 | 288 |
| exit | Waypoint((485.1, 456.8)), | 102.9 | 4 |
| exit_ | Waypoint((485.1, 456.8)), | 102.9 | 4 |
"""
self.map_init(plane=Jarilo_GreatMine, floor="F1", position=(545.3, 513.0))
self.register_domain_exit(Waypoint((485.1, 456.8)), end_rotation=4)

View File

@ -16,7 +16,7 @@ class Route(RouteBase):
| item2 | Waypoint((130.4, 394.2)), | 12.7 | 6 |
| enemy2 | Waypoint((118.4, 380.7)), | 61.1 | 308 |
| enemy3 | Waypoint((58.4, 334.2)), | 318.8 | 322 |
| exit | Waypoint((56.8, 332.4)), | 333.0 | 329 |
| exit_ | Waypoint((56.8, 332.4)), | 333.0 | 329 |
"""
self.map_init(plane=Jarilo_RivetTown, floor="F1", position=(181.4, 439.2))
self.register_domain_exit(Waypoint((56.8, 332.4)), end_rotation=329)
@ -50,7 +50,7 @@ class Route(RouteBase):
| spawn | Waypoint((205.4, 439.5)), | 274.2 | 274 |
| item | Waypoint((168.6, 430.8)), | 311.8 | 308 |
| enemy | Waypoint((137.0, 438.1)), | 96.7 | 274 |
| exit | Waypoint((137.0, 438.1)), | 96.7 | 274 |
| exit_ | Waypoint((137.0, 438.1)), | 96.7 | 274 |
"""
self.map_init(plane=Jarilo_RivetTown, floor="F1", position=(205.4, 439.5))
self.register_domain_exit(Waypoint((137.0, 438.1)), end_rotation=274)
@ -69,7 +69,7 @@ class Route(RouteBase):
| spawn | Waypoint((209.4, 333.5)), | 190.1 | 181 |
| item | Waypoint((222.6, 371.5)), | 166.7 | 165 |
| enemy | Waypoint((206.2, 387.8)), | 190.1 | 191 |
| exit | Waypoint((209.2, 392.8)), | 189.0 | 184 |
| exit_ | Waypoint((209.2, 392.8)), | 189.0 | 184 |
"""
self.map_init(plane=Jarilo_RivetTown, floor="F1", position=(209.4, 333.5))
self.register_domain_exit(Waypoint((209.2, 392.8)), end_rotation=184)
@ -92,7 +92,7 @@ class Route(RouteBase):
| item2 | Waypoint((280.5, 188.5)), | 114.2 | 110 |
| enemy2middle | Waypoint((290.0, 174.6)), | 92.7 | 84 |
| enemy3 | Waypoint((319.6, 153.1)), | 76.4 | 73 |
| exit | Waypoint((317.4, 155.3)), | 60.9 | 73 |
| exit_ | Waypoint((317.4, 155.3)), | 60.9 | 73 |
"""
self.map_init(plane=Jarilo_RivetTown, floor="F1", position=(231.4, 211.1))
self.register_domain_exit(Waypoint((317.4, 155.3)), end_rotation=73)
@ -120,7 +120,7 @@ class Route(RouteBase):
| spawn | Waypoint((279.4, 301.6)), | 36.1 | 31 |
| item | Waypoint((302.6, 270.6)), | 59.1 | 54 |
| enemy | Waypoint((298.2, 246.0)), | 36.2 | 36 |
| exit | Waypoint((298.2, 246.0)), | 36.2 | 36 |
| exit_ | Waypoint((298.2, 246.0)), | 36.2 | 36 |
"""
self.map_init(plane=Jarilo_RivetTown, floor="F1", position=(279.4, 301.6))
self.register_domain_exit(Waypoint((298.2, 246.0)), end_rotation=36)
@ -143,7 +143,7 @@ class Route(RouteBase):
| item2 | Waypoint((326.2, 298.0)), | 151.8 | 140 |
| enemy2 | Waypoint((318.6, 334.8)), | 195.2 | 6 |
| enemy3 | Waypoint((316.4, 385.0)), | 223.8 | 45 |
| exit | Waypoint((314.6, 385.0)), | 289.0 | 188 |
| exit_ | Waypoint((314.6, 385.0)), | 289.0 | 188 |
"""
self.map_init(plane=Jarilo_RivetTown, floor="F1", position=(293.6, 243.5))
self.register_domain_exit(Waypoint((314.6, 385.0)), end_rotation=188)
@ -183,7 +183,7 @@ class Route(RouteBase):
| enemy1 | Waypoint((260.2, 184.6)), | 241.2 | 239 |
| item2 | Waypoint((240.4, 178.8)), | 276.0 | 274 |
| enemy2 | Waypoint((234.6, 204.8)), | 315.9 | 209 |
| exit | Waypoint((234.6, 204.8)), | 315.9 | 209 |
| exit_ | Waypoint((234.6, 204.8)), | 315.9 | 209 |
"""
self.map_init(plane=Jarilo_RivetTown, floor="F1", position=(323.4, 151.5))
self.register_domain_exit(Waypoint((234.6, 204.8)), end_rotation=209)

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((221.3, 426.1)), | 274.2 | 274 |
| item | Waypoint((195.9, 434.9)), | 237.2 | 234 |
| enemy | Waypoint((172.9, 425.9)), | 274.2 | 274 |
| exit | Waypoint((172.9, 425.9)), | 274.2 | 274 |
| exit_ | Waypoint((172.9, 425.9)), | 274.2 | 274 |
"""
self.map_init(plane=Jarilo_SilvermaneGuardRestrictedZone, floor="F1", position=(221.3, 426.1))
self.register_domain_exit(Waypoint((172.9, 425.9)), end_rotation=274)
@ -30,7 +30,7 @@ class Route(RouteBase):
| spawn | Waypoint((227.7, 425.5)), | 274.2 | 274 |
| item | Waypoint((208.3, 414.8)), | 303.8 | 301 |
| enemy | Waypoint((170.2, 426.2)), | 274.2 | 274 |
| exit | Waypoint((170.2, 426.2)), | 274.2 | 274 |
| exit_ | Waypoint((170.2, 426.2)), | 274.2 | 274 |
"""
self.map_init(plane=Jarilo_SilvermaneGuardRestrictedZone, floor="F1", position=(227.7, 425.5))
self.register_domain_exit(Waypoint((170.2, 426.2)), end_rotation=274)
@ -49,7 +49,7 @@ class Route(RouteBase):
| item1 | Waypoint((282.4, 434.2)), | 263.8 | 260 |
| enemy1 | Waypoint((252.6, 426.6)), | 283.0 | 276 |
| enemy2 | Waypoint((166.1, 424.5)), | 182.6 | 267 |
| exit | Waypoint((165.1, 425.2)), | 6.4 | 274 |
| exit_ | Waypoint((165.1, 425.2)), | 6.4 | 274 |
"""
self.map_init(plane=Jarilo_SilvermaneGuardRestrictedZone, floor="F1", position=(317.4, 425.4))
self.register_domain_exit(Waypoint((165.1, 425.2)), end_rotation=274)
@ -75,7 +75,7 @@ class Route(RouteBase):
| item2 | Waypoint((282.8, 434.6)), | 274.3 | 276 |
| enemy2 | Waypoint((249.3, 424.4)), | 274.2 | 271 |
| enemy3 | Waypoint((168.0, 424.4)), | 279.8 | 274 |
| exit | Waypoint((164.2, 426.2)), | 274.3 | 274 |
| exit_ | Waypoint((164.2, 426.2)), | 274.3 | 274 |
"""
self.map_init(plane=Jarilo_SilvermaneGuardRestrictedZone, floor="F1", position=(371.6, 419.4))
self.register_domain_exit(Waypoint((164.2, 426.2)), end_rotation=274)
@ -106,7 +106,7 @@ class Route(RouteBase):
| enemy1 | Waypoint((304.0, 424.2)), | 274.2 | 276 |
| enemy2 | Waypoint((247.9, 426.4)), | 11.2 | 45 |
| enemy3 | Waypoint((163.9, 426.5)), | 282.9 | 278 |
| exit | Waypoint((163.9, 426.5)), | 282.9 | 278 |
| exit_ | Waypoint((163.9, 426.5)), | 282.9 | 278 |
"""
self.map_init(plane=Jarilo_SilvermaneGuardRestrictedZone, floor="F1", position=(371.6, 425.3))
self.register_domain_exit(Waypoint((163.9, 426.5)), end_rotation=278)
@ -127,7 +127,7 @@ class Route(RouteBase):
| -------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((419.4, 179.8)), | 166.8 | 163 |
| enemy | Waypoint((437.0, 227.2)), | 166.6 | 156 |
| exit | Waypoint((437.0, 227.2)), | 166.6 | 156 |
| exit_ | Waypoint((437.0, 227.2)), | 166.6 | 156 |
"""
self.map_init(plane=Jarilo_SilvermaneGuardRestrictedZone, floor="F1", position=(419.4, 179.8))
self.register_domain_exit(Waypoint((437.0, 227.2)), end_rotation=156)
@ -143,7 +143,7 @@ class Route(RouteBase):
| spawn | Waypoint((421.5, 173.4)), | 172.8 | 165 |
| item | Waypoint((418.5, 218.3)), | 183.8 | 181 |
| enemy | Waypoint((440.2, 232.4)), | 166.6 | 154 |
| exit | Waypoint((440.2, 232.4)), | 166.6 | 154 |
| exit_ | Waypoint((440.2, 232.4)), | 166.6 | 154 |
"""
self.map_init(plane=Jarilo_SilvermaneGuardRestrictedZone, floor="F1", position=(421.5, 173.4))
self.register_domain_exit(Waypoint((440.2, 232.4)), end_rotation=154)
@ -165,7 +165,7 @@ class Route(RouteBase):
| enemy3 | Waypoint((542.6, 613.0)), | 239.8 | 237 |
| enemy4 | Waypoint((494.2, 611.8)), | 274.2 | 274 |
| item3 | Waypoint((536.4, 628.1)), | 210.2 | 204 |
| exit | Waypoint((494.2, 611.8)), | 274.2 | 274 |
| exit_ | Waypoint((494.2, 611.8)), | 274.2 | 274 |
"""
self.map_init(plane=Jarilo_SilvermaneGuardRestrictedZone, floor="F1", position=(547.1, 467.0))
self.register_domain_exit(Waypoint((494.2, 611.8)), end_rotation=274)

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((185.4, 361.4)), | 157.2 | 151 |
| enemy_X212Y398 | Waypoint((212.5, 398.4)), | 149.9 | 327 |
| item | Waypoint((232.4, 388.4)), | 129.9 | 133 |
| exit | Waypoint((217.4, 405.1)), | 166.7 | 168 |
| exit_ | Waypoint((217.4, 405.1)), | 166.7 | 168 |
"""
self.map_init(plane=Luofu_ArtisanshipCommission, floor="F1", position=(185.4, 361.4))
self.register_domain_exit(Waypoint((217.4, 405.1)), end_rotation=168)
@ -31,7 +31,7 @@ class Route(RouteBase):
| spawn | Waypoint((217.3, 807.4)), | 190.1 | 184 |
| item | Waypoint((221.2, 833.4)), | 166.7 | 163 |
| enemy | Waypoint((216.2, 860.2)), | 193.1 | 188 |
| exit | Waypoint((215.7, 861.4)), | 11.3 | 186 |
| exit_ | Waypoint((215.7, 861.4)), | 11.3 | 186 |
"""
self.map_init(plane=Luofu_ArtisanshipCommission, floor="F1", position=(217.3, 807.4))
self.register_domain_exit(Waypoint((215.7, 861.4)), end_rotation=186)
@ -50,7 +50,7 @@ class Route(RouteBase):
| spawn | Waypoint((655.5, 537.3)), | 6.7 | 1 |
| item | Waypoint((680.6, 503.2)), | 30.1 | 27 |
| enemy | Waypoint((656.2, 484.2)), | 11.1 | 184 |
| exit | Waypoint((647.0, 477.5)), | 357.8 | 352 |
| exit_ | Waypoint((647.0, 477.5)), | 357.8 | 352 |
"""
self.map_init(plane=Luofu_ArtisanshipCommission, floor="F1", position=(655.5, 537.3))
self.register_domain_exit(Waypoint((647.0, 477.5)), end_rotation=352)

View File

@ -13,7 +13,7 @@ class Route(RouteBase):
| node | Waypoint((218.8, 948.8)), | 282.9 | 278 |
| item | Waypoint((222.4, 934.6)), | 311.8 | 306 |
| enemy | Waypoint((197.2, 947.4)), | 282.6 | 260 |
| exit | Waypoint((193.1, 947.2)), | 12.8 | 274 |
| exit_ | Waypoint((193.1, 947.2)), | 12.8 | 274 |
"""
self.map_init(plane=Luofu_Cloudford, floor="F1", position=(240.4, 947.6))
self.register_domain_exit(Waypoint((193.1, 947.2)), end_rotation=274)
@ -37,7 +37,7 @@ class Route(RouteBase):
| item | Waypoint((236.8, 934.2)), | 302.7 | 299 |
| node | Waypoint((221.6, 946.2)), | 272.8 | 269 |
| enemy | Waypoint((193.7, 949.5)), | 143.8 | 269 |
| exit | Waypoint((194.4, 947.2)), | 4.2 | 274 |
| exit_ | Waypoint((194.4, 947.2)), | 4.2 | 274 |
"""
self.map_init(plane=Luofu_Cloudford, floor="F1", position=(257.3, 947))
self.register_domain_exit(Waypoint((194.4, 947.2)), end_rotation=274)
@ -67,7 +67,7 @@ class Route(RouteBase):
| item | Waypoint((236.8, 934.2)), | 302.7 | 299 |
| node | Waypoint((221.6, 946.2)), | 272.8 | 269 |
| enemy | Waypoint((193.7, 949.5)), | 143.8 | 269 |
| exit | Waypoint((194.4, 947.2)), | 4.2 | 274 |
| exit_ | Waypoint((194.4, 947.2)), | 4.2 | 274 |
"""
self.map_init(plane=Luofu_Cloudford, floor="F1", position=(257.3, 951.2))
self.register_domain_exit(Waypoint((194.4, 947.2)), end_rotation=274)
@ -90,7 +90,7 @@ class Route(RouteBase):
| spawn | Waypoint((283.4, 865.3)), | 6.7 | 4 |
| item | Waypoint((297.0, 841.4)), | 36.1 | 31 |
| enemy | Waypoint((282.4, 814.2)), | 8.1 | 1 |
| exit | Waypoint((284.5, 816.8)), | 5.7 | 1 |
| exit_ | Waypoint((284.5, 816.8)), | 5.7 | 1 |
"""
self.map_init(plane=Luofu_Cloudford, floor="F1", position=(281, 873))
self.register_domain_exit(Waypoint((284.5, 816.8)), end_rotation=1)
@ -112,7 +112,7 @@ class Route(RouteBase):
| spawn | Waypoint((283.4, 865.3)), | 6.7 | 4 |
| item | Waypoint((297.0, 841.4)), | 36.1 | 31 |
| enemy | Waypoint((282.4, 814.2)), | 8.1 | 1 |
| exit | Waypoint((284.5, 816.8)), | 5.7 | 1 |
| exit_ | Waypoint((284.5, 816.8)), | 5.7 | 1 |
"""
self.map_init(plane=Luofu_Cloudford, floor="F1", position=(283.4, 865.3))
self.register_domain_exit(Waypoint((284.5, 816.8)), end_rotation=1)
@ -133,7 +133,7 @@ class Route(RouteBase):
| enemy1_X341Y586 | Waypoint((341.2, 586.8)), | 274.2 | 274 |
| item2 | Waypoint((310.4, 582.2)), | 289.0 | 288 |
| enemy2 | Waypoint((275.9, 584.9)), | 274.1 | 271 |
| exit | Waypoint((275.9, 584.9)), | 274.1 | 271 |
| exit_ | Waypoint((275.9, 584.9)), | 274.1 | 271 |
"""
self.map_init(plane=Luofu_Cloudford, floor="F1", position=(431.5, 593.4))
self.register_domain_exit(Waypoint((275.9, 584.9)), end_rotation=271)
@ -166,7 +166,7 @@ class Route(RouteBase):
| enemy3 | Waypoint((344.9, 590.4)), | 191.8 | 357 |
| item4 | Waypoint((309.6, 580.2)), | 290.1 | 281 |
| enemy4 | Waypoint((269.3, 549.6)), | 275.8 | 278 |
| exit | Waypoint((271.3, 585.5)), | 285.0 | 274 |
| exit_ | Waypoint((271.3, 585.5)), | 285.0 | 274 |
"""
self.map_init(plane=Luofu_Cloudford, floor="F1", position=(435.4, 669.2))
self.register_domain_exit(Waypoint((271.3, 585.5)), end_rotation=274)

View File

@ -14,7 +14,7 @@ class Route(RouteBase):
| node2left | Waypoint((426.1, 222.3)), | 193.1 | 184 |
| node2right | Waypoint((402.8, 252.8)), | 244.9 | 253 |
| enemy3 | Waypoint((320.2, 266.4)), | 282.6 | 274 |
| exit | Waypoint((320.2, 266.4)), | 282.6 | 274 |
| exit_ | Waypoint((320.2, 266.4)), | 282.6 | 274 |
"""
self.map_init(plane=Luofu_Cloudford, floor="F2", position=(425.4, 111.6))
self.register_domain_exit(Waypoint((320.2, 266.4)), end_rotation=274)
@ -43,7 +43,7 @@ class Route(RouteBase):
| enemy2right | Waypoint((407.2, 253.0)), | 311.8 | 274 |
| item3 | Waypoint((382.4, 275.3)), | 250.8 | 251 |
| enemy3 | Waypoint((318.8, 267.0)), | 279.8 | 281 |
| exit | Waypoint((324.8, 268.5)), | 283.0 | 278 |
| exit_ | Waypoint((324.8, 268.5)), | 283.0 | 278 |
"""
self.map_init(plane=Luofu_Cloudford, floor="F2", position=(425.5, 171.6))
self.register_domain_exit(Waypoint((324.8, 268.5)), end_rotation=278)

View File

@ -16,7 +16,7 @@ class Route(RouteBase):
| enemy1left | Waypoint((384.2, 292.0)), | 12.7 | 186 |
| enemy2 | Waypoint((340.2, 281.8)), | 275.8 | 87 |
| enemy3 | Waypoint((283.6, 280.0)), | 282.7 | 276 |
| exit | Waypoint((278.4, 280.2)), | 274.2 | 271 |
| exit_ | Waypoint((278.4, 280.2)), | 274.2 | 271 |
"""
self.map_init(plane=Luofu_ScalegorgeWaterscape, floor="F1", position=(415.4, 261.6))
self.register_domain_exit(Waypoint((278.4, 280.2)), end_rotation=271)
@ -53,7 +53,7 @@ class Route(RouteBase):
| node | Waypoint((439.0, 388.5)), | 355.9 | 352 |
| enemy1 | Waypoint((434.0, 406.2)), | 274.2 | 274 |
| enemy2 | Waypoint((432.2, 367.2)), | 355.9 | 352 |
| exit | Waypoint((431.2, 363.2)), | 6.6 | 1 |
| exit_ | Waypoint((431.2, 363.2)), | 6.6 | 1 |
"""
self.map_init(plane=Luofu_ScalegorgeWaterscape, floor="F1", position=(467.5, 405.5))
self.register_domain_exit(Waypoint((431.2, 363.2)), end_rotation=1)
@ -76,7 +76,7 @@ class Route(RouteBase):
| node2 | Waypoint((482.8, 252.6)), | 337.3 | 336 |
| enemy2 | Waypoint((485.0, 211.7)), | 17.3 | 15 |
| item2 | Waypoint((472.6, 228.6)), | 342.0 | 343 |
| exit | Waypoint((485.0, 211.7)), | 17.3 | 15 |
| exit_ | Waypoint((485.0, 211.7)), | 17.3 | 15 |
"""
self.map_init(plane=Luofu_ScalegorgeWaterscape, floor="F1", position=(567.4, 280.2))
self.register_domain_exit(Waypoint((485.0, 211.7)), end_rotation=15)
@ -105,7 +105,7 @@ class Route(RouteBase):
| spawn | Waypoint((617.3, 99.4)), | 6.7 | 1 |
| item | Waypoint((610.5, 88.6)), | 337.2 | 334 |
| enemy | Waypoint((616.2, 64.4)), | 22.7 | 195 |
| exit | Waypoint((617.2, 66.6)), | 12.6 | 4 |
| exit_ | Waypoint((617.2, 66.6)), | 12.6 | 4 |
"""
self.map_init(plane=Luofu_ScalegorgeWaterscape, floor="F1", position=(617.3, 99.4))
self.register_domain_exit(Waypoint((617.2, 66.6)), end_rotation=4)
@ -142,7 +142,7 @@ class Route(RouteBase):
| spawn | Waypoint((791.2, 245.8)), | 22.7 | 18 |
| item | Waypoint((792.4, 224.5)), | 355.8 | 350 |
| enemy | Waypoint((802.3, 198.7)), | 22.7 | 20 |
| exit | Waypoint((801.6, 199.4)), | 210.2 | 13 |
| exit_ | Waypoint((801.6, 199.4)), | 210.2 | 13 |
"""
self.map_init(plane=Luofu_ScalegorgeWaterscape, floor="F1", position=(791.2, 245.8))
self.register_domain_exit(Waypoint((801.6, 199.4)), end_rotation=13)
@ -165,7 +165,7 @@ class Route(RouteBase):
| enemy2 | Waypoint((1128.4, 298.8)), | 241.2 | 253 |
| item2 | Waypoint((1125.0, 290.7)), | 352.8 | 359 |
| enemy4 | Waypoint((1091.8, 280.2)), | 275.8 | 276 |
| exit | Waypoint((1090.7, 280.4)), | 282.8 | 274 |
| exit_ | Waypoint((1090.7, 280.4)), | 282.8 | 274 |
"""
self.map_init(plane=Luofu_ScalegorgeWaterscape, floor="F1", position=(1181.0, 279.5))
self.register_domain_exit(Waypoint((1090.7, 280.4)), end_rotation=274)

View File

@ -30,7 +30,7 @@ class Route(RouteBase):
| -------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((203.8, 317.4)), | 96.7 | 91 |
| enemy | Waypoint((254.2, 318.9)), | 96.8 | 91 |
| exit | Waypoint((254.2, 318.9)), | 96.8 | 91 |
| exit_ | Waypoint((254.2, 318.9)), | 96.8 | 91 |
"""
self.map_init(plane=Luofu_StargazerNavalia, floor="F1", position=(203.8, 317.4))
self.register_domain_exit(Waypoint((254.2, 318.9)), end_rotation=91)
@ -50,7 +50,7 @@ class Route(RouteBase):
| node2 | Waypoint((178.9, 278.9)), | 198.7 | 195 |
| node3 | Waypoint((180.1, 299.2)), | 187.0 | 181 |
| enemy3 | Waypoint((247.6, 317.2)), | 198.7 | 96 |
| exit | Waypoint((247.6, 317.2)), | 198.7 | 96 |
| exit_ | Waypoint((247.6, 317.2)), | 198.7 | 96 |
"""
self.map_init(plane=Luofu_StargazerNavalia, floor="F1", position=(215.5, 192.6))
self.register_domain_exit(Waypoint((247.6, 317.2)), end_rotation=96)
@ -80,7 +80,7 @@ class Route(RouteBase):
| enemy1 | Waypoint((506.2, 596.2)), | 96.8 | 94 |
| item2 | Waypoint((522.8, 589.0)), | 64.9 | 64 |
| enemy3 | Waypoint((556.5, 599.8)), | 96.8 | 96 |
| exit | Waypoint((559.5, 601.5)), | 129.8 | 94 |
| exit_ | Waypoint((559.5, 601.5)), | 129.8 | 94 |
"""
self.map_init(plane=Luofu_StargazerNavalia, floor="F1", position=(432.7, 593.4))
self.register_domain_exit(Waypoint((559.5, 601.5)), end_rotation=94)
@ -103,7 +103,7 @@ class Route(RouteBase):
| spawn | Waypoint((499.6, 581.5)), | 157.2 | 151 |
| item | Waypoint((499.1, 608.9)), | 180.0 | 179 |
| enemy | Waypoint((519.0, 623.0)), | 149.8 | 149 |
| exit | Waypoint((524.4, 624.7)), | 166.7 | 161 |
| exit_ | Waypoint((524.4, 624.7)), | 166.7 | 161 |
"""
self.map_init(plane=Luofu_StargazerNavalia, floor="F1", position=(499.6, 581.5))
self.register_domain_exit(Waypoint((524.4, 624.7)), end_rotation=161)
@ -120,7 +120,7 @@ class Route(RouteBase):
| -------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((521.4, 447.5)), | 188.1 | 181 |
| enemy | Waypoint((521.2, 507.2)), | 98.8 | 186 |
| exit | Waypoint((521.2, 507.2)), | 98.8 | 186 |
| exit_ | Waypoint((521.2, 507.2)), | 98.8 | 186 |
"""
self.map_init(plane=Luofu_StargazerNavalia, floor="F1", position=(521.4, 447.5))
self.register_domain_exit(Waypoint((521.2, 507.2)), end_rotation=186)

View File

@ -15,7 +15,7 @@ class Route(RouteBase):
| enemy2 | Waypoint((572.4, 180.2)), | 284.6 | 94 |
| node3 | Waypoint((618.0, 182.4)), | 274.2 | 105 |
| enemy3 | Waypoint((622.2, 170.0)), | 284.7 | 94 |
| exit | Waypoint((619.5, 169.4)), | 193.0 | 6 |
| exit_ | Waypoint((619.5, 169.4)), | 193.0 | 6 |
"""
self.map_init(plane=Luofu_StargazerNavalia, floor="F2", position=(479.5, 187.5))
self.register_domain_exit(Waypoint((619.5, 169.4)), end_rotation=6)
@ -50,7 +50,7 @@ class Route(RouteBase):
| enemy1 | Waypoint((571.9, 180.5)), | 282.8 | 276 |
| item2 | Waypoint((504.8, 177.2)), | 283.0 | 278 |
| enemy2 | Waypoint((488.6, 188.2)), | 282.3 | 274 |
| exit | Waypoint((486.5, 191.4)), | 182.7 | 274 |
| exit_ | Waypoint((486.5, 191.4)), | 182.7 | 274 |
"""
self.map_init(plane=Luofu_StargazerNavalia, floor="F2", position=(627.8, 179.5))
self.register_domain_exit(Waypoint((486.5, 191.4)), end_rotation=274)

View File

@ -14,7 +14,7 @@ class Route(RouteBase):
| spawn | Waypoint((477.6, 233.5)), | 319.8 | 320 |
| enemy | Waypoint((444.7, 197.9)), | 318.0 | 318 |
| reward | Waypoint((442.6, 186.3)), | 356.3 | 354 |
| exit | Waypoint((431.1, 194.6)), | 290.1 | 290 |
| exit_ | Waypoint((431.1, 194.6)), | 290.1 | 290 |
"""
self.map_init(plane=Herta_StorageZone, floor="F1", position=(477.6, 233.5))
enemy = Waypoint((444.7, 197.9))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((657.1, 247.5)), | 96.7 | 91 |
| enemy | Waypoint((726.4, 246.6)), | 99.0 | 94 |
| reward | Waypoint((738.2, 254.2)), | 166.6 | 112 |
| exit | Waypoint((746.0, 240.0)), | 82.8 | 75 |
| exit_ | Waypoint((746.0, 240.0)), | 82.8 | 75 |
"""
self.map_init(plane=Herta_SupplyZone, floor="F2", position=(641, 247.5))
enemy = Waypoint((726.4, 246.6))
@ -39,7 +39,7 @@ class Route(RouteBase):
| spawn | Waypoint((657.1, 247.5)), | 96.7 | 91 |
| enemy | Waypoint((726.4, 246.6)), | 99.0 | 94 |
| reward | Waypoint((738.2, 254.2)), | 166.6 | 112 |
| exit | Waypoint((746.0, 240.0)), | 82.8 | 75 |
| exit_ | Waypoint((746.0, 240.0)), | 82.8 | 75 |
"""
self.map_init(plane=Herta_SupplyZone, floor="F2", position=(674, 247.5))
enemy = Waypoint((726.4, 246.6))
@ -58,7 +58,7 @@ class Route(RouteBase):
| spawn | Waypoint((657.1, 247.5)), | 96.7 | 91 |
| enemy | Waypoint((726.4, 246.6)), | 99.0 | 94 |
| reward | Waypoint((738.2, 254.2)), | 166.6 | 112 |
| exit | Waypoint((746.0, 240.0)), | 82.8 | 75 |
| exit_ | Waypoint((746.0, 240.0)), | 82.8 | 75 |
"""
self.map_init(plane=Herta_SupplyZone, floor="F2", position=(680, 247.5))
enemy = Waypoint((726.4, 246.6))
@ -77,7 +77,7 @@ class Route(RouteBase):
| spawn | Waypoint((657.1, 247.5)), | 96.7 | 91 |
| enemy | Waypoint((726.4, 246.6)), | 99.0 | 94 |
| reward | Waypoint((738.2, 254.2)), | 166.6 | 112 |
| exit | Waypoint((746.0, 240.0)), | 82.8 | 75 |
| exit_ | Waypoint((746.0, 240.0)), | 82.8 | 75 |
"""
self.map_init(plane=Herta_SupplyZone, floor="F2", position=(682, 247.5))
enemy = Waypoint((726.4, 246.6))
@ -96,7 +96,7 @@ class Route(RouteBase):
| spawn | Waypoint((657.1, 247.5)), | 96.7 | 91 |
| enemy | Waypoint((726.4, 246.6)), | 99.0 | 94 |
| reward | Waypoint((738.2, 254.2)), | 166.6 | 112 |
| exit | Waypoint((746.0, 240.0)), | 82.8 | 75 |
| exit_ | Waypoint((746.0, 240.0)), | 82.8 | 75 |
"""
self.map_init(plane=Herta_SupplyZone, floor="F2", position=(684, 247.5))
enemy = Waypoint((726.4, 246.6))
@ -115,7 +115,7 @@ class Route(RouteBase):
| spawn | Waypoint((657.1, 247.5)), | 96.7 | 91 |
| enemy | Waypoint((726.4, 246.6)), | 99.0 | 94 |
| reward | Waypoint((738.2, 254.2)), | 166.6 | 112 |
| exit | Waypoint((746.0, 240.0)), | 82.8 | 75 |
| exit_ | Waypoint((746.0, 240.0)), | 82.8 | 75 |
"""
self.map_init(plane=Herta_SupplyZone, floor="F2", position=(657.1, 247.5))
enemy = Waypoint((726.4, 246.6))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((351.4, 641.3)), | 274.2 | 274 |
| enemy | Waypoint((304.3, 640.6)), | 274.2 | 274 |
| reward | Waypoint((293.8, 632.4)), | 290.2 | 288 |
| exit | Waypoint((286.4, 646.7)), | 244.9 | 258 |
| exit_ | Waypoint((286.4, 646.7)), | 244.9 | 258 |
"""
self.map_init(plane=Jarilo_BackwaterPass, floor="F1", position=(351.4, 641.3))
enemy = Waypoint((304.3, 640.6))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((415.5, 947.9)), | 96.7 | 91 |
| enemy | Waypoint((464.0, 953.0)), | 96.8 | 94 |
| reward | Waypoint((472.7, 958.5)), | 214.6 | 114 |
| exit | Waypoint((480.0, 944.0)), | 92.7 | 84 |
| exit_ | Waypoint((480.0, 944.0)), | 92.7 | 84 |
"""
self.map_init(plane=Jarilo_CorridorofFadingEchoes, floor="F1", position=(415.5, 933))
enemy = Waypoint((464.0, 953.0))
@ -37,7 +37,7 @@ class Route(RouteBase):
| spawn | Waypoint((415.5, 947.9)), | 96.7 | 91 |
| enemy | Waypoint((464.0, 953.0)), | 96.8 | 94 |
| reward | Waypoint((472.7, 958.5)), | 214.6 | 114 |
| exit | Waypoint((480.0, 944.0)), | 92.7 | 84 |
| exit_ | Waypoint((480.0, 944.0)), | 92.7 | 84 |
"""
self.map_init(plane=Jarilo_CorridorofFadingEchoes, floor="F1", position=(415.5, 947.9))
enemy = Waypoint((464.0, 953.0))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((175.5, 273.5)), | 274.2 | 274 |
| enemy | Waypoint((128.5, 273.0)), | 282.9 | 271 |
| reward | Waypoint((116.8, 265.0)), | 293.1 | 290 |
| exit | Waypoint((111.5, 280.3)), | 250.7 | 248 |
| exit_ | Waypoint((111.5, 280.3)), | 250.7 | 248 |
"""
self.map_init(plane=Jarilo_GreatMine, floor="F1", position=(175.5, 273.5))
enemy = Waypoint((128.5, 273.0))
@ -31,7 +31,7 @@ class Route(RouteBase):
| spawn | Waypoint((303.4, 489.3)), | 6.7 | 4 |
| enemy | Waypoint((304.2, 441.8)), | 6.7 | 4 |
| reward | Waypoint((310.9, 430.8)), | 30.1 | 27 |
| exit | Waypoint((296.5, 421.4)), | 342.1 | 343 |
| exit_ | Waypoint((296.5, 421.4)), | 342.1 | 343 |
"""
self.map_init(plane=Jarilo_GreatMine, floor="F1", position=(303.4, 489.3))
enemy = Waypoint((304.2, 441.8))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((149.9, 435.6)), | 96.7 | 91 |
| enemy | Waypoint((197.4, 437.1)), | 96.8 | 94 |
| reward | Waypoint((208.4, 441.0)), | 102.9 | 98 |
| exit | Waypoint((216.4, 428.6)), | 96.7 | 94 |
| exit_ | Waypoint((216.4, 428.6)), | 96.7 | 94 |
"""
self.map_init(plane=Jarilo_RivetTown, floor="F1", position=(149.9, 435.6))
enemy = Waypoint((197.4, 437.1))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((189.5, 81.9)), | 231.7 | 228 |
| enemy | Waypoint((155.4, 119.5)), | 191.8 | 223 |
| reward | Waypoint((145.0, 122.4)), | 256.7 | 251 |
| exit | Waypoint((151.1, 134.2)), | 203.1 | 198 |
| exit_ | Waypoint((151.1, 134.2)), | 203.1 | 198 |
"""
self.map_init(plane=Jarilo_RivetTown, floor="F2", position=(189.5, 81.9))
enemy = Waypoint((155.4, 119.5))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((225.3, 425.9)), | 274.2 | 274 |
| enemy | Waypoint((170.4, 428.6)), | 282.9 | 278 |
| reward | Waypoint((166.7, 419.1)), | 289.0 | 288 |
| exit | Waypoint((159.6, 434.6)), | 282.9 | 278 |
| exit_ | Waypoint((159.6, 434.6)), | 282.9 | 278 |
"""
self.map_init(plane=Jarilo_SilvermaneGuardRestrictedZone, floor="F1", position=(225.3, 425.9))
enemy = Waypoint((170.4, 428.6))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((506.0, 495.4)), | 96.7 | 91 |
| enemy | Waypoint((554.0, 492.2)), | 96.7 | 91 |
| reward | Waypoint((564.8, 498.9)), | 134.2 | 128 |
| exit | Waypoint((572.8, 482.4)), | 76.4 | 68 |
| exit_ | Waypoint((572.8, 482.4)), | 76.4 | 68 |
"""
self.map_init(plane=Luofu_ArtisanshipCommission, floor="F1", position=(506.0, 495.4))
enemy = Waypoint((554.0, 492.2))

View File

@ -14,7 +14,7 @@ class Route(RouteBase):
| spawn | Waypoint((337.3, 1003.4)), | 6.7 | 4 |
| enemy | Waypoint((336.2, 962.2)), | 6.7 | 4 |
| reward | Waypoint((342.9, 954.8)), | 44.2 | 31 |
| exit | Waypoint((328.8, 942.8)), | 316.1 | 331 |
| exit_ | Waypoint((328.8, 942.8)), | 316.1 | 331 |
"""
self.map_init(plane=Luofu_Cloudford, floor="F1", position=(337.3, 1003.4))
enemy = Waypoint((336.2, 962.2))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((1368.9, 261.5)), | 96.7 | 91 |
| enemy | Waypoint((1402.5, 260.6)), | 96.8 | 91 |
| reward | Waypoint((1408.8, 266.8)), | 135.8 | 133 |
| exit | Waypoint((1415.0, 255.4)), | 67.2 | 64 |
| exit_ | Waypoint((1415.0, 255.4)), | 67.2 | 64 |
"""
self.map_init(plane=Luofu_ScalegorgeWaterscape, floor="F1", position=(1368.9, 261.5))
enemy = Waypoint((1402.5, 260.6))

View File

@ -14,7 +14,7 @@ class Route(RouteBase):
| spawn | Waypoint((617.5, 511.5)), | 96.7 | 91 |
| enemy | Waypoint((664.6, 512.6)), | 96.8 | 94 |
| reward | Waypoint((677.1, 521.2)), | 212.8 | 108 |
| exit | Waypoint((684.6, 505.0)), | 91.3 | 82 |
| exit_ | Waypoint((684.6, 505.0)), | 91.3 | 82 |
"""
self.map_init(plane=Luofu_StargazerNavalia, floor="F1", position=(617.5, 511.5))
enemy = Waypoint((664.6, 512.6))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((363.4, 166.9)), | 274.2 | 274 |
| item | Waypoint((332.8, 172.0)), | 263.8 | 260 |
| event | Waypoint((318.9, 155.2)), | 290.1 | 285 |
| exit | Waypoint((314.3, 164.1)), | 276.0 | 271 |
| exit_ | Waypoint((314.3, 164.1)), | 276.0 | 271 |
"""
self.map_init(plane=Herta_StorageZone, floor="F2", position=(363.4, 166.9))
self.register_domain_exit(Waypoint((314.3, 164.1)), end_rotation=271)
@ -30,7 +30,7 @@ class Route(RouteBase):
| spawn | Waypoint((363.4, 166.9)), | 274.2 | 274 |
| item | Waypoint((332.8, 172.0)), | 263.8 | 260 |
| event | Waypoint((318.9, 155.2)), | 290.1 | 285 |
| exit | Waypoint((314.3, 164.1)), | 276.0 | 271 |
| exit_ | Waypoint((314.3, 164.1)), | 276.0 | 271 |
"""
self.map_init(plane=Herta_StorageZone, floor="F2", position=(363.4, 166.9))
self.register_domain_exit(Waypoint((314.3, 164.1)), end_rotation=271)

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((219.6, 113.1)), | 96.7 | 91 |
| item | Waypoint((230.9, 106.7)), | 326.8 | 80 |
| event | Waypoint((256.6, 118.2)), | 96.8 | 96 |
| exit | Waypoint((262.5, 112.9)), | 96.7 | 91 |
| exit_ | Waypoint((262.5, 112.9)), | 96.7 | 91 |
"""
self.map_init(plane=Herta_SupplyZone, floor="F2Rogue", position=(209.6, 113.1))
self.register_domain_exit(Waypoint((262.5, 112.9)), end_rotation=91)
@ -36,7 +36,7 @@ class Route(RouteBase):
| spawn | Waypoint((219.6, 113.1)), | 96.7 | 91 |
| item | Waypoint((230.9, 106.7)), | 326.8 | 80 |
| event | Waypoint((256.6, 118.2)), | 96.8 | 96 |
| exit | Waypoint((262.5, 112.9)), | 96.7 | 91 |
| exit_ | Waypoint((262.5, 112.9)), | 96.7 | 91 |
"""
self.map_init(plane=Herta_SupplyZone, floor="F2Rogue", position=(214.6, 113.1))
self.register_domain_exit(Waypoint((262.5, 112.9)), end_rotation=91)
@ -60,7 +60,7 @@ class Route(RouteBase):
| spawn | Waypoint((219.6, 113.1)), | 96.7 | 91 |
| item | Waypoint((230.9, 106.7)), | 326.8 | 80 |
| event | Waypoint((256.6, 118.2)), | 96.8 | 96 |
| exit | Waypoint((262.5, 112.9)), | 96.7 | 91 |
| exit_ | Waypoint((262.5, 112.9)), | 96.7 | 91 |
"""
self.map_init(plane=Herta_SupplyZone, floor="F2Rogue", position=(219.6, 113.1))
self.register_domain_exit(Waypoint((262.5, 112.9)), end_rotation=91)

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((437.5, 101.5)), | 96.7 | 91 |
| item | Waypoint((458.6, 92.2)), | 67.2 | 57 |
| event | Waypoint((476.8, 108.9)), | 103.8 | 96 |
| exit | Waypoint((483.4, 105.3)), | 4.1 | 89 |
| exit_ | Waypoint((483.4, 105.3)), | 4.1 | 89 |
"""
self.map_init(plane=Jarilo_BackwaterPass, floor="F1", position=(437.5, 101.5))
self.register_domain_exit(Waypoint((483.4, 105.3)), end_rotation=89)
@ -29,7 +29,7 @@ class Route(RouteBase):
| -------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((553.3, 643.5)), | 274.2 | 274 |
| event | Waypoint((515.2, 633.2)), | 135.9 | 311 |
| exit | Waypoint((505.0, 642.3)), | 263.8 | 264 |
| exit_ | Waypoint((505.0, 642.3)), | 263.8 | 264 |
"""
self.map_init(plane=Jarilo_BackwaterPass, floor="F1", position=(553.3, 643.5))
self.register_domain_exit(Waypoint((505.0, 642.3)), end_rotation=264)
@ -45,7 +45,7 @@ class Route(RouteBase):
| spawn | Waypoint((613.3, 755.7)), | 319.8 | 318 |
| item | Waypoint((603.0, 734.6)), | 342.6 | 343 |
| event | Waypoint((586.8, 724.7)), | 318.0 | 315 |
| exit | Waypoint((576.9, 728.6)), | 126.2 | 304 |
| exit_ | Waypoint((576.9, 728.6)), | 126.2 | 304 |
"""
self.map_init(plane=Jarilo_BackwaterPass, floor="F1", position=(613.3, 755.7))
self.register_domain_exit(Waypoint((576.9, 728.6)), end_rotation=304)

View File

@ -11,7 +11,7 @@ class Route(RouteBase):
| -------------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((236.6, 903.4)), | 274.2 | 274 |
| event_X194Y898 | Waypoint((194.4, 898.0)), | 289.1 | 290 |
| exit | Waypoint((175.0, 902.8)), | 12.8 | 274 |
| exit_ | Waypoint((175.0, 902.8)), | 12.8 | 274 |
"""
self.map_init(plane=Jarilo_CorridorofFadingEchoes, floor="F1", position=(236.6, 903.4))
self.register_domain_exit(Waypoint((175.0, 902.8)), end_rotation=274)
@ -27,7 +27,7 @@ class Route(RouteBase):
| spawn | Waypoint((265.5, 963.6)), | 233.8 | 230 |
| item | Waypoint((250.1, 970.4)), | 157.2 | 244 |
| event | Waypoint((231.8, 991.0)), | 233.9 | 230 |
| exit | Waypoint((227.6, 1000.4)), | 229.9 | 228 |
| exit_ | Waypoint((227.6, 1000.4)), | 229.9 | 228 |
"""
self.map_init(plane=Jarilo_CorridorofFadingEchoes, floor="F1", position=(265.5, 963.6))
self.register_domain_exit(Waypoint((227.6, 1000.4)), end_rotation=228)
@ -44,7 +44,7 @@ class Route(RouteBase):
| -------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((309.3, 537.8)), | 190.1 | 184 |
| event | Waypoint((302.6, 580.8)), | 193.1 | 191 |
| exit | Waypoint((308.9, 591.0)), | 187.1 | 181 |
| exit_ | Waypoint((308.9, 591.0)), | 187.1 | 181 |
"""
self.map_init(plane=Jarilo_CorridorofFadingEchoes, floor="F1", position=(309.3, 537.8))
self.register_domain_exit(Waypoint((308.9, 591.0)), end_rotation=181)

View File

@ -11,7 +11,7 @@ class Route(RouteBase):
| -------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((153.8, 271.7)), | 79.8 | 75 |
| event | Waypoint((198.5, 257.0)), | 87.9 | 82 |
| exit | Waypoint((198.5, 258.5)), | 342.3 | 80 |
| exit_ | Waypoint((198.5, 258.5)), | 342.3 | 80 |
"""
self.map_init(plane=Jarilo_GreatMine, floor="F1", position=(153.8, 271.7))
self.register_domain_exit(Waypoint((198.5, 258.5)), end_rotation=80)
@ -26,7 +26,7 @@ class Route(RouteBase):
| -------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((277.5, 605.9)), | 239.8 | 237 |
| event | Waypoint((242.2, 618.8)), | 247.1 | 241 |
| exit | Waypoint((241.2, 628.9)), | 149.1 | 241 |
| exit_ | Waypoint((241.2, 628.9)), | 149.1 | 241 |
"""
self.map_init(plane=Jarilo_GreatMine, floor="F1", position=(277.5, 605.9))
self.register_domain_exit(Waypoint((241.2, 628.9)), end_rotation=241)

View File

@ -11,7 +11,7 @@ class Route(RouteBase):
| -------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((157.4, 435.5)), | 96.7 | 91 |
| event | Waypoint((200.4, 426.5)), | 76.4 | 73 |
| exit | Waypoint((211.2, 435.4)), | 96.7 | 91 |
| exit_ | Waypoint((211.2, 435.4)), | 96.7 | 91 |
"""
self.map_init(plane=Jarilo_RivetTown, floor="F1", position=(157.4, 435.5))
self.register_domain_exit(Waypoint((211.2, 435.4)), end_rotation=91)
@ -27,7 +27,7 @@ class Route(RouteBase):
| spawn | Waypoint((209.3, 397.9)), | 6.7 | 4 |
| item | Waypoint((220.9, 378.0)), | 36.2 | 34 |
| event | Waypoint((218.0, 356.2)), | 12.7 | 8 |
| exit | Waypoint((208.3, 349.2)), | 12.7 | 1 |
| exit_ | Waypoint((208.3, 349.2)), | 12.7 | 1 |
"""
self.map_init(plane=Jarilo_RivetTown, floor="F1", position=(209.3, 397.9))
self.register_domain_exit(Waypoint((208.3, 349.2)), end_rotation=1)

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((377.4, 505.6)), | 96.7 | 91 |
| item | Waypoint((397.0, 514.4)), | 119.8 | 117 |
| event | Waypoint((422.2, 506.4)), | 92.7 | 84 |
| exit | Waypoint((423.8, 505.7)), | 96.8 | 91 |
| exit_ | Waypoint((423.8, 505.7)), | 96.8 | 91 |
"""
self.map_init(plane=Jarilo_SilvermaneGuardRestrictedZone, floor="F1", position=(377.4, 505.6))
self.register_domain_exit(Waypoint((423.8, 505.7)), end_rotation=91)
@ -30,7 +30,7 @@ class Route(RouteBase):
| spawn | Waypoint((439.3, 237.1)), | 354.1 | 348 |
| item | Waypoint((440.8, 215.2)), | 15.6 | 11 |
| event | Waypoint((434.8, 192.4)), | 355.9 | 359 |
| exit | Waypoint((428.6, 190.4)), | 76.4 | 338 |
| exit_ | Waypoint((428.6, 190.4)), | 76.4 | 338 |
"""
self.map_init(plane=Jarilo_SilvermaneGuardRestrictedZone, floor="F1", position=(439.3, 237.1))
self.register_domain_exit(Waypoint((428.6, 190.4)), end_rotation=338)
@ -48,7 +48,7 @@ class Route(RouteBase):
| spawn | Waypoint((509.4, 541.3)), | 96.7 | 91 |
| item | Waypoint((539.4, 533.0)), | 76.4 | 66 |
| event | Waypoint((552.9, 547.7)), | 105.5 | 98 |
| exit | Waypoint((557.1, 543.0)), | 96.8 | 89 |
| exit_ | Waypoint((557.1, 543.0)), | 96.8 | 89 |
"""
self.map_init(plane=Jarilo_SilvermaneGuardRestrictedZone, floor="F1", position=(509.4, 541.3))
self.register_domain_exit(Waypoint((557.1, 543.0)), end_rotation=89)

View File

@ -11,7 +11,7 @@ class Route(RouteBase):
| -------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((167.8, 491.0)), | 96.7 | 91 |
| event | Waypoint((218.7, 491.1)), | 96.7 | 94 |
| exit | Waypoint((216.9, 490.9)), | 190.0 | 89 |
| exit_ | Waypoint((216.9, 490.9)), | 190.0 | 89 |
"""
self.map_init(plane=Luofu_ArtisanshipCommission, floor="F1", position=(167.8, 491.0))
self.register_domain_exit(Waypoint((216.9, 490.9)), end_rotation=89)
@ -45,7 +45,7 @@ class Route(RouteBase):
| spawn | Waypoint((521.8, 63.6)), | 96.7 | 91 |
| item | Waypoint((536.8, 51.1)), | 62.6 | 57 |
| event | Waypoint((572.0, 64.2)), | 96.7 | 91 |
| exit | Waypoint((572.8, 65.3)), | 193.0 | 91 |
| exit_ | Waypoint((572.8, 65.3)), | 193.0 | 91 |
"""
self.map_init(plane=Luofu_ArtisanshipCommission, floor="F1", position=(521.8, 63.6))
self.register_domain_exit(Waypoint((572.8, 65.3)), end_rotation=91)

View File

@ -11,7 +11,7 @@ class Route(RouteBase):
| -------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((241.4, 947.5)), | 274.2 | 274 |
| event | Waypoint((199.0, 940.8)), | 300.1 | 294 |
| exit | Waypoint((193.1, 947.2)), | 12.8 | 274 |
| exit_ | Waypoint((193.1, 947.2)), | 12.8 | 274 |
"""
self.map_init(plane=Luofu_Cloudford, floor="F1", position=(241.4, 947.5))
self.register_domain_exit(Waypoint((193.1, 947.2)), end_rotation=274)
@ -27,7 +27,7 @@ class Route(RouteBase):
| spawn | Waypoint((283.2, 865.2)), | 6.7 | 4 |
| item | Waypoint((272.2, 840.2)), | 332.7 | 327 |
| event | Waypoint((291.8, 822.2)), | 26.8 | 22 |
| exit | Waypoint((285.3, 818.1)), | 99.0 | 1 |
| exit_ | Waypoint((285.3, 818.1)), | 99.0 | 1 |
"""
self.map_init(plane=Luofu_Cloudford, floor="F1", position=(281, 873))
self.register_domain_exit(Waypoint((285.3, 818.1)), end_rotation=1)
@ -51,7 +51,7 @@ class Route(RouteBase):
| spawn | Waypoint((283.2, 865.2)), | 6.7 | 4 |
| item | Waypoint((272.2, 840.2)), | 332.7 | 327 |
| event | Waypoint((291.8, 822.2)), | 26.8 | 22 |
| exit | Waypoint((285.3, 818.1)), | 99.0 | 1 |
| exit_ | Waypoint((285.3, 818.1)), | 99.0 | 1 |
"""
self.map_init(plane=Luofu_Cloudford, floor="F1", position=(283.2, 865.2))
self.register_domain_exit(Waypoint((285.3, 818.1)), end_rotation=1)
@ -69,7 +69,7 @@ class Route(RouteBase):
| spawn | Waypoint((537.4, 373.3)), | 96.7 | 91 |
| item | Waypoint((567.0, 346.6)), | 96.7 | 91 |
| event | Waypoint((580.8, 363.0)), | 94.2 | 91 |
| exit | Waypoint((593.4, 373.4)), | 96.7 | 94 |
| exit_ | Waypoint((593.4, 373.4)), | 96.7 | 94 |
"""
self.map_init(plane=Luofu_Cloudford, floor="F1", position=(537.4, 373.3))
self.register_domain_exit(Waypoint((593.4, 373.4)), end_rotation=94)

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| -------------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((499.5, 135.3)), | 190.1 | 184 |
| event_X500Y169 | Waypoint((500.8, 169.1)), | 193.0 | 186 |
| exit | Waypoint((499.2, 169.4)), | 187.1 | 179 |
| exit_ | Waypoint((499.2, 169.4)), | 187.1 | 179 |
"""
self.map_init(plane=Luofu_ScalegorgeWaterscape, floor="F1", position=(499.5, 135.3))
self.register_domain_exit(Waypoint((499.2, 169.4)), end_rotation=179)
@ -29,7 +29,7 @@ class Route(RouteBase):
| spawn | Waypoint((619.4, 387.3)), | 190.1 | 184 |
| item | Waypoint((626.2, 408.2)), | 157.2 | 151 |
| event | Waypoint((622.3, 422.5)), | 190.1 | 186 |
| exit | Waypoint((619.0, 423.6)), | 190.1 | 184 |
| exit_ | Waypoint((619.0, 423.6)), | 190.1 | 184 |
"""
self.map_init(plane=Luofu_ScalegorgeWaterscape, floor="F1", position=(619.4, 387.3))
self.register_domain_exit(Waypoint((619.0, 423.6)), end_rotation=184)
@ -46,7 +46,7 @@ class Route(RouteBase):
| -------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((714.4, 243.2)), | 274.2 | 274 |
| event | Waypoint((678.9, 243.0)), | 274.2 | 274 |
| exit | Waypoint((677.4, 243.2)), | 274.2 | 271 |
| exit_ | Waypoint((677.4, 243.2)), | 274.2 | 271 |
"""
self.map_init(plane=Luofu_ScalegorgeWaterscape, floor="F1", position=(714.4, 243.2))
self.register_domain_exit(Waypoint((677.4, 243.2)), end_rotation=271)

View File

@ -13,7 +13,7 @@ class Route(RouteBase):
| -------------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((249.4, 498.5)), | 190.1 | 184 |
| event_X236Y528 | Waypoint((236.8, 528.9)), | 188.1 | 181 |
| exit | Waypoint((245.3, 550.1)), | 282.9 | 181 |
| exit_ | Waypoint((245.3, 550.1)), | 282.9 | 181 |
"""
self.map_init(plane=Luofu_StargazerNavalia, floor="F1", position=(249.4, 498.5))
self.register_domain_exit(Waypoint((245.3, 550.1)), end_rotation=181)
@ -29,7 +29,7 @@ class Route(RouteBase):
| spawn | Waypoint((521.6, 595.4)), | 190.1 | 184 |
| item_X504Y610 | Waypoint((504.0, 610.0)), | 188.9 | 186 |
| event_X510Y626 | Waypoint((510.6, 626.4)), | 282.9 | 181 |
| exit | Waypoint((522.2, 630.6)), | 190.0 | 184 |
| exit_ | Waypoint((522.2, 630.6)), | 190.0 | 184 |
"""
self.map_init(plane=Luofu_StargazerNavalia, floor="F1", position=(521.6, 595.4))
self.register_domain_exit(Waypoint((522.2, 630.6)), end_rotation=184)

View File

@ -11,7 +11,7 @@ class Route(RouteBase):
| -------- | ------------------------- | --------- | -------- |
| spawn | Waypoint((579.8, 183.5)), | 96.7 | 91 |
| event | Waypoint((615.3, 195.5)), | 105.6 | 66 |
| exit | Waypoint((622.1, 186.3)), | 96.7 | 91 |
| exit_ | Waypoint((622.1, 186.3)), | 96.7 | 91 |
"""
self.map_init(plane=Luofu_StargazerNavalia, floor="F2", position=(579.8, 183.5))
self.register_domain_exit(Waypoint((622.1, 186.3)), end_rotation=91)

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((703.2, 267.6)), | 300.1 | 292 |
| item_X690Y255 | Waypoint((690.6, 255.0)), | 327.8 | 322 |
| herta | Waypoint((660.9, 244.9)), | 311.8 | 308 |
| exit | Waypoint((645.3, 251.4)), | 294.6 | 292 |
| exit_ | Waypoint((645.3, 251.4)), | 294.6 | 292 |
"""
self.map_init(plane=Herta_StorageZone, floor="F1", position=(703.2, 267.6))
item_X690Y255 = Waypoint((690.6, 255.0))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((554.6, 245.0)), | 274.2 | 274 |
| item | Waypoint((541.9, 238.4)), | 308.0 | 301 |
| herta | Waypoint((506.8, 238.4)), | 283.0 | 281 |
| exit | Waypoint((495.0, 244.8)), | 283.0 | 274 |
| exit_ | Waypoint((495.0, 244.8)), | 283.0 | 274 |
"""
self.map_init(plane=Herta_SupplyZone, floor="F2", position=(554.6, 245.0))
item = Waypoint((541.9, 238.4))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((581.5, 403.5)), | 131.7 | 126 |
| item | Waypoint((586.8, 418.6)), | 172.7 | 165 |
| herta | Waypoint((606.6, 433.0)), | 143.8 | 140 |
| exit | Waypoint((618.6, 430.6)), | 116.7 | 114 |
| exit_ | Waypoint((618.6, 430.6)), | 116.7 | 114 |
"""
self.map_init(plane=Jarilo_BackwaterPass, floor="F1", position=(581.5, 403.5))
item = Waypoint((586.8, 418.6))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((291.7, 653.4)), | 190.1 | 184 |
| item | Waypoint((280.6, 668.6)), | 210.2 | 198 |
| herta | Waypoint((284.0, 702.2)), | 182.8 | 188 |
| exit | Waypoint((293.2, 719.4)), | 282.9 | 343 |
| exit_ | Waypoint((293.2, 719.4)), | 282.9 | 343 |
"""
self.map_init(plane=Jarilo_CorridorofFadingEchoes, floor="F1", position=(291.7, 653.4))
item = Waypoint((280.6, 668.6))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((494.5, 237.2)), | 260.2 | 255 |
| item | Waypoint((476.4, 232.8)), | 289.0 | 288 |
| herta | Waypoint((444.4, 246.0)), | 250.8 | 253 |
| exit | Waypoint((435.4, 259.4)), | 241.3 | 239 |
| exit_ | Waypoint((435.4, 259.4)), | 241.3 | 239 |
"""
self.map_init(plane=Jarilo_GreatMine, floor="F1", position=(494.5, 237.2))
item = Waypoint((476.4, 232.8))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((157.2, 273.5)), | 60.8 | 59 |
| item | Waypoint((174.9, 274.8)), | 96.8 | 89 |
| herta | Waypoint((202.2, 259.4)), | 76.3 | 73 |
| exit | Waypoint((208.6, 244.6)), | 67.1 | 61 |
| exit_ | Waypoint((208.6, 244.6)), | 67.1 | 61 |
"""
self.map_init(plane=Jarilo_RivetTown, floor="F1", position=(157.2, 273.5))
item = Waypoint((174.9, 274.8))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((777.2, 199.7)), | 96.7 | 91 |
| item | Waypoint((790.8, 206.8)), | 129.8 | 126 |
| herta | Waypoint((822.8, 208.2)), | 101.2 | 96 |
| exit | Waypoint((834.6, 198.9)), | 102.7 | 96 |
| exit_ | Waypoint((834.6, 198.9)), | 102.7 | 96 |
"""
self.map_init(plane=Jarilo_SilvermaneGuardRestrictedZone, floor="F1", position=(777.2, 199.7))
item = Waypoint((790.8, 206.8))

View File

@ -14,7 +14,7 @@ class Route(RouteBase):
| spawn | Waypoint((299.6, 863.4)), | 6.7 | 4 |
| item | Waypoint((306.8, 850.6)), | 33.9 | 31 |
| herta | Waypoint((305.2, 821.0)), | 11.2 | 8 |
| exit | Waypoint((301.0, 808.4)), | 2.7 | 357 |
| exit_ | Waypoint((301.0, 808.4)), | 2.7 | 357 |
"""
self.map_init(plane=Luofu_ArtisanshipCommission, floor="F1", position=(299.6, 863.4))
item = Waypoint((306.8, 850.6))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((417.5, 933.4)), | 96.7 | 91 |
| item | Waypoint((431.0, 940.6)), | 129.8 | 124 |
| herta | Waypoint((464.4, 942.4)), | 112.7 | 110 |
| exit | Waypoint((476.2, 934.2)), | 87.8 | 82 |
| exit_ | Waypoint((476.2, 934.2)), | 87.8 | 82 |
"""
self.map_init(plane=Luofu_Cloudford, floor="F1", position=(417.5, 933.4))
item = Waypoint((431.0, 940.6))

View File

@ -12,7 +12,7 @@ class Route(RouteBase):
| spawn | Waypoint((574.8, 275.0)), | 256.7 | 253 |
| item | Waypoint((553.4, 273.2)), | 294.6 | 292 |
| herta | Waypoint((533.4, 286.9)), | 271.8 | 269 |
| exit | Waypoint((515.4, 299.2)), | 239.8 | 239 |
| exit_ | Waypoint((515.4, 299.2)), | 239.8 | 239 |
"""
self.map_init(plane=Luofu_StargazerNavalia, floor="F2Rogue", position=(569, 275.0))
item = Waypoint((553.4, 273.2))
@ -37,7 +37,7 @@ class Route(RouteBase):
| spawn | Waypoint((574.8, 275.0)), | 256.7 | 253 |
| item | Waypoint((553.4, 273.2)), | 294.6 | 292 |
| herta | Waypoint((533.4, 286.9)), | 271.8 | 269 |
| exit | Waypoint((515.4, 299.2)), | 239.8 | 239 |
| exit_ | Waypoint((515.4, 299.2)), | 239.8 | 239 |
"""
self.map_init(plane=Luofu_StargazerNavalia, floor="F2Rogue", position=(574.8, 275.0))
item = Waypoint((553.4, 273.2))

View File

@ -8,6 +8,10 @@ class RouteBase(MapControl):
Base class of `Route`
Every `Route` class must implement method `route()`
"""
# Module and func of current route, updated from RouteLoader
route_module: str = ''
route_func: str = ''
registered_locked_position = None
registered_locked_direction = None
registered_locked_rotation = None

View File

@ -62,6 +62,7 @@ class RouteLoader(UI):
logger.critical(f'Route file {route} ({path}) must define class Route')
raise ScriptError
self.route_module = module
self.route_obj.route_module = module
# before_route()
try:
@ -78,6 +79,7 @@ class RouteLoader(UI):
logger.critical(f'Route class in {route} ({path}) does not have method {func}')
raise ScriptError
self.route_func = func
self.route_obj.route_func = func
func_obj()
# after_route()

View File

@ -267,62 +267,89 @@ class RouteBase(RouteBase_, RogueExit, RogueEvent, RogueReward):
logger.hr('Domain single exit', level=1)
waypoints = ensure_waypoints(waypoints)
end_point = waypoints[-1]
end_point.interact_radius = 7
end_point.interact_radius = 5
end_point.expected_end.append(self._domain_exit_expected_end)
result = self.goto(*waypoints)
self._domain_exit_wait_next()
return result
def domain_exit(self, *waypoints, end_rotation=None):
def domain_exit(
self,
*waypoints,
end_rotation: int = None,
left_door: Waypoint = None,
right_door: Waypoint = None
):
logger.hr('Domain exit', level=1)
waypoints = ensure_waypoints(waypoints)
end_point = waypoints[-1]
end_point.endpoint_threshold = 1.5
result = self.goto(*waypoints)
self.goto(*waypoints)
logger.hr('End rotation', level=2)
self.rotation_set(end_rotation, threshold=10)
logger.hr('Find domain exit', level=2)
direction = self.predict_door()
direction_limit = 55
if direction is not None:
if abs(direction) > direction_limit:
logger.warning(f'Unexpected direction to go: {direction}, limited in {direction_limit}')
if direction > 0:
direction = direction_limit
elif direction < 0:
direction = -direction_limit
door = self.predict_door()
if left_door is None or right_door is None:
logger.critical(f'Domain exit is not defined in: {self.route_func}')
exit(1)
point = Waypoint(
position=(0, 0),
min_speed='run',
lock_direction=direction,
interact_radius=10000,
expected_end=[self._domain_exit_expected_end],
)
self.goto(point)
self._domain_exit_wait_next()
return result
if door == 'left_door':
if self.domain_single_exit(left_door):
return True
else:
logger.error('Cannot goto either exit doors, try both')
if self.domain_single_exit(right_door):
return True
else:
return False
elif door == 'right_door':
if self.domain_single_exit(right_door):
return True
else:
logger.error('Cannot goto either exit doors, try both')
if self.domain_single_exit(left_door):
return True
else:
return False
else:
logger.error('Cannot goto either exit doors, try both')
if self.domain_single_exit(left_door):
return True
elif self.domain_single_exit(right_door):
return True
else:
return False
"""
Route
"""
def register_domain_exit(self, *waypoints, end_rotation=None):
def register_domain_exit(
self,
*waypoints,
end_rotation: int = None,
left_door: Waypoint = None,
right_door: Waypoint = None
):
"""
Register an exit, call `domain_exit()` at route end
"""
self.registered_domain_exit = (waypoints, end_rotation)
self.registered_domain_exit = (waypoints, end_rotation, left_door, right_door)
def before_route(self):
self.registered_domain_exit = None
def after_route(self):
if self.registered_domain_exit is not None:
waypoints, end_rotation = self.registered_domain_exit
self.domain_exit(*waypoints, end_rotation=end_rotation)
waypoints, end_rotation, left_door, right_door = self.registered_domain_exit
self.domain_exit(
*waypoints,
end_rotation=end_rotation,
left_door=left_door,
right_door=right_door,
)
else:
logger.info('No domain exit registered')

View File

@ -139,7 +139,14 @@ class RogueExit(CombatInteract):
logger.info(f'PlanarDoor: {planar_door}, direction: {direction}')
return direction
def predict_door_by_name(self, image) -> float | None:
def predict_door_by_name(self, image) -> tuple[MapPlane | None, MapPlane | None]:
"""
Args:
image:
Returns:
left_door, right_door:
"""
# Paint current name black
x1, y1, x2, y2 = OCR_MAP_NAME.area
image[y1:y2, x1:x2] = (0, 0, 0)
@ -150,25 +157,40 @@ class RogueExit(CombatInteract):
logger.info(f'DomainDoor: {centers}')
directions = [self.screen2direction(center) for center in centers]
count = len(centers)
count = len(directions)
if count == 0:
logger.warning('No domain exit found')
return None
if count == 1:
logger.info(f'Goto next domain: {results[0]}')
return directions[0]
return None, None
elif count == 1:
if directions[0] < 0:
return results[0].matched_keyword, None
else:
return None, results[0].matched_keyword
else:
results = [r for d, r in sorted(zip(directions, results))]
return results[0].matched_keyword, results[-1].matched_keyword
# Doors >= 2
def choose_door(self, left_door: MapPlane | None, right_door: MapPlane | None) -> str | None:
"""
Args:
left_door:
right_door:
Returns:
str: 'left_door' or 'right_door' or None
"""
# Unique domains
for expect in [
KEYWORDS_MAP_PLANE.Rogue_DomainBoss,
KEYWORDS_MAP_PLANE.Rogue_DomainElite,
KEYWORDS_MAP_PLANE.Rogue_DomainRespite,
]:
for domain, direction in zip(results, directions):
if domain == expect:
logger.warning('Found multiple doors but has unique domain in it')
logger.info(f'Goto next domain: {domain}')
return direction
if left_door == expect:
logger.info(f'Goto next domain: left_door={left_door}')
return 'left_door'
if right_door == expect:
logger.info(f'Goto next domain: right_door={right_door}')
return 'right_door'
logger.attr('DomainStrategy', self.config.RogueWorld_DomainStrategy)
if self.config.RogueWorld_DomainStrategy == 'occurrence':
@ -178,10 +200,12 @@ class RogueExit(CombatInteract):
KEYWORDS_MAP_PLANE.Rogue_DomainEncounter,
KEYWORDS_MAP_PLANE.Rogue_DomainCombat,
]:
for domain, direction in zip(results, directions):
if domain == expect:
logger.info(f'Goto next domain: {domain}')
return direction
if left_door == expect:
logger.info(f'Goto next domain: left_door={left_door}')
return 'left_door'
if right_door == expect:
logger.info(f'Goto next domain: right_door={right_door}')
return 'right_door'
elif self.config.RogueWorld_DomainStrategy == 'combat':
for expect in [
KEYWORDS_MAP_PLANE.Rogue_DomainCombat,
@ -189,18 +213,34 @@ class RogueExit(CombatInteract):
KEYWORDS_MAP_PLANE.Rogue_DomainOccurrence,
KEYWORDS_MAP_PLANE.Rogue_DomainTransaction,
]:
for domain, direction in zip(results, directions):
if domain == expect:
logger.info(f'Goto next domain: {domain}')
return direction
if left_door == expect:
logger.info(f'Goto next domain: left_door={left_door}')
return 'left_door'
if right_door == expect:
logger.info(f'Goto next domain: right_door={right_door}')
return 'right_door'
else:
logger.error(f'Unknown domain strategy: {self.config.RogueWorld_DomainStrategy}')
logger.error('No domain was selected, return the first instead')
logger.info(f'Goto next domain: {results[0]}')
return directions[0]
if left_door is not None:
logger.info(f'Goto next domain: left_door={left_door}')
return 'left_door'
elif right_door is not None:
logger.info(f'Goto next domain: right_door={right_door}')
return 'right_door'
else:
logger.error(f'No domain door')
return None
def predict_door(self, skip_first_screenshot=True) -> float | None:
def predict_door(self, skip_first_screenshot=True) -> str | None:
"""
Args:
skip_first_screenshot:
Returns:
str: 'left_door' or 'right_door' or None
"""
timeout = Timer(3, count=6).start()
while 1:
if skip_first_screenshot:
@ -212,6 +252,9 @@ class RogueExit(CombatInteract):
logger.error('Predict door timeout')
return None
direction = self.predict_door_by_name(self.device.image)
if direction is not None:
return direction
left_door, right_door = self.predict_door_by_name(self.device.image)
logger.info(f'DomainExit: left_door={left_door}, right_door={right_door}')
if left_door is not None or right_door is not None:
door = self.choose_door(left_door, right_door)
if door is not None:
return door

View File

@ -1,3 +1,6 @@
from functools import cached_property
from typing import Any
from pydantic import BaseModel, RootModel
from tasks.map.route.model import RouteModel
@ -34,48 +37,71 @@ class RogueWaypointModel(BaseModel):
direction: float
rotation: int
@property
class Config:
ignored_types = (cached_property,)
def model_post_init(self, __context: Any) -> None:
if self.waypoint == 'exit':
self.waypoint = 'exit_'
@cached_property
def plane_floor(self):
return f'{self.plane}_{self.floor}'
@property
@cached_property
def positionXY(self):
x, y = int(self.position[0]), int(self.position[1])
return f'X{x}Y{y}'
@property
@cached_property
def is_spawn(self) -> bool:
return self.waypoint.startswith('spawn')
@property
@cached_property
def is_exit(self) -> bool:
return self.waypoint.startswith('exit')
return self.waypoint.startswith('exit_')
@property
@cached_property
def is_exit1(self) -> bool:
return self.waypoint.startswith('exit1')
@cached_property
def is_exit2(self) -> bool:
return self.waypoint.startswith('exit2')
@cached_property
def is_exit_door(self) -> bool:
return self.is_exit1 or self.is_exit2
@cached_property
def is_middle(self) -> bool:
return not self.is_spawn and not self.is_exit_door and not self.is_exit_door
@cached_property
def is_DomainBoss(self):
return self.domain == 'Boss'
@property
@cached_property
def is_DomainCombat(self):
return self.domain == 'Combat'
@property
@cached_property
def is_DomainElite(self):
return self.domain == 'Elite'
@property
@cached_property
def is_DomainEncounter(self):
return self.domain == 'Encounter'
@property
@cached_property
def is_DomainOccurrence(self):
return self.domain == 'Occurrence'
@property
@cached_property
def is_DomainRespite(self):
return self.domain == 'Respite'
@property
@cached_property
def is_DomainTransaction(self):
return self.domain == 'Transaction'