@v12-engine/engine 0.1.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (951) hide show
  1. package/dist/abilities/amounts.d.ts +28 -0
  2. package/dist/abilities/amounts.js +74 -0
  3. package/dist/abilities/amounts.js.map +1 -0
  4. package/dist/abilities/buffs.d.ts +106 -6
  5. package/dist/abilities/buffs.js +443 -0
  6. package/dist/abilities/buffs.js.map +1 -0
  7. package/dist/abilities/castTold.d.ts +2 -0
  8. package/dist/abilities/castTold.js +66 -0
  9. package/dist/abilities/castTold.js.map +1 -0
  10. package/dist/abilities/chance.d.ts +38 -0
  11. package/dist/abilities/chance.js +77 -0
  12. package/dist/abilities/chance.js.map +1 -0
  13. package/dist/abilities/charges.d.ts +18 -0
  14. package/dist/abilities/charges.js +101 -0
  15. package/dist/abilities/charges.js.map +1 -0
  16. package/dist/abilities/control.d.ts +28 -0
  17. package/dist/abilities/control.js +113 -0
  18. package/dist/abilities/control.js.map +1 -0
  19. package/dist/abilities/dispel.js +51 -0
  20. package/dist/abilities/dispel.js.map +1 -0
  21. package/dist/abilities/effectFields.d.ts +1 -1
  22. package/dist/abilities/effectFields.js +676 -0
  23. package/dist/abilities/effectFields.js.map +1 -0
  24. package/dist/abilities/effectIndex.d.ts +27 -0
  25. package/dist/abilities/effectIndex.js +64 -0
  26. package/dist/abilities/effectIndex.js.map +1 -0
  27. package/dist/abilities/effects/buff.d.ts +9 -3
  28. package/dist/abilities/effects/buff.js +84 -0
  29. package/dist/abilities/effects/buff.js.map +1 -0
  30. package/dist/abilities/effects/conditions.d.ts +2 -0
  31. package/dist/abilities/effects/conditions.js +41 -0
  32. package/dist/abilities/effects/conditions.js.map +1 -0
  33. package/dist/abilities/effects/core.js +54 -0
  34. package/dist/abilities/effects/core.js.map +1 -0
  35. package/dist/abilities/effects/damage.d.ts +1 -1
  36. package/dist/abilities/effects/damage.js +43 -0
  37. package/dist/abilities/effects/damage.js.map +1 -0
  38. package/dist/abilities/effects/heal.d.ts +2 -2
  39. package/dist/abilities/effects/heal.js +51 -0
  40. package/dist/abilities/effects/heal.js.map +1 -0
  41. package/dist/abilities/effects/missile.d.ts +13 -1
  42. package/dist/abilities/effects/missile.js +104 -0
  43. package/dist/abilities/effects/missile.js.map +1 -0
  44. package/dist/abilities/effects/morph.d.ts +5 -0
  45. package/dist/abilities/effects/morph.js +43 -0
  46. package/dist/abilities/effects/morph.js.map +1 -0
  47. package/dist/abilities/effects/moves.d.ts +16 -4
  48. package/dist/abilities/effects/moves.js +212 -0
  49. package/dist/abilities/effects/moves.js.map +1 -0
  50. package/dist/abilities/effects/passives.d.ts +19 -9
  51. package/dist/abilities/effects/passives.js +131 -0
  52. package/dist/abilities/effects/passives.js.map +1 -0
  53. package/dist/abilities/effects/proxy.d.ts +5 -0
  54. package/dist/abilities/effects/proxy.js +60 -0
  55. package/dist/abilities/effects/proxy.js.map +1 -0
  56. package/dist/abilities/effects/sight.d.ts +2 -2
  57. package/dist/abilities/effects/sight.js +39 -0
  58. package/dist/abilities/effects/sight.js.map +1 -0
  59. package/dist/abilities/effects/spawn.d.ts +5 -2
  60. package/dist/abilities/effects/spawn.js +40 -0
  61. package/dist/abilities/effects/spawn.js.map +1 -0
  62. package/dist/abilities/effects/timed.d.ts +2 -2
  63. package/dist/abilities/effects/timed.js +96 -0
  64. package/dist/abilities/effects/timed.js.map +1 -0
  65. package/dist/abilities/effects/trade.d.ts +1 -1
  66. package/dist/abilities/effects/trade.js +25 -0
  67. package/dist/abilities/effects/trade.js.map +1 -0
  68. package/dist/abilities/effects.d.ts +97 -23
  69. package/dist/abilities/effects.js +860 -0
  70. package/dist/abilities/effects.js.map +1 -0
  71. package/dist/abilities/land.d.ts +38 -4
  72. package/dist/abilities/land.js +189 -0
  73. package/dist/abilities/land.js.map +1 -0
  74. package/dist/abilities/recast.d.ts +45 -0
  75. package/dist/abilities/recast.js +118 -0
  76. package/dist/abilities/recast.js.map +1 -0
  77. package/dist/abilities/scaled.js +40 -0
  78. package/dist/abilities/scaled.js.map +1 -0
  79. package/dist/abilities/screen.d.ts +6 -0
  80. package/dist/abilities/screen.js +83 -0
  81. package/dist/abilities/screen.js.map +1 -0
  82. package/dist/abilities/shapes.d.ts +66 -0
  83. package/dist/abilities/shapes.js +122 -0
  84. package/dist/abilities/shapes.js.map +1 -0
  85. package/dist/abilities/text.d.ts +14 -2
  86. package/dist/abilities/text.js +204 -0
  87. package/dist/abilities/text.js.map +1 -0
  88. package/dist/abilities/triggers.d.ts +98 -0
  89. package/dist/abilities/triggers.js +351 -0
  90. package/dist/abilities/triggers.js.map +1 -0
  91. package/dist/abilityChanges.d.ts +131 -0
  92. package/dist/abilityChanges.js +345 -0
  93. package/dist/abilityChanges.js.map +1 -0
  94. package/dist/ai/area.d.ts +4 -1
  95. package/dist/ai/brain.d.ts +4 -1
  96. package/dist/ai/brain.js +844 -0
  97. package/dist/ai/brain.js.map +1 -0
  98. package/dist/ai/budget.js +74 -0
  99. package/dist/ai/budget.js.map +1 -0
  100. package/dist/ai/checks.d.ts +9 -1
  101. package/dist/ai/checks.js +242 -0
  102. package/dist/ai/checks.js.map +1 -0
  103. package/dist/ai/computer.d.ts +11 -4
  104. package/dist/ai/computer.js +251 -0
  105. package/dist/ai/computer.js.map +1 -0
  106. package/dist/ai/defence.d.ts +4 -0
  107. package/dist/ai/defence.js +430 -0
  108. package/dist/ai/defence.js.map +1 -0
  109. package/dist/ai/define.d.ts +3 -2
  110. package/dist/ai/define.js +31 -0
  111. package/dist/ai/define.js.map +1 -0
  112. package/dist/ai/economy.d.ts +10 -7
  113. package/dist/ai/economy.js +780 -0
  114. package/dist/ai/economy.js.map +1 -0
  115. package/dist/ai/geometry.js +38 -0
  116. package/dist/ai/geometry.js.map +1 -0
  117. package/dist/ai/goals.d.ts +1 -0
  118. package/dist/ai/goals.js +560 -0
  119. package/dist/ai/goals.js.map +1 -0
  120. package/dist/ai/knowledge.d.ts +72 -7
  121. package/dist/ai/knowledge.js +804 -0
  122. package/dist/ai/knowledge.js.map +1 -0
  123. package/dist/ai/lanes.d.ts +10 -2
  124. package/dist/ai/lanes.js +715 -0
  125. package/dist/ai/lanes.js.map +1 -0
  126. package/dist/ai/melee/build.js +264 -0
  127. package/dist/ai/melee/build.js.map +1 -0
  128. package/dist/ai/melee/goals.d.ts +7 -0
  129. package/dist/ai/melee/goals.js +720 -0
  130. package/dist/ai/melee/goals.js.map +1 -0
  131. package/dist/ai/melee/heroes.js +68 -0
  132. package/dist/ai/melee/heroes.js.map +1 -0
  133. package/dist/ai/melee/index.d.ts +1 -1
  134. package/dist/ai/melee/index.js +51 -0
  135. package/dist/ai/melee/index.js.map +1 -0
  136. package/dist/ai/melee/production.js +29 -0
  137. package/dist/ai/melee/production.js.map +1 -0
  138. package/dist/ai/melee/surrender.js +64 -0
  139. package/dist/ai/melee/surrender.js.map +1 -0
  140. package/dist/ai/micro.d.ts +9 -0
  141. package/dist/ai/micro.js +1316 -0
  142. package/dist/ai/micro.js.map +1 -0
  143. package/dist/ai/mission.d.ts +9 -2
  144. package/dist/ai/mission.js +538 -0
  145. package/dist/ai/mission.js.map +1 -0
  146. package/dist/ai/missionRules.d.ts +1 -1
  147. package/dist/ai/missionRules.js +26 -0
  148. package/dist/ai/missionRules.js.map +1 -0
  149. package/dist/ai/module.d.ts +6 -2
  150. package/dist/ai/module.js +37 -0
  151. package/dist/ai/module.js.map +1 -0
  152. package/dist/ai/options.d.ts +3 -3
  153. package/dist/ai/plans/build.d.ts +20 -1
  154. package/dist/ai/plans/build.js +608 -0
  155. package/dist/ai/plans/build.js.map +1 -0
  156. package/dist/ai/plans/placement.d.ts +4 -1
  157. package/dist/ai/plans/placement.js +295 -0
  158. package/dist/ai/plans/placement.js.map +1 -0
  159. package/dist/ai/plans/plans.d.ts +9 -0
  160. package/dist/ai/plans/plans.js +110 -0
  161. package/dist/ai/plans/plans.js.map +1 -0
  162. package/dist/ai/plans/production.d.ts +14 -2
  163. package/dist/ai/plans/production.js +434 -0
  164. package/dist/ai/plans/production.js.map +1 -0
  165. package/dist/ai/plans/purse.d.ts +6 -3
  166. package/dist/ai/plans/purse.js +139 -0
  167. package/dist/ai/plans/purse.js.map +1 -0
  168. package/dist/ai/plans/tech.d.ts +6 -0
  169. package/dist/ai/plans/tech.js +122 -0
  170. package/dist/ai/plans/tech.js.map +1 -0
  171. package/dist/ai/profiles.d.ts +4 -4
  172. package/dist/{profiles-B3NS9jwk.js → ai/profiles.js} +3 -98
  173. package/dist/ai/profiles.js.map +1 -0
  174. package/dist/ai/reach.js +54 -0
  175. package/dist/ai/reach.js.map +1 -0
  176. package/dist/ai/report.d.ts +8 -0
  177. package/dist/ai/report.js +87 -0
  178. package/dist/ai/report.js.map +1 -0
  179. package/dist/ai/roles.d.ts +4 -0
  180. package/dist/ai/roles.js +207 -0
  181. package/dist/ai/roles.js.map +1 -0
  182. package/dist/ai/rules.d.ts +8 -2
  183. package/dist/ai/rules.js +416 -0
  184. package/dist/ai/rules.js.map +1 -0
  185. package/dist/ai/scouting.d.ts +6 -0
  186. package/dist/ai/scouting.js +324 -0
  187. package/dist/ai/scouting.js.map +1 -0
  188. package/dist/ai/settings.js +99 -0
  189. package/dist/ai/settings.js.map +1 -0
  190. package/dist/ai/squads.d.ts +21 -2
  191. package/dist/ai/squads.js +916 -0
  192. package/dist/ai/squads.js.map +1 -0
  193. package/dist/ai/strength.js +320 -0
  194. package/dist/ai/strength.js.map +1 -0
  195. package/dist/ai/task.d.ts +3 -1
  196. package/dist/ai/task.js +17 -0
  197. package/dist/ai/task.js.map +1 -0
  198. package/dist/ai/tasks/attack.js +24 -0
  199. package/dist/ai/tasks/attack.js.map +1 -0
  200. package/dist/ai/tasks/capture.d.ts +3 -3
  201. package/dist/ai/tasks/capture.js +37 -0
  202. package/dist/ai/tasks/capture.js.map +1 -0
  203. package/dist/ai/tasks/creep.js +29 -0
  204. package/dist/ai/tasks/creep.js.map +1 -0
  205. package/dist/ai/tasks/defend.js +61 -0
  206. package/dist/ai/tasks/defend.js.map +1 -0
  207. package/dist/ai/tasks/drop.js +81 -0
  208. package/dist/ai/tasks/drop.js.map +1 -0
  209. package/dist/ai/tasks/escort.js +59 -0
  210. package/dist/ai/tasks/escort.js.map +1 -0
  211. package/dist/ai/tasks/gather.js +48 -0
  212. package/dist/ai/tasks/gather.js.map +1 -0
  213. package/dist/ai/tasks/harass.js +39 -0
  214. package/dist/ai/tasks/harass.js.map +1 -0
  215. package/dist/ai/tasks/hold.js +32 -0
  216. package/dist/ai/tasks/hold.js.map +1 -0
  217. package/dist/ai/tasks/index.js +34 -0
  218. package/dist/ai/tasks/index.js.map +1 -0
  219. package/dist/ai/tasks/move.js +26 -0
  220. package/dist/ai/tasks/move.js.map +1 -0
  221. package/dist/ai/tasks/patrol.js +59 -0
  222. package/dist/ai/tasks/patrol.js.map +1 -0
  223. package/dist/ai/tasks/retreat.js +28 -0
  224. package/dist/ai/tasks/retreat.js.map +1 -0
  225. package/dist/ai/tasks/scout.js +73 -0
  226. package/dist/ai/tasks/scout.js.map +1 -0
  227. package/dist/ai/tasks/shared.d.ts +1 -1
  228. package/dist/ai/tasks/shared.js +137 -0
  229. package/dist/ai/tasks/shared.js.map +1 -0
  230. package/dist/ai/team.d.ts +18 -1
  231. package/dist/ai/team.js +492 -0
  232. package/dist/ai/team.js.map +1 -0
  233. package/dist/ai/threat.d.ts +6 -0
  234. package/dist/ai/threat.js +206 -0
  235. package/dist/ai/threat.js.map +1 -0
  236. package/dist/ai/view.d.ts +21 -7
  237. package/dist/ai/view.js +677 -0
  238. package/dist/ai/view.js.map +1 -0
  239. package/dist/ai/waves.d.ts +6 -0
  240. package/dist/ai/waves.js +410 -0
  241. package/dist/ai/waves.js.map +1 -0
  242. package/dist/ai.js +54 -6239
  243. package/dist/aiTesting.d.ts +6 -3
  244. package/dist/aiTesting.js +229 -0
  245. package/dist/aiTesting.js.map +1 -0
  246. package/dist/areas.d.ts +4 -1
  247. package/dist/areas.js +295 -0
  248. package/dist/areas.js.map +1 -0
  249. package/dist/attacks.d.ts +3 -3
  250. package/dist/attacks.js +127 -0
  251. package/dist/attacks.js.map +1 -0
  252. package/dist/burning.d.ts +267 -0
  253. package/dist/burning.js +795 -0
  254. package/dist/burning.js.map +1 -0
  255. package/dist/bytes.js +21 -0
  256. package/dist/bytes.js.map +1 -0
  257. package/dist/callings.d.ts +71 -0
  258. package/dist/callings.js +157 -0
  259. package/dist/callings.js.map +1 -0
  260. package/dist/cameraOrders.d.ts +78 -0
  261. package/dist/cameraOrders.js +114 -0
  262. package/dist/cameraOrders.js.map +1 -0
  263. package/dist/camps.d.ts +70 -4
  264. package/dist/camps.js +501 -0
  265. package/dist/camps.js.map +1 -0
  266. package/dist/capture.d.ts +15 -3
  267. package/dist/capture.js +304 -0
  268. package/dist/capture.js.map +1 -0
  269. package/dist/cellLayers.d.ts +78 -13
  270. package/dist/cellLayers.js +275 -0
  271. package/dist/cellLayers.js.map +1 -0
  272. package/dist/cellPatches.d.ts +24 -0
  273. package/dist/cellPatches.js +73 -0
  274. package/dist/cellPatches.js.map +1 -0
  275. package/dist/cinematics.d.ts +10 -5
  276. package/dist/cinematics.js +161 -0
  277. package/dist/cinematics.js.map +1 -0
  278. package/dist/clock.d.ts +2 -2
  279. package/dist/clock.js +78 -0
  280. package/dist/clock.js.map +1 -0
  281. package/dist/commands.d.ts +36 -4
  282. package/dist/commands.js +636 -0
  283. package/dist/commands.js.map +1 -0
  284. package/dist/components.d.ts +31 -10
  285. package/dist/components.js +74 -0
  286. package/dist/components.js.map +1 -0
  287. package/dist/computers.d.ts +4 -4
  288. package/dist/computers.js +194 -0
  289. package/dist/computers.js.map +1 -0
  290. package/dist/concealment.d.ts +25 -2
  291. package/dist/concealment.js +409 -0
  292. package/dist/concealment.js.map +1 -0
  293. package/dist/coreComponents.js +130 -0
  294. package/dist/coreComponents.js.map +1 -0
  295. package/dist/createGame.d.ts +306 -0
  296. package/dist/createGame.js +405 -0
  297. package/dist/createGame.js.map +1 -0
  298. package/dist/dashing.d.ts +18 -2
  299. package/dist/dashing.js +41 -0
  300. package/dist/dashing.js.map +1 -0
  301. package/dist/debug.d.ts +8 -0
  302. package/dist/debug.js +5 -3
  303. package/dist/debug2.js +76 -0
  304. package/dist/debug2.js.map +1 -0
  305. package/dist/debugCommands.d.ts +6 -6
  306. package/dist/debugCommands.js +537 -0
  307. package/dist/debugCommands.js.map +1 -0
  308. package/dist/debugging.d.ts +1 -0
  309. package/dist/defaultSets.d.ts +183 -0
  310. package/dist/defaultSets.js +216 -0
  311. package/dist/defaultSets.js.map +1 -0
  312. package/dist/definitions.d.ts +6 -0
  313. package/dist/definitions.js +78 -0
  314. package/dist/definitions.js.map +1 -0
  315. package/dist/defs.d.ts +1895 -165
  316. package/dist/defs.js +380 -0
  317. package/dist/defs.js.map +1 -0
  318. package/dist/denying.d.ts +4 -4
  319. package/dist/denying.js +106 -0
  320. package/dist/denying.js.map +1 -0
  321. package/dist/destructibles.d.ts +2 -2
  322. package/dist/destructibles.js +36 -0
  323. package/dist/destructibles.js.map +1 -0
  324. package/dist/determinism.d.ts +4 -4
  325. package/dist/determinism.js +247 -0
  326. package/dist/determinism.js.map +1 -0
  327. package/dist/dialog.d.ts +17 -2
  328. package/dist/dialog.js +108 -0
  329. package/dist/dialog.js.map +1 -0
  330. package/dist/effectRefs.js +28 -0
  331. package/dist/effectRefs.js.map +1 -0
  332. package/dist/effects.d.ts +27 -11
  333. package/dist/effects.js +110 -0
  334. package/dist/effects.js.map +1 -0
  335. package/dist/endings.d.ts +1 -1
  336. package/dist/endings.js +78 -0
  337. package/dist/endings.js.map +1 -0
  338. package/dist/engagement.d.ts +40 -6
  339. package/dist/engagement.js +530 -0
  340. package/dist/engagement.js.map +1 -0
  341. package/dist/engineEvents.d.ts +72 -9
  342. package/dist/engineEvents.js +520 -0
  343. package/dist/engineEvents.js.map +1 -0
  344. package/dist/entity.d.ts +275 -26
  345. package/dist/entity.js +441 -0
  346. package/dist/entity.js.map +1 -0
  347. package/dist/entityIndex.d.ts +10 -3
  348. package/dist/entityIndex.js +149 -0
  349. package/dist/entityIndex.js.map +1 -0
  350. package/dist/errors.d.ts +6 -2
  351. package/dist/errors.js +59 -0
  352. package/dist/errors.js.map +1 -0
  353. package/dist/events.d.ts +11 -5
  354. package/dist/events.js +158 -0
  355. package/dist/events.js.map +1 -0
  356. package/dist/exactMath.js +273 -0
  357. package/dist/exactMath.js.map +1 -0
  358. package/dist/features.d.ts +1 -1
  359. package/dist/features.js +127 -0
  360. package/dist/features.js.map +1 -0
  361. package/dist/fields.d.ts +25 -5
  362. package/dist/fields.js +140 -0
  363. package/dist/fields.js.map +1 -0
  364. package/dist/fixture.d.ts +3 -3
  365. package/dist/fixture.js +512 -0
  366. package/dist/fixture.js.map +1 -0
  367. package/dist/fog.d.ts +26 -3
  368. package/dist/fog.js +333 -0
  369. package/dist/fog.js.map +1 -0
  370. package/dist/foliage.d.ts +476 -0
  371. package/dist/foliage.js +1478 -0
  372. package/dist/foliage.js.map +1 -0
  373. package/dist/foliageDebug.d.ts +57 -0
  374. package/dist/foliageDebug.js +172 -0
  375. package/dist/foliageDebug.js.map +1 -0
  376. package/dist/foliageRegrowth.d.ts +20 -0
  377. package/dist/foliageRegrowth.js +332 -0
  378. package/dist/foliageRegrowth.js.map +1 -0
  379. package/dist/formState.d.ts +67 -0
  380. package/dist/formState.js +65 -0
  381. package/dist/formState.js.map +1 -0
  382. package/dist/formation.d.ts +46 -8
  383. package/dist/formation.js +297 -0
  384. package/dist/formation.js.map +1 -0
  385. package/dist/forms.d.ts +58 -0
  386. package/dist/forms.js +146 -0
  387. package/dist/forms.js.map +1 -0
  388. package/dist/friendlyFire.d.ts +2 -2
  389. package/dist/friendlyFire.js +37 -0
  390. package/dist/friendlyFire.js.map +1 -0
  391. package/dist/game.d.ts +141 -48
  392. package/dist/game.js +834 -0
  393. package/dist/game.js.map +1 -0
  394. package/dist/gameData.d.ts +96 -22
  395. package/dist/gameData.js +1690 -0
  396. package/dist/gameData.js.map +1 -0
  397. package/dist/gameFiles.d.ts +3 -3
  398. package/dist/gameFiles.js +14 -0
  399. package/dist/gameFiles.js.map +1 -0
  400. package/dist/gates.js +92 -0
  401. package/dist/gates.js.map +1 -0
  402. package/dist/generate.d.ts +28 -1
  403. package/dist/generate.js +1062 -0
  404. package/dist/generate.js.map +1 -0
  405. package/dist/generateWorker.d.ts +7 -3
  406. package/dist/generateWorker.js +86 -0
  407. package/dist/generateWorker.js.map +1 -0
  408. package/dist/grid.d.ts +9 -0
  409. package/dist/grid.js +102 -0
  410. package/dist/grid.js.map +1 -0
  411. package/dist/ground.d.ts +17 -1
  412. package/dist/ground.js +375 -0
  413. package/dist/ground.js.map +1 -0
  414. package/dist/groundObjects.d.ts +70 -0
  415. package/dist/groundObjects.js +371 -0
  416. package/dist/groundObjects.js.map +1 -0
  417. package/dist/groundSpeed.d.ts +20 -3
  418. package/dist/groundSpeed.js +117 -0
  419. package/dist/groundSpeed.js.map +1 -0
  420. package/dist/hero.d.ts +126 -10
  421. package/dist/hero.js +432 -0
  422. package/dist/hero.js.map +1 -0
  423. package/dist/holds.d.ts +94 -0
  424. package/dist/holds.js +305 -0
  425. package/dist/holds.js.map +1 -0
  426. package/dist/home.d.ts +1 -1
  427. package/dist/home.js +30 -0
  428. package/dist/home.js.map +1 -0
  429. package/dist/hooks.d.ts +339 -57
  430. package/dist/hooks.js +105 -0
  431. package/dist/hooks.js.map +1 -0
  432. package/dist/hotReload.d.ts +6 -5
  433. package/dist/hotReload.js +145 -0
  434. package/dist/hotReload.js.map +1 -0
  435. package/dist/ids.d.ts +3 -3
  436. package/dist/ids.js +30 -0
  437. package/dist/ids.js.map +1 -0
  438. package/dist/idsFile.d.ts +36 -0
  439. package/dist/idsFile.js +134 -0
  440. package/dist/idsFile.js.map +1 -0
  441. package/dist/index.d.ts +105 -68
  442. package/dist/index.js +194 -4701
  443. package/dist/inspect.d.ts +29 -2
  444. package/dist/{inspect-D9dWHmZ0.js → inspect.js} +21 -12
  445. package/dist/inspect.js.map +1 -0
  446. package/dist/inventory.d.ts +14 -1
  447. package/dist/inventory.js +84 -0
  448. package/dist/inventory.js.map +1 -0
  449. package/dist/items.d.ts +136 -8
  450. package/dist/items.js +585 -0
  451. package/dist/items.js.map +1 -0
  452. package/dist/lanes.d.ts +12 -3
  453. package/dist/lanes.js +496 -0
  454. package/dist/lanes.js.map +1 -0
  455. package/dist/life.d.ts +6 -2
  456. package/dist/life.js +287 -0
  457. package/dist/life.js.map +1 -0
  458. package/dist/log.d.ts +26 -3
  459. package/dist/log.js +192 -0
  460. package/dist/log.js.map +1 -0
  461. package/dist/manaBurn.d.ts +2 -2
  462. package/dist/manaBurn.js +75 -0
  463. package/dist/manaBurn.js.map +1 -0
  464. package/dist/map/file.d.ts +56 -3
  465. package/dist/map/file.js +264 -0
  466. package/dist/map/file.js.map +1 -0
  467. package/dist/map/images.js +61 -0
  468. package/dist/map/images.js.map +1 -0
  469. package/dist/map/look.d.ts +1 -1
  470. package/dist/map/look.js +30 -0
  471. package/dist/map/look.js.map +1 -0
  472. package/dist/map/pathProfile.js +183 -0
  473. package/dist/map/pathProfile.js.map +1 -0
  474. package/dist/map/resize.d.ts +4 -0
  475. package/dist/map/resize.js +136 -0
  476. package/dist/map/resize.js.map +1 -0
  477. package/dist/map/schema.js +257 -0
  478. package/dist/map/schema.js.map +1 -0
  479. package/dist/map/terrain.js +214 -0
  480. package/dist/map/terrain.js.map +1 -0
  481. package/dist/map/types.d.ts +92 -13
  482. package/dist/map/types.js +251 -0
  483. package/dist/map/types.js.map +1 -0
  484. package/dist/mapCheck/cells.js +94 -0
  485. package/dist/mapCheck/cells.js.map +1 -0
  486. package/dist/mapCheck/rules/foliage.d.ts +9 -0
  487. package/dist/mapCheck/rules/foliage.js +83 -0
  488. package/dist/mapCheck/rules/foliage.js.map +1 -0
  489. package/dist/mapCheck/rules/names.js +39 -0
  490. package/dist/mapCheck/rules/names.js.map +1 -0
  491. package/dist/mapCheck/rules/objects.d.ts +1 -1
  492. package/dist/mapCheck/rules/objects.js +56 -0
  493. package/dist/mapCheck/rules/objects.js.map +1 -0
  494. package/dist/mapCheck/rules/paths.js +32 -0
  495. package/dist/mapCheck/rules/paths.js.map +1 -0
  496. package/dist/mapCheck/rules/players.js +20 -0
  497. package/dist/mapCheck/rules/players.js.map +1 -0
  498. package/dist/mapCheck/rules/races.js +56 -0
  499. package/dist/mapCheck/rules/races.js.map +1 -0
  500. package/dist/mapCheck/rules/random.js +47 -0
  501. package/dist/mapCheck/rules/random.js.map +1 -0
  502. package/dist/mapCheck/rules/regions.js +30 -0
  503. package/dist/mapCheck/rules/regions.js.map +1 -0
  504. package/dist/mapCheck/rules/targets.js +31 -0
  505. package/dist/mapCheck/rules/targets.js.map +1 -0
  506. package/dist/mapCheck/rules/walking.js +45 -0
  507. package/dist/mapCheck/rules/walking.js.map +1 -0
  508. package/dist/mapCheck.d.ts +2 -2
  509. package/dist/mapCheck.js +63 -0
  510. package/dist/mapCheck.js.map +1 -0
  511. package/dist/mapFields.d.ts +25 -2
  512. package/dist/mapFields.js +134 -0
  513. package/dist/mapFields.js.map +1 -0
  514. package/dist/mapFile.js +176 -0
  515. package/dist/mapFile.js.map +1 -0
  516. package/dist/mapMeasure.d.ts +8 -0
  517. package/dist/mapMeasure.js +283 -0
  518. package/dist/mapMeasure.js.map +1 -0
  519. package/dist/mapMerge.d.ts +1 -0
  520. package/dist/mapMerge.js +172 -0
  521. package/dist/mapMerge.js.map +1 -0
  522. package/dist/mapObjectives.js +138 -0
  523. package/dist/mapObjectives.js.map +1 -0
  524. package/dist/mapObjects.js +80 -0
  525. package/dist/mapObjects.js.map +1 -0
  526. package/dist/math.d.ts +37 -7
  527. package/dist/math.js +155 -0
  528. package/dist/math.js.map +1 -0
  529. package/dist/messages.d.ts +71 -4
  530. package/dist/messages.js +29 -0
  531. package/dist/messages.js.map +1 -0
  532. package/dist/missionRules.d.ts +10 -2
  533. package/dist/{missionRules-C-bGxm0Q.js → missionRules.js} +30 -150
  534. package/dist/missionRules.js.map +1 -0
  535. package/dist/mods.d.ts +39 -20
  536. package/dist/mods.js +271 -0
  537. package/dist/mods.js.map +1 -0
  538. package/dist/moves.d.ts +87 -0
  539. package/dist/moves.js +539 -0
  540. package/dist/moves.js.map +1 -0
  541. package/dist/names.d.ts +7 -0
  542. package/dist/names.js +122 -0
  543. package/dist/names.js.map +1 -0
  544. package/dist/navigation/agentParams.js +14 -0
  545. package/dist/navigation/agentParams.js.map +1 -0
  546. package/dist/navigation/air.d.ts +7 -3
  547. package/dist/navigation/air.js +401 -0
  548. package/dist/navigation/air.js.map +1 -0
  549. package/dist/navigation/builds.d.ts +34 -2
  550. package/dist/navigation/builds.js +287 -0
  551. package/dist/navigation/builds.js.map +1 -0
  552. package/dist/navigation/groundAreas.d.ts +59 -1
  553. package/dist/navigation/groundAreas.js +407 -0
  554. package/dist/navigation/groundAreas.js.map +1 -0
  555. package/dist/navigation/navigation.d.ts +98 -9
  556. package/dist/navigation/recast.d.ts +194 -18
  557. package/dist/navigation/recast.js +1379 -0
  558. package/dist/navigation/recast.js.map +1 -0
  559. package/dist/navigation/sidePaths.d.ts +8 -3
  560. package/dist/navigation/sidePaths.js +241 -0
  561. package/dist/navigation/sidePaths.js.map +1 -0
  562. package/dist/navigation/sized.js +243 -0
  563. package/dist/navigation/sized.js.map +1 -0
  564. package/dist/nearest.js +32 -0
  565. package/dist/nearest.js.map +1 -0
  566. package/dist/noise.js +59 -0
  567. package/dist/noise.js.map +1 -0
  568. package/dist/objectives.d.ts +12 -3
  569. package/dist/objectives.js +144 -0
  570. package/dist/objectives.js.map +1 -0
  571. package/dist/orders/basic.d.ts +5 -5
  572. package/dist/orders/basic.js +417 -0
  573. package/dist/orders/basic.js.map +1 -0
  574. package/dist/orders/build.js +278 -0
  575. package/dist/orders/build.js.map +1 -0
  576. package/dist/orders/cast.d.ts +13 -3
  577. package/dist/orders/cast.js +558 -0
  578. package/dist/orders/cast.js.map +1 -0
  579. package/dist/orders/facts.js +16 -0
  580. package/dist/orders/facts.js.map +1 -0
  581. package/dist/orders/harvest.d.ts +21 -5
  582. package/dist/orders/harvest.js +540 -0
  583. package/dist/orders/harvest.js.map +1 -0
  584. package/dist/orders/idle.d.ts +3 -1
  585. package/dist/orders/idle.js +234 -0
  586. package/dist/orders/idle.js.map +1 -0
  587. package/dist/orders/items.js +92 -0
  588. package/dist/orders/items.js.map +1 -0
  589. package/dist/orders/queue.js +108 -0
  590. package/dist/orders/queue.js.map +1 -0
  591. package/dist/orders/waiting.d.ts +39 -0
  592. package/dist/orders/waiting.js +149 -0
  593. package/dist/orders/waiting.js.map +1 -0
  594. package/dist/pack.schema.js +13 -0
  595. package/dist/pack.schema.js.map +1 -0
  596. package/dist/pack.schema.json +7622 -841
  597. package/dist/packs/director/index.d.ts +13 -5
  598. package/dist/packs/director/index.js +204 -0
  599. package/dist/packs/director/index.js.map +1 -0
  600. package/dist/packs/heroes/campaign.d.ts +3 -2
  601. package/dist/packs/heroes/campaign.js +241 -0
  602. package/dist/packs/heroes/campaign.js.map +1 -0
  603. package/dist/packs/heroes/carry.d.ts +6 -0
  604. package/dist/packs/heroes/carry.js +112 -0
  605. package/dist/packs/heroes/carry.js.map +1 -0
  606. package/dist/packs/heroes/commands.js +115 -0
  607. package/dist/packs/heroes/commands.js.map +1 -0
  608. package/dist/packs/heroes/fallen.d.ts +43 -0
  609. package/dist/packs/heroes/fallen.js +61 -0
  610. package/dist/packs/heroes/fallen.js.map +1 -0
  611. package/dist/packs/heroes/hire.js +60 -0
  612. package/dist/packs/heroes/hire.js.map +1 -0
  613. package/dist/packs/heroes/index.d.ts +7 -6
  614. package/dist/packs/heroes/index.js +130 -0
  615. package/dist/packs/heroes/index.js.map +1 -0
  616. package/dist/packs/heroes/loop.d.ts +95 -0
  617. package/dist/packs/heroes/loop.js +250 -0
  618. package/dist/packs/heroes/loop.js.map +1 -0
  619. package/dist/packs/heroes/making.d.ts +6 -3
  620. package/dist/packs/heroes/making.js +55 -0
  621. package/dist/packs/heroes/making.js.map +1 -0
  622. package/dist/packs/heroes/respawn.d.ts +3 -3
  623. package/dist/packs/heroes/respawn.js +87 -0
  624. package/dist/packs/heroes/respawn.js.map +1 -0
  625. package/dist/packs/heroes/sets.d.ts +32 -0
  626. package/dist/packs/heroes/sets.js +51 -0
  627. package/dist/packs/heroes/sets.js.map +1 -0
  628. package/dist/packs/heroes/spells.d.ts +16 -0
  629. package/dist/packs/heroes/spells.js +269 -0
  630. package/dist/packs/heroes/spells.js.map +1 -0
  631. package/dist/packs/items/defaults.d.ts +43 -0
  632. package/dist/packs/items/defaults.js +1504 -0
  633. package/dist/packs/items/defaults.js.map +1 -0
  634. package/dist/packs/items/index.d.ts +27 -0
  635. package/dist/packs/items/index.js +214 -0
  636. package/dist/packs/items/index.js.map +1 -0
  637. package/dist/packs/moba/index.d.ts +3 -3
  638. package/dist/packs/moba/index.js +174 -0
  639. package/dist/packs/moba/index.js.map +1 -0
  640. package/dist/packs/pack.d.ts +15 -15
  641. package/dist/packs/pack.js +14 -0
  642. package/dist/packs/pack.js.map +1 -0
  643. package/dist/packs.d.ts +15 -7
  644. package/dist/packs.js +222 -0
  645. package/dist/packs.js.map +1 -0
  646. package/dist/paths.d.ts +2 -0
  647. package/dist/paths.js +109 -0
  648. package/dist/paths.js.map +1 -0
  649. package/dist/plain.js +57 -0
  650. package/dist/plain.js.map +1 -0
  651. package/dist/player.d.ts +33 -10
  652. package/dist/player.js +159 -0
  653. package/dist/player.js.map +1 -0
  654. package/dist/portals.d.ts +1 -1
  655. package/dist/portals.js +194 -0
  656. package/dist/portals.js.map +1 -0
  657. package/dist/prefabs.d.ts +25 -2
  658. package/dist/prefabs.js +239 -0
  659. package/dist/prefabs.js.map +1 -0
  660. package/dist/presetBuildings.js +58 -0
  661. package/dist/presetBuildings.js.map +1 -0
  662. package/dist/presetFoliage.d.ts +27 -0
  663. package/dist/presetFoliage.js +98 -0
  664. package/dist/presetFoliage.js.map +1 -0
  665. package/dist/presetGround.js +65 -0
  666. package/dist/presetGround.js.map +1 -0
  667. package/dist/proxies.d.ts +12 -0
  668. package/dist/proxies.js +79 -0
  669. package/dist/proxies.js.map +1 -0
  670. package/dist/query.d.ts +56 -0
  671. package/dist/query.js +88 -0
  672. package/dist/query.js.map +1 -0
  673. package/dist/races.d.ts +15 -14
  674. package/dist/races.js +172 -0
  675. package/dist/races.js.map +1 -0
  676. package/dist/randomGroups.js +91 -0
  677. package/dist/randomGroups.js.map +1 -0
  678. package/dist/registry.d.ts +117 -53
  679. package/dist/registry.js +323 -0
  680. package/dist/registry.js.map +1 -0
  681. package/dist/remains.d.ts +11 -9
  682. package/dist/remains.js +188 -0
  683. package/dist/remains.js.map +1 -0
  684. package/dist/replication.d.ts +12 -7
  685. package/dist/replication.js +100 -0
  686. package/dist/replication.js.map +1 -0
  687. package/dist/rng.d.ts +2 -0
  688. package/dist/rng.js +40 -0
  689. package/dist/rng.js.map +1 -0
  690. package/dist/rules.d.ts +186 -99
  691. package/dist/rules.js +179 -0
  692. package/dist/rules.js.map +1 -0
  693. package/dist/rulesCheck.d.ts +5 -4
  694. package/dist/rulesCheck.js +693 -0
  695. package/dist/rulesCheck.js.map +1 -0
  696. package/dist/runes.d.ts +2 -2
  697. package/dist/runes.js +80 -0
  698. package/dist/runes.js.map +1 -0
  699. package/dist/save.d.ts +37 -12
  700. package/dist/save.js +532 -0
  701. package/dist/save.js.map +1 -0
  702. package/dist/scenario.d.ts +2 -2
  703. package/dist/scenario.js +99 -0
  704. package/dist/scenario.js.map +1 -0
  705. package/dist/scheduler.d.ts +3 -0
  706. package/dist/scheduler.js +156 -0
  707. package/dist/scheduler.js.map +1 -0
  708. package/dist/score.d.ts +19 -19
  709. package/dist/score.js +709 -0
  710. package/dist/score.js.map +1 -0
  711. package/dist/sequences.d.ts +10 -6
  712. package/dist/sequences.js +206 -0
  713. package/dist/sequences.js.map +1 -0
  714. package/dist/server/doorman.js +154 -0
  715. package/dist/server/doorman.js.map +1 -0
  716. package/dist/server/gameServer.d.ts +16 -1
  717. package/dist/server/gameServer.js +643 -0
  718. package/dist/server/gameServer.js.map +1 -0
  719. package/dist/server/index.d.ts +1 -1
  720. package/dist/server/lobby.js +199 -0
  721. package/dist/server/lobby.js.map +1 -0
  722. package/dist/server/log.js +18 -0
  723. package/dist/server/log.js.map +1 -0
  724. package/dist/server/match.js +267 -0
  725. package/dist/server/match.js.map +1 -0
  726. package/dist/server/mode.d.ts +18 -9
  727. package/dist/server/mode.js +220 -0
  728. package/dist/server/mode.js.map +1 -0
  729. package/dist/{navigation-worker.js → server/navigation-worker.js} +1 -1
  730. package/dist/server/navigation-worker.js.map +1 -0
  731. package/dist/server/navigation.js +39 -0
  732. package/dist/server/navigation.js.map +1 -0
  733. package/dist/server/ops.d.ts +4 -0
  734. package/dist/server/ops.js +137 -0
  735. package/dist/server/ops.js.map +1 -0
  736. package/dist/server/packs.d.ts +3 -3
  737. package/dist/server/packs.js +32 -0
  738. package/dist/server/packs.js.map +1 -0
  739. package/dist/server/ratings.d.ts +5 -0
  740. package/dist/server/ratings.js +104 -0
  741. package/dist/server/ratings.js.map +1 -0
  742. package/dist/server/relay.d.ts +12 -2
  743. package/dist/server/relay.js +144 -0
  744. package/dist/server/relay.js.map +1 -0
  745. package/dist/server/rooms.d.ts +9 -2
  746. package/dist/server/rooms.js +442 -0
  747. package/dist/server/rooms.js.map +1 -0
  748. package/dist/server/seat.js +116 -0
  749. package/dist/server/seat.js.map +1 -0
  750. package/dist/server/seatSettings.d.ts +3 -3
  751. package/dist/server/seatSettings.js +63 -0
  752. package/dist/server/seatSettings.js.map +1 -0
  753. package/dist/server/secret.js +13 -0
  754. package/dist/server/secret.js.map +1 -0
  755. package/dist/server/start.d.ts +13 -6
  756. package/dist/server/start.js +76 -0
  757. package/dist/server/start.js.map +1 -0
  758. package/dist/server/websocket.d.ts +9 -1
  759. package/dist/server/websocket.js +306 -0
  760. package/dist/server/websocket.js.map +1 -0
  761. package/dist/server.js +15 -2861
  762. package/dist/session/can.js +26 -0
  763. package/dist/session/can.js.map +1 -0
  764. package/dist/session/commandReplay.d.ts +8 -2
  765. package/dist/session/commandReplay.js +293 -0
  766. package/dist/session/commandReplay.js.map +1 -0
  767. package/dist/session/debug.js +151 -0
  768. package/dist/session/debug.js.map +1 -0
  769. package/dist/session/delay.js +62 -0
  770. package/dist/session/delay.js.map +1 -0
  771. package/dist/session/delta.d.ts +14 -1
  772. package/dist/session/delta.js +407 -0
  773. package/dist/session/delta.js.map +1 -0
  774. package/dist/session/entityState.js +415 -0
  775. package/dist/session/entityState.js.map +1 -0
  776. package/dist/session/local.d.ts +47 -5
  777. package/dist/session/local.js +670 -0
  778. package/dist/session/local.js.map +1 -0
  779. package/dist/session/memory.d.ts +20 -2
  780. package/dist/session/memory.js +131 -0
  781. package/dist/session/memory.js.map +1 -0
  782. package/dist/session/protocol.d.ts +325 -31
  783. package/dist/session/protocol.js +55 -0
  784. package/dist/session/protocol.js.map +1 -0
  785. package/dist/session/remote.d.ts +74 -12
  786. package/dist/session/remote.js +1394 -0
  787. package/dist/session/remote.js.map +1 -0
  788. package/dist/session/replay.d.ts +11 -2
  789. package/dist/session/replay.js +160 -0
  790. package/dist/session/replay.js.map +1 -0
  791. package/dist/session/seed.js +12 -0
  792. package/dist/session/seed.js.map +1 -0
  793. package/dist/session/share.d.ts +5 -1
  794. package/dist/session/share.js +94 -0
  795. package/dist/session/share.js.map +1 -0
  796. package/dist/session/socket.d.ts +1 -1
  797. package/dist/session/socket.js +29 -0
  798. package/dist/session/socket.js.map +1 -0
  799. package/dist/session/wire.d.ts +5 -0
  800. package/dist/session/wire.js +84 -0
  801. package/dist/session/wire.js.map +1 -0
  802. package/dist/session/worker.d.ts +77 -12
  803. package/dist/session/worker.js +499 -0
  804. package/dist/session/worker.js.map +1 -0
  805. package/dist/shared.d.ts +31 -5
  806. package/dist/shared.js +166 -0
  807. package/dist/shared.js.map +1 -0
  808. package/dist/sides.d.ts +9 -3
  809. package/dist/sides.js +149 -0
  810. package/dist/sides.js.map +1 -0
  811. package/dist/sight.js +85 -0
  812. package/dist/sight.js.map +1 -0
  813. package/dist/simulate-worker.js +1 -1
  814. package/dist/simulate.d.ts +12 -8
  815. package/dist/{simulate-oXBiw1Ff.js → simulate.js} +10 -11
  816. package/dist/simulate.js.map +1 -0
  817. package/dist/smart.js +77 -0
  818. package/dist/smart.js.map +1 -0
  819. package/dist/spatial.d.ts +32 -16
  820. package/dist/spatial.js +234 -0
  821. package/dist/spatial.js.map +1 -0
  822. package/dist/spawning.d.ts +1 -0
  823. package/dist/spawning.js +224 -0
  824. package/dist/spawning.js.map +1 -0
  825. package/dist/stances.d.ts +6 -3
  826. package/dist/stances.js +169 -0
  827. package/dist/stances.js.map +1 -0
  828. package/dist/start.d.ts +10 -10
  829. package/dist/start.js +75 -0
  830. package/dist/start.js.map +1 -0
  831. package/dist/stats.d.ts +42 -16
  832. package/dist/stats.js +290 -0
  833. package/dist/stats.js.map +1 -0
  834. package/dist/summoned.d.ts +52 -0
  835. package/dist/summoned.js +38 -0
  836. package/dist/summoned.js.map +1 -0
  837. package/dist/summons.d.ts +10 -13
  838. package/dist/summons.js +271 -0
  839. package/dist/summons.js.map +1 -0
  840. package/dist/systems/abilities.js +224 -0
  841. package/dist/systems/abilities.js.map +1 -0
  842. package/dist/systems/combat.d.ts +35 -1
  843. package/dist/systems/combat.js +677 -0
  844. package/dist/systems/combat.js.map +1 -0
  845. package/dist/systems/combatTold.d.ts +3 -1
  846. package/dist/systems/combatTold.js +85 -0
  847. package/dist/systems/combatTold.js.map +1 -0
  848. package/dist/systems/construction.js +80 -0
  849. package/dist/systems/construction.js.map +1 -0
  850. package/dist/systems/economy.d.ts +0 -6
  851. package/dist/systems/economy.js +128 -0
  852. package/dist/systems/economy.js.map +1 -0
  853. package/dist/systems/fog.d.ts +1 -1
  854. package/dist/systems/fog.js +120 -0
  855. package/dist/systems/fog.js.map +1 -0
  856. package/dist/systems/life.js +32 -0
  857. package/dist/systems/life.js.map +1 -0
  858. package/dist/systems/movement.d.ts +24 -12
  859. package/dist/systems/movement.js +1247 -0
  860. package/dist/systems/movement.js.map +1 -0
  861. package/dist/systems/orders.js +64 -0
  862. package/dist/systems/orders.js.map +1 -0
  863. package/dist/systems/production.js +322 -0
  864. package/dist/systems/production.js.map +1 -0
  865. package/dist/systems/productionQueue.js +120 -0
  866. package/dist/systems/productionQueue.js.map +1 -0
  867. package/dist/systems/victory.d.ts +1 -1
  868. package/dist/systems/victory.js +56 -0
  869. package/dist/systems/victory.js.map +1 -0
  870. package/dist/talk.d.ts +6 -6
  871. package/dist/talk.js +153 -0
  872. package/dist/talk.js.map +1 -0
  873. package/dist/targeting.d.ts +142 -0
  874. package/dist/targeting.js +49 -0
  875. package/dist/targeting.js.map +1 -0
  876. package/dist/tech.d.ts +20 -3
  877. package/dist/tech.js +239 -0
  878. package/dist/tech.js.map +1 -0
  879. package/dist/techTree.d.ts +7 -0
  880. package/dist/techTree.js +90 -0
  881. package/dist/techTree.js.map +1 -0
  882. package/dist/terrain.d.ts +59 -7
  883. package/dist/terrain.js +389 -0
  884. package/dist/terrain.js.map +1 -0
  885. package/dist/terrainSave.d.ts +6 -0
  886. package/dist/terrainSave.js +74 -0
  887. package/dist/terrainSave.js.map +1 -0
  888. package/dist/testing.d.ts +8 -7
  889. package/dist/testing.js +13 -739
  890. package/dist/testing.js.map +1 -1
  891. package/dist/tiles.d.ts +1 -1
  892. package/dist/tiles.js +43 -0
  893. package/dist/tiles.js.map +1 -0
  894. package/dist/timers.d.ts +29 -4
  895. package/dist/timers.js +242 -0
  896. package/dist/timers.js.map +1 -0
  897. package/dist/tomes.d.ts +4 -4
  898. package/dist/tomes.js +94 -0
  899. package/dist/tomes.js.map +1 -0
  900. package/dist/trade.js +103 -0
  901. package/dist/trade.js.map +1 -0
  902. package/dist/transport.d.ts +6 -1
  903. package/dist/transport.js +281 -0
  904. package/dist/transport.js.map +1 -0
  905. package/dist/tunables.d.ts +10 -3
  906. package/dist/tunables.js +56 -0
  907. package/dist/tunables.js.map +1 -0
  908. package/dist/unitResources.d.ts +67 -0
  909. package/dist/unitResources.js +266 -0
  910. package/dist/unitResources.js.map +1 -0
  911. package/dist/upkeep.d.ts +6 -1
  912. package/dist/upkeep.js +26 -0
  913. package/dist/upkeep.js.map +1 -0
  914. package/dist/veterancy.d.ts +8 -3
  915. package/dist/veterancy.js +131 -0
  916. package/dist/veterancy.js.map +1 -0
  917. package/dist/vision.d.ts +36 -0
  918. package/dist/vision.js +133 -0
  919. package/dist/vision.js.map +1 -0
  920. package/dist/walls.d.ts +1 -1
  921. package/dist/walls.js +278 -0
  922. package/dist/walls.js.map +1 -0
  923. package/dist/world.d.ts +606 -88
  924. package/dist/world.js +1263 -0
  925. package/dist/world.js.map +1 -0
  926. package/package.json +2 -2
  927. package/dist/ai.js.map +0 -1
  928. package/dist/attributes.d.ts +0 -66
  929. package/dist/brain-BvVdUhX8.js +0 -7659
  930. package/dist/brain-BvVdUhX8.js.map +0 -1
  931. package/dist/builds-C6LfgvEU.js +0 -460
  932. package/dist/builds-C6LfgvEU.js.map +0 -1
  933. package/dist/coreComponents-syuh2fPG.js +0 -5149
  934. package/dist/coreComponents-syuh2fPG.js.map +0 -1
  935. package/dist/debugCommands-CzjrSm66.js +0 -14739
  936. package/dist/debugCommands-CzjrSm66.js.map +0 -1
  937. package/dist/determinism-BCymQwiE.js +0 -518
  938. package/dist/determinism-BCymQwiE.js.map +0 -1
  939. package/dist/game-DiJEN-Ks.js +0 -5800
  940. package/dist/game-DiJEN-Ks.js.map +0 -1
  941. package/dist/index.js.map +0 -1
  942. package/dist/inspect-D9dWHmZ0.js.map +0 -1
  943. package/dist/local-Dkovq42k.js +0 -1379
  944. package/dist/local-Dkovq42k.js.map +0 -1
  945. package/dist/missionRules-C-bGxm0Q.js.map +0 -1
  946. package/dist/navigation-worker.js.map +0 -1
  947. package/dist/packs-g5thvmGn.js +0 -3199
  948. package/dist/packs-g5thvmGn.js.map +0 -1
  949. package/dist/profiles-B3NS9jwk.js.map +0 -1
  950. package/dist/server.js.map +0 -1
  951. package/dist/simulate-oXBiw1Ff.js.map +0 -1
package/dist/game.js ADDED
@@ -0,0 +1,834 @@
1
+ import { spawnStartingBase } from "./start.js";
2
+ import { noStats } from "./defs.js";
3
+ import { inventorySlots } from "./inventory.js";
4
+ import { eventsPart, snapshotField } from "./replication.js";
5
+ import { constructionSystem, toldBuilt, toldConstructionCancelled, toldConstructionStarted, toldWork } from "./systems/construction.js";
6
+ import { toldMessage } from "./messages.js";
7
+ import { productionQueue, toldUpgradeCancelled } from "./systems/productionQueue.js";
8
+ import { toldLevelUp, toldRevived, toldXp } from "./hero.js";
9
+ import { toldStrike } from "./abilities/land.js";
10
+ import { toldBuffOff, toldBuffOn } from "./abilities/buffs.js";
11
+ import { movementSystem } from "./systems/movement.js";
12
+ import { combatSystem } from "./systems/combat.js";
13
+ import { missilesPart, toldMana, toldMissileHit } from "./abilities/effects.js";
14
+ import { areaSystem } from "./areas.js";
15
+ import { toldRustle } from "./concealment.js";
16
+ import "./map/types.js";
17
+ import { fieldValues, mapCampData, mapFields, mapPlayerData, mapRegionData } from "./mapFields.js";
18
+ import { mapInfo } from "./names.js";
19
+ import { toldGust } from "./foliage.js";
20
+ import { hasGroundSpeeds, navigationSpeedOn } from "./groundSpeed.js";
21
+ import { overSettings, resolveSettings } from "./rules.js";
22
+ import { timerSystem } from "./timers.js";
23
+ import { sequenceSystem } from "./sequences.js";
24
+ import { regionCinematic, toldCinematic, toldCinematicCue } from "./cinematics.js";
25
+ import { toldCast, toldCastCancelled, toldChannelEnded, toldChannelStarted, toldWindup } from "./abilities/castTold.js";
26
+ import { toldCells, toldCellsSeen } from "./cellLayers.js";
27
+ import { cameraPart, toldCamera } from "./cameraOrders.js";
28
+ import { coreFormations } from "./formation.js";
29
+ import { itemTier, itemsPart, toldPicked } from "./items.js";
30
+ import { castOrder } from "./orders/cast.js";
31
+ import { gathering, harvestOrder, returnOrder } from "./orders/harvest.js";
32
+ import { checkRaces, raceHooks, raceResources } from "./races.js";
33
+ import { toldMorphed } from "./tech.js";
34
+ import { productionSystem, toldResearched, toldTrained, toldUpgradeStarted } from "./systems/production.js";
35
+ import { buildOrder, constructOrder, repairOrder } from "./orders/build.js";
36
+ import { boardOrder, cargo, loadOrder, transportSank, transportSystem, unloadOrder } from "./transport.js";
37
+ import { toldChat, toldPing } from "./talk.js";
38
+ import { lastTeamStanding, outcomePart } from "./systems/victory.js";
39
+ import { orderSystem } from "./systems/orders.js";
40
+ import { coreCommands, toldCommand } from "./commands.js";
41
+ import { toldLine, toldLineEnded } from "./dialog.js";
42
+ import { toldFx, toldFxStopped } from "./effects.js";
43
+ import { corpseSystem, corpsesPart, summonEffects } from "./summons.js";
44
+ import { formSystem } from "./forms.js";
45
+ import { coreHooks, toldBounty } from "./features.js";
46
+ import { dispelEffects } from "./abilities/dispel.js";
47
+ import { coreEffects } from "./abilities/effects/core.js";
48
+ import { layData, toldRedefined } from "./gameData.js";
49
+ import { fogSystem, revealsPart } from "./systems/fog.js";
50
+ import { toldCrit, toldDamage, toldDeath, toldHeal } from "./life.js";
51
+ import "./tiles.js";
52
+ import { toldEnvironment } from "./map/look.js";
53
+ import { toldObjective } from "./objectives.js";
54
+ import { MissingGround, cloneTerrain, groundOf, startedOn, startingTerrain } from "./ground.js";
55
+ import { drawFromGroup, dropFromTable } from "./randomGroups.js";
56
+ import { giveMapOrders, spawnMapObject } from "./mapObjects.js";
57
+ import { debugCommands, debugPart, redefineCommand, toldGround } from "./debugCommands.js";
58
+ import { hourPart } from "./clock.js";
59
+ import { projectilesPart, toldAttack, toldAttackCancelled, toldImpact, toldMiss, toldShot } from "./systems/combatTold.js";
60
+ import { areasPart } from "./abilities/screen.js";
61
+ import { resolveScore, scoreLinePart, scorePart, scoreSystem } from "./score.js";
62
+ import { supplySystem, toldChop, toldResource } from "./systems/economy.js";
63
+ import { foliageDebugCommands } from "./foliageDebug.js";
64
+ import { gateStates, setUpGates } from "./gates.js";
65
+ import { tuneCommand } from "./tunables.js";
66
+ import { spawnCamp } from "./camps.js";
67
+ import { allOrFreed } from "./navigation/builds.js";
68
+ import { RecastNavigation } from "./navigation/recast.js";
69
+ import { SidePaths, sideKnowledgeSystem } from "./navigation/sidePaths.js";
70
+ import { SizedNavigation } from "./navigation/sized.js";
71
+ import { attackGroundOrder, attackMoveOrder, attackOrder, attackPathOrder, followOrder, followPathOrder, holdOrder, moveOrder, patrolOrder, patrolPathOrder } from "./orders/basic.js";
72
+ import { dropItemOrder, pickUpOrder } from "./orders/items.js";
73
+ import { Registry } from "./registry.js";
74
+ import { abilitySystem } from "./systems/abilities.js";
75
+ import { lifeSystem } from "./systems/life.js";
76
+ import { SaveError, restoreWorld, savedPlayers, updateSave } from "./save.js";
77
+ import { World } from "./world.js";
78
+ import { coreComponents } from "./coreComponents.js";
79
+ //#region src/game.ts
80
+ var coreOrders = [
81
+ moveOrder,
82
+ holdOrder,
83
+ attackOrder,
84
+ attackMoveOrder,
85
+ followPathOrder,
86
+ attackPathOrder,
87
+ patrolPathOrder,
88
+ attackGroundOrder,
89
+ patrolOrder,
90
+ followOrder,
91
+ harvestOrder,
92
+ returnOrder,
93
+ buildOrder,
94
+ constructOrder,
95
+ repairOrder,
96
+ castOrder,
97
+ pickUpOrder,
98
+ dropItemOrder,
99
+ boardOrder,
100
+ loadOrder,
101
+ unloadOrder
102
+ ];
103
+ /**
104
+ * The systems the engine brings along, by phase: decisions first, then movement, then everything that reacts to where
105
+ * units ended up. Within a phase, in this order. A module can do without any of them by name (`Rules.withoutSystems`),
106
+ * or put its own in place of one by giving a system the same name
107
+ *
108
+ * @beta
109
+ */
110
+ var coreSystems = [
111
+ timerSystem,
112
+ abilitySystem,
113
+ orderSystem,
114
+ movementSystem,
115
+ combatSystem,
116
+ constructionSystem,
117
+ productionSystem,
118
+ supplySystem,
119
+ areaSystem,
120
+ formSystem,
121
+ lifeSystem,
122
+ fogSystem,
123
+ sequenceSystem,
124
+ transportSystem,
125
+ corpseSystem
126
+ ];
127
+ /**
128
+ * How the engine's events are told to the players, each written beside what emits it, in the order a seat hears them:
129
+ * two told of one event (a hit and its critical number) are told in this order
130
+ */
131
+ var coreReplications = [
132
+ toldDeath,
133
+ toldCells,
134
+ toldCellsSeen,
135
+ toldRedefined,
136
+ toldEnvironment,
137
+ toldGround,
138
+ toldCommand,
139
+ toldAttack,
140
+ toldAttackCancelled,
141
+ toldDamage,
142
+ toldHeal,
143
+ toldBuffOn,
144
+ toldBuffOff,
145
+ toldTrained,
146
+ toldConstructionStarted,
147
+ toldBuilt,
148
+ toldConstructionCancelled,
149
+ toldUpgradeStarted,
150
+ toldUpgradeCancelled,
151
+ toldMorphed,
152
+ toldRevived,
153
+ toldPicked,
154
+ toldResearched,
155
+ toldShot,
156
+ toldMissileHit,
157
+ toldWindup,
158
+ toldCastCancelled,
159
+ toldChannelStarted,
160
+ toldChannelEnded,
161
+ toldCast,
162
+ toldStrike,
163
+ toldCrit,
164
+ toldMiss,
165
+ toldImpact,
166
+ toldWork,
167
+ toldChop,
168
+ toldLevelUp,
169
+ toldXp,
170
+ toldMana,
171
+ toldResource,
172
+ toldBounty,
173
+ toldMessage,
174
+ toldObjective,
175
+ toldLine,
176
+ toldLineEnded,
177
+ toldCinematic,
178
+ toldCinematicCue,
179
+ toldCamera,
180
+ toldFx,
181
+ toldFxStopped,
182
+ toldRustle,
183
+ toldGust,
184
+ toldPing,
185
+ toldChat
186
+ ];
187
+ /** What the game tells each player about itself, with its packs' beside it (`Snapshot.report`, `Rules.report`) */
188
+ var reportPart = snapshotField("report", ({ world, player }) => world.registry.report?.(world, player));
189
+ /** The engine's parts of a player's snapshot, each captured by its feature, in their order (`SnapshotField`) */
190
+ var coreSnapshotParts = [
191
+ debugPart,
192
+ hourPart,
193
+ outcomePart,
194
+ projectilesPart,
195
+ missilesPart,
196
+ itemsPart,
197
+ revealsPart,
198
+ areasPart,
199
+ cameraPart,
200
+ eventsPart,
201
+ reportPart,
202
+ scorePart,
203
+ scoreLinePart,
204
+ corpsesPart
205
+ ];
206
+ /**
207
+ * The engine's parts that give an entity something as it is made, or call it off as it leaves its owner: a worker's
208
+ * load, a building's queue, the slots of what carries, a hold
209
+ */
210
+ var coreParts = [
211
+ gathering,
212
+ productionQueue,
213
+ inventorySlots,
214
+ cargo
215
+ ];
216
+ /** Each game's assembly, made once */
217
+ var assemblies = /* @__PURE__ */ new WeakMap();
218
+ /**
219
+ * A game with its packs put together (`AssembledGame`): what the registry, the systems, the hooks, the listeners and the
220
+ * timers of a world of it are made of. Refuses a pack without one it says it goes with (`GamePack.requires`)
221
+ *
222
+ * @beta
223
+ */
224
+ function assembleGame(game) {
225
+ const known = assemblies.get(game);
226
+ if (known) return known;
227
+ const packs = game.packs ?? [];
228
+ for (const pack of packs) for (const needed of pack.requires ?? []) if (!packs.some((each) => each.id === needed)) throw new Error(`The pack "${pack.id}" goes with the pack "${needed}", which "${game.id}" does not have`);
229
+ const from = (pick) => packs.flatMap((pack) => pick(pack) ?? []);
230
+ const withoutCommands = new Set(game.withoutCommands ?? []);
231
+ const withoutOrders = new Set(game.withoutOrders ?? []);
232
+ const withoutHooks = new Set(game.withoutHooks ?? []);
233
+ let settings = game.settings ?? {};
234
+ for (const pack of packs) {
235
+ if (!pack.settings) continue;
236
+ const over = pack.settings(resolveSettings(settings));
237
+ settings = overSettings(settings, over);
238
+ }
239
+ const reports = [game.report, ...packs.map((pack) => pack.report?.bind(pack))].filter((each) => each !== void 0);
240
+ const checks = [game.editor?.check, ...packs.map((pack) => pack.check?.bind(pack))].filter((each) => each !== void 0);
241
+ const victories = packs.filter((pack) => pack.victory !== void 0);
242
+ const assembly = {
243
+ rules: game,
244
+ commands: [...from((pack) => pack.commands).filter((command) => !withoutCommands.has(command.type)), ...game.commands ?? []],
245
+ orders: [...from((pack) => pack.orders).filter((order) => !withoutOrders.has(order.type)), ...game.orders ?? []],
246
+ packSystems: from((pack) => pack.systems),
247
+ hooks: [...from((pack) => pack.hooks).filter((hook) => !withoutHooks.has(hook.id)), ...game.hooks ?? []],
248
+ listeners: [...from((pack) => pack.listeners), ...game.listeners ?? []],
249
+ effects: [...from((pack) => pack.effects), ...game.effects ?? []],
250
+ timers: [...from((pack) => pack.timers), ...game.timers ?? []],
251
+ components: [...from((pack) => pack.components), ...game.components ?? []],
252
+ events: [...from((pack) => pack.events), ...game.events ?? []],
253
+ statFields: from((pack) => pack.statFields),
254
+ stats: [...from((pack) => pack.stats), ...game.stats ?? []],
255
+ replications: from((pack) => pack.replications),
256
+ snapshotFields: from((pack) => pack.snapshotFields),
257
+ settings,
258
+ report: reports.length ? (world, player) => Object.assign({}, ...reports.map((report) => report(world, player))) : null,
259
+ victory: game.victory !== void 0 ? game.victory : victories.at(-1)?.victory,
260
+ check: checks.length ? (map, registry) => checks.flatMap((check) => check(map, registry)) : void 0
261
+ };
262
+ assemblies.set(game, assembly);
263
+ return assembly;
264
+ }
265
+ /**
266
+ * Everything a game module defines, looked up by id: with the engine's own components, and those an app keeps in its
267
+ * worlds (`own`: `CreateWorldOptions.components`)
268
+ *
269
+ * @public
270
+ */
271
+ function createRegistry(game, own = []) {
272
+ const registry = new Registry();
273
+ registry.defineCore(coreComponents());
274
+ const assembly = assembleGame(game);
275
+ registry.assembly = assembly;
276
+ const withoutOrders = new Set(game.withoutOrders ?? []);
277
+ for (const order of coreOrders) if (!withoutOrders.has(order.type)) registry.orders.define(order);
278
+ for (const order of assembly.orders) registry.orders.define(order);
279
+ for (const formation of coreFormations) registry.formations.define(formation);
280
+ for (const formation of game.formations ?? []) registry.formations.define(formation);
281
+ const withoutCommands = new Set(game.withoutCommands ?? []);
282
+ for (const command of [
283
+ ...coreCommands.filter((command) => !withoutCommands.has(command.type)),
284
+ ...debugCommands,
285
+ ...foliageDebugCommands,
286
+ tuneCommand,
287
+ redefineCommand
288
+ ]) registry.commands.define(command);
289
+ for (const command of assembly.commands) registry.commands.define(command);
290
+ for (const kind of [
291
+ ...coreEffects,
292
+ ...summonEffects,
293
+ ...dispelEffects,
294
+ ...assembly.effects
295
+ ]) registry.effects.define(kind);
296
+ for (const targeting of game.targetings ?? []) registry.targetings.define(targeting);
297
+ for (const buff of game.buffs ?? []) registry.buffs.define(buff);
298
+ for (const ability of game.abilities ?? []) registry.abilities.define(ability);
299
+ for (const item of game.items ?? []) registry.items.define(itemTier(item) === item.tier ? item : {
300
+ ...item,
301
+ tier: itemTier(item)
302
+ });
303
+ for (const tag of game.tags ?? []) registry.tags.define(tag);
304
+ for (const prefab of game.prefabs ?? []) registry.prefabs.define(prefab);
305
+ registry.upkeep = [...game.upkeep ?? []].sort((a, b) => a.above - b.above);
306
+ registry.game = game.id;
307
+ registry.module = game;
308
+ registry.day = game.day ?? null;
309
+ registry.settings = resolveSettings(assembly.settings);
310
+ registry.score = resolveScore(registry.settings.score, game);
311
+ registry.report = assembly.report;
312
+ registry.resources = [...game.resources ?? []];
313
+ registry.currency = game.currency ?? game.resources?.[0]?.id ?? null;
314
+ registry.tiles = checkTiles(game.tiles ?? []);
315
+ registry.cellLayers = game.cellLayers ?? [];
316
+ registry.tunables = [...game.tunables ?? []];
317
+ registry.defineParts([...assembly.components, ...own], assembly.events);
318
+ const parts = [...coreParts, ...assembly.components];
319
+ registry.spawning = parts.filter((part) => part.onSpawn);
320
+ registry.leaving = parts.filter((part) => part.onLeave);
321
+ registry.passing = parts.filter((part) => part.passable);
322
+ defineStats(registry, assembly.stats);
323
+ registry.statFields = [...assembly.statFields];
324
+ registry.replications = [...coreReplications, ...assembly.replications];
325
+ registry.snapshotFields = [...coreSnapshotParts, ...assembly.snapshotFields];
326
+ for (const race of game.races ?? []) registry.races.define(race);
327
+ for (const file of game.files ?? []) registry.setFile(file, file.read(file.data));
328
+ for (const unit of game.units) registry.units.define(unit);
329
+ for (const upgrade of game.upgrades ?? []) registry.upgrades.define(upgrade);
330
+ checkCosts(game);
331
+ checkRaces(game);
332
+ checkStats(game, new Set(registry.statKeys));
333
+ checkSaves(game);
334
+ return registry;
335
+ }
336
+ /**
337
+ * Throws when what a game says of its saves cannot be: a version that is no whole number from 1, or a step from a
338
+ * version the game is not past yet, which would never run
339
+ */
340
+ function checkSaves(game) {
341
+ const { version = 1, migrate } = game.saves ?? {};
342
+ if (!Number.isInteger(version) || version < 1) throw new Error(`The version of the saves of "${game.id}" is a whole number from 1, not ${String(version)}`);
343
+ if (typeof migrate !== "object") return;
344
+ for (const from of Object.keys(migrate).map(Number)) if (!Number.isInteger(from) || from < 1 || from >= version) throw new Error(`"${game.id}" has a step for saves of version ${from}, and its saves are of version ${version}: the steps are from 1 to ${version - 1}, each to the version after it`);
345
+ }
346
+ /** The game's tiles, as they are: throws for one that is there twice, or for too many to keep in a byte */
347
+ function checkTiles(tiles) {
348
+ if (tiles.length > 255) throw new Error(`A game has at most 255 tiles, not ${tiles.length}`);
349
+ const seen = /* @__PURE__ */ new Set();
350
+ for (const tile of tiles) {
351
+ if (seen.has(tile.id)) throw new Error(`The tile "${tile.id}" is there twice`);
352
+ seen.add(tile.id);
353
+ }
354
+ return [...tiles];
355
+ }
356
+ /** The game's own stats next to the engine's, and what every unit starts with of them */
357
+ function defineStats(registry, stats) {
358
+ const defaults = { ...noStats() };
359
+ for (const stat of stats) {
360
+ if (stat.id in defaults) throw new Error(`The stat "${stat.id}" is there twice, or is one of the engine's`);
361
+ defaults[stat.id] = stat.default ?? 0;
362
+ }
363
+ registry.stats = [...stats];
364
+ registry.statKeys = Object.keys(defaults);
365
+ registry.statDefaults = Object.freeze(defaults);
366
+ }
367
+ /**
368
+ * Throws when something changes or scales with a stat the game does not have: most likely a typo, which would
369
+ * otherwise do nothing, or turn a stat into NaN. Stats are any text to the type checker, so this is where it is caught
370
+ */
371
+ function checkStats(game, known) {
372
+ const check = (what, keys, also = []) => {
373
+ for (const key in keys) if (!known.has(key) && !also.includes(key)) throw new Error(`${what} has the stat "${key}", which the game does not have`);
374
+ };
375
+ const change = (what, change) => {
376
+ check(what, change?.stats);
377
+ check(what, change?.percent);
378
+ };
379
+ const scaling = (what, within) => {
380
+ if (typeof within !== "object" || within === null) return;
381
+ for (const [key, value] of Object.entries(within)) if (key === "scaling" || key === "shieldScaling") check(what, value, ["level", "bonusAttackDamage"]);
382
+ else scaling(what, value);
383
+ };
384
+ for (const unit of game.units) {
385
+ check(`Unit type "${unit.id}"`, unit.stats);
386
+ change(`The growth of "${unit.id}"`, unit.hero?.growth);
387
+ for (const [i, attack] of (unit.attacks ?? []).entries()) for (const stat of Object.values(attack.stats ?? {})) if (!known.has(stat)) throw new Error(`Attack ${i + 1} of "${unit.id}" reads the stat "${stat}", which the game does not have`);
388
+ }
389
+ for (const buff of game.buffs ?? []) {
390
+ change(`Buff "${buff.id}"`, buff);
391
+ scaling(`Buff "${buff.id}"`, buff);
392
+ }
393
+ for (const item of game.items ?? []) change(`Item "${item.id}"`, item.bonus);
394
+ for (const upgrade of game.upgrades ?? []) for (const effect of upgrade.effects) change(`Upgrade "${upgrade.id}"`, effect);
395
+ for (const ability of game.abilities ?? []) scaling(`Ability "${ability.id}"`, ability);
396
+ }
397
+ /**
398
+ * Throws when something costs a resource the game does not have: a typo, or something that is not a resource at
399
+ * all, like supply. Either would otherwise make it something nobody can ever afford, without a word
400
+ */
401
+ function checkCosts(game) {
402
+ const known = new Set((game.resources ?? []).map((resource) => resource.id));
403
+ if (game.currency !== void 0 && !known.has(game.currency)) throw new Error(`The currency "${game.currency}" is not a resource of the game`);
404
+ const check = (what, cost) => {
405
+ for (const kind in cost) if (!known.has(kind)) throw new Error(`${what} costs "${kind}", which is not a resource of the game`);
406
+ };
407
+ for (const unit of game.units) check(`Unit type "${unit.id}"`, unit.cost);
408
+ for (const upgrade of game.upgrades ?? []) check(`Upgrade "${upgrade.id}"`, upgrade.cost);
409
+ for (const item of game.items ?? []) check(`Item "${item.id}"`, item.cost);
410
+ }
411
+ /** Where the groups of ground units' radii end (the last group is over the last edge) */
412
+ var BUCKET_EDGES = [.5, .75];
413
+ /**
414
+ * The sizes the ground units of a game are cut for (`radii: 'auto'`): their radii in groups (up to 0.5, up to 0.75,
415
+ * over), each cut for its largest radius (the first for 0.5 at least), a group only where a unit type falls in it. Each
416
+ * with the radius of the biggest unit it takes, `upTo`. What flies or sails has navigation of its own
417
+ */
418
+ function autoNavigationSizes(registry) {
419
+ const largest = new Array(BUCKET_EDGES.length + 1).fill(0);
420
+ for (const def of registry.units.all()) {
421
+ if (def.kind !== "unit" || def.flying || def.naval) continue;
422
+ const bucket = BUCKET_EDGES.findIndex((edge) => def.radius <= edge);
423
+ const i = bucket < 0 ? BUCKET_EDGES.length : bucket;
424
+ largest[i] = Math.max(largest[i], def.radius);
425
+ }
426
+ const sizes = [];
427
+ largest.forEach((radius, i) => {
428
+ if (radius > 0) sizes.push({
429
+ radius: i === 0 ? Math.max(radius, .5) : radius,
430
+ upTo: i < BUCKET_EDGES.length ? BUCKET_EDGES[i] : Infinity
431
+ });
432
+ });
433
+ return sizes;
434
+ }
435
+ /**
436
+ * The ground's navigation: cut for a unit of ordinary size (0.5), for each size the game names (`radii`), or for each
437
+ * group of sizes its unit types are in (`autoSizes`), each unit on the one for its size. Big ones on one cut for 0.5
438
+ * fit through the same gaps and overlap walls a little, which is better than everyone keeping the distance from a wall
439
+ * that the biggest unit in the game needs
440
+ */
441
+ async function groundNavigationOf(terrain, options = {}, autoSizes) {
442
+ const named = [...new Set(options.radii ?? [])].sort((a, b) => a - b);
443
+ const wanted = autoSizes ?? named.map((radius) => ({ radius }));
444
+ if (wanted.length < 2 || !terrain.buildMesh(true).indices.length) return RecastNavigation.create(terrain, {
445
+ agentRadius: wanted[0]?.radius ?? .5,
446
+ ...options,
447
+ radii: void 0
448
+ });
449
+ const navigations = await allOrFreed(wanted.map(({ radius }) => () => RecastNavigation.create(terrain, {
450
+ ...options,
451
+ agentRadius: radius,
452
+ radii: void 0
453
+ })));
454
+ return new SizedNavigation(wanted.map(({ radius, upTo }, i) => ({
455
+ radius,
456
+ upTo,
457
+ navigation: navigations[i]
458
+ })));
459
+ }
460
+ /**
461
+ * The navigations the sides plan their routes on (`Rules.paths: 'seen'`): one for each team that plays, cut for
462
+ * the game's smallest unit. None where routes know everything
463
+ */
464
+ async function sidePathsOf(game, terrain, players, options) {
465
+ if (game.paths !== "seen") return void 0;
466
+ const teams = [...new Set(players.filter((player) => !player.neutral && !player.creeps).map((player) => player.team))].sort((a, b) => a - b);
467
+ const radius = Math.min(...options.radii?.length ? options.radii : [options.agentRadius ?? .5]);
468
+ return SidePaths.create(terrain, teams, {
469
+ ...options,
470
+ agentRadius: radius
471
+ });
472
+ }
473
+ /** Where boats go, on a map with deep water: a navigation of the water at its surface. Nothing on one without */
474
+ async function waterNavigationOf(terrain, options) {
475
+ if (!terrain.hasDeepWater) return void 0;
476
+ return RecastNavigation.create(terrain, {
477
+ agentRadius: .5,
478
+ ...options,
479
+ ...options?.radii?.length && { agentRadius: Math.min(...options.radii) },
480
+ surface: "water"
481
+ });
482
+ }
483
+ /**
484
+ * Makes a world from terrain, rules and players; resolves once it is ready to step
485
+ *
486
+ * @public
487
+ */
488
+ async function createWorld(options) {
489
+ const { terrain, rules: game, players, seed } = options;
490
+ const world = await makeWorld(game, createRegistry(game, options.components), terrain, {
491
+ players: players.map((player) => ({
492
+ ...player,
493
+ resources: startingResources(game, player)
494
+ })),
495
+ navigation: options.navigation,
496
+ randomRaces: options.randomRaces,
497
+ seed,
498
+ tickRate: options.tickRate,
499
+ log: options.log,
500
+ onError: options.onError,
501
+ checks: options.checks
502
+ });
503
+ raceResources(world, players);
504
+ world.sidePaths?.attach(world);
505
+ return world;
506
+ }
507
+ /**
508
+ * A world of a game on a terrain, its navigations built (freed again where what follows fails), its parts the game's put
509
+ * together with its packs (`assembleGame`): what a world made new and a world loaded from a save have in common
510
+ */
511
+ async function makeWorld(game, registry, terrain, options) {
512
+ const { radii, ...given } = {
513
+ ...game.navigation,
514
+ ...options.navigation
515
+ };
516
+ const navigationOptions = {
517
+ ...hasGroundSpeeds(registry) && { speedAt: (x, z) => navigationSpeedOn(registry, terrain, x, z) },
518
+ ...given,
519
+ ...Array.isArray(radii) && { radii }
520
+ };
521
+ const sizes = (radii === void 0 || radii === "auto") && given.agentRadius === void 0 ? autoNavigationSizes(registry) : void 0;
522
+ const [navigation, waterNavigation, sidePaths] = await allOrFreed([
523
+ () => groundNavigationOf(terrain, navigationOptions, sizes),
524
+ () => waterNavigationOf(terrain, navigationOptions),
525
+ () => sidePathsOf(game, terrain, options.players, navigationOptions)
526
+ ]);
527
+ const assembly = registry.assembly;
528
+ return freedOnError(navigation, () => freedOnError(waterNavigation, () => new World({
529
+ terrain,
530
+ navigation,
531
+ waterNavigation,
532
+ sidePaths,
533
+ registry,
534
+ players: options.players,
535
+ randomRaces: options.randomRaces,
536
+ seed: options.seed,
537
+ tickRate: options.tickRate,
538
+ log: options.log,
539
+ logLevel: game.log?.level,
540
+ onError: game.onError ?? options.onError,
541
+ checks: options.checks,
542
+ systems: (world) => systemsOf(world, assembly),
543
+ hooks: hooksOf(assembly),
544
+ listeners: listenersOf(assembly),
545
+ areas: game.areas,
546
+ timers: timersOf(assembly),
547
+ sequences: game.sequences
548
+ })));
549
+ }
550
+ /**
551
+ * Runs what makes something of a navigation already made: the navigation is freed when it fails (WebAssembly memory,
552
+ * which nothing else would free), and the error goes on
553
+ */
554
+ async function freedOnError(navigation, make) {
555
+ try {
556
+ return await make();
557
+ } catch (error) {
558
+ navigation?.dispose();
559
+ throw error;
560
+ }
561
+ }
562
+ /** Runs what is done to a world just made: the world is disposed when it fails, and the error goes on */
563
+ async function disposedOnError(world, run) {
564
+ try {
565
+ await run();
566
+ return world;
567
+ } catch (error) {
568
+ world.dispose();
569
+ throw error;
570
+ }
571
+ }
572
+ /**
573
+ * What a player starts with: what they were given, or else what the game starts everyone with (nothing, for the
574
+ * neutral players). Every resource of the game is in it, at 0 at least
575
+ */
576
+ function startingResources(game, player) {
577
+ const purse = {};
578
+ for (const resource of game.resources ?? []) purse[resource.id] = player.resources ? player.resources[resource.id] ?? 0 : player.neutral ? 0 : resource.start ?? 0;
579
+ return {
580
+ ...player.resources,
581
+ ...purse
582
+ };
583
+ }
584
+ /**
585
+ * A world from a save (see `saveWorld`), carrying on where it was. A save made before, by an older engine or by the
586
+ * game before a patch, is brought up to date first (`updateSave`), or refused with a `SaveError` that says why.
587
+ * Navigation is built again; units come back with the speed and destination they had, but the way they find around
588
+ * each other is worked out anew, so the game from there on is close to, and not quite, the one that was saved
589
+ *
590
+ * @public
591
+ */
592
+ async function loadWorld(saved, options) {
593
+ const kept = (saved.state?.[mapInfo.id])?.definitions;
594
+ const definitions = options.map ? options.map.definitions : kept;
595
+ const game = definitions ? layData(options.rules, definitions) : options.rules;
596
+ const registry = createRegistry(game, options.components);
597
+ const save = updateSave(saved, registry, { anyVersion: options.anyVersion });
598
+ let ground;
599
+ try {
600
+ ground = groundOf(save.terrain, options.maps ?? game.maps, game);
601
+ } catch (error) {
602
+ if (error instanceof MissingGround) throw new SaveError(`Save: ${error.message}`, "ground");
603
+ throw error;
604
+ }
605
+ const { terrain } = ground;
606
+ const world = await makeWorld(game, registry, terrain, {
607
+ players: savedPlayers(save),
608
+ navigation: options.navigation,
609
+ tickRate: save.tickRate,
610
+ log: options.log,
611
+ onError: options.onError,
612
+ checks: options.checks
613
+ });
614
+ return disposedOnError(world, () => {
615
+ world.ground = ground.base;
616
+ restoreWorld(world, save);
617
+ if (save.state && gateStates.id in save.state) setUpGates(world);
618
+ world.computers.restore();
619
+ game.afterLoad?.(world);
620
+ });
621
+ }
622
+ /** The systems of a world of the game: the core ones and its packs', but those it leaves out, then its own, then who wins */
623
+ function systemsOf(world, assembly) {
624
+ const { rules: game } = assembly;
625
+ const make = (def) => typeof def === "function" ? def(world) : def;
626
+ const without = new Set(game.withoutSystems ?? []);
627
+ const systems = [...coreSystems, ...assembly.packSystems.map(make)].filter((system) => !without.has(system.name));
628
+ for (const def of game.systems ?? []) {
629
+ const system = make(def);
630
+ const index = systems.findIndex((core) => core.name === system.name);
631
+ if (index < 0) systems.push(system);
632
+ else systems[index] = system.phase ? system : {
633
+ ...system,
634
+ phase: systems[index].phase,
635
+ update: system.update?.bind(system),
636
+ each: system.each?.bind(system)
637
+ };
638
+ }
639
+ if (game.paths === "seen") systems.splice(systems.findIndex((system) => system.name === "fog") + 1, 0, sideKnowledgeSystem);
640
+ if (world.registry.score) systems.push(scoreSystem(world));
641
+ if (assembly.victory !== null) systems.push(make(assembly.victory ?? lastTeamStanding));
642
+ return systems;
643
+ }
644
+ function hooksOf(assembly) {
645
+ const without = new Set(assembly.rules.withoutHooks ?? []);
646
+ return [
647
+ ...coreHooks.filter((hook) => !without.has(hook.id)),
648
+ ...assembly.hooks,
649
+ ...raceHooks(assembly.rules)
650
+ ];
651
+ }
652
+ /** How the world reacts to events: the engine's, the packs', the game's */
653
+ function listenersOf(assembly) {
654
+ return [
655
+ dropFromTable,
656
+ transportSank,
657
+ regionCinematic,
658
+ ...assembly.listeners
659
+ ];
660
+ }
661
+ /** What can be set to go off later: the packs' and the game's */
662
+ function timersOf(assembly) {
663
+ return assembly.timers.length ? [...assembly.timers] : void 0;
664
+ }
665
+ /**
666
+ * A world as a map lays it out: its ground, the players it has room for, and everything placed on it.
667
+ * Players with a start location that the map places nothing for get what the game starts everyone with.
668
+ * Throws for a map made for another game (`GameMap.game`).
669
+ *
670
+ * @public
671
+ */
672
+ async function createWorldFromMap(options) {
673
+ const { map } = options;
674
+ const game = map.definitions ? layData(options.rules, map.definitions) : options.rules;
675
+ if (map.game !== void 0 && map.game !== game.id) throw new Error(`"${map.name}" is a map for the game "${map.game}", not for "${game.id}"`);
676
+ const most = maxPlayersOf(game);
677
+ const seated = map.players.filter((player) => player.id !== 90 && player.id !== 0).length;
678
+ if (seated > most) throw new Error(`"${map.name}" has ${seated} players, and ${game.name} allows ${most} (\`Rules.maxPlayers\`)`);
679
+ const creeps = options.creeps ?? (map.camps.length > 0 || map.objects.some((object) => object.owner === 90));
680
+ const players = [
681
+ {
682
+ id: 0,
683
+ name: "Neutral",
684
+ team: 0,
685
+ color: [
686
+ .8,
687
+ .75,
688
+ .4
689
+ ],
690
+ neutral: true
691
+ },
692
+ ...map.players.map((player) => ({
693
+ id: player.id,
694
+ name: player.name,
695
+ team: options.teams?.[player.id] ?? player.team,
696
+ color: options.colors?.[player.id] ?? player.color,
697
+ ...player.resources && { resources: { ...player.resources } },
698
+ ...(options.races?.[player.id] ?? player.race) !== void 0 && { race: options.races?.[player.id] ?? player.race }
699
+ })),
700
+ ...creeps ? [{
701
+ id: 90,
702
+ name: "Creeps",
703
+ team: 1e3,
704
+ color: [
705
+ .42,
706
+ .36,
707
+ .3
708
+ ],
709
+ creeps: true
710
+ }] : []
711
+ ];
712
+ const terrain = startingTerrain(map, game);
713
+ const base = startedOn(map.name, cloneTerrain(terrain));
714
+ const world = await createWorld({
715
+ terrain,
716
+ rules: game,
717
+ players,
718
+ ...map.races?.length && { randomRaces: map.races },
719
+ seed: options.seed,
720
+ navigation: options.navigation,
721
+ ...options.components && { components: options.components },
722
+ log: options.log,
723
+ onError: options.onError,
724
+ checks: options.checks
725
+ });
726
+ world.ground = base;
727
+ return disposedOnError(world, () => {
728
+ world.setState(mapInfo, {
729
+ name: map.name,
730
+ data: fieldValues(mapFields(world.registry), structuredClone(map.data), map),
731
+ points: structuredClone(map.points),
732
+ paths: structuredClone(map.paths),
733
+ ...map.environment && { environment: structuredClone(map.environment) },
734
+ ...map.doodads.length > 0 && { doodads: structuredClone(map.doodads) },
735
+ ...map.regions.length > 0 && { regions: structuredClone(map.regions) },
736
+ ...map.cameras.length > 0 && { cameras: structuredClone(map.cameras) },
737
+ players: map.players.map((player) => ({
738
+ id: player.id,
739
+ ...player.controller && { controller: player.controller },
740
+ data: mapPlayerData(world.registry, player, map)
741
+ })),
742
+ ...map.forces?.length && { forces: structuredClone(map.forces) },
743
+ ...map.itemTables?.length && { itemTables: structuredClone(map.itemTables) },
744
+ ...map.definitions && { definitions: structuredClone(map.definitions) }
745
+ });
746
+ setUpGates(world);
747
+ for (const force of map.forces ?? []) {
748
+ if (!force.sharedControl) continue;
749
+ const members = map.players.filter((player) => player.team === force.team);
750
+ for (const one of members) for (const other of members) if (one !== other) world.sides.shareControl(one.id, other.id);
751
+ }
752
+ world.fog.exploreFromStart(map.explored ?? world.settings.fog?.startExplored ?? false);
753
+ if (map.day?.start !== void 0) world.clock.setHour(map.day.start);
754
+ if (map.day?.still) world.clock.stop();
755
+ for (const region of map.regions) {
756
+ if (world.areas.has(region.name)) throw new Error(`The region "${region.name}" of "${map.name}" has the name of an area of the game`);
757
+ const area = {
758
+ id: region.name,
759
+ shape: { ...region.shape }
760
+ };
761
+ world.areas.add(area);
762
+ if (world.hooks.has("mapRegion")) world.hooks.run("mapRegion", {
763
+ area,
764
+ region,
765
+ data: mapRegionData(world.registry, region, map)
766
+ });
767
+ }
768
+ const known = new Set(players.map((player) => player.id));
769
+ const placed = /* @__PURE__ */ new Set();
770
+ const groups = new Map((map.randomGroups ?? []).map((group) => [group.name, group]));
771
+ const drawn = (type, random) => {
772
+ const group = random === void 0 ? void 0 : groups.get(random);
773
+ return (group && drawFromGroup(group, world.registry, world.rng)) ?? type;
774
+ };
775
+ const objects = map.objects.map((object) => object.random ? {
776
+ ...object,
777
+ type: drawn(object.type, object.random)
778
+ } : object).filter((object) => world.registry.units.has(object.type) && known.has(object.owner));
779
+ const rank = (type) => ({
780
+ resource: 0,
781
+ building: 1,
782
+ unit: 2
783
+ })[world.registry.unit(type).kind] ?? 1;
784
+ objects.sort((a, b) => rank(a.type) - rank(b.type));
785
+ let held = true;
786
+ world.nav.holdObstacles?.(true);
787
+ const letGo = () => {
788
+ if (held) world.nav.holdObstacles?.(false);
789
+ held = false;
790
+ };
791
+ /** Units of the map with orders of their own, given once everything stands (a path's ends, a guard's post) */
792
+ const ordered = [];
793
+ for (const object of objects) {
794
+ if (held && rank(object.type) === 2) letGo();
795
+ const entity = spawnMapObject(world, object, map);
796
+ if (object.orders?.length) ordered.push([entity, object.orders]);
797
+ placed.add(object.owner);
798
+ }
799
+ letGo();
800
+ for (const [entity, orders] of ordered) giveMapOrders(world, entity, orders);
801
+ for (const camp of map.camps) {
802
+ const units = camp.units.map((type) => type.startsWith("@") ? drawn("", type.slice(1)) : type).filter((type) => world.registry.units.has(type));
803
+ if (!units.length) continue;
804
+ const made = spawnCamp(world, 90, camp, units);
805
+ if (camp.name) made.name = camp.name;
806
+ if (camp.respawn !== void 0) made.respawn = camp.respawn;
807
+ if (world.hooks.has("mapCamp")) world.hooks.run("mapCamp", {
808
+ camp: made,
809
+ from: camp,
810
+ data: mapCampData(world.registry, camp, map)
811
+ });
812
+ }
813
+ const raceDef = (player) => {
814
+ const race = world.players.get(player)?.race;
815
+ return race === void 0 ? void 0 : world.registry.race(race);
816
+ };
817
+ for (const player of map.players) if (player.start && !placed.has(player.id)) spawnStartingBase(world, raceDef(player.id)?.startingBase ?? game.startingBase, player.id, player.start);
818
+ for (const player of map.players) {
819
+ const race = raceDef(player.id);
820
+ if (race && race.inherits?.onStart !== false) race.onStart?.(world, player.id);
821
+ }
822
+ if (world.hooks.has("mapStart")) world.hooks.run("mapStart", { map });
823
+ });
824
+ }
825
+ /**
826
+ * Players a map of the game may have (`Rules.maxPlayers`): 8 when it says nothing, never more than the fog keeps apart
827
+ *
828
+ * @beta
829
+ */
830
+ var maxPlayersOf = (game) => Math.max(1, Math.min(Math.floor(game.maxPlayers ?? 8), 32));
831
+ //#endregion
832
+ export { assembleGame, autoNavigationSizes, coreSystems, createRegistry, createWorld, createWorldFromMap, loadWorld, maxPlayersOf };
833
+
834
+ //# sourceMappingURL=game.js.map