@v12-engine/engine 0.1.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (951) hide show
  1. package/dist/abilities/amounts.d.ts +28 -0
  2. package/dist/abilities/amounts.js +74 -0
  3. package/dist/abilities/amounts.js.map +1 -0
  4. package/dist/abilities/buffs.d.ts +106 -6
  5. package/dist/abilities/buffs.js +443 -0
  6. package/dist/abilities/buffs.js.map +1 -0
  7. package/dist/abilities/castTold.d.ts +2 -0
  8. package/dist/abilities/castTold.js +66 -0
  9. package/dist/abilities/castTold.js.map +1 -0
  10. package/dist/abilities/chance.d.ts +38 -0
  11. package/dist/abilities/chance.js +77 -0
  12. package/dist/abilities/chance.js.map +1 -0
  13. package/dist/abilities/charges.d.ts +18 -0
  14. package/dist/abilities/charges.js +101 -0
  15. package/dist/abilities/charges.js.map +1 -0
  16. package/dist/abilities/control.d.ts +28 -0
  17. package/dist/abilities/control.js +113 -0
  18. package/dist/abilities/control.js.map +1 -0
  19. package/dist/abilities/dispel.js +51 -0
  20. package/dist/abilities/dispel.js.map +1 -0
  21. package/dist/abilities/effectFields.d.ts +1 -1
  22. package/dist/abilities/effectFields.js +676 -0
  23. package/dist/abilities/effectFields.js.map +1 -0
  24. package/dist/abilities/effectIndex.d.ts +27 -0
  25. package/dist/abilities/effectIndex.js +64 -0
  26. package/dist/abilities/effectIndex.js.map +1 -0
  27. package/dist/abilities/effects/buff.d.ts +9 -3
  28. package/dist/abilities/effects/buff.js +84 -0
  29. package/dist/abilities/effects/buff.js.map +1 -0
  30. package/dist/abilities/effects/conditions.d.ts +2 -0
  31. package/dist/abilities/effects/conditions.js +41 -0
  32. package/dist/abilities/effects/conditions.js.map +1 -0
  33. package/dist/abilities/effects/core.js +54 -0
  34. package/dist/abilities/effects/core.js.map +1 -0
  35. package/dist/abilities/effects/damage.d.ts +1 -1
  36. package/dist/abilities/effects/damage.js +43 -0
  37. package/dist/abilities/effects/damage.js.map +1 -0
  38. package/dist/abilities/effects/heal.d.ts +2 -2
  39. package/dist/abilities/effects/heal.js +51 -0
  40. package/dist/abilities/effects/heal.js.map +1 -0
  41. package/dist/abilities/effects/missile.d.ts +13 -1
  42. package/dist/abilities/effects/missile.js +104 -0
  43. package/dist/abilities/effects/missile.js.map +1 -0
  44. package/dist/abilities/effects/morph.d.ts +5 -0
  45. package/dist/abilities/effects/morph.js +43 -0
  46. package/dist/abilities/effects/morph.js.map +1 -0
  47. package/dist/abilities/effects/moves.d.ts +16 -4
  48. package/dist/abilities/effects/moves.js +212 -0
  49. package/dist/abilities/effects/moves.js.map +1 -0
  50. package/dist/abilities/effects/passives.d.ts +19 -9
  51. package/dist/abilities/effects/passives.js +131 -0
  52. package/dist/abilities/effects/passives.js.map +1 -0
  53. package/dist/abilities/effects/proxy.d.ts +5 -0
  54. package/dist/abilities/effects/proxy.js +60 -0
  55. package/dist/abilities/effects/proxy.js.map +1 -0
  56. package/dist/abilities/effects/sight.d.ts +2 -2
  57. package/dist/abilities/effects/sight.js +39 -0
  58. package/dist/abilities/effects/sight.js.map +1 -0
  59. package/dist/abilities/effects/spawn.d.ts +5 -2
  60. package/dist/abilities/effects/spawn.js +40 -0
  61. package/dist/abilities/effects/spawn.js.map +1 -0
  62. package/dist/abilities/effects/timed.d.ts +2 -2
  63. package/dist/abilities/effects/timed.js +96 -0
  64. package/dist/abilities/effects/timed.js.map +1 -0
  65. package/dist/abilities/effects/trade.d.ts +1 -1
  66. package/dist/abilities/effects/trade.js +25 -0
  67. package/dist/abilities/effects/trade.js.map +1 -0
  68. package/dist/abilities/effects.d.ts +97 -23
  69. package/dist/abilities/effects.js +860 -0
  70. package/dist/abilities/effects.js.map +1 -0
  71. package/dist/abilities/land.d.ts +38 -4
  72. package/dist/abilities/land.js +189 -0
  73. package/dist/abilities/land.js.map +1 -0
  74. package/dist/abilities/recast.d.ts +45 -0
  75. package/dist/abilities/recast.js +118 -0
  76. package/dist/abilities/recast.js.map +1 -0
  77. package/dist/abilities/scaled.js +40 -0
  78. package/dist/abilities/scaled.js.map +1 -0
  79. package/dist/abilities/screen.d.ts +6 -0
  80. package/dist/abilities/screen.js +83 -0
  81. package/dist/abilities/screen.js.map +1 -0
  82. package/dist/abilities/shapes.d.ts +66 -0
  83. package/dist/abilities/shapes.js +122 -0
  84. package/dist/abilities/shapes.js.map +1 -0
  85. package/dist/abilities/text.d.ts +14 -2
  86. package/dist/abilities/text.js +204 -0
  87. package/dist/abilities/text.js.map +1 -0
  88. package/dist/abilities/triggers.d.ts +98 -0
  89. package/dist/abilities/triggers.js +351 -0
  90. package/dist/abilities/triggers.js.map +1 -0
  91. package/dist/abilityChanges.d.ts +131 -0
  92. package/dist/abilityChanges.js +345 -0
  93. package/dist/abilityChanges.js.map +1 -0
  94. package/dist/ai/area.d.ts +4 -1
  95. package/dist/ai/brain.d.ts +4 -1
  96. package/dist/ai/brain.js +844 -0
  97. package/dist/ai/brain.js.map +1 -0
  98. package/dist/ai/budget.js +74 -0
  99. package/dist/ai/budget.js.map +1 -0
  100. package/dist/ai/checks.d.ts +9 -1
  101. package/dist/ai/checks.js +242 -0
  102. package/dist/ai/checks.js.map +1 -0
  103. package/dist/ai/computer.d.ts +11 -4
  104. package/dist/ai/computer.js +251 -0
  105. package/dist/ai/computer.js.map +1 -0
  106. package/dist/ai/defence.d.ts +4 -0
  107. package/dist/ai/defence.js +430 -0
  108. package/dist/ai/defence.js.map +1 -0
  109. package/dist/ai/define.d.ts +3 -2
  110. package/dist/ai/define.js +31 -0
  111. package/dist/ai/define.js.map +1 -0
  112. package/dist/ai/economy.d.ts +10 -7
  113. package/dist/ai/economy.js +780 -0
  114. package/dist/ai/economy.js.map +1 -0
  115. package/dist/ai/geometry.js +38 -0
  116. package/dist/ai/geometry.js.map +1 -0
  117. package/dist/ai/goals.d.ts +1 -0
  118. package/dist/ai/goals.js +560 -0
  119. package/dist/ai/goals.js.map +1 -0
  120. package/dist/ai/knowledge.d.ts +72 -7
  121. package/dist/ai/knowledge.js +804 -0
  122. package/dist/ai/knowledge.js.map +1 -0
  123. package/dist/ai/lanes.d.ts +10 -2
  124. package/dist/ai/lanes.js +715 -0
  125. package/dist/ai/lanes.js.map +1 -0
  126. package/dist/ai/melee/build.js +264 -0
  127. package/dist/ai/melee/build.js.map +1 -0
  128. package/dist/ai/melee/goals.d.ts +7 -0
  129. package/dist/ai/melee/goals.js +720 -0
  130. package/dist/ai/melee/goals.js.map +1 -0
  131. package/dist/ai/melee/heroes.js +68 -0
  132. package/dist/ai/melee/heroes.js.map +1 -0
  133. package/dist/ai/melee/index.d.ts +1 -1
  134. package/dist/ai/melee/index.js +51 -0
  135. package/dist/ai/melee/index.js.map +1 -0
  136. package/dist/ai/melee/production.js +29 -0
  137. package/dist/ai/melee/production.js.map +1 -0
  138. package/dist/ai/melee/surrender.js +64 -0
  139. package/dist/ai/melee/surrender.js.map +1 -0
  140. package/dist/ai/micro.d.ts +9 -0
  141. package/dist/ai/micro.js +1316 -0
  142. package/dist/ai/micro.js.map +1 -0
  143. package/dist/ai/mission.d.ts +9 -2
  144. package/dist/ai/mission.js +538 -0
  145. package/dist/ai/mission.js.map +1 -0
  146. package/dist/ai/missionRules.d.ts +1 -1
  147. package/dist/ai/missionRules.js +26 -0
  148. package/dist/ai/missionRules.js.map +1 -0
  149. package/dist/ai/module.d.ts +6 -2
  150. package/dist/ai/module.js +37 -0
  151. package/dist/ai/module.js.map +1 -0
  152. package/dist/ai/options.d.ts +3 -3
  153. package/dist/ai/plans/build.d.ts +20 -1
  154. package/dist/ai/plans/build.js +608 -0
  155. package/dist/ai/plans/build.js.map +1 -0
  156. package/dist/ai/plans/placement.d.ts +4 -1
  157. package/dist/ai/plans/placement.js +295 -0
  158. package/dist/ai/plans/placement.js.map +1 -0
  159. package/dist/ai/plans/plans.d.ts +9 -0
  160. package/dist/ai/plans/plans.js +110 -0
  161. package/dist/ai/plans/plans.js.map +1 -0
  162. package/dist/ai/plans/production.d.ts +14 -2
  163. package/dist/ai/plans/production.js +434 -0
  164. package/dist/ai/plans/production.js.map +1 -0
  165. package/dist/ai/plans/purse.d.ts +6 -3
  166. package/dist/ai/plans/purse.js +139 -0
  167. package/dist/ai/plans/purse.js.map +1 -0
  168. package/dist/ai/plans/tech.d.ts +6 -0
  169. package/dist/ai/plans/tech.js +122 -0
  170. package/dist/ai/plans/tech.js.map +1 -0
  171. package/dist/ai/profiles.d.ts +4 -4
  172. package/dist/{profiles-B3NS9jwk.js → ai/profiles.js} +3 -98
  173. package/dist/ai/profiles.js.map +1 -0
  174. package/dist/ai/reach.js +54 -0
  175. package/dist/ai/reach.js.map +1 -0
  176. package/dist/ai/report.d.ts +8 -0
  177. package/dist/ai/report.js +87 -0
  178. package/dist/ai/report.js.map +1 -0
  179. package/dist/ai/roles.d.ts +4 -0
  180. package/dist/ai/roles.js +207 -0
  181. package/dist/ai/roles.js.map +1 -0
  182. package/dist/ai/rules.d.ts +8 -2
  183. package/dist/ai/rules.js +416 -0
  184. package/dist/ai/rules.js.map +1 -0
  185. package/dist/ai/scouting.d.ts +6 -0
  186. package/dist/ai/scouting.js +324 -0
  187. package/dist/ai/scouting.js.map +1 -0
  188. package/dist/ai/settings.js +99 -0
  189. package/dist/ai/settings.js.map +1 -0
  190. package/dist/ai/squads.d.ts +21 -2
  191. package/dist/ai/squads.js +916 -0
  192. package/dist/ai/squads.js.map +1 -0
  193. package/dist/ai/strength.js +320 -0
  194. package/dist/ai/strength.js.map +1 -0
  195. package/dist/ai/task.d.ts +3 -1
  196. package/dist/ai/task.js +17 -0
  197. package/dist/ai/task.js.map +1 -0
  198. package/dist/ai/tasks/attack.js +24 -0
  199. package/dist/ai/tasks/attack.js.map +1 -0
  200. package/dist/ai/tasks/capture.d.ts +3 -3
  201. package/dist/ai/tasks/capture.js +37 -0
  202. package/dist/ai/tasks/capture.js.map +1 -0
  203. package/dist/ai/tasks/creep.js +29 -0
  204. package/dist/ai/tasks/creep.js.map +1 -0
  205. package/dist/ai/tasks/defend.js +61 -0
  206. package/dist/ai/tasks/defend.js.map +1 -0
  207. package/dist/ai/tasks/drop.js +81 -0
  208. package/dist/ai/tasks/drop.js.map +1 -0
  209. package/dist/ai/tasks/escort.js +59 -0
  210. package/dist/ai/tasks/escort.js.map +1 -0
  211. package/dist/ai/tasks/gather.js +48 -0
  212. package/dist/ai/tasks/gather.js.map +1 -0
  213. package/dist/ai/tasks/harass.js +39 -0
  214. package/dist/ai/tasks/harass.js.map +1 -0
  215. package/dist/ai/tasks/hold.js +32 -0
  216. package/dist/ai/tasks/hold.js.map +1 -0
  217. package/dist/ai/tasks/index.js +34 -0
  218. package/dist/ai/tasks/index.js.map +1 -0
  219. package/dist/ai/tasks/move.js +26 -0
  220. package/dist/ai/tasks/move.js.map +1 -0
  221. package/dist/ai/tasks/patrol.js +59 -0
  222. package/dist/ai/tasks/patrol.js.map +1 -0
  223. package/dist/ai/tasks/retreat.js +28 -0
  224. package/dist/ai/tasks/retreat.js.map +1 -0
  225. package/dist/ai/tasks/scout.js +73 -0
  226. package/dist/ai/tasks/scout.js.map +1 -0
  227. package/dist/ai/tasks/shared.d.ts +1 -1
  228. package/dist/ai/tasks/shared.js +137 -0
  229. package/dist/ai/tasks/shared.js.map +1 -0
  230. package/dist/ai/team.d.ts +18 -1
  231. package/dist/ai/team.js +492 -0
  232. package/dist/ai/team.js.map +1 -0
  233. package/dist/ai/threat.d.ts +6 -0
  234. package/dist/ai/threat.js +206 -0
  235. package/dist/ai/threat.js.map +1 -0
  236. package/dist/ai/view.d.ts +21 -7
  237. package/dist/ai/view.js +677 -0
  238. package/dist/ai/view.js.map +1 -0
  239. package/dist/ai/waves.d.ts +6 -0
  240. package/dist/ai/waves.js +410 -0
  241. package/dist/ai/waves.js.map +1 -0
  242. package/dist/ai.js +54 -6239
  243. package/dist/aiTesting.d.ts +6 -3
  244. package/dist/aiTesting.js +229 -0
  245. package/dist/aiTesting.js.map +1 -0
  246. package/dist/areas.d.ts +4 -1
  247. package/dist/areas.js +295 -0
  248. package/dist/areas.js.map +1 -0
  249. package/dist/attacks.d.ts +3 -3
  250. package/dist/attacks.js +127 -0
  251. package/dist/attacks.js.map +1 -0
  252. package/dist/burning.d.ts +267 -0
  253. package/dist/burning.js +795 -0
  254. package/dist/burning.js.map +1 -0
  255. package/dist/bytes.js +21 -0
  256. package/dist/bytes.js.map +1 -0
  257. package/dist/callings.d.ts +71 -0
  258. package/dist/callings.js +157 -0
  259. package/dist/callings.js.map +1 -0
  260. package/dist/cameraOrders.d.ts +78 -0
  261. package/dist/cameraOrders.js +114 -0
  262. package/dist/cameraOrders.js.map +1 -0
  263. package/dist/camps.d.ts +70 -4
  264. package/dist/camps.js +501 -0
  265. package/dist/camps.js.map +1 -0
  266. package/dist/capture.d.ts +15 -3
  267. package/dist/capture.js +304 -0
  268. package/dist/capture.js.map +1 -0
  269. package/dist/cellLayers.d.ts +78 -13
  270. package/dist/cellLayers.js +275 -0
  271. package/dist/cellLayers.js.map +1 -0
  272. package/dist/cellPatches.d.ts +24 -0
  273. package/dist/cellPatches.js +73 -0
  274. package/dist/cellPatches.js.map +1 -0
  275. package/dist/cinematics.d.ts +10 -5
  276. package/dist/cinematics.js +161 -0
  277. package/dist/cinematics.js.map +1 -0
  278. package/dist/clock.d.ts +2 -2
  279. package/dist/clock.js +78 -0
  280. package/dist/clock.js.map +1 -0
  281. package/dist/commands.d.ts +36 -4
  282. package/dist/commands.js +636 -0
  283. package/dist/commands.js.map +1 -0
  284. package/dist/components.d.ts +31 -10
  285. package/dist/components.js +74 -0
  286. package/dist/components.js.map +1 -0
  287. package/dist/computers.d.ts +4 -4
  288. package/dist/computers.js +194 -0
  289. package/dist/computers.js.map +1 -0
  290. package/dist/concealment.d.ts +25 -2
  291. package/dist/concealment.js +409 -0
  292. package/dist/concealment.js.map +1 -0
  293. package/dist/coreComponents.js +130 -0
  294. package/dist/coreComponents.js.map +1 -0
  295. package/dist/createGame.d.ts +306 -0
  296. package/dist/createGame.js +405 -0
  297. package/dist/createGame.js.map +1 -0
  298. package/dist/dashing.d.ts +18 -2
  299. package/dist/dashing.js +41 -0
  300. package/dist/dashing.js.map +1 -0
  301. package/dist/debug.d.ts +8 -0
  302. package/dist/debug.js +5 -3
  303. package/dist/debug2.js +76 -0
  304. package/dist/debug2.js.map +1 -0
  305. package/dist/debugCommands.d.ts +6 -6
  306. package/dist/debugCommands.js +537 -0
  307. package/dist/debugCommands.js.map +1 -0
  308. package/dist/debugging.d.ts +1 -0
  309. package/dist/defaultSets.d.ts +183 -0
  310. package/dist/defaultSets.js +216 -0
  311. package/dist/defaultSets.js.map +1 -0
  312. package/dist/definitions.d.ts +6 -0
  313. package/dist/definitions.js +78 -0
  314. package/dist/definitions.js.map +1 -0
  315. package/dist/defs.d.ts +1895 -165
  316. package/dist/defs.js +380 -0
  317. package/dist/defs.js.map +1 -0
  318. package/dist/denying.d.ts +4 -4
  319. package/dist/denying.js +106 -0
  320. package/dist/denying.js.map +1 -0
  321. package/dist/destructibles.d.ts +2 -2
  322. package/dist/destructibles.js +36 -0
  323. package/dist/destructibles.js.map +1 -0
  324. package/dist/determinism.d.ts +4 -4
  325. package/dist/determinism.js +247 -0
  326. package/dist/determinism.js.map +1 -0
  327. package/dist/dialog.d.ts +17 -2
  328. package/dist/dialog.js +108 -0
  329. package/dist/dialog.js.map +1 -0
  330. package/dist/effectRefs.js +28 -0
  331. package/dist/effectRefs.js.map +1 -0
  332. package/dist/effects.d.ts +27 -11
  333. package/dist/effects.js +110 -0
  334. package/dist/effects.js.map +1 -0
  335. package/dist/endings.d.ts +1 -1
  336. package/dist/endings.js +78 -0
  337. package/dist/endings.js.map +1 -0
  338. package/dist/engagement.d.ts +40 -6
  339. package/dist/engagement.js +530 -0
  340. package/dist/engagement.js.map +1 -0
  341. package/dist/engineEvents.d.ts +72 -9
  342. package/dist/engineEvents.js +520 -0
  343. package/dist/engineEvents.js.map +1 -0
  344. package/dist/entity.d.ts +275 -26
  345. package/dist/entity.js +441 -0
  346. package/dist/entity.js.map +1 -0
  347. package/dist/entityIndex.d.ts +10 -3
  348. package/dist/entityIndex.js +149 -0
  349. package/dist/entityIndex.js.map +1 -0
  350. package/dist/errors.d.ts +6 -2
  351. package/dist/errors.js +59 -0
  352. package/dist/errors.js.map +1 -0
  353. package/dist/events.d.ts +11 -5
  354. package/dist/events.js +158 -0
  355. package/dist/events.js.map +1 -0
  356. package/dist/exactMath.js +273 -0
  357. package/dist/exactMath.js.map +1 -0
  358. package/dist/features.d.ts +1 -1
  359. package/dist/features.js +127 -0
  360. package/dist/features.js.map +1 -0
  361. package/dist/fields.d.ts +25 -5
  362. package/dist/fields.js +140 -0
  363. package/dist/fields.js.map +1 -0
  364. package/dist/fixture.d.ts +3 -3
  365. package/dist/fixture.js +512 -0
  366. package/dist/fixture.js.map +1 -0
  367. package/dist/fog.d.ts +26 -3
  368. package/dist/fog.js +333 -0
  369. package/dist/fog.js.map +1 -0
  370. package/dist/foliage.d.ts +476 -0
  371. package/dist/foliage.js +1478 -0
  372. package/dist/foliage.js.map +1 -0
  373. package/dist/foliageDebug.d.ts +57 -0
  374. package/dist/foliageDebug.js +172 -0
  375. package/dist/foliageDebug.js.map +1 -0
  376. package/dist/foliageRegrowth.d.ts +20 -0
  377. package/dist/foliageRegrowth.js +332 -0
  378. package/dist/foliageRegrowth.js.map +1 -0
  379. package/dist/formState.d.ts +67 -0
  380. package/dist/formState.js +65 -0
  381. package/dist/formState.js.map +1 -0
  382. package/dist/formation.d.ts +46 -8
  383. package/dist/formation.js +297 -0
  384. package/dist/formation.js.map +1 -0
  385. package/dist/forms.d.ts +58 -0
  386. package/dist/forms.js +146 -0
  387. package/dist/forms.js.map +1 -0
  388. package/dist/friendlyFire.d.ts +2 -2
  389. package/dist/friendlyFire.js +37 -0
  390. package/dist/friendlyFire.js.map +1 -0
  391. package/dist/game.d.ts +141 -48
  392. package/dist/game.js +834 -0
  393. package/dist/game.js.map +1 -0
  394. package/dist/gameData.d.ts +96 -22
  395. package/dist/gameData.js +1690 -0
  396. package/dist/gameData.js.map +1 -0
  397. package/dist/gameFiles.d.ts +3 -3
  398. package/dist/gameFiles.js +14 -0
  399. package/dist/gameFiles.js.map +1 -0
  400. package/dist/gates.js +92 -0
  401. package/dist/gates.js.map +1 -0
  402. package/dist/generate.d.ts +28 -1
  403. package/dist/generate.js +1062 -0
  404. package/dist/generate.js.map +1 -0
  405. package/dist/generateWorker.d.ts +7 -3
  406. package/dist/generateWorker.js +86 -0
  407. package/dist/generateWorker.js.map +1 -0
  408. package/dist/grid.d.ts +9 -0
  409. package/dist/grid.js +102 -0
  410. package/dist/grid.js.map +1 -0
  411. package/dist/ground.d.ts +17 -1
  412. package/dist/ground.js +375 -0
  413. package/dist/ground.js.map +1 -0
  414. package/dist/groundObjects.d.ts +70 -0
  415. package/dist/groundObjects.js +371 -0
  416. package/dist/groundObjects.js.map +1 -0
  417. package/dist/groundSpeed.d.ts +20 -3
  418. package/dist/groundSpeed.js +117 -0
  419. package/dist/groundSpeed.js.map +1 -0
  420. package/dist/hero.d.ts +126 -10
  421. package/dist/hero.js +432 -0
  422. package/dist/hero.js.map +1 -0
  423. package/dist/holds.d.ts +94 -0
  424. package/dist/holds.js +305 -0
  425. package/dist/holds.js.map +1 -0
  426. package/dist/home.d.ts +1 -1
  427. package/dist/home.js +30 -0
  428. package/dist/home.js.map +1 -0
  429. package/dist/hooks.d.ts +339 -57
  430. package/dist/hooks.js +105 -0
  431. package/dist/hooks.js.map +1 -0
  432. package/dist/hotReload.d.ts +6 -5
  433. package/dist/hotReload.js +145 -0
  434. package/dist/hotReload.js.map +1 -0
  435. package/dist/ids.d.ts +3 -3
  436. package/dist/ids.js +30 -0
  437. package/dist/ids.js.map +1 -0
  438. package/dist/idsFile.d.ts +36 -0
  439. package/dist/idsFile.js +134 -0
  440. package/dist/idsFile.js.map +1 -0
  441. package/dist/index.d.ts +105 -68
  442. package/dist/index.js +194 -4701
  443. package/dist/inspect.d.ts +29 -2
  444. package/dist/{inspect-D9dWHmZ0.js → inspect.js} +21 -12
  445. package/dist/inspect.js.map +1 -0
  446. package/dist/inventory.d.ts +14 -1
  447. package/dist/inventory.js +84 -0
  448. package/dist/inventory.js.map +1 -0
  449. package/dist/items.d.ts +136 -8
  450. package/dist/items.js +585 -0
  451. package/dist/items.js.map +1 -0
  452. package/dist/lanes.d.ts +12 -3
  453. package/dist/lanes.js +496 -0
  454. package/dist/lanes.js.map +1 -0
  455. package/dist/life.d.ts +6 -2
  456. package/dist/life.js +287 -0
  457. package/dist/life.js.map +1 -0
  458. package/dist/log.d.ts +26 -3
  459. package/dist/log.js +192 -0
  460. package/dist/log.js.map +1 -0
  461. package/dist/manaBurn.d.ts +2 -2
  462. package/dist/manaBurn.js +75 -0
  463. package/dist/manaBurn.js.map +1 -0
  464. package/dist/map/file.d.ts +56 -3
  465. package/dist/map/file.js +264 -0
  466. package/dist/map/file.js.map +1 -0
  467. package/dist/map/images.js +61 -0
  468. package/dist/map/images.js.map +1 -0
  469. package/dist/map/look.d.ts +1 -1
  470. package/dist/map/look.js +30 -0
  471. package/dist/map/look.js.map +1 -0
  472. package/dist/map/pathProfile.js +183 -0
  473. package/dist/map/pathProfile.js.map +1 -0
  474. package/dist/map/resize.d.ts +4 -0
  475. package/dist/map/resize.js +136 -0
  476. package/dist/map/resize.js.map +1 -0
  477. package/dist/map/schema.js +257 -0
  478. package/dist/map/schema.js.map +1 -0
  479. package/dist/map/terrain.js +214 -0
  480. package/dist/map/terrain.js.map +1 -0
  481. package/dist/map/types.d.ts +92 -13
  482. package/dist/map/types.js +251 -0
  483. package/dist/map/types.js.map +1 -0
  484. package/dist/mapCheck/cells.js +94 -0
  485. package/dist/mapCheck/cells.js.map +1 -0
  486. package/dist/mapCheck/rules/foliage.d.ts +9 -0
  487. package/dist/mapCheck/rules/foliage.js +83 -0
  488. package/dist/mapCheck/rules/foliage.js.map +1 -0
  489. package/dist/mapCheck/rules/names.js +39 -0
  490. package/dist/mapCheck/rules/names.js.map +1 -0
  491. package/dist/mapCheck/rules/objects.d.ts +1 -1
  492. package/dist/mapCheck/rules/objects.js +56 -0
  493. package/dist/mapCheck/rules/objects.js.map +1 -0
  494. package/dist/mapCheck/rules/paths.js +32 -0
  495. package/dist/mapCheck/rules/paths.js.map +1 -0
  496. package/dist/mapCheck/rules/players.js +20 -0
  497. package/dist/mapCheck/rules/players.js.map +1 -0
  498. package/dist/mapCheck/rules/races.js +56 -0
  499. package/dist/mapCheck/rules/races.js.map +1 -0
  500. package/dist/mapCheck/rules/random.js +47 -0
  501. package/dist/mapCheck/rules/random.js.map +1 -0
  502. package/dist/mapCheck/rules/regions.js +30 -0
  503. package/dist/mapCheck/rules/regions.js.map +1 -0
  504. package/dist/mapCheck/rules/targets.js +31 -0
  505. package/dist/mapCheck/rules/targets.js.map +1 -0
  506. package/dist/mapCheck/rules/walking.js +45 -0
  507. package/dist/mapCheck/rules/walking.js.map +1 -0
  508. package/dist/mapCheck.d.ts +2 -2
  509. package/dist/mapCheck.js +63 -0
  510. package/dist/mapCheck.js.map +1 -0
  511. package/dist/mapFields.d.ts +25 -2
  512. package/dist/mapFields.js +134 -0
  513. package/dist/mapFields.js.map +1 -0
  514. package/dist/mapFile.js +176 -0
  515. package/dist/mapFile.js.map +1 -0
  516. package/dist/mapMeasure.d.ts +8 -0
  517. package/dist/mapMeasure.js +283 -0
  518. package/dist/mapMeasure.js.map +1 -0
  519. package/dist/mapMerge.d.ts +1 -0
  520. package/dist/mapMerge.js +172 -0
  521. package/dist/mapMerge.js.map +1 -0
  522. package/dist/mapObjectives.js +138 -0
  523. package/dist/mapObjectives.js.map +1 -0
  524. package/dist/mapObjects.js +80 -0
  525. package/dist/mapObjects.js.map +1 -0
  526. package/dist/math.d.ts +37 -7
  527. package/dist/math.js +155 -0
  528. package/dist/math.js.map +1 -0
  529. package/dist/messages.d.ts +71 -4
  530. package/dist/messages.js +29 -0
  531. package/dist/messages.js.map +1 -0
  532. package/dist/missionRules.d.ts +10 -2
  533. package/dist/{missionRules-C-bGxm0Q.js → missionRules.js} +30 -150
  534. package/dist/missionRules.js.map +1 -0
  535. package/dist/mods.d.ts +39 -20
  536. package/dist/mods.js +271 -0
  537. package/dist/mods.js.map +1 -0
  538. package/dist/moves.d.ts +87 -0
  539. package/dist/moves.js +539 -0
  540. package/dist/moves.js.map +1 -0
  541. package/dist/names.d.ts +7 -0
  542. package/dist/names.js +122 -0
  543. package/dist/names.js.map +1 -0
  544. package/dist/navigation/agentParams.js +14 -0
  545. package/dist/navigation/agentParams.js.map +1 -0
  546. package/dist/navigation/air.d.ts +7 -3
  547. package/dist/navigation/air.js +401 -0
  548. package/dist/navigation/air.js.map +1 -0
  549. package/dist/navigation/builds.d.ts +34 -2
  550. package/dist/navigation/builds.js +287 -0
  551. package/dist/navigation/builds.js.map +1 -0
  552. package/dist/navigation/groundAreas.d.ts +59 -1
  553. package/dist/navigation/groundAreas.js +407 -0
  554. package/dist/navigation/groundAreas.js.map +1 -0
  555. package/dist/navigation/navigation.d.ts +98 -9
  556. package/dist/navigation/recast.d.ts +194 -18
  557. package/dist/navigation/recast.js +1379 -0
  558. package/dist/navigation/recast.js.map +1 -0
  559. package/dist/navigation/sidePaths.d.ts +8 -3
  560. package/dist/navigation/sidePaths.js +241 -0
  561. package/dist/navigation/sidePaths.js.map +1 -0
  562. package/dist/navigation/sized.js +243 -0
  563. package/dist/navigation/sized.js.map +1 -0
  564. package/dist/nearest.js +32 -0
  565. package/dist/nearest.js.map +1 -0
  566. package/dist/noise.js +59 -0
  567. package/dist/noise.js.map +1 -0
  568. package/dist/objectives.d.ts +12 -3
  569. package/dist/objectives.js +144 -0
  570. package/dist/objectives.js.map +1 -0
  571. package/dist/orders/basic.d.ts +5 -5
  572. package/dist/orders/basic.js +417 -0
  573. package/dist/orders/basic.js.map +1 -0
  574. package/dist/orders/build.js +278 -0
  575. package/dist/orders/build.js.map +1 -0
  576. package/dist/orders/cast.d.ts +13 -3
  577. package/dist/orders/cast.js +558 -0
  578. package/dist/orders/cast.js.map +1 -0
  579. package/dist/orders/facts.js +16 -0
  580. package/dist/orders/facts.js.map +1 -0
  581. package/dist/orders/harvest.d.ts +21 -5
  582. package/dist/orders/harvest.js +540 -0
  583. package/dist/orders/harvest.js.map +1 -0
  584. package/dist/orders/idle.d.ts +3 -1
  585. package/dist/orders/idle.js +234 -0
  586. package/dist/orders/idle.js.map +1 -0
  587. package/dist/orders/items.js +92 -0
  588. package/dist/orders/items.js.map +1 -0
  589. package/dist/orders/queue.js +108 -0
  590. package/dist/orders/queue.js.map +1 -0
  591. package/dist/orders/waiting.d.ts +39 -0
  592. package/dist/orders/waiting.js +149 -0
  593. package/dist/orders/waiting.js.map +1 -0
  594. package/dist/pack.schema.js +13 -0
  595. package/dist/pack.schema.js.map +1 -0
  596. package/dist/pack.schema.json +7622 -841
  597. package/dist/packs/director/index.d.ts +13 -5
  598. package/dist/packs/director/index.js +204 -0
  599. package/dist/packs/director/index.js.map +1 -0
  600. package/dist/packs/heroes/campaign.d.ts +3 -2
  601. package/dist/packs/heroes/campaign.js +241 -0
  602. package/dist/packs/heroes/campaign.js.map +1 -0
  603. package/dist/packs/heroes/carry.d.ts +6 -0
  604. package/dist/packs/heroes/carry.js +112 -0
  605. package/dist/packs/heroes/carry.js.map +1 -0
  606. package/dist/packs/heroes/commands.js +115 -0
  607. package/dist/packs/heroes/commands.js.map +1 -0
  608. package/dist/packs/heroes/fallen.d.ts +43 -0
  609. package/dist/packs/heroes/fallen.js +61 -0
  610. package/dist/packs/heroes/fallen.js.map +1 -0
  611. package/dist/packs/heroes/hire.js +60 -0
  612. package/dist/packs/heroes/hire.js.map +1 -0
  613. package/dist/packs/heroes/index.d.ts +7 -6
  614. package/dist/packs/heroes/index.js +130 -0
  615. package/dist/packs/heroes/index.js.map +1 -0
  616. package/dist/packs/heroes/loop.d.ts +95 -0
  617. package/dist/packs/heroes/loop.js +250 -0
  618. package/dist/packs/heroes/loop.js.map +1 -0
  619. package/dist/packs/heroes/making.d.ts +6 -3
  620. package/dist/packs/heroes/making.js +55 -0
  621. package/dist/packs/heroes/making.js.map +1 -0
  622. package/dist/packs/heroes/respawn.d.ts +3 -3
  623. package/dist/packs/heroes/respawn.js +87 -0
  624. package/dist/packs/heroes/respawn.js.map +1 -0
  625. package/dist/packs/heroes/sets.d.ts +32 -0
  626. package/dist/packs/heroes/sets.js +51 -0
  627. package/dist/packs/heroes/sets.js.map +1 -0
  628. package/dist/packs/heroes/spells.d.ts +16 -0
  629. package/dist/packs/heroes/spells.js +269 -0
  630. package/dist/packs/heroes/spells.js.map +1 -0
  631. package/dist/packs/items/defaults.d.ts +43 -0
  632. package/dist/packs/items/defaults.js +1504 -0
  633. package/dist/packs/items/defaults.js.map +1 -0
  634. package/dist/packs/items/index.d.ts +27 -0
  635. package/dist/packs/items/index.js +214 -0
  636. package/dist/packs/items/index.js.map +1 -0
  637. package/dist/packs/moba/index.d.ts +3 -3
  638. package/dist/packs/moba/index.js +174 -0
  639. package/dist/packs/moba/index.js.map +1 -0
  640. package/dist/packs/pack.d.ts +15 -15
  641. package/dist/packs/pack.js +14 -0
  642. package/dist/packs/pack.js.map +1 -0
  643. package/dist/packs.d.ts +15 -7
  644. package/dist/packs.js +222 -0
  645. package/dist/packs.js.map +1 -0
  646. package/dist/paths.d.ts +2 -0
  647. package/dist/paths.js +109 -0
  648. package/dist/paths.js.map +1 -0
  649. package/dist/plain.js +57 -0
  650. package/dist/plain.js.map +1 -0
  651. package/dist/player.d.ts +33 -10
  652. package/dist/player.js +159 -0
  653. package/dist/player.js.map +1 -0
  654. package/dist/portals.d.ts +1 -1
  655. package/dist/portals.js +194 -0
  656. package/dist/portals.js.map +1 -0
  657. package/dist/prefabs.d.ts +25 -2
  658. package/dist/prefabs.js +239 -0
  659. package/dist/prefabs.js.map +1 -0
  660. package/dist/presetBuildings.js +58 -0
  661. package/dist/presetBuildings.js.map +1 -0
  662. package/dist/presetFoliage.d.ts +27 -0
  663. package/dist/presetFoliage.js +98 -0
  664. package/dist/presetFoliage.js.map +1 -0
  665. package/dist/presetGround.js +65 -0
  666. package/dist/presetGround.js.map +1 -0
  667. package/dist/proxies.d.ts +12 -0
  668. package/dist/proxies.js +79 -0
  669. package/dist/proxies.js.map +1 -0
  670. package/dist/query.d.ts +56 -0
  671. package/dist/query.js +88 -0
  672. package/dist/query.js.map +1 -0
  673. package/dist/races.d.ts +15 -14
  674. package/dist/races.js +172 -0
  675. package/dist/races.js.map +1 -0
  676. package/dist/randomGroups.js +91 -0
  677. package/dist/randomGroups.js.map +1 -0
  678. package/dist/registry.d.ts +117 -53
  679. package/dist/registry.js +323 -0
  680. package/dist/registry.js.map +1 -0
  681. package/dist/remains.d.ts +11 -9
  682. package/dist/remains.js +188 -0
  683. package/dist/remains.js.map +1 -0
  684. package/dist/replication.d.ts +12 -7
  685. package/dist/replication.js +100 -0
  686. package/dist/replication.js.map +1 -0
  687. package/dist/rng.d.ts +2 -0
  688. package/dist/rng.js +40 -0
  689. package/dist/rng.js.map +1 -0
  690. package/dist/rules.d.ts +186 -99
  691. package/dist/rules.js +179 -0
  692. package/dist/rules.js.map +1 -0
  693. package/dist/rulesCheck.d.ts +5 -4
  694. package/dist/rulesCheck.js +693 -0
  695. package/dist/rulesCheck.js.map +1 -0
  696. package/dist/runes.d.ts +2 -2
  697. package/dist/runes.js +80 -0
  698. package/dist/runes.js.map +1 -0
  699. package/dist/save.d.ts +37 -12
  700. package/dist/save.js +532 -0
  701. package/dist/save.js.map +1 -0
  702. package/dist/scenario.d.ts +2 -2
  703. package/dist/scenario.js +99 -0
  704. package/dist/scenario.js.map +1 -0
  705. package/dist/scheduler.d.ts +3 -0
  706. package/dist/scheduler.js +156 -0
  707. package/dist/scheduler.js.map +1 -0
  708. package/dist/score.d.ts +19 -19
  709. package/dist/score.js +709 -0
  710. package/dist/score.js.map +1 -0
  711. package/dist/sequences.d.ts +10 -6
  712. package/dist/sequences.js +206 -0
  713. package/dist/sequences.js.map +1 -0
  714. package/dist/server/doorman.js +154 -0
  715. package/dist/server/doorman.js.map +1 -0
  716. package/dist/server/gameServer.d.ts +16 -1
  717. package/dist/server/gameServer.js +643 -0
  718. package/dist/server/gameServer.js.map +1 -0
  719. package/dist/server/index.d.ts +1 -1
  720. package/dist/server/lobby.js +199 -0
  721. package/dist/server/lobby.js.map +1 -0
  722. package/dist/server/log.js +18 -0
  723. package/dist/server/log.js.map +1 -0
  724. package/dist/server/match.js +267 -0
  725. package/dist/server/match.js.map +1 -0
  726. package/dist/server/mode.d.ts +18 -9
  727. package/dist/server/mode.js +220 -0
  728. package/dist/server/mode.js.map +1 -0
  729. package/dist/{navigation-worker.js → server/navigation-worker.js} +1 -1
  730. package/dist/server/navigation-worker.js.map +1 -0
  731. package/dist/server/navigation.js +39 -0
  732. package/dist/server/navigation.js.map +1 -0
  733. package/dist/server/ops.d.ts +4 -0
  734. package/dist/server/ops.js +137 -0
  735. package/dist/server/ops.js.map +1 -0
  736. package/dist/server/packs.d.ts +3 -3
  737. package/dist/server/packs.js +32 -0
  738. package/dist/server/packs.js.map +1 -0
  739. package/dist/server/ratings.d.ts +5 -0
  740. package/dist/server/ratings.js +104 -0
  741. package/dist/server/ratings.js.map +1 -0
  742. package/dist/server/relay.d.ts +12 -2
  743. package/dist/server/relay.js +144 -0
  744. package/dist/server/relay.js.map +1 -0
  745. package/dist/server/rooms.d.ts +9 -2
  746. package/dist/server/rooms.js +442 -0
  747. package/dist/server/rooms.js.map +1 -0
  748. package/dist/server/seat.js +116 -0
  749. package/dist/server/seat.js.map +1 -0
  750. package/dist/server/seatSettings.d.ts +3 -3
  751. package/dist/server/seatSettings.js +63 -0
  752. package/dist/server/seatSettings.js.map +1 -0
  753. package/dist/server/secret.js +13 -0
  754. package/dist/server/secret.js.map +1 -0
  755. package/dist/server/start.d.ts +13 -6
  756. package/dist/server/start.js +76 -0
  757. package/dist/server/start.js.map +1 -0
  758. package/dist/server/websocket.d.ts +9 -1
  759. package/dist/server/websocket.js +306 -0
  760. package/dist/server/websocket.js.map +1 -0
  761. package/dist/server.js +15 -2861
  762. package/dist/session/can.js +26 -0
  763. package/dist/session/can.js.map +1 -0
  764. package/dist/session/commandReplay.d.ts +8 -2
  765. package/dist/session/commandReplay.js +293 -0
  766. package/dist/session/commandReplay.js.map +1 -0
  767. package/dist/session/debug.js +151 -0
  768. package/dist/session/debug.js.map +1 -0
  769. package/dist/session/delay.js +62 -0
  770. package/dist/session/delay.js.map +1 -0
  771. package/dist/session/delta.d.ts +14 -1
  772. package/dist/session/delta.js +407 -0
  773. package/dist/session/delta.js.map +1 -0
  774. package/dist/session/entityState.js +415 -0
  775. package/dist/session/entityState.js.map +1 -0
  776. package/dist/session/local.d.ts +47 -5
  777. package/dist/session/local.js +670 -0
  778. package/dist/session/local.js.map +1 -0
  779. package/dist/session/memory.d.ts +20 -2
  780. package/dist/session/memory.js +131 -0
  781. package/dist/session/memory.js.map +1 -0
  782. package/dist/session/protocol.d.ts +325 -31
  783. package/dist/session/protocol.js +55 -0
  784. package/dist/session/protocol.js.map +1 -0
  785. package/dist/session/remote.d.ts +74 -12
  786. package/dist/session/remote.js +1394 -0
  787. package/dist/session/remote.js.map +1 -0
  788. package/dist/session/replay.d.ts +11 -2
  789. package/dist/session/replay.js +160 -0
  790. package/dist/session/replay.js.map +1 -0
  791. package/dist/session/seed.js +12 -0
  792. package/dist/session/seed.js.map +1 -0
  793. package/dist/session/share.d.ts +5 -1
  794. package/dist/session/share.js +94 -0
  795. package/dist/session/share.js.map +1 -0
  796. package/dist/session/socket.d.ts +1 -1
  797. package/dist/session/socket.js +29 -0
  798. package/dist/session/socket.js.map +1 -0
  799. package/dist/session/wire.d.ts +5 -0
  800. package/dist/session/wire.js +84 -0
  801. package/dist/session/wire.js.map +1 -0
  802. package/dist/session/worker.d.ts +77 -12
  803. package/dist/session/worker.js +499 -0
  804. package/dist/session/worker.js.map +1 -0
  805. package/dist/shared.d.ts +31 -5
  806. package/dist/shared.js +166 -0
  807. package/dist/shared.js.map +1 -0
  808. package/dist/sides.d.ts +9 -3
  809. package/dist/sides.js +149 -0
  810. package/dist/sides.js.map +1 -0
  811. package/dist/sight.js +85 -0
  812. package/dist/sight.js.map +1 -0
  813. package/dist/simulate-worker.js +1 -1
  814. package/dist/simulate.d.ts +12 -8
  815. package/dist/{simulate-oXBiw1Ff.js → simulate.js} +10 -11
  816. package/dist/simulate.js.map +1 -0
  817. package/dist/smart.js +77 -0
  818. package/dist/smart.js.map +1 -0
  819. package/dist/spatial.d.ts +32 -16
  820. package/dist/spatial.js +234 -0
  821. package/dist/spatial.js.map +1 -0
  822. package/dist/spawning.d.ts +1 -0
  823. package/dist/spawning.js +224 -0
  824. package/dist/spawning.js.map +1 -0
  825. package/dist/stances.d.ts +6 -3
  826. package/dist/stances.js +169 -0
  827. package/dist/stances.js.map +1 -0
  828. package/dist/start.d.ts +10 -10
  829. package/dist/start.js +75 -0
  830. package/dist/start.js.map +1 -0
  831. package/dist/stats.d.ts +42 -16
  832. package/dist/stats.js +290 -0
  833. package/dist/stats.js.map +1 -0
  834. package/dist/summoned.d.ts +52 -0
  835. package/dist/summoned.js +38 -0
  836. package/dist/summoned.js.map +1 -0
  837. package/dist/summons.d.ts +10 -13
  838. package/dist/summons.js +271 -0
  839. package/dist/summons.js.map +1 -0
  840. package/dist/systems/abilities.js +224 -0
  841. package/dist/systems/abilities.js.map +1 -0
  842. package/dist/systems/combat.d.ts +35 -1
  843. package/dist/systems/combat.js +677 -0
  844. package/dist/systems/combat.js.map +1 -0
  845. package/dist/systems/combatTold.d.ts +3 -1
  846. package/dist/systems/combatTold.js +85 -0
  847. package/dist/systems/combatTold.js.map +1 -0
  848. package/dist/systems/construction.js +80 -0
  849. package/dist/systems/construction.js.map +1 -0
  850. package/dist/systems/economy.d.ts +0 -6
  851. package/dist/systems/economy.js +128 -0
  852. package/dist/systems/economy.js.map +1 -0
  853. package/dist/systems/fog.d.ts +1 -1
  854. package/dist/systems/fog.js +120 -0
  855. package/dist/systems/fog.js.map +1 -0
  856. package/dist/systems/life.js +32 -0
  857. package/dist/systems/life.js.map +1 -0
  858. package/dist/systems/movement.d.ts +24 -12
  859. package/dist/systems/movement.js +1247 -0
  860. package/dist/systems/movement.js.map +1 -0
  861. package/dist/systems/orders.js +64 -0
  862. package/dist/systems/orders.js.map +1 -0
  863. package/dist/systems/production.js +322 -0
  864. package/dist/systems/production.js.map +1 -0
  865. package/dist/systems/productionQueue.js +120 -0
  866. package/dist/systems/productionQueue.js.map +1 -0
  867. package/dist/systems/victory.d.ts +1 -1
  868. package/dist/systems/victory.js +56 -0
  869. package/dist/systems/victory.js.map +1 -0
  870. package/dist/talk.d.ts +6 -6
  871. package/dist/talk.js +153 -0
  872. package/dist/talk.js.map +1 -0
  873. package/dist/targeting.d.ts +142 -0
  874. package/dist/targeting.js +49 -0
  875. package/dist/targeting.js.map +1 -0
  876. package/dist/tech.d.ts +20 -3
  877. package/dist/tech.js +239 -0
  878. package/dist/tech.js.map +1 -0
  879. package/dist/techTree.d.ts +7 -0
  880. package/dist/techTree.js +90 -0
  881. package/dist/techTree.js.map +1 -0
  882. package/dist/terrain.d.ts +59 -7
  883. package/dist/terrain.js +389 -0
  884. package/dist/terrain.js.map +1 -0
  885. package/dist/terrainSave.d.ts +6 -0
  886. package/dist/terrainSave.js +74 -0
  887. package/dist/terrainSave.js.map +1 -0
  888. package/dist/testing.d.ts +8 -7
  889. package/dist/testing.js +13 -739
  890. package/dist/testing.js.map +1 -1
  891. package/dist/tiles.d.ts +1 -1
  892. package/dist/tiles.js +43 -0
  893. package/dist/tiles.js.map +1 -0
  894. package/dist/timers.d.ts +29 -4
  895. package/dist/timers.js +242 -0
  896. package/dist/timers.js.map +1 -0
  897. package/dist/tomes.d.ts +4 -4
  898. package/dist/tomes.js +94 -0
  899. package/dist/tomes.js.map +1 -0
  900. package/dist/trade.js +103 -0
  901. package/dist/trade.js.map +1 -0
  902. package/dist/transport.d.ts +6 -1
  903. package/dist/transport.js +281 -0
  904. package/dist/transport.js.map +1 -0
  905. package/dist/tunables.d.ts +10 -3
  906. package/dist/tunables.js +56 -0
  907. package/dist/tunables.js.map +1 -0
  908. package/dist/unitResources.d.ts +67 -0
  909. package/dist/unitResources.js +266 -0
  910. package/dist/unitResources.js.map +1 -0
  911. package/dist/upkeep.d.ts +6 -1
  912. package/dist/upkeep.js +26 -0
  913. package/dist/upkeep.js.map +1 -0
  914. package/dist/veterancy.d.ts +8 -3
  915. package/dist/veterancy.js +131 -0
  916. package/dist/veterancy.js.map +1 -0
  917. package/dist/vision.d.ts +36 -0
  918. package/dist/vision.js +133 -0
  919. package/dist/vision.js.map +1 -0
  920. package/dist/walls.d.ts +1 -1
  921. package/dist/walls.js +278 -0
  922. package/dist/walls.js.map +1 -0
  923. package/dist/world.d.ts +606 -88
  924. package/dist/world.js +1263 -0
  925. package/dist/world.js.map +1 -0
  926. package/package.json +2 -2
  927. package/dist/ai.js.map +0 -1
  928. package/dist/attributes.d.ts +0 -66
  929. package/dist/brain-BvVdUhX8.js +0 -7659
  930. package/dist/brain-BvVdUhX8.js.map +0 -1
  931. package/dist/builds-C6LfgvEU.js +0 -460
  932. package/dist/builds-C6LfgvEU.js.map +0 -1
  933. package/dist/coreComponents-syuh2fPG.js +0 -5149
  934. package/dist/coreComponents-syuh2fPG.js.map +0 -1
  935. package/dist/debugCommands-CzjrSm66.js +0 -14739
  936. package/dist/debugCommands-CzjrSm66.js.map +0 -1
  937. package/dist/determinism-BCymQwiE.js +0 -518
  938. package/dist/determinism-BCymQwiE.js.map +0 -1
  939. package/dist/game-DiJEN-Ks.js +0 -5800
  940. package/dist/game-DiJEN-Ks.js.map +0 -1
  941. package/dist/index.js.map +0 -1
  942. package/dist/inspect-D9dWHmZ0.js.map +0 -1
  943. package/dist/local-Dkovq42k.js +0 -1379
  944. package/dist/local-Dkovq42k.js.map +0 -1
  945. package/dist/missionRules-C-bGxm0Q.js.map +0 -1
  946. package/dist/navigation-worker.js.map +0 -1
  947. package/dist/packs-g5thvmGn.js +0 -3199
  948. package/dist/packs-g5thvmGn.js.map +0 -1
  949. package/dist/profiles-B3NS9jwk.js.map +0 -1
  950. package/dist/server.js.map +0 -1
  951. package/dist/simulate-oXBiw1Ff.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The kit's `capture` task (design review B10): takes a capture point of the game (`withCapture`): done `captured`, or `lost` where it is gone
2
+ * The kit's `capture` task (design review B10): takes a capture point of the game (`capturePack`): done `captured`, or `lost` where it is gone
3
3
  */
4
4
  import { type Vec2 } from '#engine/math';
5
5
  import { type TaskMemory } from '../task';
@@ -9,12 +9,12 @@ import { type TaskMemory } from '../task';
9
9
  * @beta
10
10
  */
11
11
  export type CaptureData = {
12
- /** The capture point, by id (`withCapture`) */
12
+ /** The capture point, by id (`capturePack`) */
13
13
  point: string;
14
14
  at?: Vec2;
15
15
  };
16
16
  /**
17
- * Takes a capture point of the game (`withCapture`): done `captured`, or `lost` where it is gone
17
+ * Takes a capture point of the game (`capturePack`): done `captured`, or `lost` where it is gone
18
18
  *
19
19
  * @beta
20
20
  */
@@ -0,0 +1,37 @@
1
+ import { defineTask } from "../task.js";
2
+ import { capturePointsOf } from "./shared.js";
3
+ //#region src/ai/tasks/capture.ts
4
+ /**
5
+ * Takes a capture point of the game (`capturePack`): done `captured`, or `lost` where it is gone
6
+ *
7
+ * @beta
8
+ */
9
+ var CAPTURE = defineTask({
10
+ id: "capture",
11
+ start(ai, squad, state) {
12
+ state.phase = "going";
13
+ state.phaseSince = ai.tick;
14
+ const at = state.data.at;
15
+ if (at) squad.fight(at);
16
+ },
17
+ think(ai, squad, state) {
18
+ const found = capturePointsOf(ai).find((each) => each.id === state.data.point);
19
+ if (!found) return squad.finish("lost");
20
+ if (found.owner === ai.playerId) return squad.finish("captured");
21
+ state.data.at = {
22
+ x: found.x,
23
+ z: found.z
24
+ };
25
+ const idle = squad.idleUnits();
26
+ if (idle.length && squad.mayResend()) squad.fight({
27
+ x: found.x,
28
+ z: found.z
29
+ }, idle.map((unit) => unit.id));
30
+ },
31
+ where: (_ai, _squad, state) => state.data.at,
32
+ handles: ["regroup", "reinforce"]
33
+ });
34
+ //#endregion
35
+ export { CAPTURE };
36
+
37
+ //# sourceMappingURL=capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.js","names":[],"sources":["../../../src/ai/tasks/capture.ts"],"sourcesContent":["/**\n * The kit's `capture` task (design review B10): takes a capture point of the game (`capturePack`): done `captured`, or `lost` where it is gone\n */\nimport { type Vec2 } from '#engine/math'\nimport { defineTask, type TaskMemory } from '../task'\nimport { capturePointsOf } from './shared'\n\n/**\n * What the `capture` task is given\n *\n * @beta\n */\nexport type CaptureData = {\n\t/** The capture point, by id (`capturePack`) */\n\tpoint: string\n\tat?: Vec2\n}\n\n/**\n * Takes a capture point of the game (`capturePack`): done `captured`, or `lost` where it is gone\n *\n * @beta\n */\nexport const CAPTURE = defineTask<CaptureData, TaskMemory>({ id: 'capture', start(ai, squad, state) {\n\t\tstate.phase = 'going'\n\t\tstate.phaseSince = ai.tick\n\t\tconst at = state.data.at\n\t\tif (at) squad.fight(at)\n\t},\n\tthink(ai, squad, state) {\n\t\tconst found = capturePointsOf(ai).find((each) => each.id === state.data.point)\n\t\tif (!found) return squad.finish('lost')\n\t\tif (found.owner === ai.playerId) return squad.finish('captured')\n\t\tstate.data.at = { x: found.x, z: found.z }\n\t\t// what was pushed out, or stands idle short of it, is sent in again\n\t\tconst idle = squad.idleUnits()\n\t\tif (idle.length && squad.mayResend())\n\t\t\tsquad.fight(\n\t\t\t\t{ x: found.x, z: found.z },\n\t\t\t\tidle.map((unit) => unit.id)\n\t\t\t)\n\t},\n\twhere: (_ai, _squad, state) => state.data.at,\n\thandles: ['regroup', 'reinforce'] })\n"],"mappings":";;;;;;;;AAuBA,IAAa,UAAU,WAAoC;CAAE,IAAI;CAAW,MAAM,IAAI,OAAO,OAAO;EAClG,MAAM,QAAQ;EACd,MAAM,aAAa,GAAG;EACtB,MAAM,KAAK,MAAM,KAAK;EACtB,IAAI,IAAI,MAAM,MAAM,EAAE;CACvB;CACA,MAAM,IAAI,OAAO,OAAO;EACvB,MAAM,QAAQ,gBAAgB,EAAE,CAAC,CAAC,MAAM,SAAS,KAAK,OAAO,MAAM,KAAK,KAAK;EAC7E,IAAI,CAAC,OAAO,OAAO,MAAM,OAAO,MAAM;EACtC,IAAI,MAAM,UAAU,GAAG,UAAU,OAAO,MAAM,OAAO,UAAU;EAC/D,MAAM,KAAK,KAAK;GAAE,GAAG,MAAM;GAAG,GAAG,MAAM;EAAE;EAEzC,MAAM,OAAO,MAAM,UAAU;EAC7B,IAAI,KAAK,UAAU,MAAM,UAAU,GAClC,MAAM,MACL;GAAE,GAAG,MAAM;GAAG,GAAG,MAAM;EAAE,GACzB,KAAK,KAAK,SAAS,KAAK,EAAE,CAC3B;CACF;CACA,QAAQ,KAAK,QAAQ,UAAU,MAAM,KAAK;CAC1C,SAAS,CAAC,WAAW,WAAW;AAAE,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { distSq } from "../../math.js";
2
+ import { defineTask } from "../task.js";
3
+ import { goFight, watchFight } from "./shared.js";
4
+ //#region src/ai/tasks/creep.ts
5
+ /**
6
+ * The kit's `creep` task (design review B10): takes a camp of creeps: done `cleared` once the map says the camp is
7
+ */
8
+ /**
9
+ * Takes a camp of creeps: done `cleared` once the map says the camp is
10
+ *
11
+ * @beta
12
+ */
13
+ var CREEP = defineTask({
14
+ id: "creep",
15
+ start: goFight,
16
+ think(ai, squad, state) {
17
+ const at = state.data.at;
18
+ if (ai.view.camps().find((each) => distSq(each, at) < 16)?.cleared) {
19
+ squad.finish("cleared");
20
+ return;
21
+ }
22
+ watchFight(ai, squad, state);
23
+ },
24
+ where: (_ai, _squad, state) => state.data.at
25
+ });
26
+ //#endregion
27
+ export { CREEP };
28
+
29
+ //# sourceMappingURL=creep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creep.js","names":[],"sources":["../../../src/ai/tasks/creep.ts"],"sourcesContent":["/**\n * The kit's `creep` task (design review B10): takes a camp of creeps: done `cleared` once the map says the camp is\n */\nimport { distSq } from '#engine/math'\nimport type { Vec2 } from '#engine/math'\nimport { defineTask } from '../task'\nimport { type FightMemory, goFight, watchFight } from './shared'\n\n/**\n * What the `creep` task is given: the camp\n *\n * @beta\n */\nexport type CreepData = {\n\tat: Vec2\n}\n\n/**\n * Takes a camp of creeps: done `cleared` once the map says the camp is\n *\n * @beta\n */\nexport const CREEP = defineTask<CreepData, FightMemory>({ id: 'creep', start: goFight,\n\tthink(ai, squad, state) {\n\t\tconst at = state.data.at\n\t\t// cleared, as the map's camps say: the creeps gone, whatever stands about\n\t\tconst camp = ai.view.camps().find((each) => distSq(each, at) < 4 * 4)\n\t\tif (camp?.cleared) {\n\t\t\tsquad.finish('cleared')\n\t\t\treturn\n\t\t}\n\t\twatchFight(ai, squad, state)\n\t},\n\twhere: (_ai, _squad, state) => state.data.at })\n"],"mappings":";;;;;;;;;;;;AAsBA,IAAa,QAAQ,WAAmC;CAAE,IAAI;CAAS,OAAO;CAC7E,MAAM,IAAI,OAAO,OAAO;EACvB,MAAM,KAAK,MAAM,KAAK;EAGtB,IADa,GAAG,KAAK,MAAM,CAAC,CAAC,MAAM,SAAS,OAAO,MAAM,EAAE,IAAI,EAC3D,CAAA,EAAM,SAAS;GAClB,MAAM,OAAO,SAAS;GACtB;EACD;EACA,WAAW,IAAI,OAAO,KAAK;CAC5B;CACA,QAAQ,KAAK,QAAQ,UAAU,MAAM,KAAK;AAAG,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { distSq } from "../../math.js";
2
+ import { defineTask } from "../task.js";
3
+ import { foesNear } from "./shared.js";
4
+ //#region src/ai/tasks/defend.ts
5
+ /**
6
+ * The kit's `defend` task (design review B10): holds a place against what comes within its radius, one foe at a time
7
+ */
8
+ /** How far past the place a defender goes after a foe, as a share of the radius: past it, it comes back (AI1) */
9
+ var LEASH = 1.5;
10
+ /**
11
+ * Holds a place against what comes within its radius, one foe at a time
12
+ *
13
+ * @beta
14
+ */
15
+ var DEFEND_TASK = defineTask({
16
+ id: "defend",
17
+ start(ai, squad, state) {
18
+ state.phase = "going";
19
+ state.phaseSince = ai.tick;
20
+ squad.fight(state.data.at);
21
+ },
22
+ think(ai, squad, state) {
23
+ const at = state.data.at;
24
+ const radius = state.data.radius ?? 16;
25
+ const foes = foesNear(ai, at, radius).units();
26
+ const middle = squad.centre() ?? at;
27
+ const leash = radius * LEASH;
28
+ const gone = squad.units().filter((unit) => !unit.own?.hidden && distSq(unit, at) > leash * leash).map((unit) => unit.id);
29
+ const back = squad.units().filter((unit) => gone.includes(unit.id) && unit.own?.order !== "move").map((unit) => unit.id);
30
+ if (back.length && squad.mayResend()) squad.order({
31
+ type: "move",
32
+ point: at
33
+ }, back);
34
+ const here = gone.length ? squad.data.units.filter((id) => !gone.includes(id)) : squad.data.units;
35
+ if (foes.length) {
36
+ state.phase = "fighting";
37
+ const chosen = foes.find((foe) => foe.id === state.memory.foe);
38
+ const idle = squad.idleUnits().filter((unit) => !gone.includes(unit.id));
39
+ if (chosen && !idle.length) return;
40
+ if (ai.made("micro")?.manages(squad)) {
41
+ if (idle.length && squad.mayResend()) squad.fight(chosen ?? foes.nearest(middle), idle.map((unit) => unit.id), chosen?.id);
42
+ return;
43
+ }
44
+ const foe = chosen ?? foes.nearest(middle);
45
+ state.memory.foe = foe.id;
46
+ squad.fight(foe, chosen ? idle.map((unit) => unit.id) : here);
47
+ return;
48
+ }
49
+ state.phase = "holding";
50
+ delete state.memory.foe;
51
+ if (!squad.mayResend()) return;
52
+ const strayed = squad.units().filter((unit) => !unit.own?.order && distSq(unit, at) > radius / 2 * (radius / 2));
53
+ if (strayed.length) squad.fight(at, strayed.map((unit) => unit.id));
54
+ },
55
+ where: (_ai, _squad, state) => state.data.at,
56
+ handles: ["regroup"]
57
+ });
58
+ //#endregion
59
+ export { DEFEND_TASK };
60
+
61
+ //# sourceMappingURL=defend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defend.js","names":[],"sources":["../../../src/ai/tasks/defend.ts"],"sourcesContent":["/**\n * The kit's `defend` task (design review B10): holds a place against what comes within its radius, one foe at a time\n */\nimport { distSq, type Vec2 } from '#engine/math'\nimport type { Micro } from '../micro'\nimport { defineTask } from '../task'\nimport { foesNear } from './shared'\n\n/** How far past the place a defender goes after a foe, as a share of the radius: past it, it comes back (AI1) */\nconst LEASH = 1.5\n\n/**\n * What the `defend` task is given\n *\n * @beta\n */\nexport type DefendData = {\n\tat: Vec2\n\t/** How far round the place it fights: 16 when left out */\n\tradius?: number\n}\n\n/**\n * What the `defend` task remembers\n *\n * @beta\n */\nexport type DefendMemory = {\n\t/** The foe the whole squad is on */\n\tfoe?: number\n}\n\n/**\n * Holds a place against what comes within its radius, one foe at a time\n *\n * @beta\n */\nexport const DEFEND_TASK = defineTask<DefendData, DefendMemory>({ id: 'defend', start(ai, squad, state) {\n\t\tstate.phase = 'going'\n\t\tstate.phaseSince = ai.tick\n\t\tsquad.fight(state.data.at)\n\t},\n\tthink(ai, squad, state) {\n\t\tconst at = state.data.at\n\t\tconst radius = state.data.radius ?? 16\n\t\tconst foes = foesNear(ai, at, radius).units()\n\t\tconst middle = squad.centre() ?? at\n\t\t// a defender that went after a foe past its leash, whatever it is on, comes back to the place: the foe runs home,\n\t\t// and the defender would follow it into their base (AI1)\n\t\tconst leash = radius * LEASH\n\t\tconst gone = squad\n\t\t\t.units()\n\t\t\t.filter((unit) => !unit.own?.hidden && distSq(unit, at) > leash * leash)\n\t\t\t.map((unit) => unit.id)\n\t\t// (those on their way back already are left to it: told again, the order would only be the same)\n\t\tconst back = squad\n\t\t\t.units()\n\t\t\t.filter((unit) => gone.includes(unit.id) && unit.own?.order !== 'move')\n\t\t\t.map((unit) => unit.id)\n\t\tif (back.length && squad.mayResend()) squad.order({ type: 'move', point: at }, back)\n\t\tconst here = gone.length ? squad.data.units.filter((id) => !gone.includes(id)) : squad.data.units\n\t\tif (foes.length) {\n\t\t\tstate.phase = 'fighting'\n\t\t\t// one foe at a time for the whole squad: chosen again when it is gone, or what stands idle is sent again. With\n\t\t\t// the micro module fighting for the squad (C2), it is the one that chooses, and writes whom here\n\t\t\tconst chosen = foes.find((foe) => foe.id === state.memory.foe)\n\t\t\tconst idle = squad.idleUnits().filter((unit) => !gone.includes(unit.id))\n\t\t\tif (chosen && !idle.length) return\n\t\t\tif (ai.made<Micro>('micro')?.manages(squad)) {\n\t\t\t\tif (idle.length && squad.mayResend())\n\t\t\t\t\tsquad.fight(\n\t\t\t\t\t\tchosen ?? foes.nearest(middle)!,\n\t\t\t\t\t\tidle.map((unit) => unit.id),\n\t\t\t\t\t\tchosen?.id\n\t\t\t\t\t)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst foe = chosen ?? foes.nearest(middle)!\n\t\t\tstate.memory.foe = foe.id\n\t\t\tsquad.fight(foe, chosen ? idle.map((unit) => unit.id) : here)\n\t\t\treturn\n\t\t}\n\t\tstate.phase = 'holding'\n\t\tdelete state.memory.foe\n\t\t// nothing to fight: back to the place, for those that wandered off after it\n\t\tif (!squad.mayResend()) return\n\t\tconst strayed = squad.units().filter((unit) => !unit.own?.order && distSq(unit, at) > (radius / 2) * (radius / 2))\n\t\tif (strayed.length)\n\t\t\tsquad.fight(\n\t\t\t\tat,\n\t\t\t\tstrayed.map((unit) => unit.id)\n\t\t\t)\n\t},\n\twhere: (_ai, _squad, state) => state.data.at,\n\thandles: ['regroup'] })\n"],"mappings":";;;;;;;;AASA,IAAM,QAAQ;;;;;;AA4Bd,IAAa,cAAc,WAAqC;CAAE,IAAI;CAAU,MAAM,IAAI,OAAO,OAAO;EACtG,MAAM,QAAQ;EACd,MAAM,aAAa,GAAG;EACtB,MAAM,MAAM,MAAM,KAAK,EAAE;CAC1B;CACA,MAAM,IAAI,OAAO,OAAO;EACvB,MAAM,KAAK,MAAM,KAAK;EACtB,MAAM,SAAS,MAAM,KAAK,UAAU;EACpC,MAAM,OAAO,SAAS,IAAI,IAAI,MAAM,CAAC,CAAC,MAAM;EAC5C,MAAM,SAAS,MAAM,OAAO,KAAK;EAGjC,MAAM,QAAQ,SAAS;EACvB,MAAM,OAAO,MACX,MAAM,CAAC,CACP,QAAQ,SAAS,CAAC,KAAK,KAAK,UAAU,OAAO,MAAM,EAAE,IAAI,QAAQ,KAAK,CAAC,CACvE,KAAK,SAAS,KAAK,EAAE;EAEvB,MAAM,OAAO,MACX,MAAM,CAAC,CACP,QAAQ,SAAS,KAAK,SAAS,KAAK,EAAE,KAAK,KAAK,KAAK,UAAU,MAAM,CAAC,CACtE,KAAK,SAAS,KAAK,EAAE;EACvB,IAAI,KAAK,UAAU,MAAM,UAAU,GAAG,MAAM,MAAM;GAAE,MAAM;GAAQ,OAAO;EAAG,GAAG,IAAI;EACnF,MAAM,OAAO,KAAK,SAAS,MAAM,KAAK,MAAM,QAAQ,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC,IAAI,MAAM,KAAK;EAC5F,IAAI,KAAK,QAAQ;GAChB,MAAM,QAAQ;GAGd,MAAM,SAAS,KAAK,MAAM,QAAQ,IAAI,OAAO,MAAM,OAAO,GAAG;GAC7D,MAAM,OAAO,MAAM,UAAU,CAAC,CAAC,QAAQ,SAAS,CAAC,KAAK,SAAS,KAAK,EAAE,CAAC;GACvE,IAAI,UAAU,CAAC,KAAK,QAAQ;GAC5B,IAAI,GAAG,KAAY,OAAO,CAAC,EAAE,QAAQ,KAAK,GAAG;IAC5C,IAAI,KAAK,UAAU,MAAM,UAAU,GAClC,MAAM,MACL,UAAU,KAAK,QAAQ,MAAM,GAC7B,KAAK,KAAK,SAAS,KAAK,EAAE,GAC1B,QAAQ,EACT;IACD;GACD;GACA,MAAM,MAAM,UAAU,KAAK,QAAQ,MAAM;GACzC,MAAM,OAAO,MAAM,IAAI;GACvB,MAAM,MAAM,KAAK,SAAS,KAAK,KAAK,SAAS,KAAK,EAAE,IAAI,IAAI;GAC5D;EACD;EACA,MAAM,QAAQ;EACd,OAAO,MAAM,OAAO;EAEpB,IAAI,CAAC,MAAM,UAAU,GAAG;EACxB,MAAM,UAAU,MAAM,MAAM,CAAC,CAAC,QAAQ,SAAS,CAAC,KAAK,KAAK,SAAS,OAAO,MAAM,EAAE,IAAK,SAAS,KAAM,SAAS,EAAE;EACjH,IAAI,QAAQ,QACX,MAAM,MACL,IACA,QAAQ,KAAK,SAAS,KAAK,EAAE,CAC9B;CACF;CACA,QAAQ,KAAK,QAAQ,UAAU,MAAM,KAAK;CAC1C,SAAS,CAAC,SAAS;AAAE,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { defineTask } from "../task.js";
2
+ //#region src/ai/tasks/drop.ts
3
+ /** Seconds it waits for its units to get in before it sails with those that did */
4
+ var BOARDING_WAIT = 20;
5
+ /** Seconds after the transports are sent off before their having no order is taken for their having stopped */
6
+ var SEEN_AFTER = 2;
7
+ /** The transports of the task that are still the brain's and afloat, with room or not */
8
+ var transportsOf = (squad, ids) => {
9
+ const { view } = squad.squads.ai;
10
+ return ids.filter((id) => view.mine.has(id) && (view.byId(id)?.health ?? 0) > 0);
11
+ };
12
+ /**
13
+ * Carries the squad to a place by its transports: each unit told to get into one (shared out as they have room), the
14
+ * transports sent off once all are in (or after `BOARDING_WAIT` seconds, with those that are), and told to let them out
15
+ * on the land nearest the place. Done `landed` once they are all out; `lost` with no transport left to carry them
16
+ *
17
+ * @beta
18
+ */
19
+ var DROP = defineTask({
20
+ id: "drop",
21
+ fighting: false,
22
+ handles: [
23
+ "regroup",
24
+ "retreat",
25
+ "reinforce"
26
+ ],
27
+ start(ai, squad, state) {
28
+ state.phase = "boarding";
29
+ state.phaseSince = ai.tick;
30
+ state.memory.waiting = ai.time;
31
+ const transports = transportsOf(squad, state.data.transports);
32
+ if (!transports.length) return;
33
+ squad.data.units.forEach((unit, i) => squad.order({
34
+ type: "board",
35
+ target: transports[i % transports.length]
36
+ }, [unit]));
37
+ },
38
+ think(ai, squad, state) {
39
+ const { view } = ai;
40
+ const transports = transportsOf(squad, state.data.transports);
41
+ const units = [...squad.units()];
42
+ const aboard = units.filter((unit) => unit.own?.hidden);
43
+ if (!units.length) return;
44
+ if (state.phase === "boarding") {
45
+ if (!transports.length) return squad.finish("lost");
46
+ const waited = ai.time - (state.memory.waiting ?? ai.time);
47
+ if (aboard.length < units.length && waited < BOARDING_WAIT) return;
48
+ if (!aboard.length) return squad.finish("lost");
49
+ state.phase = "sailing";
50
+ state.phaseSince = ai.tick;
51
+ state.memory.sailed = ai.time;
52
+ ai.send({
53
+ type: "order",
54
+ entities: transports,
55
+ order: {
56
+ type: "unload",
57
+ point: state.data.at
58
+ }
59
+ });
60
+ return;
61
+ }
62
+ if (!aboard.length) {
63
+ squad.finish("landed");
64
+ return;
65
+ }
66
+ if (ai.time - (state.memory.sailed ?? ai.time) < SEEN_AFTER) return;
67
+ if (!transports.length || transports.every((id) => !view.byId(id)?.own?.order)) {
68
+ if (transports.length) ai.send({
69
+ type: "order",
70
+ entities: transports,
71
+ order: { type: "unload" }
72
+ });
73
+ else squad.finish("lost");
74
+ }
75
+ },
76
+ where: (_ai, _squad, state) => state.data.at
77
+ });
78
+ //#endregion
79
+ export { DROP };
80
+
81
+ //# sourceMappingURL=drop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drop.js","names":[],"sources":["../../../src/ai/tasks/drop.ts"],"sourcesContent":["/**\n * The kit's `drop` task: a squad carried by transports to a place it cannot walk to (an island, across a river, behind\n * the enemy's walls), let out on the land nearest it: done `landed`, its `then` after (an attack where it landed)\n */\nimport { type Vec2 } from '#engine/math'\nimport type { Squad } from '../squads'\nimport { defineTask } from '../task'\n\n/**\n * What the `drop` task is given: where it lands, and the transports that carry it (the brain's units, not of the\n * squad: they are let go of once they have let it out)\n *\n * @beta\n */\nexport type DropData = {\n\tat: Vec2\n\ttransports: number[]\n}\n\n/**\n * What the `drop` task remembers: since when it waits for its units to get in\n *\n * @beta\n */\nexport type DropMemory = {\n\t/** When it began to wait for its units to get in, in seconds of the game */\n\twaiting?: number\n\t/** When the transports were sent off, in seconds of the game */\n\tsailed?: number\n}\n\n/** Seconds it waits for its units to get in before it sails with those that did */\nconst BOARDING_WAIT = 20\n/** Seconds after the transports are sent off before their having no order is taken for their having stopped */\nconst SEEN_AFTER = 2\n\n/** The transports of the task that are still the brain's and afloat, with room or not */\nconst transportsOf = (squad: Squad, ids: readonly number[]) => {\n\tconst { view } = squad.squads.ai\n\treturn ids.filter((id) => view.mine.has(id) && (view.byId(id)?.health ?? 0) > 0)\n}\n\n/**\n * Carries the squad to a place by its transports: each unit told to get into one (shared out as they have room), the\n * transports sent off once all are in (or after `BOARDING_WAIT` seconds, with those that are), and told to let them out\n * on the land nearest the place. Done `landed` once they are all out; `lost` with no transport left to carry them\n *\n * @beta\n */\nexport const DROP = defineTask<DropData, DropMemory>({ id: 'drop', fighting: false,\n\t// aboard, the squad is nowhere to regroup at, nor to reinforce or retreat from\n\thandles: ['regroup', 'retreat', 'reinforce'],\n\tstart(ai, squad, state) {\n\t\tstate.phase = 'boarding'\n\t\tstate.phaseSince = ai.tick\n\t\tstate.memory.waiting = ai.time\n\t\tconst transports = transportsOf(squad, state.data.transports)\n\t\tif (!transports.length) return\n\t\t// shared out in turn: the first to the first, the second to the second...\n\t\tsquad.data.units.forEach((unit, i) => squad.order({ type: 'board', target: transports[i % transports.length] }, [unit]))\n\t},\n\tthink(ai, squad, state) {\n\t\tconst { view } = ai\n\t\tconst transports = transportsOf(squad, state.data.transports)\n\t\tconst units = [...squad.units()]\n\t\tconst aboard = units.filter((unit) => unit.own?.hidden)\n\t\tif (!units.length) return\n\t\tif (state.phase === 'boarding') {\n\t\t\tif (!transports.length) return squad.finish('lost')\n\t\t\tconst waited = ai.time - (state.memory.waiting ?? ai.time)\n\t\t\tif (aboard.length < units.length && waited < BOARDING_WAIT) return\n\t\t\tif (!aboard.length) return squad.finish('lost')\n\t\t\tstate.phase = 'sailing'\n\t\t\tstate.phaseSince = ai.tick\n\t\t\tstate.memory.sailed = ai.time\n\t\t\tai.send({ type: 'order', entities: transports, order: { type: 'unload', point: state.data.at } })\n\t\t\treturn\n\t\t}\n\t\t// sailing: done once every unit that got in is out again\n\t\tif (!aboard.length) {\n\t\t\tsquad.finish('landed')\n\t\t\treturn\n\t\t}\n\t\t// (the order sent is seen a think or two later: not taken for one stopped short meanwhile)\n\t\tif (ai.time - (state.memory.sailed ?? ai.time) < SEEN_AFTER) return\n\t\tif (!transports.length || transports.every((id) => !view.byId(id)?.own?.order)) {\n\t\t\t// the transports stopped short of it (no land in reach there): let out wherever they are\n\t\t\tif (transports.length) ai.send({ type: 'order', entities: transports, order: { type: 'unload' } })\n\t\t\telse squad.finish('lost')\n\t\t}\n\t},\n\twhere: (_ai, _squad, state) => state.data.at })\n"],"mappings":";;;AAgCA,IAAM,gBAAgB;;AAEtB,IAAM,aAAa;;AAGnB,IAAM,gBAAgB,OAAc,QAA2B;CAC9D,MAAM,EAAE,SAAS,MAAM,OAAO;CAC9B,OAAO,IAAI,QAAQ,OAAO,KAAK,KAAK,IAAI,EAAE,MAAM,KAAK,KAAK,EAAE,CAAC,EAAE,UAAU,KAAK,CAAC;AAChF;;;;;;;;AASA,IAAa,OAAO,WAAiC;CAAE,IAAI;CAAQ,UAAU;CAE5E,SAAS;EAAC;EAAW;EAAW;CAAW;CAC3C,MAAM,IAAI,OAAO,OAAO;EACvB,MAAM,QAAQ;EACd,MAAM,aAAa,GAAG;EACtB,MAAM,OAAO,UAAU,GAAG;EAC1B,MAAM,aAAa,aAAa,OAAO,MAAM,KAAK,UAAU;EAC5D,IAAI,CAAC,WAAW,QAAQ;EAExB,MAAM,KAAK,MAAM,SAAS,MAAM,MAAM,MAAM,MAAM;GAAE,MAAM;GAAS,QAAQ,WAAW,IAAI,WAAW;EAAQ,GAAG,CAAC,IAAI,CAAC,CAAC;CACxH;CACA,MAAM,IAAI,OAAO,OAAO;EACvB,MAAM,EAAE,SAAS;EACjB,MAAM,aAAa,aAAa,OAAO,MAAM,KAAK,UAAU;EAC5D,MAAM,QAAQ,CAAC,GAAG,MAAM,MAAM,CAAC;EAC/B,MAAM,SAAS,MAAM,QAAQ,SAAS,KAAK,KAAK,MAAM;EACtD,IAAI,CAAC,MAAM,QAAQ;EACnB,IAAI,MAAM,UAAU,YAAY;GAC/B,IAAI,CAAC,WAAW,QAAQ,OAAO,MAAM,OAAO,MAAM;GAClD,MAAM,SAAS,GAAG,QAAQ,MAAM,OAAO,WAAW,GAAG;GACrD,IAAI,OAAO,SAAS,MAAM,UAAU,SAAS,eAAe;GAC5D,IAAI,CAAC,OAAO,QAAQ,OAAO,MAAM,OAAO,MAAM;GAC9C,MAAM,QAAQ;GACd,MAAM,aAAa,GAAG;GACtB,MAAM,OAAO,SAAS,GAAG;GACzB,GAAG,KAAK;IAAE,MAAM;IAAS,UAAU;IAAY,OAAO;KAAE,MAAM;KAAU,OAAO,MAAM,KAAK;IAAG;GAAE,CAAC;GAChG;EACD;EAEA,IAAI,CAAC,OAAO,QAAQ;GACnB,MAAM,OAAO,QAAQ;GACrB;EACD;EAEA,IAAI,GAAG,QAAQ,MAAM,OAAO,UAAU,GAAG,QAAQ,YAAY;EAC7D,IAAI,CAAC,WAAW,UAAU,WAAW,OAAO,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,GAAG;GAE/E,IAAI,WAAW,QAAQ,GAAG,KAAK;IAAE,MAAM;IAAS,UAAU;IAAY,OAAO,EAAE,MAAM,SAAS;GAAE,CAAC;QAC5F,MAAM,OAAO,MAAM;EACzB;CACD;CACA,QAAQ,KAAK,QAAQ,UAAU,MAAM,KAAK;AAAG,CAAC"}
@@ -0,0 +1,59 @@
1
+ import "../reach.js";
2
+ import { point } from "../geometry.js";
3
+ import { defineTask } from "../task.js";
4
+ import { foesNear } from "./shared.js";
5
+ //#region src/ai/tasks/escort.ts
6
+ /**
7
+ * The kit's `escort` task (design review B10): follows a unit and fights what comes near it: done `lost` with it gone
8
+ */
9
+ /**
10
+ * Follows a unit and fights what comes near it: done `lost` with it gone
11
+ *
12
+ * @beta
13
+ */
14
+ var ESCORT = defineTask({
15
+ id: "escort",
16
+ start(ai, squad, state) {
17
+ state.phase = "going";
18
+ state.phaseSince = ai.tick;
19
+ squad.order({
20
+ type: "follow",
21
+ target: state.data.target
22
+ });
23
+ },
24
+ think(ai, squad, state) {
25
+ const target = ai.view.byId(state.data.target);
26
+ if (!target || target.health <= 0) {
27
+ squad.finish("lost");
28
+ return;
29
+ }
30
+ if (foesNear(ai, target, 14).length) {
31
+ if (state.phase !== "fighting") {
32
+ state.phase = "fighting";
33
+ state.phaseSince = ai.tick;
34
+ squad.fight(target);
35
+ }
36
+ return;
37
+ }
38
+ const idle = squad.idleUnits();
39
+ const fought = state.phase === "fighting";
40
+ if (fought || idle.length && squad.mayResend()) {
41
+ state.phase = "going";
42
+ state.phaseSince = ai.tick;
43
+ const off = fought ? squad.units().filter((unit) => unit.own?.order !== "follow") : idle;
44
+ if (off.length) squad.order({
45
+ type: "follow",
46
+ target: target.id
47
+ }, off.map((unit) => unit.id));
48
+ }
49
+ },
50
+ where: (ai, _squad, state) => {
51
+ const target = ai.view.byId(state.data.target);
52
+ return target && point(target);
53
+ },
54
+ handles: ["regroup"]
55
+ });
56
+ //#endregion
57
+ export { ESCORT };
58
+
59
+ //# sourceMappingURL=escort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escort.js","names":[],"sources":["../../../src/ai/tasks/escort.ts"],"sourcesContent":["/**\n * The kit's `escort` task (design review B10): follows a unit and fights what comes near it: done `lost` with it gone\n */\nimport { point } from '../geometry'\nimport { FIGHT_REACH } from '../reach'\nimport { defineTask, type TaskMemory } from '../task'\nimport { foesNear } from './shared'\n\n/**\n * What the `escort` task is given\n *\n * @beta\n */\nexport type EscortData = {\n\t/** Whom it follows */\n\ttarget: number\n}\n\n/**\n * Follows a unit and fights what comes near it: done `lost` with it gone\n *\n * @beta\n */\nexport const ESCORT = defineTask<EscortData, TaskMemory>({ id: 'escort', start(ai, squad, state) {\n\t\tstate.phase = 'going'\n\t\tstate.phaseSince = ai.tick\n\t\tsquad.order({ type: 'follow', target: state.data.target })\n\t},\n\tthink(ai, squad, state) {\n\t\tconst target = ai.view.byId(state.data.target)\n\t\tif (!target || target.health <= 0) {\n\t\t\tsquad.finish('lost')\n\t\t\treturn\n\t\t}\n\t\tconst foes = foesNear(ai, target, FIGHT_REACH)\n\t\tif (foes.length) {\n\t\t\t// what comes near it is fought; once gone, it is followed again\n\t\t\tif (state.phase !== 'fighting') {\n\t\t\t\tstate.phase = 'fighting'\n\t\t\t\tstate.phaseSince = ai.tick\n\t\t\t\tsquad.fight(target)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t\tconst idle = squad.idleUnits()\n\t\tconst fought = state.phase === 'fighting'\n\t\tif (fought || (idle.length && squad.mayResend())) {\n\t\t\tstate.phase = 'going'\n\t\t\tstate.phaseSince = ai.tick\n\t\t\t// after a fight, those not following it already (one that never left it is not told again); else those idle\n\t\t\tconst off = fought ? squad.units().filter((unit) => unit.own?.order !== 'follow') : idle\n\t\t\tif (off.length)\n\t\t\t\tsquad.order(\n\t\t\t\t\t{ type: 'follow', target: target.id },\n\t\t\t\t\toff.map((unit) => unit.id)\n\t\t\t\t)\n\t\t}\n\t},\n\twhere: (ai, _squad, state) => {\n\t\tconst target = ai.view.byId(state.data.target)\n\t\treturn target && point(target)\n\t},\n\thandles: ['regroup'] })\n"],"mappings":";;;;;;;;;;;;;AAuBA,IAAa,SAAS,WAAmC;CAAE,IAAI;CAAU,MAAM,IAAI,OAAO,OAAO;EAC/F,MAAM,QAAQ;EACd,MAAM,aAAa,GAAG;EACtB,MAAM,MAAM;GAAE,MAAM;GAAU,QAAQ,MAAM,KAAK;EAAO,CAAC;CAC1D;CACA,MAAM,IAAI,OAAO,OAAO;EACvB,MAAM,SAAS,GAAG,KAAK,KAAK,MAAM,KAAK,MAAM;EAC7C,IAAI,CAAC,UAAU,OAAO,UAAU,GAAG;GAClC,MAAM,OAAO,MAAM;GACnB;EACD;EAEA,IADa,SAAS,IAAI,QAAA,EACtB,CAAA,CAAK,QAAQ;GAEhB,IAAI,MAAM,UAAU,YAAY;IAC/B,MAAM,QAAQ;IACd,MAAM,aAAa,GAAG;IACtB,MAAM,MAAM,MAAM;GACnB;GACA;EACD;EACA,MAAM,OAAO,MAAM,UAAU;EAC7B,MAAM,SAAS,MAAM,UAAU;EAC/B,IAAI,UAAW,KAAK,UAAU,MAAM,UAAU,GAAI;GACjD,MAAM,QAAQ;GACd,MAAM,aAAa,GAAG;GAEtB,MAAM,MAAM,SAAS,MAAM,MAAM,CAAC,CAAC,QAAQ,SAAS,KAAK,KAAK,UAAU,QAAQ,IAAI;GACpF,IAAI,IAAI,QACP,MAAM,MACL;IAAE,MAAM;IAAU,QAAQ,OAAO;GAAG,GACpC,IAAI,KAAK,SAAS,KAAK,EAAE,CAC1B;EACF;CACD;CACA,QAAQ,IAAI,QAAQ,UAAU;EAC7B,MAAM,SAAS,GAAG,KAAK,KAAK,MAAM,KAAK,MAAM;EAC7C,OAAO,UAAU,MAAM,MAAM;CAC9B;CACA,SAAS,CAAC,SAAS;AAAE,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { distSq } from "../../math.js";
2
+ import { defineTask } from "../task.js";
3
+ //#region src/ai/tasks/gather.ts
4
+ /**
5
+ * The kit's `gather` task (design review B10): gathers at a rally: done `arrived` once enough are there, or the time is up
6
+ */
7
+ /**
8
+ * Gathers at a rally: done `arrived` once enough are there, or the time is up
9
+ *
10
+ * @beta
11
+ */
12
+ var GATHER = defineTask({
13
+ id: "gather",
14
+ fighting: false,
15
+ start(ai, squad, state) {
16
+ state.phase = "gathering";
17
+ state.phaseSince = ai.tick;
18
+ squad.order({
19
+ type: "move",
20
+ point: state.data.at
21
+ });
22
+ },
23
+ think(ai, squad, state) {
24
+ const at = state.data.at;
25
+ const units = squad.units();
26
+ const spread = squad.spread();
27
+ const there = units.filter((unit) => distSq(unit, at) <= spread * spread).length;
28
+ const share = state.data.minForces ?? 1;
29
+ const seconds = state.data.seconds;
30
+ const ready = there >= Math.max(1, Math.ceil(squad.data.size * share));
31
+ const waited = seconds !== void 0 && ai.tick - state.since >= seconds * ai.session.tickRate;
32
+ if (ready || waited) {
33
+ squad.finish("arrived");
34
+ return;
35
+ }
36
+ const lost = squad.idleUnits().filter((unit) => distSq(unit, at) > spread * spread);
37
+ if (lost.length && squad.mayResend()) squad.order({
38
+ type: "move",
39
+ point: at
40
+ }, lost.map((unit) => unit.id));
41
+ },
42
+ where: (_ai, _squad, state) => state.data.at,
43
+ handles: ["regroup"]
44
+ });
45
+ //#endregion
46
+ export { GATHER };
47
+
48
+ //# sourceMappingURL=gather.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gather.js","names":[],"sources":["../../../src/ai/tasks/gather.ts"],"sourcesContent":["/**\n * The kit's `gather` task (design review B10): gathers at a rally: done `arrived` once enough are there, or the time is up\n */\nimport { distSq, type Vec2 } from '#engine/math'\nimport { defineTask, type TaskMemory } from '../task'\n\n/**\n * What the `gather` task is given\n *\n * @beta\n */\nexport type GatherData = {\n\tat: Vec2\n\t/** The share of the squad there that is enough: all when left out */\n\tminForces?: number\n\t/** Seconds it waits at most */\n\tseconds?: number\n}\n\n/**\n * Gathers at a rally: done `arrived` once enough are there, or the time is up\n *\n * @beta\n */\nexport const GATHER = defineTask<GatherData, TaskMemory>({ id: 'gather', fighting: false,\n\tstart(ai, squad, state) {\n\t\tstate.phase = 'gathering'\n\t\tstate.phaseSince = ai.tick\n\t\tsquad.order({ type: 'move', point: state.data.at })\n\t},\n\tthink(ai, squad, state) {\n\t\tconst at = state.data.at\n\t\tconst units = squad.units()\n\t\tconst spread = squad.spread()\n\t\tconst there = units.filter((unit) => distSq(unit, at) <= spread * spread).length\n\t\tconst share = state.data.minForces ?? 1\n\t\tconst seconds = state.data.seconds\n\t\tconst ready = there >= Math.max(1, Math.ceil(squad.data.size * share))\n\t\tconst waited = seconds !== undefined && ai.tick - state.since >= seconds * ai.session.tickRate\n\t\tif (ready || waited) {\n\t\t\tsquad.finish('arrived')\n\t\t\treturn\n\t\t}\n\t\t// those that came in since, or stood idle elsewhere: to the rally\n\t\tconst lost = squad.idleUnits().filter((unit) => distSq(unit, at) > spread * spread)\n\t\tif (lost.length && squad.mayResend())\n\t\t\tsquad.order(\n\t\t\t\t{ type: 'move', point: at },\n\t\t\t\tlost.map((unit) => unit.id)\n\t\t\t)\n\t},\n\twhere: (_ai, _squad, state) => state.data.at,\n\thandles: ['regroup'] })\n"],"mappings":";;;;;;;;;;;AAwBA,IAAa,SAAS,WAAmC;CAAE,IAAI;CAAU,UAAU;CAClF,MAAM,IAAI,OAAO,OAAO;EACvB,MAAM,QAAQ;EACd,MAAM,aAAa,GAAG;EACtB,MAAM,MAAM;GAAE,MAAM;GAAQ,OAAO,MAAM,KAAK;EAAG,CAAC;CACnD;CACA,MAAM,IAAI,OAAO,OAAO;EACvB,MAAM,KAAK,MAAM,KAAK;EACtB,MAAM,QAAQ,MAAM,MAAM;EAC1B,MAAM,SAAS,MAAM,OAAO;EAC5B,MAAM,QAAQ,MAAM,QAAQ,SAAS,OAAO,MAAM,EAAE,KAAK,SAAS,MAAM,CAAC,CAAC;EAC1E,MAAM,QAAQ,MAAM,KAAK,aAAa;EACtC,MAAM,UAAU,MAAM,KAAK;EAC3B,MAAM,QAAQ,SAAS,KAAK,IAAI,GAAG,KAAK,KAAK,MAAM,KAAK,OAAO,KAAK,CAAC;EACrE,MAAM,SAAS,YAAY,KAAA,KAAa,GAAG,OAAO,MAAM,SAAS,UAAU,GAAG,QAAQ;EACtF,IAAI,SAAS,QAAQ;GACpB,MAAM,OAAO,SAAS;GACtB;EACD;EAEA,MAAM,OAAO,MAAM,UAAU,CAAC,CAAC,QAAQ,SAAS,OAAO,MAAM,EAAE,IAAI,SAAS,MAAM;EAClF,IAAI,KAAK,UAAU,MAAM,UAAU,GAClC,MAAM,MACL;GAAE,MAAM;GAAQ,OAAO;EAAG,GAC1B,KAAK,KAAK,SAAS,KAAK,EAAE,CAC3B;CACF;CACA,QAAQ,KAAK,QAAQ,UAAU,MAAM,KAAK;CAC1C,SAAS,CAAC,SAAS;AAAE,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { distSq } from "../../math.js";
2
+ import "../reach.js";
3
+ import { defineTask } from "../task.js";
4
+ import { goFight, placeOf, planRoute, watchFight } from "./shared.js";
5
+ //#region src/ai/tasks/harass.ts
6
+ /**
7
+ * The kit's `harass` task (design review B10): goes for the workers at a place, one at a time, round their army where told
8
+ */
9
+ /**
10
+ * Goes for the workers at a place, one at a time, round their army where told
11
+ *
12
+ * @beta
13
+ */
14
+ var HARASS = defineTask({
15
+ id: "harass",
16
+ start(ai, squad, state) {
17
+ planRoute(ai, squad, state);
18
+ goFight(ai, squad, state);
19
+ },
20
+ think(ai, squad, state) {
21
+ watchFight(ai, squad, state);
22
+ if (squad.done !== void 0 || state.phase === "regrouping") return;
23
+ const at = placeOf(ai, state);
24
+ const middle = squad.centre();
25
+ if (!middle || distSq(middle, at) > 196) return;
26
+ const workers = ai.view.enemies.units().alive().workers().near(at, 14);
27
+ const prey = state.memory.prey;
28
+ if (prey !== void 0 && workers.has(prey)) return;
29
+ const next = workers.nearest(middle);
30
+ if (!next) return;
31
+ state.memory.prey = next.id;
32
+ if (!ai.made("micro")?.manages(squad)) squad.fight(next, squad.data.units, next.id);
33
+ },
34
+ where: (ai, _squad, state) => placeOf(ai, state)
35
+ });
36
+ //#endregion
37
+ export { HARASS };
38
+
39
+ //# sourceMappingURL=harass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harass.js","names":[],"sources":["../../../src/ai/tasks/harass.ts"],"sourcesContent":["/**\n * The kit's `harass` task (design review B10): goes for the workers at a place, one at a time, round their army where told\n */\nimport { distSq } from '#engine/math'\nimport type { Micro } from '../micro'\nimport { FIGHT_REACH } from '../reach'\nimport { defineTask } from '../task'\nimport { type FightData, type FightMemory, goFight, placeOf, planRoute, watchFight } from './shared'\n\n/**\n * Goes for the workers at a place, one at a time, round their army where told\n *\n * @beta\n */\nexport const HARASS = defineTask<FightData, FightMemory>({ id: 'harass', start(ai, squad, state) {\n\t\tplanRoute(ai, squad, state)\n\t\tgoFight(ai, squad, state)\n\t},\n\tthink(ai, squad, state) {\n\t\twatchFight(ai, squad, state)\n\t\tif (squad.done !== undefined || state.phase === 'regrouping') return\n\t\tconst at = placeOf(ai, state)!\n\t\tconst middle = squad.centre()\n\t\tif (!middle || distSq(middle, at) > FIGHT_REACH * FIGHT_REACH) return\n\t\t// once there, the workers first: what keeps their economy going\n\t\tconst workers = ai.view.enemies.units().alive().workers().near(at, FIGHT_REACH)\n\t\tconst prey = state.memory.prey\n\t\tif (prey !== undefined && workers.has(prey)) return\n\t\tconst next = workers.nearest(middle)\n\t\tif (!next) return\n\t\tstate.memory.prey = next.id\n\t\t// the micro module fighting for the squad sends whom it hits, the prey first (`Micro.target`): told by both, the\n\t\t// units would be told the same twice. Without it, the task sends\n\t\t// fought by its units where the micro does not take the squad (or the brain has none)\n\t\tif (!ai.made<Micro>('micro')?.manages(squad)) squad.fight(next, squad.data.units, next.id)\n\t},\n\twhere: (ai, _squad, state) => placeOf(ai, state) })\n"],"mappings":";;;;;;;;;;;;;AAcA,IAAa,SAAS,WAAmC;CAAE,IAAI;CAAU,MAAM,IAAI,OAAO,OAAO;EAC/F,UAAU,IAAI,OAAO,KAAK;EAC1B,QAAQ,IAAI,OAAO,KAAK;CACzB;CACA,MAAM,IAAI,OAAO,OAAO;EACvB,WAAW,IAAI,OAAO,KAAK;EAC3B,IAAI,MAAM,SAAS,KAAA,KAAa,MAAM,UAAU,cAAc;EAC9D,MAAM,KAAK,QAAQ,IAAI,KAAK;EAC5B,MAAM,SAAS,MAAM,OAAO;EAC5B,IAAI,CAAC,UAAU,OAAO,QAAQ,EAAE,IAAA,KAA+B;EAE/D,MAAM,UAAU,GAAG,KAAK,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAA,EAAe;EAC9E,MAAM,OAAO,MAAM,OAAO;EAC1B,IAAI,SAAS,KAAA,KAAa,QAAQ,IAAI,IAAI,GAAG;EAC7C,MAAM,OAAO,QAAQ,QAAQ,MAAM;EACnC,IAAI,CAAC,MAAM;EACX,MAAM,OAAO,OAAO,KAAK;EAIzB,IAAI,CAAC,GAAG,KAAY,OAAO,CAAC,EAAE,QAAQ,KAAK,GAAG,MAAM,MAAM,MAAM,MAAM,KAAK,OAAO,KAAK,EAAE;CAC1F;CACA,QAAQ,IAAI,QAAQ,UAAU,QAAQ,IAAI,KAAK;AAAE,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { defineTask } from "../task.js";
2
+ //#region src/ai/tasks/hold.ts
3
+ /**
4
+ * Stands its ground (defensive where the game has stances), where it is or at a place
5
+ *
6
+ * @beta
7
+ */
8
+ var HOLD = defineTask({
9
+ id: "hold",
10
+ fighting: false,
11
+ start(ai, squad, state) {
12
+ const at = state.data.at;
13
+ state.phase = "holding";
14
+ state.phaseSince = ai.tick;
15
+ squad.setStance("defensive");
16
+ if (at) squad.order({
17
+ type: "move",
18
+ point: at
19
+ });
20
+ squad.order({ type: "hold" }, squad.data.units, !!at);
21
+ },
22
+ think(_ai, squad, state) {
23
+ const idle = squad.idleUnits();
24
+ if (idle.length && squad.mayResend()) squad.order({ type: "hold" }, idle.map((unit) => unit.id));
25
+ },
26
+ where: (_ai, _squad, state) => state.data.at,
27
+ handles: ["regroup"]
28
+ });
29
+ //#endregion
30
+ export { HOLD };
31
+
32
+ //# sourceMappingURL=hold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hold.js","names":[],"sources":["../../../src/ai/tasks/hold.ts"],"sourcesContent":["/**\n * The kit's `hold` task (design review B10): stands its ground (defensive where the game has stances), where it is or at a place\n */\nimport { type Vec2 } from '#engine/math'\nimport { defineTask, type TaskMemory } from '../task'\n\n/**\n * What the `hold` task is given\n *\n * @beta\n */\nexport type HoldData = {\n\t/** Where it holds: where it stands when left out */\n\tat?: Vec2\n}\n\n/**\n * Stands its ground (defensive where the game has stances), where it is or at a place\n *\n * @beta\n */\nexport const HOLD = defineTask<HoldData, TaskMemory>({ id: 'hold', fighting: false,\n\tstart(ai, squad, state) {\n\t\tconst at = state.data.at\n\t\tstate.phase = 'holding'\n\t\tstate.phaseSince = ai.tick\n\t\t// where the game has stances, a squad that holds is defensive: it fires at what comes, and keeps its place\n\t\tsquad.setStance('defensive')\n\t\tif (at) squad.order({ type: 'move', point: at })\n\t\tsquad.order({ type: 'hold' }, squad.data.units, !!at)\n\t},\n\tthink(_ai, squad, state) {\n\t\t// a hold that was lost (a unit pushed off and idle): held again where it stands\n\t\tconst idle = squad.idleUnits()\n\t\tif (idle.length && squad.mayResend())\n\t\t\tsquad.order(\n\t\t\t\t{ type: 'hold' },\n\t\t\t\tidle.map((unit) => unit.id)\n\t\t\t)\n\t\tvoid state\n\t},\n\twhere: (_ai, _squad, state) => state.data.at,\n\thandles: ['regroup'] })\n"],"mappings":";;;;;;;AAqBA,IAAa,OAAO,WAAiC;CAAE,IAAI;CAAQ,UAAU;CAC5E,MAAM,IAAI,OAAO,OAAO;EACvB,MAAM,KAAK,MAAM,KAAK;EACtB,MAAM,QAAQ;EACd,MAAM,aAAa,GAAG;EAEtB,MAAM,UAAU,WAAW;EAC3B,IAAI,IAAI,MAAM,MAAM;GAAE,MAAM;GAAQ,OAAO;EAAG,CAAC;EAC/C,MAAM,MAAM,EAAE,MAAM,OAAO,GAAG,MAAM,KAAK,OAAO,CAAC,CAAC,EAAE;CACrD;CACA,MAAM,KAAK,OAAO,OAAO;EAExB,MAAM,OAAO,MAAM,UAAU;EAC7B,IAAI,KAAK,UAAU,MAAM,UAAU,GAClC,MAAM,MACL,EAAE,MAAM,OAAO,GACf,KAAK,KAAK,SAAS,KAAK,EAAE,CAC3B;CAEF;CACA,QAAQ,KAAK,QAAQ,UAAU,MAAM,KAAK;CAC1C,SAAS,CAAC,SAAS;AAAE,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { ATTACK } from "./attack.js";
2
+ import { HARASS } from "./harass.js";
3
+ import { CREEP } from "./creep.js";
4
+ import { DEFEND_TASK } from "./defend.js";
5
+ import { HOLD } from "./hold.js";
6
+ import { MOVE } from "./move.js";
7
+ import { CAPTURE } from "./capture.js";
8
+ import { RETREAT } from "./retreat.js";
9
+ import { ESCORT } from "./escort.js";
10
+ import { SCOUT_TASK } from "./scout.js";
11
+ import { PATROL } from "./patrol.js";
12
+ import { GATHER } from "./gather.js";
13
+ import { DROP } from "./drop.js";
14
+ //#region src/ai/tasks/index.ts
15
+ /** The kit's tasks, by their word */
16
+ var TASKS = [
17
+ ATTACK,
18
+ HARASS,
19
+ CREEP,
20
+ DEFEND_TASK,
21
+ HOLD,
22
+ MOVE,
23
+ CAPTURE,
24
+ RETREAT,
25
+ ESCORT,
26
+ SCOUT_TASK,
27
+ PATROL,
28
+ GATHER,
29
+ DROP
30
+ ];
31
+ //#endregion
32
+ export { ATTACK, CAPTURE, CREEP, DEFEND_TASK, DROP, ESCORT, GATHER, HARASS, HOLD, MOVE, PATROL, RETREAT, SCOUT_TASK, TASKS };
33
+
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/ai/tasks/index.ts"],"sourcesContent":["/**\n * The kit's tasks (design review B10), one file each, listed for every brain's squads (`Squads`)\n */\nimport type { TaskDef } from '../task'\nimport { ATTACK } from './attack'\nimport { HARASS } from './harass'\nimport { CREEP } from './creep'\nimport { DEFEND_TASK } from './defend'\nimport { HOLD } from './hold'\nimport { MOVE } from './move'\nimport { CAPTURE } from './capture'\nimport { RETREAT } from './retreat'\nimport { ESCORT } from './escort'\nimport { SCOUT_TASK } from './scout'\nimport { PATROL } from './patrol'\nimport { GATHER } from './gather'\nimport { DROP } from './drop'\n\n/** The kit's tasks, by their word */\nexport const TASKS: readonly TaskDef[] = [ATTACK, HARASS, CREEP, DEFEND_TASK, HOLD, MOVE, CAPTURE, RETREAT, ESCORT, SCOUT_TASK, PATROL, GATHER, DROP]\n\nexport { ATTACK } from './attack'\nexport { HARASS } from './harass'\nexport { CREEP } from './creep'\nexport { DEFEND_TASK } from './defend'\nexport { HOLD } from './hold'\nexport { MOVE } from './move'\nexport { CAPTURE } from './capture'\nexport { RETREAT } from './retreat'\nexport { ESCORT } from './escort'\nexport { SCOUT_TASK } from './scout'\nexport { PATROL } from './patrol'\nexport { GATHER } from './gather'\nexport { DROP } from './drop'\nexport type { DropData, DropMemory } from './drop'\nexport { type FightData, type FightMemory } from './shared'\nexport type { DefendData } from './defend'\nexport type { DefendMemory } from './defend'\nexport type { HoldData } from './hold'\nexport type { MoveData } from './move'\nexport type { CaptureData } from './capture'\nexport type { EscortData } from './escort'\nexport type { RoundData } from './scout'\nexport type { RoundMemory } from './scout'\nexport type { GatherData } from './gather'\nexport type { CreepData } from './creep'\nexport type { RetreatData } from './retreat'\n"],"mappings":";;;;;;;;;;;;;;;AAmBA,IAAa,QAA4B;CAAC;CAAQ;CAAQ;CAAO;CAAa;CAAM;CAAM;CAAS;CAAS;CAAQ;CAAY;CAAQ;CAAQ;AAAI"}
@@ -0,0 +1,26 @@
1
+ import { defineTask } from "../task.js";
2
+ import { arrive } from "./shared.js";
3
+ //#region src/ai/tasks/move.ts
4
+ /**
5
+ * Walks to a place: done `arrived`
6
+ *
7
+ * @beta
8
+ */
9
+ var MOVE = defineTask({
10
+ id: "move",
11
+ fighting: false,
12
+ start(ai, squad, state) {
13
+ state.phase = "going";
14
+ state.phaseSince = ai.tick;
15
+ squad.order({
16
+ type: "move",
17
+ point: state.data.at
18
+ });
19
+ },
20
+ think: arrive("arrived"),
21
+ where: (_ai, _squad, state) => state.data.at
22
+ });
23
+ //#endregion
24
+ export { MOVE };
25
+
26
+ //# sourceMappingURL=move.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move.js","names":[],"sources":["../../../src/ai/tasks/move.ts"],"sourcesContent":["/**\n * The kit's `move` task (design review B10): walks to a place: done `arrived`\n */\nimport { type Vec2 } from '#engine/math'\nimport { defineTask, type TaskMemory } from '../task'\nimport { arrive } from './shared'\n\n/**\n * What the `move` task is given\n *\n * @beta\n */\nexport type MoveData = {\n\tat: Vec2\n}\n\n/**\n * Walks to a place: done `arrived`\n *\n * @beta\n */\nexport const MOVE = defineTask<MoveData, TaskMemory>({ id: 'move', fighting: false,\n\tstart(ai, squad, state) {\n\t\tstate.phase = 'going'\n\t\tstate.phaseSince = ai.tick\n\t\tsquad.order({ type: 'move', point: state.data.at })\n\t},\n\tthink: arrive('arrived'),\n\twhere: (_ai, _squad, state) => state.data.at })\n"],"mappings":";;;;;;;;AAqBA,IAAa,OAAO,WAAiC;CAAE,IAAI;CAAQ,UAAU;CAC5E,MAAM,IAAI,OAAO,OAAO;EACvB,MAAM,QAAQ;EACd,MAAM,aAAa,GAAG;EACtB,MAAM,MAAM;GAAE,MAAM;GAAQ,OAAO,MAAM,KAAK;EAAG,CAAC;CACnD;CACA,OAAO,OAAO,SAAS;CACvB,QAAQ,KAAK,QAAQ,UAAU,MAAM,KAAK;AAAG,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { distSq } from "../../math.js";
2
+ import { defineTask } from "../task.js";
3
+ import { foesNear } from "./shared.js";
4
+ //#region src/ai/tasks/patrol.ts
5
+ /**
6
+ * The kit's `patrol` task (design review B10): walks a round of places for ever, fighting what it meets
7
+ */
8
+ /**
9
+ * Walks a round of places for ever, fighting what it meets
10
+ *
11
+ * @beta
12
+ */
13
+ var PATROL = defineTask({
14
+ id: "patrol",
15
+ start(ai, squad, state) {
16
+ const points = state.data.points;
17
+ const next = state.memory.next ?? 0;
18
+ state.memory.next = next;
19
+ state.phase = "going";
20
+ state.phaseSince = ai.tick;
21
+ if (points[next]) squad.fight(points[next]);
22
+ },
23
+ think(ai, squad, state) {
24
+ const points = state.data.points;
25
+ if (!points.length) {
26
+ squad.finish("lost");
27
+ return;
28
+ }
29
+ let next = state.memory.next ?? 0;
30
+ const middle = squad.centre();
31
+ if (!middle) return;
32
+ const fighting = foesNear(ai, middle).length > 0;
33
+ if (state.phase !== "regrouping") {
34
+ const phase = fighting ? "fighting" : "going";
35
+ if (phase !== state.phase) {
36
+ state.phase = phase;
37
+ state.phaseSince = ai.tick;
38
+ }
39
+ }
40
+ if (state.phase === "regrouping") return;
41
+ const at = points[next];
42
+ const there = 4 + Math.sqrt(squad.data.units.length);
43
+ if (!fighting && distSq(middle, at) < there * there) {
44
+ next = (next + 1) % points.length;
45
+ state.memory.next = next;
46
+ state.phaseSince = ai.tick;
47
+ squad.fight(points[next]);
48
+ return;
49
+ }
50
+ if (!squad.mayResend()) return;
51
+ const idle = squad.idleUnits().filter((unit) => distSq(unit, at) >= there * there);
52
+ if (idle.length) squad.fight(at, idle.map((unit) => unit.id));
53
+ },
54
+ where: (_ai, _squad, state) => state.data.points[state.memory.next ?? 0]
55
+ });
56
+ //#endregion
57
+ export { PATROL };
58
+
59
+ //# sourceMappingURL=patrol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patrol.js","names":[],"sources":["../../../src/ai/tasks/patrol.ts"],"sourcesContent":["/**\n * The kit's `patrol` task (design review B10): walks a round of places for ever, fighting what it meets\n */\nimport { distSq } from '#engine/math'\nimport { defineTask } from '../task'\nimport { foesNear, PATROL_ARRIVE } from './shared'\nimport type { RoundData } from './scout'\nimport type { RoundMemory } from './scout'\n\n/**\n * Walks a round of places for ever, fighting what it meets\n *\n * @beta\n */\nexport const PATROL = defineTask<RoundData, RoundMemory>({ id: 'patrol', start(ai, squad, state) {\n\t\tconst points = state.data.points\n\t\tconst next = state.memory.next ?? 0\n\t\tstate.memory.next = next\n\t\tstate.phase = 'going'\n\t\tstate.phaseSince = ai.tick\n\t\tif (points[next]) squad.fight(points[next])\n\t},\n\tthink(ai, squad, state) {\n\t\tconst points = state.data.points\n\t\tif (!points.length) {\n\t\t\tsquad.finish('lost')\n\t\t\treturn\n\t\t}\n\t\tlet next = state.memory.next ?? 0\n\t\tconst middle = squad.centre()\n\t\tif (!middle) return\n\t\tconst fighting = foesNear(ai, middle).length > 0\n\t\tif (state.phase !== 'regrouping') {\n\t\t\tconst phase = fighting ? 'fighting' : 'going'\n\t\t\tif (phase !== state.phase) {\n\t\t\t\tstate.phase = phase\n\t\t\t\tstate.phaseSince = ai.tick\n\t\t\t}\n\t\t}\n\t\tif (state.phase === 'regrouping') return\n\t\tconst at = points[next]\n\t\t// there, with nothing to fight: on to the next place of the round, the first after the last\n\t\tconst there = PATROL_ARRIVE + Math.sqrt(squad.data.units.length)\n\t\tif (!fighting && distSq(middle, at) < there * there) {\n\t\t\tnext = (next + 1) % points.length\n\t\t\tstate.memory.next = next\n\t\t\tstate.phaseSince = ai.tick\n\t\t\tsquad.fight(points[next])\n\t\t\treturn\n\t\t}\n\t\t// what stands idle short of it lost its order (a fight over, a path ended): on to the place again\n\t\tif (!squad.mayResend()) return\n\t\tconst idle = squad.idleUnits().filter((unit) => distSq(unit, at) >= there * there)\n\t\tif (idle.length)\n\t\t\tsquad.fight(\n\t\t\t\tat,\n\t\t\t\tidle.map((unit) => unit.id)\n\t\t\t)\n\t},\n\twhere: (_ai, _squad, state) => state.data.points[state.memory.next ?? 0] })\n"],"mappings":";;;;;;;;;;;;AAcA,IAAa,SAAS,WAAmC;CAAE,IAAI;CAAU,MAAM,IAAI,OAAO,OAAO;EAC/F,MAAM,SAAS,MAAM,KAAK;EAC1B,MAAM,OAAO,MAAM,OAAO,QAAQ;EAClC,MAAM,OAAO,OAAO;EACpB,MAAM,QAAQ;EACd,MAAM,aAAa,GAAG;EACtB,IAAI,OAAO,OAAO,MAAM,MAAM,OAAO,KAAK;CAC3C;CACA,MAAM,IAAI,OAAO,OAAO;EACvB,MAAM,SAAS,MAAM,KAAK;EAC1B,IAAI,CAAC,OAAO,QAAQ;GACnB,MAAM,OAAO,MAAM;GACnB;EACD;EACA,IAAI,OAAO,MAAM,OAAO,QAAQ;EAChC,MAAM,SAAS,MAAM,OAAO;EAC5B,IAAI,CAAC,QAAQ;EACb,MAAM,WAAW,SAAS,IAAI,MAAM,CAAC,CAAC,SAAS;EAC/C,IAAI,MAAM,UAAU,cAAc;GACjC,MAAM,QAAQ,WAAW,aAAa;GACtC,IAAI,UAAU,MAAM,OAAO;IAC1B,MAAM,QAAQ;IACd,MAAM,aAAa,GAAG;GACvB;EACD;EACA,IAAI,MAAM,UAAU,cAAc;EAClC,MAAM,KAAK,OAAO;EAElB,MAAM,QAAA,IAAwB,KAAK,KAAK,MAAM,KAAK,MAAM,MAAM;EAC/D,IAAI,CAAC,YAAY,OAAO,QAAQ,EAAE,IAAI,QAAQ,OAAO;GACpD,QAAQ,OAAO,KAAK,OAAO;GAC3B,MAAM,OAAO,OAAO;GACpB,MAAM,aAAa,GAAG;GACtB,MAAM,MAAM,OAAO,KAAK;GACxB;EACD;EAEA,IAAI,CAAC,MAAM,UAAU,GAAG;EACxB,MAAM,OAAO,MAAM,UAAU,CAAC,CAAC,QAAQ,SAAS,OAAO,MAAM,EAAE,KAAK,QAAQ,KAAK;EACjF,IAAI,KAAK,QACR,MAAM,MACL,IACA,KAAK,KAAK,SAAS,KAAK,EAAE,CAC3B;CACF;CACA,QAAQ,KAAK,QAAQ,UAAU,MAAM,KAAK,OAAO,MAAM,OAAO,QAAQ;AAAG,CAAC"}