using System; using System.Collections.Generic; using System.Text.RegularExpressions; public struct Step { public int X; public int Y; public int DelayMs; } const int START_X = 13; const int START_Y = 13; string rawDump = @" 1. (13,14) after 971ms 2. (13,15) after 499ms 3. (13,14) after 61ms 4. (13,16) after 438ms 5. (13,15) after 40ms 6. (13,17) after 499ms 7. (13,16) after 47ms 8. (13,18) after 452ms 9. (13,17) after 89ms 10. (13,19) after 410ms 11. (13,18) after 40ms 12. (13,20) after 467ms 13. (13,19) after 75ms 14. (13,21) after 424ms 15. (13,20) after 40ms 16. (12,21) after 489ms 17. (13,21) after 61ms 18. (12,20) after 438ms 19. (12,21) after 104ms 20. (12,19) after 395ms 21. (12,20) after 47ms 22. (12,18) after 452ms 23. (12,19) after 91ms 24. (12,17) after 407ms 25. (12,18) after 40ms 26. (12,16) after 474ms 27. (12,17) after 71ms 28. (12,15) after 424ms 29. (12,16) after 40ms 30. (12,14) after 486ms 31. (12,15) after 60ms 32. (11,14) after 438ms 33. (12,14) after 108ms 34. (11,15) after 391ms 35. (11,14) after 46ms 36. (11,15) after 544ms 37. (11,16) after 408ms 38. (11,17) after 499ms 39. (11,16) after 80ms 40. (11,18) after 419ms 41. (11,17) after 40ms 42. (11,19) after 484ms 43. (11,18) after 58ms 44. (11,20) after 442ms 45. (11,19) after 110ms 46. (11,21) after 389ms 47. (11,20) after 47ms 48. (10,21) after 452ms 49. (11,21) after 91ms 50. (10,20) after 409ms 51. (10,21) after 40ms 52. (10,19) after 473ms 53. (10,20) after 79ms 54. (10,18) after 420ms 55. (10,19) after 40ms 56. (10,17) after 485ms 57. (10,18) after 62ms 58. (10,16) after 437ms 59. (10,17) after 109ms 60. (10,15) after 390ms 61. (10,16) after 44ms 62. (10,14) after 455ms 63. (10,15) after 93ms 64. (9,14) after 406ms 65. (10,14) after 40ms 66. (9,15) after 476ms 67. (9,14) after 68ms 68. (9,16) after 424ms 69. (9,15) after 40ms 70. (9,17) after 485ms 71. (9,16) after 62ms 72. (9,18) after 437ms 73. (9,17) after 94ms 74. (9,19) after 405ms 75. (9,18) after 40ms 76. (9,20) after 481ms 77. (9,19) after 62ms 78. (9,21) after 437ms 79. (9,20) after 40ms 80. (8,20) after 500ms 81. (9,21) after 44ms 82. (8,20) after 546ms 83. (8,21) after 1407ms 84. (8,20) after 500ms 85. (8,21) after 62ms 86. (8,19) after 437ms 87. (8,20) after 104ms 88. (8,18) after 394ms 89. (8,19) after 42ms 90. (8,17) after 457ms 91. (8,18) after 94ms 92. (8,16) after 406ms 93. (8,17) after 40ms 94. (8,15) after 469ms 95. (8,16) after 77ms 96. (8,14) after 422ms 97. (8,15) after 40ms 98. (9,14) after 492ms 99. (8,14) after 55ms 100. (9,14) after 441ms 101. (8,14) after 499ms 102. (8,15) after 1000ms 103. (8,16) after 499ms 104. (8,15) after 75ms 105. (8,17) after 424ms 106. (8,16) after 40ms 107. (8,18) after 484ms 108. (8,17) after 61ms 109. (8,19) after 438ms 110. (8,18) after 106ms 111. (8,19) after 440ms 112. (9,20) after 453ms 113. (8,21) after 500ms 114. (9,20) after 40ms 115. (8,21) after 548ms 116. (9,21) after 423ms 117. (10,21) after 499ms 118. (9,21) after 62ms 119. (10,20) after 438ms 120. (10,21) after 104ms 121. (9,19) after 394ms 122. (10,20) after 47ms 123. (9,18) after 452ms 124. (9,19) after 89ms 125. (9,17) after 410ms 126. (9,18) after 40ms 127. (9,16) after 472ms 128. (9,17) after 80ms 129. (9,15) after 419ms 130. (9,16) after 40ms 131. (10,14) after 487ms 132. (9,15) after 59ms 133. (10,14) after 546ms 134. (10,15) after 393ms 135. (10,16) after 499ms 136. (10,15) after 91ms 137. (10,17) after 408ms 138. (10,16) after 40ms 139. (10,18) after 467ms 140. (10,17) after 75ms 141. (10,19) after 423ms 142. (10,18) after 40ms 143. (11,20) after 486ms 144. (10,19) after 61ms 145. (11,21) after 437ms 146. (11,20) after 109ms 147. (11,21) after 436ms 148. (12,21) after 954ms 149. (13,21) after 499ms 150. (12,21) after 75ms 151. (12,20) after 424ms 152. (13,21) after 40ms 153. (13,20) after 485ms 154. (12,20) after 64ms 155. (13,19) after 436ms 156. (13,20) after 40ms 157. (12,19) after 497ms 158. (13,19) after 44ms 159. (11,19) after 455ms 160. (12,19) after 94ms 161. (11,18) after 405ms 162. (11,19) after 40ms 163. (12,18) after 471ms 164. (11,18) after 74ms 165. (13,18) after 425ms 166. (12,18) after 40ms 167. (13,17) after 484ms 168. (13,18) after 64ms 169. (13,17) after 543ms 170. (12,17) after 391ms 171. (11,17) after 499ms 172. (12,17) after 90ms 173. (11,17) after 443ms 174. (11,16) after 466ms 175. (11,15) after 499ms 176. (11,16) after 40ms 177. (11,14) after 485ms 178. (11,15) after 63ms 179. (12,14) after 436ms 180. (11,14) after 106ms 181. (12,14) after 438ms 182. (12,15) after 455ms 183. (12,16) after 499ms 184. (12,15) after 40ms 185. (13,16) after 487ms 186. (12,16) after 63ms 187. (13,15) after 436ms 188. (13,16) after 107ms 189. (13,14) after 393ms 190. (13,15) after 45ms 191. (13,14) after 545ms 192. (12,14) after 409ms 193. (11,14) after 500ms 194. (12,14) after 74ms 195. (12,15) after 424ms 196. (11,14) after 40ms 197. (13,16) after 488ms 198. (12,15) after 64ms 199. (13,15) after 435ms 200. (13,16) after 106ms 201. (13,14) after 394ms 202. (13,15) after 46ms 203. (13,14) after 548ms 204. (12,14) after 403ms 205. (11,14) after 499ms 206. (12,14) after 74ms 207. (11,14) after 437ms 208. (12,15) after 1487ms 209. (13,14) after 500ms 210. (12,15) after 95ms 211. (13,14) after 435ms 212. (13,15) after 468ms 213. (13,16) after 500ms 214. (13,15) after 40ms 215. (13,17) after 487ms 216. (13,16) after 60ms 217. (13,18) after 440ms 218. (13,17) after 105ms 219. (13,19) after 392ms 220. (13,18) after 48ms 221. (13,20) after 451ms 222. (13,19) after 92ms 223. (13,21) after 407ms 224. (13,20) after 40ms 225. (12,21) after 471ms 226. (13,21) after 80ms 227. (11,21) after 420ms 228. (12,21) after 40ms 229. (12,20) after 487ms 230. (11,21) after 61ms 231. (13,19) after 439ms 232. (12,20) after 108ms 233. (13,20) after 390ms 234. (13,19) after 47ms 235. (13,21) after 452ms 236. (13,20) after 95ms 237. (13,21) after 438ms 238. (12,21) after 2966ms 239. (12,20) after 999ms 240. (11,21) after 500ms 241. (12,20) after 40ms 242. (11,21) after 553ms 243. (10,21) after 934ms 244. (9,21) after 500ms 245. (10,21) after 92ms 246. (8,21) after 407ms 247. (9,21) after 40ms 248. (8,21) after 545ms 249. (9,20) after 1924ms 250. (8,21) after 999ms 251. (8,20) after 999ms 252. (8,19) after 500ms 253. (8,20) after 64ms 254. (8,18) after 435ms 255. (8,19) after 109ms 256. (8,18) after 435ms 257. (8,17) after 454ms 258. (8,18) after 999ms 259. (8,17) after 1000ms 260. (8,16) after 1999ms 261. (8,15) after 500ms 262. (8,16) after 78ms 263. (8,14) after 421ms 264. (8,15) after 40ms 265. (9,15) after 486ms 266. (8,14) after 63ms 267. (9,15) after 546ms 268. (8,14) after 891ms 269. (9,14) after 997ms 270. (10,14) after 500ms 271. (9,14) after 40ms 272. (10,15) after 484ms 273. (10,14) after 58ms 274. (11,15) after 440ms 275. (10,15) after 111ms 276. (12,16) after 387ms 277. (11,15) after 49ms 278. (12,16) after 546ms 279. (11,16) after 404ms 280. (10,16) after 500ms 281. (11,16) after 75ms 282. (9,16) after 424ms 283. (10,16) after 40ms 284. (9,17) after 483ms 285. (9,16) after 60ms 286. (10,17) after 439ms 287. (9,17) after 40ms 288. (11,17) after 498ms 289. (10,17) after 45ms 290. (12,17) after 453ms 291. (11,17) after 96ms 292. (12,18) after 403ms 293. (12,17) after 40ms 294. (11,18) after 467ms 295. (12,18) after 82ms 296. (10,18) after 417ms 297. (11,18) after 40ms 298. (9,18) after 482ms 299. (10,18) after 65ms 300. (9,19) after 435ms 301. (9,18) after 107ms 302. (10,19) after 392ms 303. (9,19) after 47ms 304. (11,19) after 452ms 305. (10,19) after 89ms 306. (12,19) after 409ms 307. (11,19) after 40ms 308. (11,20) after 471ms 309. (12,19) after 81ms 310. (10,20) after 418ms 311. (11,20) after 40ms 312. (10,20) after 545ms "; List ParseSteps(string text) { var steps = new List(); var rx = new Regex(@"\((\d+),(\d+)\)\s+after\s+(\d+)ms", RegexOptions.Compiled); foreach (Match m in rx.Matches(text)) { steps.Add(new Step { X = int.Parse(m.Groups[1].Value), Y = int.Parse(m.Groups[2].Value), DelayMs = int.Parse(m.Groups[3].Value) }); } return steps; } Log("=== Play Path From Dump ==="); var steps = ParseSteps(rawDump); if (steps.Count == 0) { Log("ERROR: No steps parsed."); return; } Log($"Parsed {steps.Count} steps."); Log($"Waiting until you are on {START_X}:{START_Y}..."); while (Run) { if (Self != null && Self.Location != null && Self.Location.X == START_X && Self.Location.Y == START_Y) break; Delay(100); } if (!Run) return; Log("Start reached. Replaying exact timed path..."); for (int i = 0; i < steps.Count; i++) { var s = steps[i]; if (s.DelayMs > 0) Delay(s.DelayMs); Move(s.X, s.Y); } Log("Replay complete.");