@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 +0,0 @@
1
- {"version":3,"file":"inspect-D9dWHmZ0.js","names":[],"sources":["../src/inspect.ts"],"sourcesContent":["import { harvesterOf } from './orders/harvest'\nimport { dashing } from './dashing'\nimport { productionOf } from './systems/productionQueue'\nimport { deposit, Entity, type EntityId, fighting, moving, type PlayerId } from './entity'\nimport { isGameEvent } from './events'\nimport type { AiReport } from './ai/report'\nimport type { Vec2 } from './math'\nimport { statsOf } from './stats'\nimport type { World } from './world'\n\n/**\n * What the debug tools see of the rules: everything in the world (`listWorld`), an entity, a player or the world as the\n * rules have it (`inspect`), a number of it changed (`setInspected`), and the events and hooks of the last seconds\n * (`EventLog`). Everything they give is plain data,\n * so that it can come from a simulation that runs somewhere else, the way the snapshots do\n */\n\n/**\n * A value as plain data, to be shown: entities become `footman#12`, definitions their id, numbers are rounded, and\n * what is deep or long is cut short\n *\n * @internal\n */\nexport function summarize(value: unknown, depth = 0): unknown {\n\tif (value === null || value === undefined || typeof value === 'string' || typeof value === 'boolean') return value\n\tif (typeof value === 'number') return Number.isInteger(value) || !Number.isFinite(value) ? value : Math.round(value * 1000) / 1000\n\tif (typeof value === 'function') return undefined\n\tif (typeof value !== 'object') return String(value)\n\tif (value instanceof Entity) return `${value.def.id}#${value.id}`\n\tif (value instanceof Map || value instanceof Set) return `${value.constructor.name}(${value.size})`\n\tif (ArrayBuffer.isView(value)) return `${value.constructor.name}(${(value as unknown as ArrayLike<number>).length})`\n\tif (Array.isArray(value)) {\n\t\tif (depth > 3) return `[${value.length}]`\n\t\tconst items = value.slice(0, 12).map((item) => summarize(item, depth + 1))\n\t\tif (value.length > 12) items.push(`… ${value.length - 12} more`)\n\t\treturn items\n\t}\n\tconst record = value as Record<string, unknown>\n\tconst plain = Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null\n\t// what is inside something else and has an id of its own is said by that id: a definition, a projectile\n\tif (depth > 0 && typeof record.id === 'string' && (!plain || 'name' in record)) return record.id\n\tif (depth > 0 && typeof record.id === 'number' && !plain) return `${value.constructor.name.toLowerCase()} ${record.id}`\n\tif (depth > 3) return '{…}'\n\tconst out: Record<string, unknown> = {}\n\tfor (const key in record) {\n\t\tconst item = summarize(record[key], depth + 1)\n\t\tif (item !== undefined) out[key] = item\n\t}\n\treturn out\n}\n\n/**\n * A part of what is inspected, as the inspector shows it\n *\n * @beta\n */\nexport interface InspectedSection {\n\ttitle: string\n\t/** What it holds, plain data. Entities in it are written `footman#12`, for the inspector to link to */\n\tvalue: unknown\n\t/** Where it is kept, for `setInspected`. Left out for what is worked out, or not to be changed by hand, like stats */\n\tpath?: (string | number)[]\n\t/** State of the game's own (a component), rather than the engine's */\n\town?: boolean\n}\n\n/**\n * What the inspector can look at: an entity, a player, or the world itself\n *\n * @beta\n */\nexport type InspectTarget = { entity: EntityId } | { player: PlayerId } | { world: true }\n\n/**\n * Something as the simulation has it, for the inspector\n *\n * @beta\n */\nexport interface Inspection {\n\ttarget: InspectTarget\n\t/** What it is called: `Footman #14`, a player's name, `World` */\n\ttitle: string\n\t/** What else says what it is: type and owner, team */\n\tabout: string\n\ttick: number\n\talive: boolean\n\t/** Where it is, for an entity */\n\tat?: Vec2\n\t/** What is so of it that is not a number: hidden, asleep, scenery */\n\tflags: string[]\n\tsections: InspectedSection[]\n\t/**\n\t * What the computer that plays a player is thinking, where a brain does (`Brain.report`, with the seat's timing):\n\t * what the debug panel's AI tab draws. A computer player of another kind is a section (`Computer player`)\n\t */\n\tai?: AiReport\n}\n\n/** The parts of an entity the engine keeps, by field, with what the inspector calls them */\nconst PARTS: [keyof Entity, string][] = [\n\t['orders', 'Orders'],\n\t['abilities', 'Abilities'],\n\t['buffs', 'Buffs']\n]\n\n/** The engine's parts that are components, by id, with what the inspector calls them */\nconst PART_COMPONENTS: Record<string, string> = { [moving.id]: 'Movement', [fighting.id]: 'Combat', [deposit.id]: 'Resource' }\n\n/** The numbers of an entity of its own, not in a part */\nconst OWN_NUMBERS = ['hp', 'maxHp', 'mana', 'maxMana', 'facing', 'expires', 'unseenIn'] as const\n\n/** What `setInspected` may change of an entity: the numbers of its own, the parts and the components. Never where it is, nor its type */\nconst EDITABLE = new Set<string>([...OWN_NUMBERS, ...PARTS.map(([key]) => key), 'components'])\n\n/** The world's own state the inspector shows apart, rather than as a component */\nconst TIMERS_STATE = 'core.timers'\n\n/** Whether a timer's data says something about the entity: a field that names it by id */\nfunction mentions(data: unknown, id: EntityId, depth = 0): boolean {\n\tif (!data || typeof data !== 'object' || depth > 3) return false\n\tfor (const [key, value] of Object.entries(data)) {\n\t\tif (typeof value === 'number' && value === id && /id|entity|unit|target|source|caster|owner/i.test(key)) return true\n\t\tif (typeof value === 'object' && mentions(value, id, depth + 1)) return true\n\t}\n\treturn false\n}\n\n/** An entity by id as the inspector links to it, or nothing when there is none */\nconst named = (world: World, id: EntityId | undefined | null): string | undefined => {\n\tconst entity = id ? world.get(id) : undefined\n\treturn entity && `${entity.def.id}#${entity.id}`\n}\n\n/**\n * The other entities an entity has to do with, by what they are to it: what it is told to go for, fight, gather\n * from, who put a buff on it; and the other way, who is after it. The world has no tree of entities: these are its\n * relations\n */\nfunction relationsOf(world: World, entity: Entity): Record<string, string> {\n\tconst out: Record<string, string> = {}\n\tconst add = (what: string, id: EntityId | undefined | null) => {\n\t\tconst name = named(world, id)\n\t\tif (name && id !== entity.id) out[what] = name\n\t}\n\tentity.orders.forEach((order, index) => add(`orders[${index}] ${order.type}`, order.init.target))\n\tadd('goes to', entity.get(moving)?.goalEntity)\n\tadd('fights', entity.get(fighting)?.autoTarget)\n\tadd('swings at', entity.get(fighting)?.swingTarget)\n\tadd('was hit by', entity.get(fighting)?.lastAttacker)\n\tadd('gathers from', harvesterOf(entity)?.resource)\n\tadd('rallies to', productionOf(entity)?.rally?.target)\n\tfor (const buff of entity.buffs) add(`buff ${buff.id} from`, buff.source)\n\tlet after = 0\n\tfor (const other of world.actors.values()) {\n\t\tif (other === entity || !other.alive) continue\n\t\tif (other.orders[0]?.init.target === entity.id || other.get(fighting)?.autoTarget === entity.id) {\n\t\t\tif (++after > 8) break\n\t\t\tadd(`after it ${after}`, other.id)\n\t\t}\n\t}\n\treturn out\n}\n\nfunction inspectEntity(world: World, id: EntityId): Inspection | null {\n\tconst entity = world.get(id)\n\tif (!entity) return null\n\tconst state: Record<string, unknown> = {}\n\tfor (const key of OWN_NUMBERS) if (entity[key] !== null) state[key] = summarize(entity[key])\n\tconst flags: string[] = []\n\tif (entity.hidden) flags.push('hidden')\n\tif (entity.asleep) flags.push('asleep')\n\tif (entity.unseen) flags.push('unseen')\n\tif (entity.scenery) flags.push('scenery')\n\tif (entity.get(dashing)) flags.push('dashing')\n\tif (entity.scale !== 1) flags.push(`scale ${entity.scale}`)\n\tif (entity.look) flags.push(`look ${entity.look}`)\n\tconst sections: InspectedSection[] = [\n\t\t{ title: 'State', value: state, path: [] },\n\t\t{ title: 'Stats', value: summarize({ ...statsOf(world, entity) }) }\n\t]\n\tconst related = relationsOf(world, entity)\n\tif (Object.keys(related).length) sections.push({ title: 'Related', value: related })\n\tfor (const [key, title] of PARTS) {\n\t\tconst value = entity[key]\n\t\tif (value === undefined || value === null || (Array.isArray(value) && !value.length)) continue\n\t\tsections.push({ title, value: summarize(value), path: [key] })\n\t}\n\tfor (const [component, value] of Object.entries(entity.components)) {\n\t\tconst part = PART_COMPONENTS[component]\n\t\tsections.push({ title: part ?? component, value: summarize(value), path: ['components', component], own: !part })\n\t}\n\tconst timers = world.timers.list().filter((timer) => mentions(timer.data, id))\n\tif (timers.length) sections.push({ title: 'Timers', value: summarize(timers) })\n\tconst owner = world.players.get(entity.owner)?.name ?? String(entity.owner)\n\treturn {\n\t\ttarget: { entity: id },\n\t\ttitle: `${entity.def.name} #${id}`,\n\t\tabout: `${entity.def.id}, ${owner}`,\n\t\ttick: world.tick,\n\t\talive: entity.alive,\n\t\tat: { x: entity.pos.x, z: entity.pos.z },\n\t\tflags,\n\t\tsections\n\t}\n}\n\n/** The components kept in a state store, each a section of its own */\nconst componentSections = (values: Record<string, unknown>): InspectedSection[] =>\n\tObject.entries(values)\n\t\t.filter(([id]) => id !== TIMERS_STATE)\n\t\t.map(([id, value]) => ({ title: id, value: summarize(value), path: ['state', id], own: true }))\n\nfunction inspectPlayer(world: World, id: PlayerId): Inspection | null {\n\tconst player = world.players.get(id)\n\tif (!player) return null\n\tconst objectives = world.objectives.of(id)\n\tconst sections: InspectedSection[] = [\n\t\t{ title: 'Resources', value: summarize(player.resources), path: ['resources'] },\n\t\t{\n\t\t\ttitle: 'Player',\n\t\t\tvalue: { team: player.team, supplyUsed: player.supplyUsed, supplyCap: player.supplyCap, entities: world.index.ownedBy(id).size }\n\t\t},\n\t\t{ title: 'Upgrades', value: Object.fromEntries(player.upgrades), path: ['upgrades'] }\n\t]\n\tif (player.researching.size) sections.push({ title: 'Researching', value: [...player.researching] })\n\tif (objectives.length) sections.push({ title: 'Objectives', value: summarize(objectives) })\n\tsections.push(...componentSections(player.states.values))\n\t// the computer that plays it, where one does: what it is thinking, as it says (`ComputerPlayer.inspect`). A brain's\n\t// is its report, with the seat's milliseconds: the AI tab's\n\tconst seat = world.computers.get(id)\n\tconst thinking = seat?.computer.inspect?.()\n\tconst ai = isReport(thinking) ? { ...thinking, timing: seat!.timing() } : undefined\n\tif (thinking !== undefined && !ai) sections.push({ title: 'Computer player', value: summarize(thinking) })\n\tconst flags = [player.neutral && 'neutral', player.creeps && 'creeps', player.defeated && 'defeated'].filter((flag): flag is string => !!flag)\n\treturn {\n\t\ttarget: { player: id },\n\t\ttitle: player.name,\n\t\tabout: `player ${id}, team ${player.team}`,\n\t\ttick: world.tick,\n\t\talive: !player.defeated,\n\t\tflags,\n\t\tsections,\n\t\t...(ai && { ai })\n\t}\n}\n\n/** Whether what a computer player says of itself is a brain's report */\nconst isReport = (value: unknown): value is AiReport =>\n\t!!value &&\n\ttypeof value === 'object' &&\n\t(value as AiReport).v === 1 &&\n\ttypeof (value as AiReport).brain === 'string' &&\n\tArray.isArray((value as AiReport).goals)\n\nfunction inspectWorld(world: World): Inspection {\n\tconst sections: InspectedSection[] = [\n\t\t{\n\t\t\ttitle: 'World',\n\t\t\tvalue: summarize({\n\t\t\t\ttick: world.tick,\n\t\t\t\ttime: world.time,\n\t\t\t\thour: world.registry.day ? world.hour : undefined,\n\t\t\t\twinner: world.winner,\n\t\t\t\tentities: world.entities.size,\n\t\t\t\tactors: world.actors.size,\n\t\t\t\tprojectiles: world.projectiles.length,\n\t\t\t\tmissiles: world.missiles.length,\n\t\t\t\titems: world.items.length\n\t\t\t})\n\t\t},\n\t\t...componentSections(world.states.values),\n\t\t{ title: 'Timers', value: summarize(world.timers.list()) },\n\t\t{ title: 'Systems', value: world.systems.map((system) => `${system.name} (${system.phase})`) }\n\t]\n\treturn { target: { world: true }, title: 'World', about: `${world.players.size} players`, tick: world.tick, alive: true, flags: [], sections }\n}\n\n/**\n * Something as the simulation has it right now, or null when there is no such entity or player\n *\n * @beta\n */\nexport function inspect(world: World, target: InspectTarget): Inspection | null {\n\tif ('entity' in target) return inspectEntity(world, target.entity)\n\tif ('player' in target) return inspectPlayer(world, target.player)\n\treturn inspectWorld(world)\n}\n\n/** Walks a path to what holds the last key. Null when it does not lead anywhere */\nfunction holderOf(root: unknown, path: readonly (string | number)[]): Record<string | number, unknown> | null {\n\tlet holder = root as Record<string | number, unknown>\n\tfor (const key of path.slice(0, -1)) {\n\t\tconst next = holder[key]\n\t\tif (!next || typeof next !== 'object') return null\n\t\tholder = next as Record<string | number, unknown>\n\t}\n\treturn holder\n}\n\n/**\n * Changes a number where `inspect` showed it: of an entity `['hp']`, `['abilities', 0, 'cooldown']`,\n * `['components', 'td.bounty', 'gold']`; of a player `['resources', 'gold']`, `['upgrades', 'armor']`,\n * `['state', 'td.score', 'kills']`; of the world `['state', 'td.waves', 'wave']`. An entity's health is kept within what\n * it can have, and none left kills it. Whether it was changed: false for what is not a number or a switch (a boolean), or not to be changed\n *\n * @internal\n */\nexport function setInspected(world: World, target: InspectTarget, path: readonly (string | number)[], value: number | boolean): boolean {\n\tif (!path.length || (typeof value === 'number' && !Number.isFinite(value))) return false\n\tconst last = path[path.length - 1]\n\tif ('player' in target) {\n\t\tconst player = world.players.get(target.player)\n\t\tif (!player) return false\n\t\t// upgrades go through the player, which tells whatever is worked out from them\n\t\tif (path[0] === 'upgrades' && path.length === 2) {\n\t\t\tif (typeof value !== 'number') return false\n\t\t\tplayer.setUpgrade(String(last), Math.max(0, Math.round(value)))\n\t\t\treturn true\n\t\t}\n\t\tconst root = path[0] === 'resources' ? player : path[0] === 'state' ? { state: player.states.values } : null\n\t\tconst holder = root && holderOf(root, path)\n\t\tif (!holder || typeof holder[last] !== typeof value) return false\n\t\tholder[last] = value\n\t\treturn true\n\t}\n\tif ('world' in target) {\n\t\tif (path[0] !== 'state' || path[1] === TIMERS_STATE) return false\n\t\tconst holder = holderOf({ state: world.states.values }, path)\n\t\tif (!holder || typeof holder[last] !== typeof value) return false\n\t\tholder[last] = value\n\t\treturn true\n\t}\n\tconst entity = world.get(target.entity)\n\tif (!entity?.alive || !EDITABLE.has(String(path[0]))) return false\n\tconst holder = holderOf(entity, path)\n\tif (!holder || typeof holder[last] !== typeof value) return false\n\tif (typeof value === 'number' && path.length === 1 && last === 'hp') {\n\t\tif (value <= 0) {\n\t\t\tworld.kill(entity)\n\t\t\treturn true\n\t\t}\n\t\tvalue = Math.min(value, entity.maxHp)\n\t}\n\tif (typeof value === 'number' && path.length === 1 && last === 'mana') value = Math.max(0, Math.min(value, entity.maxMana))\n\tholder[last] = value\n\t// levels, buffs and the like go into its stats: they are worked out again\n\tentity.statsCache = null\n\treturn true\n}\n\n/**\n * An entity as the list of all of them shows it\n *\n * @beta\n */\nexport interface EntityRow {\n\tid: EntityId\n\ttype: string\n\tname: string\n\towner: PlayerId\n\tkind: string\n\thp: number\n\tmaxHp: number\n\t/** Type of what it is doing, null for nothing */\n\torder: string | null\n\tscenery: boolean\n\thidden: boolean\n}\n\n/**\n * A player as the list shows it\n *\n * @beta\n */\nexport interface PlayerRow {\n\tid: PlayerId\n\tname: string\n\tteam: number\n\tneutral: boolean\n\tdefeated: boolean\n}\n\n/**\n * Everything in the world, for the list of the debug tools: what is out of sight, hidden or scenery too\n *\n * @beta\n */\nexport interface WorldListing {\n\ttick: number\n\tplayers: PlayerRow[]\n\tentities: EntityRow[]\n}\n\n/**\n * Every player and entity of the world, in a few numbers each\n *\n * @internal\n */\nexport function listWorld(world: World): WorldListing {\n\tconst entities: EntityRow[] = []\n\tfor (const entity of world.entities.values()) {\n\t\tif (!entity.alive) continue\n\t\tentities.push({\n\t\t\tid: entity.id,\n\t\t\ttype: entity.def.id,\n\t\t\tname: entity.def.name,\n\t\t\towner: entity.owner,\n\t\t\tkind: entity.def.kind,\n\t\t\thp: Math.ceil(entity.hp),\n\t\t\tmaxHp: Math.ceil(entity.maxHp),\n\t\t\torder: entity.orders[0]?.type ?? null,\n\t\t\tscenery: entity.scenery,\n\t\t\thidden: entity.hidden\n\t\t})\n\t}\n\tconst players = [...world.players.values()].map(({ id, name, team, neutral, defeated }) => ({ id, name, team, neutral, defeated }))\n\treturn { tick: world.tick, players, entities }\n}\n\n/**\n * Something that happened in the rules, as the event log keeps it\n *\n * @beta\n */\nexport interface LoggedEvent {\n\t/** In the order they were logged, for asking for what came after */\n\tseq: number\n\t/** The tick it happened in */\n\ttick: number\n\tkind: 'event' | 'hook'\n\t/** The engine's name for it, or a game's id */\n\tname: string\n\t/** One of the game's own, rather than the engine's */\n\town: boolean\n\t/** What it said, plain data. For a hook, what the first run of it in the tick was given */\n\tdetail?: unknown\n\t/** The listeners that ran on an event, or the handlers of a hook */\n\tran: string[]\n\t/** How many times a hook ran in the tick */\n\tcount?: number\n}\n\n/**\n * What a world tells whoever follows it of the rules as they run, see `World.trace`\n *\n * @beta\n */\nexport interface Trace {\n\t/** A hook with handlers ran. `own`: a hook of the game's */\n\thook(name: string, handlers: readonly { id: string }[], own: boolean, event: unknown): void\n\t/** A listener of the game is about to run, on the event going out */\n\tlistener(id: string): void\n}\n\n/**\n * The events and hooks of the last seconds of a world, the game's own among them, with the listeners and handlers\n * that ran on them. Hooks run often (every target search asks one), so a hook is one line a tick, with how many times.\n * Following costs a little: it is only on while `attach`ed\n *\n * @beta\n */\nexport class EventLog implements Trace {\n\tprivate readonly list: LoggedEvent[] = []\n\tprivate seq = 0\n\t/** The hooks of the tick going on, by name */\n\tprivate hooks = new Map<string, LoggedEvent>()\n\tprivate hooksAt = -1\n\t/** The event going out, which listeners that run belong to */\n\tprivate current: LoggedEvent | null = null\n\tprivate world: World | null = null\n\tprivate untap: (() => void) | null = null\n\n\tconstructor(\n\t\t/** Seconds of it that are kept */\n\t\treadonly seconds = 10,\n\t\t/** Lines kept at most, however short a time they took */\n\t\treadonly max = 2000\n\t) {}\n\n\t/** Starts following a world */\n\tattach(world: World): void {\n\t\tthis.detach()\n\t\tthis.world = world\n\t\tworld.trace = this\n\t\tthis.untap = world.events.tap((type, payload) => this.event(type, payload))\n\t}\n\n\t/** Stops following it. What was logged stays */\n\tdetach(): void {\n\t\tconst { world } = this\n\t\tif (!world) return\n\t\tif (world.trace === this) world.trace = null\n\t\tthis.untap?.()\n\t\tthis.untap = null\n\t\tthis.world = null\n\t\tthis.current = null\n\t}\n\n\tget attached(): boolean {\n\t\treturn this.world !== null\n\t}\n\n\t/** What was logged, oldest first. The same list, kept up to date: to read, not to keep */\n\tget entries(): readonly LoggedEvent[] {\n\t\treturn this.list\n\t}\n\n\tclear(): void {\n\t\tthis.list.length = 0\n\t\tthis.hooks.clear()\n\t}\n\n\tprivate event(type: PropertyKey, payload: unknown): void {\n\t\tconst world = this.world!\n\t\t// what is held for the end of a tick goes out once the tick is counted\n\t\tconst tick = world.events.releasing ? world.tick - 1 : world.tick\n\t\tconst name = String(type)\n\t\tthis.current = this.add({ tick, kind: 'event', name, own: isGameEvent(name), detail: summarize(payload, 1), ran: [] })\n\t}\n\n\tlistener(id: string): void {\n\t\tthis.current?.ran.push(id)\n\t}\n\n\thook(name: string, handlers: readonly { id: string }[], own: boolean, event: unknown): void {\n\t\tconst { tick } = this.world!\n\t\tif (tick !== this.hooksAt) {\n\t\t\tthis.hooks.clear()\n\t\t\tthis.hooksAt = tick\n\t\t}\n\t\tconst known = this.hooks.get(name)\n\t\tif (known) {\n\t\t\tknown.count!++\n\t\t\treturn\n\t\t}\n\t\tconst entry = this.add({ tick, kind: 'hook', name, own, detail: summarize(event, 1), ran: handlers.map((handler) => handler.id), count: 1 })\n\t\tthis.hooks.set(name, entry)\n\t}\n\n\tprivate add(entry: Omit<LoggedEvent, 'seq'>): LoggedEvent {\n\t\tconst logged = { seq: ++this.seq, ...entry }\n\t\tthis.list.push(logged)\n\t\tconst oldest = logged.tick - this.seconds * this.world!.tickRate\n\t\tlet drop = 0\n\t\twhile (drop < this.list.length && (this.list.length - drop > this.max || this.list[drop].tick < oldest)) drop++\n\t\tif (drop) this.list.splice(0, drop)\n\t\treturn logged\n\t}\n}\n"],"mappings":"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"}