@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
package/dist/mods.js ADDED
@@ -0,0 +1,271 @@
1
+ import { notePartOwners, partOwners } from "./errors.js";
2
+ import { overSettings, rulesSaid } from "./rules.js";
3
+ //#region src/mods.ts
4
+ /**
5
+ * Throws when a requirement is not met, or two mods change the same thing without one requiring the other
6
+ *
7
+ * @beta
8
+ */
9
+ var ModError = class extends Error {};
10
+ /**
11
+ * A game with mods on it: a new `Rules`, which `createWorld` takes like any other. Its id names the game and
12
+ * the mods (`melee+goldRush`), and `mods` lists them with their versions. Mods are applied after the ones they
13
+ * require, otherwise in the order given. Neither the game nor the mods are changed
14
+ *
15
+ * @beta
16
+ */
17
+ function composeGame(base, mods) {
18
+ const ordered = order(base, mods);
19
+ const draft = {
20
+ ...base,
21
+ units: [...base.units],
22
+ mods: [...base.mods ?? [], ...ordered.map((mod) => ({
23
+ id: mod.id,
24
+ version: mod.version,
25
+ ...mod.hash && { hash: mod.hash }
26
+ }))]
27
+ };
28
+ const touched = /* @__PURE__ */ new Map();
29
+ const conflicts = [];
30
+ const requires = closure(ordered);
31
+ for (const mod of ordered) {
32
+ const touch = (what) => {
33
+ const before = touched.get(what);
34
+ if (before && before !== mod.id && !requires.get(mod.id).has(before) && !requires.get(before).has(mod.id)) conflicts.push(`${what}: changed by "${before}" and by "${mod.id}", and neither requires the other`);
35
+ touched.set(what, mod.id);
36
+ };
37
+ mod.apply(builder(draft, touch));
38
+ }
39
+ if (conflicts.length) throw new ModError(`Mods that do not go together:\n${conflicts.join("\n")}`);
40
+ draft.id = [base.id, ...ordered.map((mod) => mod.id)].join("+");
41
+ notePartOwners(draft, new Map([...partOwners(base), ...touched]));
42
+ compositions.set(draft, {
43
+ base,
44
+ mods
45
+ });
46
+ return draft;
47
+ }
48
+ /** What each game made by `composeGame` was made of: its base and its mods, as they were given */
49
+ var compositions = /* @__PURE__ */ new WeakMap();
50
+ /**
51
+ * What a game made by `composeGame` was made of, its base and its mods; nothing for one that was not
52
+ *
53
+ * @internal
54
+ */
55
+ function compositionOf(game) {
56
+ return compositions.get(game);
57
+ }
58
+ /**
59
+ * A game made by `composeGame` made again, of its base and its mods as they are now (a base made of mods made again
60
+ * too): what a game played with mods takes as one of them, or its base, is saved while it runs (hot reload). A game not
61
+ * made so is itself. Throws as `composeGame` does: mods that no longer go together
62
+ *
63
+ * @beta
64
+ */
65
+ function recompose(game) {
66
+ const made = compositions.get(game);
67
+ return made ? composeGame(recompose(made.base), [...made.mods]) : game;
68
+ }
69
+ /**
70
+ * Whether a game is made of this game or mod: is it, or has it as its base or one of its mods, at any depth
71
+ *
72
+ * @beta
73
+ */
74
+ function isMadeOf(game, part) {
75
+ if (game === part) return true;
76
+ const made = compositions.get(game);
77
+ return !!made && (made.mods.includes(part) || isMadeOf(made.base, part));
78
+ }
79
+ function builder(draft, touch) {
80
+ const list = (field, kind, idOf) => {
81
+ const items = () => draft[field] ?? [];
82
+ const write = (next) => draft[field] = next;
83
+ const find = (id) => items().find((def) => idOf(def) === id);
84
+ const must = (id) => find(id) ?? fail(`${kind} "${id}" is not in the game`);
85
+ return {
86
+ get: find,
87
+ has: (id) => !!find(id),
88
+ all: items,
89
+ add(def) {
90
+ const id = idOf(def);
91
+ if (find(id)) fail(`${kind} "${id}" is in the game already: override it instead`);
92
+ touch(`${kind} "${id}"`);
93
+ write([...items(), def]);
94
+ },
95
+ override(id, change) {
96
+ const old = must(id);
97
+ touch(`${kind} "${id}"`);
98
+ const next = typeof change === "function" ? change(old) : {
99
+ ...old,
100
+ ...change
101
+ };
102
+ write(items().map((def) => def === old ? next : def));
103
+ },
104
+ remove(id) {
105
+ const old = must(id);
106
+ touch(`${kind} "${id}"`);
107
+ write(items().filter((def) => def !== old));
108
+ }
109
+ };
110
+ };
111
+ const effects = list("effects", "effect", (def) => def.type);
112
+ return {
113
+ get current() {
114
+ return draft;
115
+ },
116
+ units: list("units", "unit type", (def) => def.id),
117
+ abilities: list("abilities", "ability", (def) => def.id),
118
+ buffs: list("buffs", "buff", (def) => def.id),
119
+ items: list("items", "item", (def) => def.id),
120
+ tags: list("tags", "tag", (def) => def.id),
121
+ upgrades: list("upgrades", "upgrade", (def) => def.id),
122
+ races: list("races", "race", (def) => def.id),
123
+ stats: list("stats", "stat", (def) => def.id),
124
+ resources: list("resources", "resource", (def) => def.id),
125
+ effects,
126
+ orders: list("orders", "order", (def) => def.type),
127
+ commands: list("commands", "command", (def) => def.type),
128
+ hooks: list("hooks", "hook handler", (def) => def.id),
129
+ listeners: list("listeners", "listener", (def) => def.id),
130
+ components: list("components", "component", (def) => def.id),
131
+ events: list("events", "event", (def) => def.id),
132
+ areas: list("areas", "area", (def) => def.id),
133
+ cellLayers: list("cellLayers", "layer of cells", (def) => def.id),
134
+ timers: list("timers", "timer", (def) => def.id),
135
+ sequences: list("sequences", "sequence", (def) => def.id),
136
+ withoutHook(id) {
137
+ touch(`hook handler "${id}"`);
138
+ draft.withoutHooks = [...draft.withoutHooks ?? [], id];
139
+ },
140
+ packs: list("packs", "pack", (def) => def.id),
141
+ withoutCommand(type) {
142
+ touch(`command "${type}"`);
143
+ draft.withoutCommands = [...draft.withoutCommands ?? [], type];
144
+ },
145
+ withoutOrder(type) {
146
+ touch(`order "${type}"`);
147
+ draft.withoutOrders = [...draft.withoutOrders ?? [], type];
148
+ },
149
+ addSystem(system) {
150
+ if (typeof system !== "function") touch(`system "${system.name}"`);
151
+ draft.systems = [...draft.systems ?? [], system];
152
+ },
153
+ withoutSystem(name) {
154
+ touch(`system "${name}"`);
155
+ const systems = draft.systems ?? [];
156
+ const own = systems.filter((system) => typeof system !== "function" && system.name === name);
157
+ if (own.length) draft.systems = systems.filter((system) => !own.includes(system));
158
+ else draft.withoutSystems = [...draft.withoutSystems ?? [], name];
159
+ },
160
+ settings(changes) {
161
+ for (const name of rulesSaid(changes)) touch(`rule "${name}"`);
162
+ draft.settings = overSettings(draft.settings ?? {}, changes);
163
+ },
164
+ set(key, value) {
165
+ touch(`setting "${key}"`);
166
+ draft[key] = value;
167
+ }
168
+ };
169
+ }
170
+ /** The mods in the order they are applied: each after what it requires. Throws for what is missing or out of range */
171
+ function order(base, mods) {
172
+ const byId = /* @__PURE__ */ new Map();
173
+ for (const mod of mods) {
174
+ if (byId.has(mod.id) || mod.id === base.id) fail(`"${mod.id}" is there twice`);
175
+ version(mod.version, `the version of "${mod.id}"`);
176
+ byId.set(mod.id, mod);
177
+ }
178
+ const versions = new Map([[base.id, base.version ?? "1.0.0"], ...mods.map((mod) => [mod.id, mod.version])]);
179
+ for (const mod of mods) for (const requirement of mod.requires ?? []) {
180
+ const [id, range] = requirement.split("@");
181
+ const have = versions.get(id);
182
+ if (have === void 0) fail(`"${mod.id}" requires "${id}", which is not there`);
183
+ if (range && !satisfies(have, range)) fail(`"${mod.id}" requires ${id} ${range}, and it is ${have}`);
184
+ }
185
+ const ordered = [];
186
+ const state = /* @__PURE__ */ new Map();
187
+ const visit = (mod, path) => {
188
+ if (state.get(mod.id) === "done") return;
189
+ if (state.get(mod.id) === "visiting") fail(`Mods require each other in a circle: ${[...path, mod.id].join(" → ")}`);
190
+ state.set(mod.id, "visiting");
191
+ for (const requirement of mod.requires ?? []) {
192
+ const needed = byId.get(requirement.split("@")[0]);
193
+ if (needed) visit(needed, [...path, mod.id]);
194
+ }
195
+ state.set(mod.id, "done");
196
+ ordered.push(mod);
197
+ };
198
+ for (const mod of mods) visit(mod, []);
199
+ return ordered;
200
+ }
201
+ /** For each mod, every mod it requires, directly or through others */
202
+ function closure(mods) {
203
+ const all = /* @__PURE__ */ new Map();
204
+ for (const mod of mods) {
205
+ const set = /* @__PURE__ */ new Set();
206
+ for (const requirement of mod.requires ?? []) {
207
+ const id = requirement.split("@")[0];
208
+ set.add(id);
209
+ for (const further of all.get(id) ?? []) set.add(further);
210
+ }
211
+ all.set(mod.id, set);
212
+ }
213
+ return all;
214
+ }
215
+ function version(text, what) {
216
+ const parts = text.split(".").map(Number);
217
+ if (parts.length < 1 || parts.length > 3 || parts.some((part) => !Number.isInteger(part) || part < 0)) fail(`${what} is not a version: "${text}"`);
218
+ while (parts.length < 3) parts.push(0);
219
+ return parts;
220
+ }
221
+ /**
222
+ * Whether a version is in a range: `1.2.3` exactly, or `^1.2` for 1.2 and later of major version 1
223
+ *
224
+ * @beta
225
+ */
226
+ function satisfies(have, range) {
227
+ const caret = range.startsWith("^");
228
+ const want = version(caret ? range.slice(1) : range, `the range "${range}"`);
229
+ const is = version(have, `the version "${have}"`);
230
+ if (!caret) return is.every((part, i) => part === want[i]);
231
+ if (is[0] !== want[0]) return false;
232
+ for (let i = 1; i < 3; i++) if (is[i] !== want[i]) return is[i] > want[i];
233
+ return true;
234
+ }
235
+ function fail(message) {
236
+ throw new ModError(message);
237
+ }
238
+ /**
239
+ * What identifies a game exactly: its definitions, the source of its code, and its mods. Two worlds made from games
240
+ * with the same hash play by the same rules: what a lobby, a save and a replay check
241
+ *
242
+ * @internal
243
+ */
244
+ function gameHash(game, options = {}) {
245
+ const code = options.code ?? true;
246
+ const text = JSON.stringify(game, function(key, value) {
247
+ if (key === "server") return void 0;
248
+ if (key === "slot" && isComponent(this)) return void 0;
249
+ if (key === "maps" && value === game.maps) return void 0;
250
+ if (typeof value === "function") return code ? `fn:${value.toString()}` : "fn";
251
+ if (typeof value === "number" && !Number.isFinite(value)) return String(value);
252
+ return value;
253
+ });
254
+ let a = 2166136261;
255
+ let b = 1523705862;
256
+ for (let i = 0; i < text.length; i++) {
257
+ const c = text.charCodeAt(i);
258
+ a = Math.imul(a ^ c, 16777619);
259
+ b = Math.imul(b ^ c, 1540483477);
260
+ }
261
+ return (a >>> 0).toString(16).padStart(8, "0") + (b >>> 0).toString(16).padStart(8, "0");
262
+ }
263
+ /** Whether an object is a component (`defineComponent`): an id, its number, and every field a component has, in its shape */
264
+ var isComponent = (value) => {
265
+ const part = value;
266
+ return typeof part?.id === "string" && typeof part.slot === "number" && "replicate" in part && "snapshot" in part && "refs" in part;
267
+ };
268
+ //#endregion
269
+ export { ModError, composeGame, compositionOf, gameHash, isMadeOf, recompose, satisfies };
270
+
271
+ //# sourceMappingURL=mods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mods.js","names":[],"sources":["../src/mods.ts"],"sourcesContent":["import type { RaceDef } from './races'\nimport { notePartOwners, partOwners } from './errors'\nimport type { Component } from './components'\nimport type { EventKey } from './events'\nimport type { EffectType } from './abilities/effects'\nimport type { CommandDef } from './commands'\nimport type { AbilityDef, BuffDef, ItemDef, ResourceDef, StatDef, TagDef, UnitTypeDef, UpgradeDef } from './defs'\nimport type { Rules } from './game'\nimport type { AreaDef } from './areas'\nimport type { CellLayerDef } from './cellLayers'\nimport type { ListenerDef } from './events'\nimport type { SequenceDef } from './sequences'\nimport type { TimerDef } from './timers'\nimport type { HookDef } from './hooks'\nimport type { OrderBehavior, SystemDef } from './registry'\nimport { overSettings, type RuleSettingsInit, rulesSaid } from './rules'\nimport type { GamePack } from './packs/pack'\n\n/**\n * A mod: changes to a game, made on top of it instead of on a copy of it. A new hero, other numbers, a rule of its\n * own. `composeGame` applies mods to a game in the order they need each other, and tells about two mods that change\n * the same thing without one knowing of the other, before anyone plays.\n *\n * @beta\n */\nexport interface ModDef {\n\t/** The mod's id, shared by every mod: others list it in `requires` */\n\tid: string\n\t/** `major.minor.patch`. Mods that need this one say which versions they work with */\n\tversion: string\n\t/** The mod's name as a list shows it; its id when left out */\n\tname?: string\n\t/**\n\t * The game and the mods it is made for, each `id`, `id@1.2.3` (that version only) or `id@^1.2` (that major version,\n\t * from 1.2 on). The game counts as one of them, by its id and `Rules.version`\n\t */\n\trequires?: string[]\n\t/** Makes the changes, through the builder */\n\tapply(game: GameBuilder): void\n}\n\n/**\n * Typed help for writing a mod\n *\n * @beta\n */\n\n/**\n * Definitions of one kind, by id: what a mod adds, changes or takes out\n *\n * @beta\n */\nexport interface Collection<T> {\n\t/** Finds the definition with this id; undefined when there is none */\n\tget(id: string): T | undefined\n\t/** Whether a definition with this id is there */\n\thas(id: string): boolean\n\t/** Throws when there is one of that id already: that is `override` */\n\tadd(def: T): void\n\t/** Changes one that is there: a new definition, or the fields that are different. Throws when there is none */\n\toverride(id: string, change: Partial<T> | ((def: T) => T)): void\n\t/** Throws when there is none of that id */\n\tremove(id: string): void\n\t/** Every definition in the collection, in order */\n\tall(): readonly T[]\n}\n\n/**\n * The game a mod is applied to, as it stands after the mods before it\n *\n * @beta\n */\nexport interface GameBuilder {\n\t/** What the game is so far: to read, not to change. Changes go through the rest of the builder */\n\treadonly current: Readonly<Rules>\n\t/** The unit types of the game so far */\n\tunits: Collection<UnitTypeDef>\n\t/** The abilities of the game so far */\n\tabilities: Collection<AbilityDef>\n\t/** The buffs of the game so far */\n\tbuffs: Collection<BuffDef>\n\t/** The items of the game so far */\n\titems: Collection<ItemDef>\n\t/** The tags of items the game names (`Rules.tags`, `TagDef`): what a shop shows of a tag and filters by @beta */\n\ttags: Collection<TagDef>\n\t/** The upgrades of the game so far */\n\tupgrades: Collection<UpgradeDef>\n\t/** The sides players can play (`Rules.races`) */\n\traces: Collection<RaceDef>\n\t/** The stats a unit has, by id (`StatDef`) */\n\tstats: Collection<StatDef>\n\t/** The resources players gather and spend (`Rules.resources`) */\n\tresources: Collection<ResourceDef>\n\t/** Kinds of ability effects, by their type (`defineEffect`) */\n\teffects: Collection<EffectType>\n\t/** How unit orders are carried out, by type */\n\torders: Collection<OrderBehavior>\n\t/** The commands a player can give, by type (`CommandDef`) */\n\tcommands: Collection<CommandDef>\n\t/** The game's hook handlers, by id. `withoutHook` takes out one of the engine's */\n\thooks: Collection<HookDef>\n\t/** How the game reacts to events, by id */\n\tlisteners: Collection<ListenerDef>\n\t/** The state of its own the game keeps, by id: a mod's own components are added here */\n\tcomponents: Collection<Component<any>>\n\t/** The events of its own the game emits, by id */\n\tevents: Collection<EventKey<any>>\n\t/** The parts of the map the rules watch, by id */\n\tareas: Collection<AreaDef>\n\t/** The layers of cells painted on its maps, by id (`Rules.cellLayers`): a mod's own grass, with `foliagePack` among its packs @beta */\n\tcellLayers: Collection<CellLayerDef>\n\t/** What the game can set to go off later, by id */\n\ttimers: Collection<TimerDef>\n\t/** The game's scripts of steps, by id */\n\tsequences: Collection<SequenceDef>\n\t/** Takes out one of the engine's hook handlers by id, which `hooks` cannot reach */\n\twithoutHook(id: string): void\n\t/** The parts of the rules the game opts into (`Rules.packs`), by id: `packs.add(heroesPack())` @beta */\n\tpacks: Collection<GamePack>\n\t/** Takes out a command of the engine's or a pack's, by its type (`Rules.withoutCommands`) @beta */\n\twithoutCommand(type: string): void\n\t/** Takes out an order of the engine's or a pack's, by its type (`Rules.withoutOrders`) @beta */\n\twithoutOrder(type: string): void\n\t/** Adds a system of the mod's own, or one in place of the engine's of the same name */\n\taddSystem(system: SystemDef): void\n\t/** Takes out a system: one of the engine's, or one the game gave as an object, by name */\n\twithoutSystem(name: string): void\n\t/** Changes rules of the game (`RuleSettings`): any of them, a group in part (`{ supply: { max: 200 } }`) */\n\tsettings(changes: RuleSettingsInit): void\n\t/** Changes one of the game's settings that are one thing, not a list */\n\tset<K extends Setting>(key: K, value: Rules[K]): void\n}\n\n/** The parts of a game a mod can only put something else in the place of */\ntype Setting = 'name' | 'currency' | 'upkeep' | 'day' | 'victory' | 'startingBase' | 'report' | 'ai'\n\n/**\n * Throws when a requirement is not met, or two mods change the same thing without one requiring the other\n *\n * @beta\n */\nexport class ModError extends Error {}\n\n/**\n * A game with mods on it: a new `Rules`, which `createWorld` takes like any other. Its id names the game and\n * the mods (`melee+goldRush`), and `mods` lists them with their versions. Mods are applied after the ones they\n * require, otherwise in the order given. Neither the game nor the mods are changed\n *\n * @beta\n */\nexport function composeGame(base: Rules, mods: ModDef[]): Rules {\n\tconst ordered = order(base, mods)\n\tconst draft: Rules = {\n\t\t...base,\n\t\tunits: [...base.units],\n\t\t// a pack's with the hash of its bytes (`packFromJson`): the game's hash has it, what a save and a lobby check\n\t\tmods: [...(base.mods ?? []), ...ordered.map((mod) => ({ id: mod.id, version: mod.version, ...((mod as { hash?: string }).hash && { hash: (mod as { hash?: string }).hash }) }))]\n\t}\n\tconst touched = new Map<string, string>()\n\tconst conflicts: string[] = []\n\tconst requires = closure(ordered)\n\n\tfor (const mod of ordered) {\n\t\t// who changed what: a second mod changing it, without knowing of the first, is a conflict\n\t\tconst touch = (what: string) => {\n\t\t\tconst before = touched.get(what)\n\t\t\tif (before && before !== mod.id && !requires.get(mod.id)!.has(before) && !requires.get(before)!.has(mod.id)) {\n\t\t\t\tconflicts.push(`${what}: changed by \"${before}\" and by \"${mod.id}\", and neither requires the other`)\n\t\t\t}\n\t\t\ttouched.set(what, mod.id)\n\t\t}\n\t\tmod.apply(builder(draft, touch))\n\t}\n\tif (conflicts.length) throw new ModError(`Mods that do not go together:\\n${conflicts.join('\\n')}`)\n\tdraft.id = [base.id, ...ordered.map((mod) => mod.id)].join('+')\n\t// whose each part is, for saying which mod a part that throws belongs to (`ErrorSite.mod`). Beside the game, not\n\t// in it: what a game is, and its hash, stay what they were\n\tnotePartOwners(draft, new Map([...partOwners(base), ...touched]))\n\t// what it was made of, to make it again of their new versions (hot reload, `recompose`): beside it, as the owners\n\tcompositions.set(draft, { base, mods })\n\treturn draft\n}\n\n/** What each game made by `composeGame` was made of: its base and its mods, as they were given */\nconst compositions = new WeakMap<Rules, { base: Rules; mods: readonly ModDef[] }>()\n\n/**\n * What a game made by `composeGame` was made of, its base and its mods; nothing for one that was not\n *\n * @internal\n */\nexport function compositionOf(game: Rules): { base: Rules; mods: readonly ModDef[] } | undefined {\n\treturn compositions.get(game)\n}\n\n/**\n * A game made by `composeGame` made again, of its base and its mods as they are now (a base made of mods made again\n * too): what a game played with mods takes as one of them, or its base, is saved while it runs (hot reload). A game not\n * made so is itself. Throws as `composeGame` does: mods that no longer go together\n *\n * @beta\n */\nexport function recompose(game: Rules): Rules {\n\tconst made = compositions.get(game)\n\treturn made ? composeGame(recompose(made.base), [...made.mods]) : game\n}\n\n/**\n * Whether a game is made of this game or mod: is it, or has it as its base or one of its mods, at any depth\n *\n * @beta\n */\nexport function isMadeOf(game: Rules, part: Rules | ModDef): boolean {\n\tif (game === part) return true\n\tconst made = compositions.get(game)\n\treturn !!made && (made.mods.includes(part as ModDef) || isMadeOf(made.base, part))\n}\n\nfunction builder(draft: Rules, touch: (what: string) => void): GameBuilder {\n\tconst list = <T, K extends keyof Rules>(field: K, kind: string, idOf: (def: T) => string): Collection<T> => {\n\t\tconst items = () => ((draft[field] as T[] | undefined) ?? []) as T[]\n\t\tconst write = (next: T[]) => ((draft as unknown as Record<string, unknown>)[field] = next)\n\t\tconst find = (id: string) => items().find((def) => idOf(def) === id)\n\t\tconst must = (id: string) => find(id) ?? fail(`${kind} \"${id}\" is not in the game`)\n\t\treturn {\n\t\t\tget: find,\n\t\t\thas: (id) => !!find(id),\n\t\t\tall: items,\n\t\t\tadd(def) {\n\t\t\t\tconst id = idOf(def)\n\t\t\t\tif (find(id)) fail(`${kind} \"${id}\" is in the game already: override it instead`)\n\t\t\t\ttouch(`${kind} \"${id}\"`)\n\t\t\t\twrite([...items(), def])\n\t\t\t},\n\t\t\toverride(id, change) {\n\t\t\t\tconst old = must(id)\n\t\t\t\ttouch(`${kind} \"${id}\"`)\n\t\t\t\tconst next = typeof change === 'function' ? change(old) : { ...old, ...change }\n\t\t\t\twrite(items().map((def) => (def === old ? next : def)))\n\t\t\t},\n\t\t\tremove(id) {\n\t\t\t\tconst old = must(id)\n\t\t\t\ttouch(`${kind} \"${id}\"`)\n\t\t\t\twrite(items().filter((def) => def !== old))\n\t\t\t}\n\t\t}\n\t}\n\n\tconst effects = list<EffectType, 'effects'>('effects', 'effect', (def) => def.type)\n\n\treturn {\n\t\tget current() {\n\t\t\treturn draft\n\t\t},\n\t\tunits: list<UnitTypeDef, 'units'>('units', 'unit type', (def) => def.id),\n\t\tabilities: list<AbilityDef, 'abilities'>('abilities', 'ability', (def) => def.id),\n\t\tbuffs: list<BuffDef, 'buffs'>('buffs', 'buff', (def) => def.id),\n\t\titems: list<ItemDef, 'items'>('items', 'item', (def) => def.id),\n\t\ttags: list<TagDef, 'tags'>('tags', 'tag', (def) => def.id),\n\t\tupgrades: list<UpgradeDef, 'upgrades'>('upgrades', 'upgrade', (def) => def.id),\n\t\traces: list<RaceDef, 'races'>('races', 'race', (def) => def.id),\n\t\tstats: list<StatDef, 'stats'>('stats', 'stat', (def) => def.id),\n\t\tresources: list<ResourceDef, 'resources'>('resources', 'resource', (def) => def.id),\n\t\teffects,\n\t\torders: list<OrderBehavior, 'orders'>('orders', 'order', (def) => def.type),\n\t\tcommands: list<CommandDef, 'commands'>('commands', 'command', (def) => def.type),\n\t\thooks: list<HookDef, 'hooks'>('hooks', 'hook handler', (def) => def.id),\n\t\tlisteners: list<ListenerDef, 'listeners'>('listeners', 'listener', (def) => def.id),\n\t\tcomponents: list<Component<any>, 'components'>('components', 'component', (def) => def.id),\n\t\tevents: list<EventKey<any>, 'events'>('events', 'event', (def) => def.id),\n\t\tareas: list<AreaDef, 'areas'>('areas', 'area', (def) => def.id),\n\t\tcellLayers: list<CellLayerDef, 'cellLayers'>('cellLayers', 'layer of cells', (def) => def.id),\n\t\ttimers: list<TimerDef, 'timers'>('timers', 'timer', (def) => def.id),\n\t\tsequences: list<SequenceDef, 'sequences'>('sequences', 'sequence', (def) => def.id),\n\t\twithoutHook(id) {\n\t\t\ttouch(`hook handler \"${id}\"`)\n\t\t\tdraft.withoutHooks = [...(draft.withoutHooks ?? []), id]\n\t\t},\n\t\tpacks: list<GamePack, 'packs'>('packs', 'pack', (def) => def.id),\n\t\twithoutCommand(type) {\n\t\t\ttouch(`command \"${type}\"`)\n\t\t\tdraft.withoutCommands = [...(draft.withoutCommands ?? []), type]\n\t\t},\n\t\twithoutOrder(type) {\n\t\t\ttouch(`order \"${type}\"`)\n\t\t\tdraft.withoutOrders = [...(draft.withoutOrders ?? []), type]\n\t\t},\n\t\taddSystem(system) {\n\t\t\tif (typeof system !== 'function') touch(`system \"${system.name}\"`)\n\t\t\tdraft.systems = [...(draft.systems ?? []), system]\n\t\t},\n\t\twithoutSystem(name) {\n\t\t\ttouch(`system \"${name}\"`)\n\t\t\tconst systems = draft.systems ?? []\n\t\t\tconst own = systems.filter((system) => typeof system !== 'function' && system.name === name)\n\t\t\tif (own.length) draft.systems = systems.filter((system) => !own.includes(system))\n\t\t\telse draft.withoutSystems = [...(draft.withoutSystems ?? []), name]\n\t\t},\n\t\tsettings(changes) {\n\t\t\tfor (const name of rulesSaid(changes)) touch(`rule \"${name}\"`)\n\t\t\tdraft.settings = overSettings(draft.settings ?? {}, changes)\n\t\t},\n\t\tset(key, value) {\n\t\t\ttouch(`setting \"${key}\"`)\n\t\t\tdraft[key] = value\n\t\t}\n\t}\n}\n\n/** The mods in the order they are applied: each after what it requires. Throws for what is missing or out of range */\nfunction order(base: Rules, mods: ModDef[]): ModDef[] {\n\tconst byId = new Map<string, ModDef>()\n\tfor (const mod of mods) {\n\t\tif (byId.has(mod.id) || mod.id === base.id) fail(`\"${mod.id}\" is there twice`)\n\t\tversion(mod.version, `the version of \"${mod.id}\"`)\n\t\tbyId.set(mod.id, mod)\n\t}\n\tconst versions = new Map<string, string>([[base.id, base.version ?? '1.0.0'], ...mods.map((mod) => [mod.id, mod.version] as [string, string])])\n\tfor (const mod of mods) {\n\t\tfor (const requirement of mod.requires ?? []) {\n\t\t\tconst [id, range] = requirement.split('@')\n\t\t\tconst have = versions.get(id)\n\t\t\tif (have === undefined) fail(`\"${mod.id}\" requires \"${id}\", which is not there`)\n\t\t\tif (range && !satisfies(have, range)) fail(`\"${mod.id}\" requires ${id} ${range}, and it is ${have}`)\n\t\t}\n\t}\n\tconst ordered: ModDef[] = []\n\tconst state = new Map<string, 'visiting' | 'done'>()\n\tconst visit = (mod: ModDef, path: string[]) => {\n\t\tif (state.get(mod.id) === 'done') return\n\t\tif (state.get(mod.id) === 'visiting') fail(`Mods require each other in a circle: ${[...path, mod.id].join(' → ')}`)\n\t\tstate.set(mod.id, 'visiting')\n\t\tfor (const requirement of mod.requires ?? []) {\n\t\t\tconst needed = byId.get(requirement.split('@')[0])\n\t\t\tif (needed) visit(needed, [...path, mod.id])\n\t\t}\n\t\tstate.set(mod.id, 'done')\n\t\tordered.push(mod)\n\t}\n\tfor (const mod of mods) visit(mod, [])\n\treturn ordered\n}\n\n/** For each mod, every mod it requires, directly or through others */\nfunction closure(mods: ModDef[]): Map<string, Set<string>> {\n\tconst all = new Map<string, Set<string>>()\n\t// in order, so whatever a mod requires has its set already\n\tfor (const mod of mods) {\n\t\tconst set = new Set<string>()\n\t\tfor (const requirement of mod.requires ?? []) {\n\t\t\tconst id = requirement.split('@')[0]\n\t\t\tset.add(id)\n\t\t\tfor (const further of all.get(id) ?? []) set.add(further)\n\t\t}\n\t\tall.set(mod.id, set)\n\t}\n\treturn all\n}\n\nfunction version(text: string, what: string): number[] {\n\tconst parts = text.split('.').map(Number)\n\tif (parts.length < 1 || parts.length > 3 || parts.some((part) => !Number.isInteger(part) || part < 0)) fail(`${what} is not a version: \"${text}\"`)\n\twhile (parts.length < 3) parts.push(0)\n\treturn parts\n}\n\n/**\n * Whether a version is in a range: `1.2.3` exactly, or `^1.2` for 1.2 and later of major version 1\n *\n * @beta\n */\nexport function satisfies(have: string, range: string): boolean {\n\tconst caret = range.startsWith('^')\n\tconst want = version(caret ? range.slice(1) : range, `the range \"${range}\"`)\n\tconst is = version(have, `the version \"${have}\"`)\n\tif (!caret) return is.every((part, i) => part === want[i])\n\tif (is[0] !== want[0]) return false\n\tfor (let i = 1; i < 3; i++) if (is[i] !== want[i]) return is[i] > want[i]\n\treturn true\n}\n\nfunction fail(message: string): never {\n\tthrow new ModError(message)\n}\n\n/**\n * What identifies a game exactly: its definitions, the source of its code, and its mods. Two worlds made from games\n * with the same hash play by the same rules: what a lobby, a save and a replay check\n *\n * @internal\n */\nexport function gameHash(game: Rules, options: { code?: boolean } = {}): string {\n\tconst code = options.code ?? true\n\tconst text = JSON.stringify(game, function (this: unknown, key, value) {\n\t\t// what only a server runs, around the games: not the game itself, and not on a player's side\n\t\tif (key === 'server') return undefined\n\t\t// a component's number is the process's, given in the order its modules defined components (a server's entry\n\t\t// defines more of the engine's before the game's than a player's page does): its id is what the game is (bug 18)\n\t\tif (key === 'slot' && isComponent(this)) return undefined\n\t\t// the maps it ships: what a map is is the map's hash, not the game's (S36)\n\t\tif (key === 'maps' && value === game.maps) return undefined\n\t\t// without the code: that a function is there, not how a build happens to print it\n\t\tif (typeof value === 'function') return code ? `fn:${value.toString()}` : 'fn'\n\t\tif (typeof value === 'number' && !Number.isFinite(value)) return String(value)\n\t\treturn value\n\t})\n\t// FNV-1a, twice over with different starts, for 64 bits: enough to tell versions apart, not a secret\n\tlet a = 0x811c9dc5\n\tlet b = 0x01000193 ^ 0x5bd1e995\n\tfor (let i = 0; i < text.length; i++) {\n\t\tconst c = text.charCodeAt(i)\n\t\ta = Math.imul(a ^ c, 0x01000193)\n\t\tb = Math.imul(b ^ c, 0x5bd1e995)\n\t}\n\treturn (a >>> 0).toString(16).padStart(8, '0') + (b >>> 0).toString(16).padStart(8, '0')\n}\n\n/** Whether an object is a component (`defineComponent`): an id, its number, and every field a component has, in its shape */\nconst isComponent = (value: unknown): boolean => {\n\tconst part = value as { id?: unknown; slot?: unknown } | null\n\treturn typeof part?.id === 'string' && typeof part.slot === 'number' && 'replicate' in part && 'snapshot' in part && 'refs' in part\n}\n"],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import { type EffectDef } from './defs';
2
+ import { type Entity, type EntityId } from './entity';
3
+ import { type Vec2 } from './math';
4
+ import type { GamePack } from './packs/pack';
5
+ import type { World } from './world';
6
+ /**
7
+ * The moves pack's id
8
+ *
9
+ * @beta
10
+ */
11
+ export declare const MOVES = "core.moves";
12
+ /**
13
+ * Someone moved by a `dash` or a `knockback` of the moves pack while it rushes (`dashing`): in whose name (`by`), by
14
+ * which effect, after whom (`chase`), whom it met already (`met`) and the ground it set off from (`floor`), above which
15
+ * is a wall to it
16
+ *
17
+ * @beta
18
+ */
19
+ export interface Moved {
20
+ /** In whose name what it meets and the wall happen: who dashed, or who threw it */
21
+ by: EntityId;
22
+ /** The ability that moved it */
23
+ ability: string;
24
+ /** The level it was cast at */
25
+ level: number;
26
+ /** The `dash` or `knockback` that moved it, whose `collide`, `stops` and `onWall` it goes by */
27
+ effect: EffectDef;
28
+ /** The unit it rushes after, to its edge (`to: 'target'`) */
29
+ chase?: EntityId;
30
+ /** Whom it met already, each once */
31
+ met?: EntityId[];
32
+ /** The level of the ground it set off from: higher ground is a wall to it */
33
+ floor: number;
34
+ }
35
+ /**
36
+ * One unit riding another (`attach`): its `host`, who cast it (`caster`), the ability and level, the seconds `left` (until
37
+ * it is let go otherwise when left out), the cooldown put off until it is let go (`held`) and what happens then (`onEnd`)
38
+ *
39
+ * @beta
40
+ */
41
+ export interface Riding {
42
+ /** Whom it rides */
43
+ host: EntityId;
44
+ /** Who cast it: whose casting the ability again lets it go */
45
+ caster: EntityId;
46
+ /** The ability it rides by */
47
+ ability: string;
48
+ /** The level it was cast at */
49
+ level: number;
50
+ /** Seconds until it is let go, when it has a `duration` */
51
+ left?: number;
52
+ /** The ability's cooldown, put off until it is let go */
53
+ held?: number;
54
+ /** What happens as it is let go, in its name */
55
+ onEnd?: EffectDef[];
56
+ }
57
+ /**
58
+ * Who is being moved by the moves pack's `dash` or `knockback`, and how (`Moved`): on while the rush lasts
59
+ *
60
+ * @beta
61
+ */
62
+ export declare const movedBy: import("./components").Component<Moved, Moved>;
63
+ /**
64
+ * Who rides another (`attach`, `Riding`), out of the world while it does
65
+ *
66
+ * @beta
67
+ */
68
+ export declare const riding: import("./components").Component<Riding, Riding>;
69
+ /**
70
+ * Lets a rider go (`attach`): it is back in the world where its host is (or where it was), the ability's cooldown starts,
71
+ * and `onEnd` happens in its name at `point` (where it is when left out), its host the target. False for one that rides
72
+ * nobody
73
+ *
74
+ * @beta
75
+ */
76
+ export declare function letGo(world: World, rider: Entity, point?: Vec2): boolean;
77
+ /**
78
+ * Moves, as in a MOBA: what a game with it (`Rules.packs`) gets beside the engine's `blink`, `dash`, `knockback` and
79
+ * `pull`. A `dash` to the unit it was cast on (`to: 'target'`: after it as it moves, to its edge, or `through` it), a
80
+ * `knockback` that throws the way it is told (`direction`: `away`, `aim`, `over`, `towards`); for both, what happens to
81
+ * each the one moved meets on its way (`collide`, `stops`) and where it meets a wall (`onWall`). The `swap` effect (two
82
+ * units trade places) and `attach` (one rides another, out of the world, until it is let go: its time, its host gone,
83
+ * the ability cast again; `letGo` in code)
84
+ *
85
+ * @beta
86
+ */
87
+ export declare function movesPack(): GamePack;