@v12-engine/engine 0.1.0 → 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
@@ -0,0 +1,677 @@
1
+ import { distSq } from "../math.js";
2
+ import { builtSoFar } from "../systems/construction.js";
3
+ import { inShape } from "../areas.js";
4
+ import { findRoles, reachableTypes } from "./roles.js";
5
+ import { Strength } from "./strength.js";
6
+ import "./reach.js";
7
+ import { ThreatMap } from "./threat.js";
8
+ //#region src/ai/view.ts
9
+ /** A set this small is scanned for what is near rather than asked of the grid: the grid pays for itself only on big sets */
10
+ var SCAN = 24;
11
+ /**
12
+ * A set of entities as the view gives them, in the snapshot's order, with the questions a brain asks as methods, each
13
+ * giving a set again, so that they chain: `ai.view.mine.withRole('worker').idle()`, `ai.view.enemies.near(home,
14
+ * 20).fighters()`. It reads as an array (`length`, `for..of`, `map`, `filter`, `find`, `some`, `every`, `forEach`,
15
+ * `first`, `at`; `items` is the plain array) but is not one: `map` and `filter` give plain arrays, `where` gives a set.
16
+ * (Not an `Array` subclass on purpose: the engines run `filter` and `find` on one several times slower, species
17
+ * lookup, and a think asks dozens.) A set is of one think: it reads the view it came from
18
+ *
19
+ * @beta
20
+ */
21
+ var UnitSet = class UnitSet {
22
+ view;
23
+ items;
24
+ /** What this set remembers beside what is in sight (`known`): the structures seen before, for the view's own sets */
25
+ remembered;
26
+ /** The answers to the questions that are asked again and again, by their name */
27
+ memo;
28
+ idSet;
29
+ strengthSum;
30
+ constructor(view, items = [], remembered) {
31
+ this.view = view;
32
+ this.items = items;
33
+ this.remembered = remembered;
34
+ }
35
+ /** How many */
36
+ get length() {
37
+ return this.items.length;
38
+ }
39
+ /** Iterates the set's entities in order */
40
+ [Symbol.iterator]() {
41
+ return this.items[Symbol.iterator]();
42
+ }
43
+ /** The first of them: none in an empty set */
44
+ first() {
45
+ return this.items[0];
46
+ }
47
+ /** Some of them, as an array's `slice` takes them: as a set */
48
+ slice(start, end) {
49
+ return this.make(this.items.slice(start, end));
50
+ }
51
+ /** The one at an index, from the end for a negative one */
52
+ at(index) {
53
+ return this.items.at(index);
54
+ }
55
+ /** As an array does: a plain array */
56
+ map(fn) {
57
+ return this.items.map(fn);
58
+ }
59
+ /** As an array does: a plain array. `where` gives a set */
60
+ filter(fn) {
61
+ return this.items.filter(fn);
62
+ }
63
+ /** The first entity `fn` is true for, or nothing; `fn` is given the entity and its index */
64
+ find(fn) {
65
+ return this.items.find(fn);
66
+ }
67
+ /** Whether `fn` is true for any entity of the set */
68
+ some(fn) {
69
+ return this.items.some(fn);
70
+ }
71
+ /** Whether `fn` is true for every entity of the set */
72
+ every(fn) {
73
+ return this.items.every(fn);
74
+ }
75
+ /** Calls `fn` with each entity and its index, in order */
76
+ forEach(fn) {
77
+ this.items.forEach(fn);
78
+ }
79
+ /** A set of these, of the same view */
80
+ make(items) {
81
+ return new UnitSet(this.view, items);
82
+ }
83
+ /** The answer to a question asked by name, worked out once */
84
+ cached(key, answer) {
85
+ this.memo ??= /* @__PURE__ */ new Map();
86
+ let found = this.memo.get(key);
87
+ if (!found) this.memo.set(key, found = answer());
88
+ return found;
89
+ }
90
+ /** Those that satisfy a predicate, as a set */
91
+ where(predicate) {
92
+ const { view } = this;
93
+ return this.make(this.items.filter((entity) => predicate(entity, view.def(entity))));
94
+ }
95
+ /** Those of a unit type, or that count as it (`UnitTypeDef.provides`: a keep is a town hall too) */
96
+ ofType(type) {
97
+ return this.cached(`type:${type}`, () => this.where((entity, def) => entity.type === type || !!def.provides?.includes(type)));
98
+ }
99
+ /** Those whose type has a role (`AiRole`: `'worker'`, `'hall'`, a game's own word) */
100
+ withRole(role) {
101
+ return this.cached(`role:${role}`, () => {
102
+ const { roles } = this.view;
103
+ return this.make(this.items.filter((entity) => roles.has(entity.type, role)));
104
+ });
105
+ }
106
+ /** Those whose type has a tag: the kit's (`ranged`, `melee`, `hitsAir`) or the game's (`UnitTypeDef.ai.tags`) */
107
+ withTag(tag) {
108
+ return this.cached(`tag:${tag}`, () => {
109
+ const { roles } = this.view;
110
+ return this.make(this.items.filter((entity) => roles.hasTag(entity.type, tag)));
111
+ });
112
+ }
113
+ /** Those that fight: soldiers and heroes */
114
+ fighters() {
115
+ return this.cached("fighters", () => {
116
+ const { roles } = this.view;
117
+ return this.make(this.items.filter((entity) => roles.has(entity.type, "soldier") || roles.has(entity.type, "hero")));
118
+ });
119
+ }
120
+ /** Those that gather and build (role `worker`) */
121
+ workers() {
122
+ return this.withRole("worker");
123
+ }
124
+ /** The heroes among them */
125
+ heroes() {
126
+ return this.withRole("hero");
127
+ }
128
+ /** The buildings among them, under construction too (`finished` leaves those out) */
129
+ buildings() {
130
+ return this.cached("buildings", () => this.where((_, def) => def.kind === "building"));
131
+ }
132
+ /** The units among them: what moves, buildings and resources left out */
133
+ units() {
134
+ return this.cached("units", () => this.where((_, def) => def.kind === "unit"));
135
+ }
136
+ /** Those that stand finished: not under construction (a building turning into another type stands) */
137
+ finished() {
138
+ return this.cached("finished", () => this.make(this.items.filter((entity) => builtSoFar(entity) === void 0)));
139
+ }
140
+ /** Those of mine with nothing to do: no order, and not inside something (a worker in a mine). Only one's own say what they do */
141
+ idle() {
142
+ return this.cached("idle", () => this.make(this.items.filter((entity) => !!entity.own && !entity.own.order && !entity.own.hidden)));
143
+ }
144
+ /** Those in sight now: a structure seen before and out of sight is not (`EntityState.visible`) */
145
+ visible() {
146
+ return this.cached("visible", () => this.make(this.items.filter((entity) => entity.visible)));
147
+ }
148
+ /** Those with health left */
149
+ alive() {
150
+ return this.cached("alive", () => this.make(this.items.filter((entity) => entity.health > 0)));
151
+ }
152
+ /** Deposits of a resource with something left in them (a gold mine, a tree): for the view's `resources` */
153
+ ofResource(kind) {
154
+ return this.cached(`resource:${kind}`, () => this.where((entity, def) => (entity.resource ?? 0) > 0 && def.resource?.id === kind));
155
+ }
156
+ /** Those of a player */
157
+ ofOwner(player) {
158
+ return this.cached(`owner:${player}`, () => this.make(this.items.filter((entity) => entity.owner === player)));
159
+ }
160
+ /**
161
+ * Those within a distance of a point, in the snapshot's order. A big set is asked of the view's grid, a small one is
162
+ * scanned: the answer is the same
163
+ */
164
+ near(point, radius) {
165
+ const reach = radius * radius;
166
+ if (this.items.length <= SCAN) return this.make(this.items.filter((entity) => distSq(entity, point) <= reach));
167
+ const ids = this.ids();
168
+ return this.make(this.view.gridNear(point, radius).filter((entity) => ids.has(entity.id) && distSq(entity, point) <= reach));
169
+ }
170
+ /** The one nearest a point: none in an empty set. The first of two as near */
171
+ nearest(point) {
172
+ let best;
173
+ let bestDistance = Infinity;
174
+ for (const entity of this.items) {
175
+ const d = distSq(entity, point);
176
+ if (d < bestDistance) {
177
+ bestDistance = d;
178
+ best = entity;
179
+ }
180
+ }
181
+ return best;
182
+ }
183
+ /** The middle of them: none for an empty set */
184
+ centre() {
185
+ const { items } = this;
186
+ if (!items.length) return void 0;
187
+ let x = 0;
188
+ let z = 0;
189
+ for (const entity of items) {
190
+ x += entity.x;
191
+ z += entity.z;
192
+ }
193
+ return {
194
+ x: x / items.length,
195
+ z: z / items.length
196
+ };
197
+ }
198
+ /**
199
+ * How strong they are together: the strength of each (`Strength.of`: by its stats and the health it has left),
200
+ * summed. 0 for what does not fight. Against someone in particular, ask `view.strength.odds(these, those)`
201
+ */
202
+ strength() {
203
+ return this.strengthSum ??= this.view.strength.sum(this.items);
204
+ }
205
+ /** Their ids, as a set: for "is it one of these" */
206
+ ids() {
207
+ return this.idSet ??= new Set(this.items.map((entity) => entity.id));
208
+ }
209
+ /** Whether an entity, by id, is one of these */
210
+ has(id) {
211
+ return this.ids().has(id);
212
+ }
213
+ /** These and another set's, together, in the snapshot's order, each once */
214
+ and(other) {
215
+ const { view } = this;
216
+ const all = [...this.items, ...other.items.filter((entity) => !this.has(entity.id))];
217
+ all.sort((a, b) => view.indexOf(a) - view.indexOf(b));
218
+ return this.make(all);
219
+ }
220
+ /**
221
+ * These and what is remembered of them beside what is in sight: for `view.enemies`, the enemy structures seen before
222
+ * and out of sight now (`visible: false`), which may be gone. Ask it of the view's set before narrowing it
223
+ * (`view.enemies.known().buildings()`): a narrowed set remembers nothing more
224
+ */
225
+ known() {
226
+ if (!this.remembered?.length) return this;
227
+ return this.cached("known", () => this.and(this.make(this.remembered)));
228
+ }
229
+ };
230
+ /** The coarse grid of the view: every entity in the cell its place falls in, for what is near a point */
231
+ var Grid = class {
232
+ index;
233
+ cells;
234
+ cols;
235
+ rows;
236
+ constructor(width, depth, index) {
237
+ this.index = index;
238
+ this.cols = Math.max(1, Math.ceil(width / 8));
239
+ this.rows = Math.max(1, Math.ceil(depth / 8));
240
+ this.cells = new Array(this.cols * this.rows);
241
+ }
242
+ col(x) {
243
+ return Math.min(this.cols - 1, Math.max(0, Math.floor(x / 8)));
244
+ }
245
+ row(z) {
246
+ return Math.min(this.rows - 1, Math.max(0, Math.floor(z / 8)));
247
+ }
248
+ add(entity) {
249
+ const index = this.row(entity.z) * this.cols + this.col(entity.x);
250
+ (this.cells[index] ??= []).push(entity);
251
+ }
252
+ /** Everything in the cells a circle touches, in the snapshot's order: more than what is within the circle */
253
+ near(point, radius) {
254
+ const found = [];
255
+ const c0 = this.col(point.x - radius);
256
+ const c1 = this.col(point.x + radius);
257
+ const r0 = this.row(point.z - radius);
258
+ const r1 = this.row(point.z + radius);
259
+ for (let r = r0; r <= r1; r++) for (let c = c0; c <= c1; c++) {
260
+ const cell = this.cells[r * this.cols + c];
261
+ if (cell) for (const entity of cell) found.push(entity);
262
+ }
263
+ const { index } = this;
264
+ found.sort((a, b) => index.get(a.id) - index.get(b.id));
265
+ return found;
266
+ }
267
+ };
268
+ /**
269
+ * The events of a think, by kind (`AiView.events`): what happened in the tick of the picture that cannot be read from
270
+ * the state (deaths, damage, pings, the game's own)
271
+ *
272
+ * @beta
273
+ */
274
+ var ViewEvents = class {
275
+ all;
276
+ byType;
277
+ constructor(all) {
278
+ this.all = all;
279
+ }
280
+ /** The events of one kind, typed: `events.of('death')`, `events.of('ping')` */
281
+ of(type) {
282
+ if (!this.byType) {
283
+ this.byType = /* @__PURE__ */ new Map();
284
+ for (const event of this.all) {
285
+ let list = this.byType.get(event.type);
286
+ if (!list) this.byType.set(event.type, list = []);
287
+ list.push(event);
288
+ }
289
+ }
290
+ return this.byType.get(type) ?? [];
291
+ }
292
+ /** What an event of the game's own said this tick (`defineEvent`, replicated to this player), each time it was emitted */
293
+ game(key) {
294
+ return this.of("game").filter((event) => event.event === key.id).map((event) => event.payload);
295
+ }
296
+ };
297
+ /**
298
+ * A computer player's reading of its picture of the game (`Brain.view`): the snapshot of its seat, indexed once a
299
+ * think and queried as sets (`UnitSet`): `mine`, `allies`, `enemies` (what is in sight now; `enemies.known()` adds
300
+ * the structures remembered), `hostile` (enemies and creeps), `creeps`, `neutral`, `resources`, `all`; the player's
301
+ * own state (`me`); what unit types are for (`roles`, `typesOf`); where things are (`near`, `home`, `bases`, `mines`,
302
+ * `camps`, `regions`); how strong things are (`strength`: `odds`, `matchup`, `counterFor`) and where the strength
303
+ * is (`threat`, the map made when first asked); what the game tells this player (`report`, `component`,
304
+ * `events.game`); and the map's facts (`canPlace`, `findPath`, `cellAt`). Made from the snapshot as the think begins; a set of
305
+ * it is good for the think
306
+ *
307
+ * @beta
308
+ */
309
+ var AiView = class {
310
+ snapshot;
311
+ session;
312
+ /** The game's definitions, as the seat has them */
313
+ registry;
314
+ /** The player it reads for */
315
+ playerId;
316
+ /** Every entity the player knows of, in the snapshot's order: in sight, and the structures remembered */
317
+ all;
318
+ /** The player's own units and buildings */
319
+ mine;
320
+ /** The allies' units and buildings (one's own left out) */
321
+ allies;
322
+ /** The enemies' units and buildings in sight now, creeps left out. `enemies.known()` adds their structures seen before */
323
+ enemies;
324
+ /** Whatever attacks the player and is in sight: enemies and creeps */
325
+ hostile;
326
+ /** The creeps in sight: hostile to everyone, no one's rival */
327
+ creeps;
328
+ /** What is nobody's and not a resource, in sight: a shop, a neutral building. `neutral.known()` adds those seen before */
329
+ neutral;
330
+ /** The deposits the player knows of: mines and trees in sight, and those seen before (`ofResource(kind)` for one kind) */
331
+ resources;
332
+ /** Every player, as the snapshot has them */
333
+ players;
334
+ /** The player a brain plays: resources, supply, tech, heroes, objectives. Mutable for the think */
335
+ me;
336
+ /** What happened in the tick of the picture, by kind */
337
+ events;
338
+ /** What unit types are for, by the game's definitions: found once, kept while they stand */
339
+ roles;
340
+ /** The unit types the player has or can come to make: what the roles are narrowed to for it (`typesOf`) */
341
+ reachable;
342
+ /**
343
+ * How strong things are: a unit, a group, one force against another (`odds`), what answers what (`counterFor`). The
344
+ * kit's formula unless the brain was given one; what a type's numbers come to is kept between thinks
345
+ */
346
+ strength;
347
+ threatMap;
348
+ grid;
349
+ byIdMap = /* @__PURE__ */ new Map();
350
+ indexById = /* @__PURE__ */ new Map();
351
+ playerById = /* @__PURE__ */ new Map();
352
+ namesMap = /* @__PURE__ */ new Map();
353
+ typesByRole;
354
+ /** The race the view's reach was found for: a player given another race finds it anew */
355
+ race;
356
+ basesFound;
357
+ lanesFound;
358
+ constructor(snapshot, session, options = {}) {
359
+ this.snapshot = snapshot;
360
+ this.session = session;
361
+ const { registry, playerId, terrain } = session;
362
+ this.registry = registry;
363
+ this.playerId = playerId;
364
+ this.players = snapshot.players;
365
+ for (const player of snapshot.players) this.playerById.set(player.id, player);
366
+ const self = this.playerById.get(playerId);
367
+ this.me = meOf(self, playerId);
368
+ this.events = new ViewEvents(snapshot.events);
369
+ this.grid = new Grid(terrain.width, terrain.depth, this.indexById);
370
+ const mine = [];
371
+ const allies = [];
372
+ const enemies = [];
373
+ const enemiesRemembered = [];
374
+ const hostile = [];
375
+ const hostileRemembered = [];
376
+ const creeps = [];
377
+ const creepsRemembered = [];
378
+ const neutral = [];
379
+ const neutralRemembered = [];
380
+ const resources = [];
381
+ const ownedTypes = /* @__PURE__ */ new Set();
382
+ snapshot.entities.forEach((entity, index) => {
383
+ this.byIdMap.set(entity.id, entity);
384
+ this.indexById.set(entity.id, index);
385
+ this.grid.add(entity);
386
+ if (entity.name !== void 0) this.namesMap.set(entity.name, entity);
387
+ if (entity.owner === playerId) {
388
+ mine.push(entity);
389
+ ownedTypes.add(entity.type);
390
+ return;
391
+ }
392
+ if (registry.units.has(entity.type) && registry.unit(entity.type).kind === "resource") {
393
+ resources.push(entity);
394
+ return;
395
+ }
396
+ const owner = this.playerById.get(entity.owner);
397
+ if (!owner) return;
398
+ if (owner.creeps) (entity.visible ? creeps : creepsRemembered).push(entity);
399
+ switch (owner.relation) {
400
+ case "ally":
401
+ if (!owner.creeps) allies.push(entity);
402
+ break;
403
+ case "enemy":
404
+ (entity.visible ? hostile : hostileRemembered).push(entity);
405
+ if (!owner.creeps) (entity.visible ? enemies : enemiesRemembered).push(entity);
406
+ break;
407
+ default: if (!owner.creeps) (entity.visible ? neutral : neutralRemembered).push(entity);
408
+ }
409
+ });
410
+ this.all = new UnitSet(this, snapshot.entities);
411
+ this.mine = new UnitSet(this, mine);
412
+ this.allies = new UnitSet(this, allies);
413
+ this.enemies = new UnitSet(this, enemies, enemiesRemembered);
414
+ this.hostile = new UnitSet(this, hostile, hostileRemembered);
415
+ this.creeps = new UnitSet(this, creeps, creepsRemembered);
416
+ this.neutral = new UnitSet(this, neutral, neutralRemembered);
417
+ this.resources = new UnitSet(this, resources);
418
+ const before = options.before;
419
+ const player = {
420
+ id: playerId,
421
+ race: self?.race,
422
+ availability: self?.own?.availability
423
+ };
424
+ this.race = self?.race;
425
+ this.roles = before?.roles ?? findRoles(registry, player, options.roles);
426
+ let kept = before && before.race === this.race && sameAvailability(before.me.availability, player.availability) ? before : void 0;
427
+ if (kept) {
428
+ const reach = kept.reachable;
429
+ for (const type of ownedTypes) if (!reach.has(type)) kept = void 0;
430
+ }
431
+ this.reachable = kept?.reachable ?? reachableTypes(registry, player, ownedTypes);
432
+ this.typesByRole = kept?.typesByRole ?? /* @__PURE__ */ new Map();
433
+ const formula = options.strength ?? before?.strength.formula;
434
+ this.strength = before && before.strength.formula === formula ? before.strength : new Strength(registry, formula);
435
+ this.strength.view = this;
436
+ }
437
+ /**
438
+ * Where the strength is: an influence map over the picture, the friendly and the enemy strength that reaches each
439
+ * cell of a coarse grid, by layer (`threat.at(point)`, `around`, `hot`). Made when first asked, once a think
440
+ */
441
+ get threat() {
442
+ return this.threatMap ??= new ThreatMap(this);
443
+ }
444
+ /** @internal What is in the cells of the grid a circle touches, in the snapshot's order: for a set's `near` */
445
+ gridNear(point, radius) {
446
+ return this.grid.near(point, radius);
447
+ }
448
+ /** The tick of the picture */
449
+ get tick() {
450
+ return this.snapshot.tick;
451
+ }
452
+ /** Seconds into the game, as of the picture */
453
+ get time() {
454
+ return this.snapshot.tick / this.session.tickRate;
455
+ }
456
+ /** Items lying on the ground where the player sees it */
457
+ get items() {
458
+ return this.snapshot.items;
459
+ }
460
+ /** What the game tells the player about itself (`Rules.report`): a wave number, a score */
461
+ get report() {
462
+ return this.snapshot.report;
463
+ }
464
+ /** An entity the player knows of, by id: none for one gone, or never seen */
465
+ byId(id) {
466
+ return id === void 0 ? void 0 : this.byIdMap.get(id);
467
+ }
468
+ /** @internal Where an entity comes in the snapshot: for sets to keep its order */
469
+ indexOf(entity) {
470
+ return this.indexById.get(entity.id) ?? Infinity;
471
+ }
472
+ /** The definition of an entity's type */
473
+ def(entity) {
474
+ return this.registry.unit(entity.type);
475
+ }
476
+ /** A player, by id */
477
+ player(id) {
478
+ return this.playerById.get(id);
479
+ }
480
+ /** What an entity's owner is to the player: `self`, `ally`, `enemy`, `neutral`. Creeps are `enemy` */
481
+ relation(entity) {
482
+ return this.playerById.get(entity.owner)?.relation;
483
+ }
484
+ /** Whether an entity is a rival's, or a creep */
485
+ isHostile(entity) {
486
+ return this.relation(entity) === "enemy";
487
+ }
488
+ /** Whether an entity is a creep's */
489
+ isCreep(entity) {
490
+ return !!this.playerById.get(entity.owner)?.creeps;
491
+ }
492
+ /** Whether an entity is the player's own or an ally's */
493
+ isFriendly(entity) {
494
+ const relation = this.relation(entity);
495
+ return relation === "self" || relation === "ally";
496
+ }
497
+ /** The roles of an entity's type, or of a type by id */
498
+ roleOf(entity) {
499
+ return this.roles.of(typeof entity === "string" ? entity : entity.type);
500
+ }
501
+ /** Whether an entity's type, or a type by id, has a role */
502
+ hasRole(entity, role) {
503
+ return this.roles.has(typeof entity === "string" ? entity : entity.type, role);
504
+ }
505
+ /**
506
+ * The unit types with a role that are the player's own: those it has or can come to make (`reachable`), in the
507
+ * game's order, so that the first of a kind is the one meant first. A game of two races gives each player its own
508
+ */
509
+ typesOf(role) {
510
+ let found = this.typesByRole.get(role);
511
+ if (!found) this.typesByRole.set(role, found = this.roles.types(role).filter((def) => this.reachable.has(def.id)));
512
+ return found;
513
+ }
514
+ /** Whether the player has the finished buildings something asks for (`UnitTypeDef.requires`) */
515
+ has(requires) {
516
+ return (requires ?? []).every((id) => this.me.tech.includes(id));
517
+ }
518
+ /** The player's home: its first hall, or its first building where it has no hall. None with no buildings */
519
+ home() {
520
+ return this.mine.withRole("hall").first() ?? this.mine.buildings().first();
521
+ }
522
+ /**
523
+ * The player's bases: its buildings clustered around what takes deposits (halls, what stands on a mine), each to
524
+ * the nearest of those within reach; and where there is nothing that takes deposits (a game with no economy), around
525
+ * any building, the clusters made as the buildings come. Home first
526
+ */
527
+ bases() {
528
+ if (this.basesFound) return this.basesFound;
529
+ const buildings = this.mine.buildings();
530
+ const reach = 576;
531
+ const centres = [];
532
+ for (const building of buildings) {
533
+ if (!this.def(building).dropOff || centres.some((centre) => distSq(building, centre) < reach)) continue;
534
+ centres.push(building);
535
+ }
536
+ const members = /* @__PURE__ */ new Map();
537
+ for (const centre of centres) members.set(centre.id, []);
538
+ for (const building of buildings) {
539
+ let best;
540
+ let bestDistance = reach;
541
+ for (const centre of centres) {
542
+ const d = distSq(building, centre);
543
+ if (d < bestDistance) {
544
+ bestDistance = d;
545
+ best = centre;
546
+ }
547
+ }
548
+ if (!best) {
549
+ best = building;
550
+ centres.push(building);
551
+ members.set(building.id, []);
552
+ }
553
+ members.get(best.id).push(building);
554
+ }
555
+ return this.basesFound = centres.map((centre) => ({
556
+ at: {
557
+ x: centre.x,
558
+ z: centre.z
559
+ },
560
+ centre,
561
+ buildings: new UnitSet(this, members.get(centre.id))
562
+ }));
563
+ }
564
+ /** The deposits near a base, in sight or remembered: what it gathers from */
565
+ resourcesNear(base, radius = 24) {
566
+ return this.resources.near("at" in base ? base.at : base, radius);
567
+ }
568
+ /**
569
+ * Where the game's money is mined, as the map shows them, under the fog too (`GameSession.mines`): what a computer
570
+ * player looks to for another hall. Where the session does not say, the deposits of the money it knows of
571
+ */
572
+ mines() {
573
+ const known = this.session.can.computer?.mines();
574
+ if (known) return known;
575
+ const money = this.registry.currency ?? this.registry.resources[0]?.id ?? "";
576
+ return this.resources.ofResource(money).map((mine) => ({
577
+ id: mine.id,
578
+ x: mine.x,
579
+ z: mine.z
580
+ }));
581
+ }
582
+ /** The creep camps of the map: where they are is part of the map, which everyone knows */
583
+ camps() {
584
+ return this.session.camps();
585
+ }
586
+ /**
587
+ * The lanes of the map (`GameSession.lanes`: its paths with a spawner of each side at their ends), as the map shows
588
+ * them: none where the session does not say, or the map has none. Read once a think
589
+ */
590
+ lanes() {
591
+ return this.lanesFound ??= this.session.can.computer?.lanes() ?? [];
592
+ }
593
+ /** The regions of the map, by name, as the map was made */
594
+ get regions() {
595
+ return this.session.regions;
596
+ }
597
+ /** A region of the map, by name */
598
+ region(name) {
599
+ return this.session.regions.find((region) => region.name === name);
600
+ }
601
+ /** Whether a point is in a named region of the map. False for a region the map does not have */
602
+ inRegion(name, point) {
603
+ const region = this.region(name);
604
+ return !!region && inShape(region.shape, point);
605
+ }
606
+ /** An entity the map or the rules named (`world.named`), where the player knows of it: "the gate", "the hero" */
607
+ named(name) {
608
+ return this.namesMap.get(name);
609
+ }
610
+ /** What the game replicates to this player of an entity (`Component.replicate`), with the component's type */
611
+ component(entity, component) {
612
+ return entity.components?.[component.id];
613
+ }
614
+ /** Whether the player could build this here, as far as it can tell: no on ground it has not explored */
615
+ canPlace(unitType, point) {
616
+ return this.session.canPlace(unitType, point);
617
+ }
618
+ /** The value of one of the game's layers of cells at a point (`Terrain.cells`, `CellLayerDef`): 0 where it is not painted */
619
+ cellAt(layer, x, z) {
620
+ return this.session.terrain.cellAt(layer, x, z);
621
+ }
622
+ /** One of the game's layers of cells whole, row by row (`Terrain.cells`), to read and not to change: none where nothing is painted */
623
+ cells(layer) {
624
+ return this.session.terrain.cells[layer];
625
+ }
626
+ /** The route a unit would take, over the ground the player knows */
627
+ findPath(from, to, flying) {
628
+ return this.session.findPath(from, to, flying);
629
+ }
630
+ /** What the view found of the roles, for the debug tools: each role and its types among the player's own */
631
+ inspect() {
632
+ const roles = {};
633
+ for (const [role, types] of Object.entries(this.roles.report())) {
634
+ const own = types.filter((type) => this.reachable.has(type));
635
+ if (own.length) roles[role] = own;
636
+ }
637
+ return { roles };
638
+ }
639
+ };
640
+ /** The player's own state out of the snapshot: empty where the snapshot has none (a seat out of the game) */
641
+ function meOf(self, id) {
642
+ const own = self?.own;
643
+ return {
644
+ id,
645
+ name: self?.name ?? "",
646
+ team: self?.team ?? 0,
647
+ ...self?.race !== void 0 && { race: self.race },
648
+ defeated: self?.defeated ?? true,
649
+ resources: own?.resources ?? {},
650
+ supplyUsed: own?.supplyUsed ?? 0,
651
+ supplyCap: own?.supplyCap ?? 0,
652
+ ...own?.supplies && { supplies: own.supplies },
653
+ upkeep: own?.upkeep ?? {
654
+ tier: 0,
655
+ name: "",
656
+ income: 1
657
+ },
658
+ upgrades: own?.upgrades ?? {},
659
+ researching: own?.researching ?? [],
660
+ tech: own?.tech ?? [],
661
+ heroes: own?.heroes ?? [],
662
+ objectives: own?.objectives ?? [],
663
+ ...own?.unlocks && { unlocks: own.unlocks },
664
+ ...own?.availability && { availability: own.availability }
665
+ };
666
+ }
667
+ /** Whether two of what the game's `available` hook decided are the same: by type, either left out as none */
668
+ function sameAvailability(a, b) {
669
+ if (a === b) return true;
670
+ const keys = Object.keys(a ?? {});
671
+ if (keys.length !== Object.keys(b ?? {}).length) return false;
672
+ return keys.every((key) => a[key] === b?.[key]);
673
+ }
674
+ //#endregion
675
+ export { AiView, UnitSet, ViewEvents };
676
+
677
+ //# sourceMappingURL=view.js.map