@v12-engine/engine 0.1.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (951) hide show
  1. package/dist/abilities/amounts.d.ts +28 -0
  2. package/dist/abilities/amounts.js +74 -0
  3. package/dist/abilities/amounts.js.map +1 -0
  4. package/dist/abilities/buffs.d.ts +106 -6
  5. package/dist/abilities/buffs.js +443 -0
  6. package/dist/abilities/buffs.js.map +1 -0
  7. package/dist/abilities/castTold.d.ts +2 -0
  8. package/dist/abilities/castTold.js +66 -0
  9. package/dist/abilities/castTold.js.map +1 -0
  10. package/dist/abilities/chance.d.ts +38 -0
  11. package/dist/abilities/chance.js +77 -0
  12. package/dist/abilities/chance.js.map +1 -0
  13. package/dist/abilities/charges.d.ts +18 -0
  14. package/dist/abilities/charges.js +101 -0
  15. package/dist/abilities/charges.js.map +1 -0
  16. package/dist/abilities/control.d.ts +28 -0
  17. package/dist/abilities/control.js +113 -0
  18. package/dist/abilities/control.js.map +1 -0
  19. package/dist/abilities/dispel.js +51 -0
  20. package/dist/abilities/dispel.js.map +1 -0
  21. package/dist/abilities/effectFields.d.ts +1 -1
  22. package/dist/abilities/effectFields.js +676 -0
  23. package/dist/abilities/effectFields.js.map +1 -0
  24. package/dist/abilities/effectIndex.d.ts +27 -0
  25. package/dist/abilities/effectIndex.js +64 -0
  26. package/dist/abilities/effectIndex.js.map +1 -0
  27. package/dist/abilities/effects/buff.d.ts +9 -3
  28. package/dist/abilities/effects/buff.js +84 -0
  29. package/dist/abilities/effects/buff.js.map +1 -0
  30. package/dist/abilities/effects/conditions.d.ts +2 -0
  31. package/dist/abilities/effects/conditions.js +41 -0
  32. package/dist/abilities/effects/conditions.js.map +1 -0
  33. package/dist/abilities/effects/core.js +54 -0
  34. package/dist/abilities/effects/core.js.map +1 -0
  35. package/dist/abilities/effects/damage.d.ts +1 -1
  36. package/dist/abilities/effects/damage.js +43 -0
  37. package/dist/abilities/effects/damage.js.map +1 -0
  38. package/dist/abilities/effects/heal.d.ts +2 -2
  39. package/dist/abilities/effects/heal.js +51 -0
  40. package/dist/abilities/effects/heal.js.map +1 -0
  41. package/dist/abilities/effects/missile.d.ts +13 -1
  42. package/dist/abilities/effects/missile.js +104 -0
  43. package/dist/abilities/effects/missile.js.map +1 -0
  44. package/dist/abilities/effects/morph.d.ts +5 -0
  45. package/dist/abilities/effects/morph.js +43 -0
  46. package/dist/abilities/effects/morph.js.map +1 -0
  47. package/dist/abilities/effects/moves.d.ts +16 -4
  48. package/dist/abilities/effects/moves.js +212 -0
  49. package/dist/abilities/effects/moves.js.map +1 -0
  50. package/dist/abilities/effects/passives.d.ts +19 -9
  51. package/dist/abilities/effects/passives.js +131 -0
  52. package/dist/abilities/effects/passives.js.map +1 -0
  53. package/dist/abilities/effects/proxy.d.ts +5 -0
  54. package/dist/abilities/effects/proxy.js +60 -0
  55. package/dist/abilities/effects/proxy.js.map +1 -0
  56. package/dist/abilities/effects/sight.d.ts +2 -2
  57. package/dist/abilities/effects/sight.js +39 -0
  58. package/dist/abilities/effects/sight.js.map +1 -0
  59. package/dist/abilities/effects/spawn.d.ts +5 -2
  60. package/dist/abilities/effects/spawn.js +40 -0
  61. package/dist/abilities/effects/spawn.js.map +1 -0
  62. package/dist/abilities/effects/timed.d.ts +2 -2
  63. package/dist/abilities/effects/timed.js +96 -0
  64. package/dist/abilities/effects/timed.js.map +1 -0
  65. package/dist/abilities/effects/trade.d.ts +1 -1
  66. package/dist/abilities/effects/trade.js +25 -0
  67. package/dist/abilities/effects/trade.js.map +1 -0
  68. package/dist/abilities/effects.d.ts +97 -23
  69. package/dist/abilities/effects.js +860 -0
  70. package/dist/abilities/effects.js.map +1 -0
  71. package/dist/abilities/land.d.ts +38 -4
  72. package/dist/abilities/land.js +189 -0
  73. package/dist/abilities/land.js.map +1 -0
  74. package/dist/abilities/recast.d.ts +45 -0
  75. package/dist/abilities/recast.js +118 -0
  76. package/dist/abilities/recast.js.map +1 -0
  77. package/dist/abilities/scaled.js +40 -0
  78. package/dist/abilities/scaled.js.map +1 -0
  79. package/dist/abilities/screen.d.ts +6 -0
  80. package/dist/abilities/screen.js +83 -0
  81. package/dist/abilities/screen.js.map +1 -0
  82. package/dist/abilities/shapes.d.ts +66 -0
  83. package/dist/abilities/shapes.js +122 -0
  84. package/dist/abilities/shapes.js.map +1 -0
  85. package/dist/abilities/text.d.ts +14 -2
  86. package/dist/abilities/text.js +204 -0
  87. package/dist/abilities/text.js.map +1 -0
  88. package/dist/abilities/triggers.d.ts +98 -0
  89. package/dist/abilities/triggers.js +351 -0
  90. package/dist/abilities/triggers.js.map +1 -0
  91. package/dist/abilityChanges.d.ts +131 -0
  92. package/dist/abilityChanges.js +345 -0
  93. package/dist/abilityChanges.js.map +1 -0
  94. package/dist/ai/area.d.ts +4 -1
  95. package/dist/ai/brain.d.ts +4 -1
  96. package/dist/ai/brain.js +844 -0
  97. package/dist/ai/brain.js.map +1 -0
  98. package/dist/ai/budget.js +74 -0
  99. package/dist/ai/budget.js.map +1 -0
  100. package/dist/ai/checks.d.ts +9 -1
  101. package/dist/ai/checks.js +242 -0
  102. package/dist/ai/checks.js.map +1 -0
  103. package/dist/ai/computer.d.ts +11 -4
  104. package/dist/ai/computer.js +251 -0
  105. package/dist/ai/computer.js.map +1 -0
  106. package/dist/ai/defence.d.ts +4 -0
  107. package/dist/ai/defence.js +430 -0
  108. package/dist/ai/defence.js.map +1 -0
  109. package/dist/ai/define.d.ts +3 -2
  110. package/dist/ai/define.js +31 -0
  111. package/dist/ai/define.js.map +1 -0
  112. package/dist/ai/economy.d.ts +10 -7
  113. package/dist/ai/economy.js +780 -0
  114. package/dist/ai/economy.js.map +1 -0
  115. package/dist/ai/geometry.js +38 -0
  116. package/dist/ai/geometry.js.map +1 -0
  117. package/dist/ai/goals.d.ts +1 -0
  118. package/dist/ai/goals.js +560 -0
  119. package/dist/ai/goals.js.map +1 -0
  120. package/dist/ai/knowledge.d.ts +72 -7
  121. package/dist/ai/knowledge.js +804 -0
  122. package/dist/ai/knowledge.js.map +1 -0
  123. package/dist/ai/lanes.d.ts +10 -2
  124. package/dist/ai/lanes.js +715 -0
  125. package/dist/ai/lanes.js.map +1 -0
  126. package/dist/ai/melee/build.js +264 -0
  127. package/dist/ai/melee/build.js.map +1 -0
  128. package/dist/ai/melee/goals.d.ts +7 -0
  129. package/dist/ai/melee/goals.js +720 -0
  130. package/dist/ai/melee/goals.js.map +1 -0
  131. package/dist/ai/melee/heroes.js +68 -0
  132. package/dist/ai/melee/heroes.js.map +1 -0
  133. package/dist/ai/melee/index.d.ts +1 -1
  134. package/dist/ai/melee/index.js +51 -0
  135. package/dist/ai/melee/index.js.map +1 -0
  136. package/dist/ai/melee/production.js +29 -0
  137. package/dist/ai/melee/production.js.map +1 -0
  138. package/dist/ai/melee/surrender.js +64 -0
  139. package/dist/ai/melee/surrender.js.map +1 -0
  140. package/dist/ai/micro.d.ts +9 -0
  141. package/dist/ai/micro.js +1316 -0
  142. package/dist/ai/micro.js.map +1 -0
  143. package/dist/ai/mission.d.ts +9 -2
  144. package/dist/ai/mission.js +538 -0
  145. package/dist/ai/mission.js.map +1 -0
  146. package/dist/ai/missionRules.d.ts +1 -1
  147. package/dist/ai/missionRules.js +26 -0
  148. package/dist/ai/missionRules.js.map +1 -0
  149. package/dist/ai/module.d.ts +6 -2
  150. package/dist/ai/module.js +37 -0
  151. package/dist/ai/module.js.map +1 -0
  152. package/dist/ai/options.d.ts +3 -3
  153. package/dist/ai/plans/build.d.ts +20 -1
  154. package/dist/ai/plans/build.js +608 -0
  155. package/dist/ai/plans/build.js.map +1 -0
  156. package/dist/ai/plans/placement.d.ts +4 -1
  157. package/dist/ai/plans/placement.js +295 -0
  158. package/dist/ai/plans/placement.js.map +1 -0
  159. package/dist/ai/plans/plans.d.ts +9 -0
  160. package/dist/ai/plans/plans.js +110 -0
  161. package/dist/ai/plans/plans.js.map +1 -0
  162. package/dist/ai/plans/production.d.ts +14 -2
  163. package/dist/ai/plans/production.js +434 -0
  164. package/dist/ai/plans/production.js.map +1 -0
  165. package/dist/ai/plans/purse.d.ts +6 -3
  166. package/dist/ai/plans/purse.js +139 -0
  167. package/dist/ai/plans/purse.js.map +1 -0
  168. package/dist/ai/plans/tech.d.ts +6 -0
  169. package/dist/ai/plans/tech.js +122 -0
  170. package/dist/ai/plans/tech.js.map +1 -0
  171. package/dist/ai/profiles.d.ts +4 -4
  172. package/dist/{profiles-B3NS9jwk.js → ai/profiles.js} +3 -98
  173. package/dist/ai/profiles.js.map +1 -0
  174. package/dist/ai/reach.js +54 -0
  175. package/dist/ai/reach.js.map +1 -0
  176. package/dist/ai/report.d.ts +8 -0
  177. package/dist/ai/report.js +87 -0
  178. package/dist/ai/report.js.map +1 -0
  179. package/dist/ai/roles.d.ts +4 -0
  180. package/dist/ai/roles.js +207 -0
  181. package/dist/ai/roles.js.map +1 -0
  182. package/dist/ai/rules.d.ts +8 -2
  183. package/dist/ai/rules.js +416 -0
  184. package/dist/ai/rules.js.map +1 -0
  185. package/dist/ai/scouting.d.ts +6 -0
  186. package/dist/ai/scouting.js +324 -0
  187. package/dist/ai/scouting.js.map +1 -0
  188. package/dist/ai/settings.js +99 -0
  189. package/dist/ai/settings.js.map +1 -0
  190. package/dist/ai/squads.d.ts +21 -2
  191. package/dist/ai/squads.js +916 -0
  192. package/dist/ai/squads.js.map +1 -0
  193. package/dist/ai/strength.js +320 -0
  194. package/dist/ai/strength.js.map +1 -0
  195. package/dist/ai/task.d.ts +3 -1
  196. package/dist/ai/task.js +17 -0
  197. package/dist/ai/task.js.map +1 -0
  198. package/dist/ai/tasks/attack.js +24 -0
  199. package/dist/ai/tasks/attack.js.map +1 -0
  200. package/dist/ai/tasks/capture.d.ts +3 -3
  201. package/dist/ai/tasks/capture.js +37 -0
  202. package/dist/ai/tasks/capture.js.map +1 -0
  203. package/dist/ai/tasks/creep.js +29 -0
  204. package/dist/ai/tasks/creep.js.map +1 -0
  205. package/dist/ai/tasks/defend.js +61 -0
  206. package/dist/ai/tasks/defend.js.map +1 -0
  207. package/dist/ai/tasks/drop.js +81 -0
  208. package/dist/ai/tasks/drop.js.map +1 -0
  209. package/dist/ai/tasks/escort.js +59 -0
  210. package/dist/ai/tasks/escort.js.map +1 -0
  211. package/dist/ai/tasks/gather.js +48 -0
  212. package/dist/ai/tasks/gather.js.map +1 -0
  213. package/dist/ai/tasks/harass.js +39 -0
  214. package/dist/ai/tasks/harass.js.map +1 -0
  215. package/dist/ai/tasks/hold.js +32 -0
  216. package/dist/ai/tasks/hold.js.map +1 -0
  217. package/dist/ai/tasks/index.js +34 -0
  218. package/dist/ai/tasks/index.js.map +1 -0
  219. package/dist/ai/tasks/move.js +26 -0
  220. package/dist/ai/tasks/move.js.map +1 -0
  221. package/dist/ai/tasks/patrol.js +59 -0
  222. package/dist/ai/tasks/patrol.js.map +1 -0
  223. package/dist/ai/tasks/retreat.js +28 -0
  224. package/dist/ai/tasks/retreat.js.map +1 -0
  225. package/dist/ai/tasks/scout.js +73 -0
  226. package/dist/ai/tasks/scout.js.map +1 -0
  227. package/dist/ai/tasks/shared.d.ts +1 -1
  228. package/dist/ai/tasks/shared.js +137 -0
  229. package/dist/ai/tasks/shared.js.map +1 -0
  230. package/dist/ai/team.d.ts +18 -1
  231. package/dist/ai/team.js +492 -0
  232. package/dist/ai/team.js.map +1 -0
  233. package/dist/ai/threat.d.ts +6 -0
  234. package/dist/ai/threat.js +206 -0
  235. package/dist/ai/threat.js.map +1 -0
  236. package/dist/ai/view.d.ts +21 -7
  237. package/dist/ai/view.js +677 -0
  238. package/dist/ai/view.js.map +1 -0
  239. package/dist/ai/waves.d.ts +6 -0
  240. package/dist/ai/waves.js +410 -0
  241. package/dist/ai/waves.js.map +1 -0
  242. package/dist/ai.js +54 -6239
  243. package/dist/aiTesting.d.ts +6 -3
  244. package/dist/aiTesting.js +229 -0
  245. package/dist/aiTesting.js.map +1 -0
  246. package/dist/areas.d.ts +4 -1
  247. package/dist/areas.js +295 -0
  248. package/dist/areas.js.map +1 -0
  249. package/dist/attacks.d.ts +3 -3
  250. package/dist/attacks.js +127 -0
  251. package/dist/attacks.js.map +1 -0
  252. package/dist/burning.d.ts +267 -0
  253. package/dist/burning.js +795 -0
  254. package/dist/burning.js.map +1 -0
  255. package/dist/bytes.js +21 -0
  256. package/dist/bytes.js.map +1 -0
  257. package/dist/callings.d.ts +71 -0
  258. package/dist/callings.js +157 -0
  259. package/dist/callings.js.map +1 -0
  260. package/dist/cameraOrders.d.ts +78 -0
  261. package/dist/cameraOrders.js +114 -0
  262. package/dist/cameraOrders.js.map +1 -0
  263. package/dist/camps.d.ts +70 -4
  264. package/dist/camps.js +501 -0
  265. package/dist/camps.js.map +1 -0
  266. package/dist/capture.d.ts +15 -3
  267. package/dist/capture.js +304 -0
  268. package/dist/capture.js.map +1 -0
  269. package/dist/cellLayers.d.ts +78 -13
  270. package/dist/cellLayers.js +275 -0
  271. package/dist/cellLayers.js.map +1 -0
  272. package/dist/cellPatches.d.ts +24 -0
  273. package/dist/cellPatches.js +73 -0
  274. package/dist/cellPatches.js.map +1 -0
  275. package/dist/cinematics.d.ts +10 -5
  276. package/dist/cinematics.js +161 -0
  277. package/dist/cinematics.js.map +1 -0
  278. package/dist/clock.d.ts +2 -2
  279. package/dist/clock.js +78 -0
  280. package/dist/clock.js.map +1 -0
  281. package/dist/commands.d.ts +36 -4
  282. package/dist/commands.js +636 -0
  283. package/dist/commands.js.map +1 -0
  284. package/dist/components.d.ts +31 -10
  285. package/dist/components.js +74 -0
  286. package/dist/components.js.map +1 -0
  287. package/dist/computers.d.ts +4 -4
  288. package/dist/computers.js +194 -0
  289. package/dist/computers.js.map +1 -0
  290. package/dist/concealment.d.ts +25 -2
  291. package/dist/concealment.js +409 -0
  292. package/dist/concealment.js.map +1 -0
  293. package/dist/coreComponents.js +130 -0
  294. package/dist/coreComponents.js.map +1 -0
  295. package/dist/createGame.d.ts +306 -0
  296. package/dist/createGame.js +405 -0
  297. package/dist/createGame.js.map +1 -0
  298. package/dist/dashing.d.ts +18 -2
  299. package/dist/dashing.js +41 -0
  300. package/dist/dashing.js.map +1 -0
  301. package/dist/debug.d.ts +8 -0
  302. package/dist/debug.js +5 -3
  303. package/dist/debug2.js +76 -0
  304. package/dist/debug2.js.map +1 -0
  305. package/dist/debugCommands.d.ts +6 -6
  306. package/dist/debugCommands.js +537 -0
  307. package/dist/debugCommands.js.map +1 -0
  308. package/dist/debugging.d.ts +1 -0
  309. package/dist/defaultSets.d.ts +183 -0
  310. package/dist/defaultSets.js +216 -0
  311. package/dist/defaultSets.js.map +1 -0
  312. package/dist/definitions.d.ts +6 -0
  313. package/dist/definitions.js +78 -0
  314. package/dist/definitions.js.map +1 -0
  315. package/dist/defs.d.ts +1895 -165
  316. package/dist/defs.js +380 -0
  317. package/dist/defs.js.map +1 -0
  318. package/dist/denying.d.ts +4 -4
  319. package/dist/denying.js +106 -0
  320. package/dist/denying.js.map +1 -0
  321. package/dist/destructibles.d.ts +2 -2
  322. package/dist/destructibles.js +36 -0
  323. package/dist/destructibles.js.map +1 -0
  324. package/dist/determinism.d.ts +4 -4
  325. package/dist/determinism.js +247 -0
  326. package/dist/determinism.js.map +1 -0
  327. package/dist/dialog.d.ts +17 -2
  328. package/dist/dialog.js +108 -0
  329. package/dist/dialog.js.map +1 -0
  330. package/dist/effectRefs.js +28 -0
  331. package/dist/effectRefs.js.map +1 -0
  332. package/dist/effects.d.ts +27 -11
  333. package/dist/effects.js +110 -0
  334. package/dist/effects.js.map +1 -0
  335. package/dist/endings.d.ts +1 -1
  336. package/dist/endings.js +78 -0
  337. package/dist/endings.js.map +1 -0
  338. package/dist/engagement.d.ts +40 -6
  339. package/dist/engagement.js +530 -0
  340. package/dist/engagement.js.map +1 -0
  341. package/dist/engineEvents.d.ts +72 -9
  342. package/dist/engineEvents.js +520 -0
  343. package/dist/engineEvents.js.map +1 -0
  344. package/dist/entity.d.ts +275 -26
  345. package/dist/entity.js +441 -0
  346. package/dist/entity.js.map +1 -0
  347. package/dist/entityIndex.d.ts +10 -3
  348. package/dist/entityIndex.js +149 -0
  349. package/dist/entityIndex.js.map +1 -0
  350. package/dist/errors.d.ts +6 -2
  351. package/dist/errors.js +59 -0
  352. package/dist/errors.js.map +1 -0
  353. package/dist/events.d.ts +11 -5
  354. package/dist/events.js +158 -0
  355. package/dist/events.js.map +1 -0
  356. package/dist/exactMath.js +273 -0
  357. package/dist/exactMath.js.map +1 -0
  358. package/dist/features.d.ts +1 -1
  359. package/dist/features.js +127 -0
  360. package/dist/features.js.map +1 -0
  361. package/dist/fields.d.ts +25 -5
  362. package/dist/fields.js +140 -0
  363. package/dist/fields.js.map +1 -0
  364. package/dist/fixture.d.ts +3 -3
  365. package/dist/fixture.js +512 -0
  366. package/dist/fixture.js.map +1 -0
  367. package/dist/fog.d.ts +26 -3
  368. package/dist/fog.js +333 -0
  369. package/dist/fog.js.map +1 -0
  370. package/dist/foliage.d.ts +476 -0
  371. package/dist/foliage.js +1478 -0
  372. package/dist/foliage.js.map +1 -0
  373. package/dist/foliageDebug.d.ts +57 -0
  374. package/dist/foliageDebug.js +172 -0
  375. package/dist/foliageDebug.js.map +1 -0
  376. package/dist/foliageRegrowth.d.ts +20 -0
  377. package/dist/foliageRegrowth.js +332 -0
  378. package/dist/foliageRegrowth.js.map +1 -0
  379. package/dist/formState.d.ts +67 -0
  380. package/dist/formState.js +65 -0
  381. package/dist/formState.js.map +1 -0
  382. package/dist/formation.d.ts +46 -8
  383. package/dist/formation.js +297 -0
  384. package/dist/formation.js.map +1 -0
  385. package/dist/forms.d.ts +58 -0
  386. package/dist/forms.js +146 -0
  387. package/dist/forms.js.map +1 -0
  388. package/dist/friendlyFire.d.ts +2 -2
  389. package/dist/friendlyFire.js +37 -0
  390. package/dist/friendlyFire.js.map +1 -0
  391. package/dist/game.d.ts +141 -48
  392. package/dist/game.js +834 -0
  393. package/dist/game.js.map +1 -0
  394. package/dist/gameData.d.ts +96 -22
  395. package/dist/gameData.js +1690 -0
  396. package/dist/gameData.js.map +1 -0
  397. package/dist/gameFiles.d.ts +3 -3
  398. package/dist/gameFiles.js +14 -0
  399. package/dist/gameFiles.js.map +1 -0
  400. package/dist/gates.js +92 -0
  401. package/dist/gates.js.map +1 -0
  402. package/dist/generate.d.ts +28 -1
  403. package/dist/generate.js +1062 -0
  404. package/dist/generate.js.map +1 -0
  405. package/dist/generateWorker.d.ts +7 -3
  406. package/dist/generateWorker.js +86 -0
  407. package/dist/generateWorker.js.map +1 -0
  408. package/dist/grid.d.ts +9 -0
  409. package/dist/grid.js +102 -0
  410. package/dist/grid.js.map +1 -0
  411. package/dist/ground.d.ts +17 -1
  412. package/dist/ground.js +375 -0
  413. package/dist/ground.js.map +1 -0
  414. package/dist/groundObjects.d.ts +70 -0
  415. package/dist/groundObjects.js +371 -0
  416. package/dist/groundObjects.js.map +1 -0
  417. package/dist/groundSpeed.d.ts +20 -3
  418. package/dist/groundSpeed.js +117 -0
  419. package/dist/groundSpeed.js.map +1 -0
  420. package/dist/hero.d.ts +126 -10
  421. package/dist/hero.js +432 -0
  422. package/dist/hero.js.map +1 -0
  423. package/dist/holds.d.ts +94 -0
  424. package/dist/holds.js +305 -0
  425. package/dist/holds.js.map +1 -0
  426. package/dist/home.d.ts +1 -1
  427. package/dist/home.js +30 -0
  428. package/dist/home.js.map +1 -0
  429. package/dist/hooks.d.ts +339 -57
  430. package/dist/hooks.js +105 -0
  431. package/dist/hooks.js.map +1 -0
  432. package/dist/hotReload.d.ts +6 -5
  433. package/dist/hotReload.js +145 -0
  434. package/dist/hotReload.js.map +1 -0
  435. package/dist/ids.d.ts +3 -3
  436. package/dist/ids.js +30 -0
  437. package/dist/ids.js.map +1 -0
  438. package/dist/idsFile.d.ts +36 -0
  439. package/dist/idsFile.js +134 -0
  440. package/dist/idsFile.js.map +1 -0
  441. package/dist/index.d.ts +105 -68
  442. package/dist/index.js +194 -4701
  443. package/dist/inspect.d.ts +29 -2
  444. package/dist/{inspect-D9dWHmZ0.js → inspect.js} +21 -12
  445. package/dist/inspect.js.map +1 -0
  446. package/dist/inventory.d.ts +14 -1
  447. package/dist/inventory.js +84 -0
  448. package/dist/inventory.js.map +1 -0
  449. package/dist/items.d.ts +136 -8
  450. package/dist/items.js +585 -0
  451. package/dist/items.js.map +1 -0
  452. package/dist/lanes.d.ts +12 -3
  453. package/dist/lanes.js +496 -0
  454. package/dist/lanes.js.map +1 -0
  455. package/dist/life.d.ts +6 -2
  456. package/dist/life.js +287 -0
  457. package/dist/life.js.map +1 -0
  458. package/dist/log.d.ts +26 -3
  459. package/dist/log.js +192 -0
  460. package/dist/log.js.map +1 -0
  461. package/dist/manaBurn.d.ts +2 -2
  462. package/dist/manaBurn.js +75 -0
  463. package/dist/manaBurn.js.map +1 -0
  464. package/dist/map/file.d.ts +56 -3
  465. package/dist/map/file.js +264 -0
  466. package/dist/map/file.js.map +1 -0
  467. package/dist/map/images.js +61 -0
  468. package/dist/map/images.js.map +1 -0
  469. package/dist/map/look.d.ts +1 -1
  470. package/dist/map/look.js +30 -0
  471. package/dist/map/look.js.map +1 -0
  472. package/dist/map/pathProfile.js +183 -0
  473. package/dist/map/pathProfile.js.map +1 -0
  474. package/dist/map/resize.d.ts +4 -0
  475. package/dist/map/resize.js +136 -0
  476. package/dist/map/resize.js.map +1 -0
  477. package/dist/map/schema.js +257 -0
  478. package/dist/map/schema.js.map +1 -0
  479. package/dist/map/terrain.js +214 -0
  480. package/dist/map/terrain.js.map +1 -0
  481. package/dist/map/types.d.ts +92 -13
  482. package/dist/map/types.js +251 -0
  483. package/dist/map/types.js.map +1 -0
  484. package/dist/mapCheck/cells.js +94 -0
  485. package/dist/mapCheck/cells.js.map +1 -0
  486. package/dist/mapCheck/rules/foliage.d.ts +9 -0
  487. package/dist/mapCheck/rules/foliage.js +83 -0
  488. package/dist/mapCheck/rules/foliage.js.map +1 -0
  489. package/dist/mapCheck/rules/names.js +39 -0
  490. package/dist/mapCheck/rules/names.js.map +1 -0
  491. package/dist/mapCheck/rules/objects.d.ts +1 -1
  492. package/dist/mapCheck/rules/objects.js +56 -0
  493. package/dist/mapCheck/rules/objects.js.map +1 -0
  494. package/dist/mapCheck/rules/paths.js +32 -0
  495. package/dist/mapCheck/rules/paths.js.map +1 -0
  496. package/dist/mapCheck/rules/players.js +20 -0
  497. package/dist/mapCheck/rules/players.js.map +1 -0
  498. package/dist/mapCheck/rules/races.js +56 -0
  499. package/dist/mapCheck/rules/races.js.map +1 -0
  500. package/dist/mapCheck/rules/random.js +47 -0
  501. package/dist/mapCheck/rules/random.js.map +1 -0
  502. package/dist/mapCheck/rules/regions.js +30 -0
  503. package/dist/mapCheck/rules/regions.js.map +1 -0
  504. package/dist/mapCheck/rules/targets.js +31 -0
  505. package/dist/mapCheck/rules/targets.js.map +1 -0
  506. package/dist/mapCheck/rules/walking.js +45 -0
  507. package/dist/mapCheck/rules/walking.js.map +1 -0
  508. package/dist/mapCheck.d.ts +2 -2
  509. package/dist/mapCheck.js +63 -0
  510. package/dist/mapCheck.js.map +1 -0
  511. package/dist/mapFields.d.ts +25 -2
  512. package/dist/mapFields.js +134 -0
  513. package/dist/mapFields.js.map +1 -0
  514. package/dist/mapFile.js +176 -0
  515. package/dist/mapFile.js.map +1 -0
  516. package/dist/mapMeasure.d.ts +8 -0
  517. package/dist/mapMeasure.js +283 -0
  518. package/dist/mapMeasure.js.map +1 -0
  519. package/dist/mapMerge.d.ts +1 -0
  520. package/dist/mapMerge.js +172 -0
  521. package/dist/mapMerge.js.map +1 -0
  522. package/dist/mapObjectives.js +138 -0
  523. package/dist/mapObjectives.js.map +1 -0
  524. package/dist/mapObjects.js +80 -0
  525. package/dist/mapObjects.js.map +1 -0
  526. package/dist/math.d.ts +37 -7
  527. package/dist/math.js +155 -0
  528. package/dist/math.js.map +1 -0
  529. package/dist/messages.d.ts +71 -4
  530. package/dist/messages.js +29 -0
  531. package/dist/messages.js.map +1 -0
  532. package/dist/missionRules.d.ts +10 -2
  533. package/dist/{missionRules-C-bGxm0Q.js → missionRules.js} +30 -150
  534. package/dist/missionRules.js.map +1 -0
  535. package/dist/mods.d.ts +39 -20
  536. package/dist/mods.js +271 -0
  537. package/dist/mods.js.map +1 -0
  538. package/dist/moves.d.ts +87 -0
  539. package/dist/moves.js +539 -0
  540. package/dist/moves.js.map +1 -0
  541. package/dist/names.d.ts +7 -0
  542. package/dist/names.js +122 -0
  543. package/dist/names.js.map +1 -0
  544. package/dist/navigation/agentParams.js +14 -0
  545. package/dist/navigation/agentParams.js.map +1 -0
  546. package/dist/navigation/air.d.ts +7 -3
  547. package/dist/navigation/air.js +401 -0
  548. package/dist/navigation/air.js.map +1 -0
  549. package/dist/navigation/builds.d.ts +34 -2
  550. package/dist/navigation/builds.js +287 -0
  551. package/dist/navigation/builds.js.map +1 -0
  552. package/dist/navigation/groundAreas.d.ts +59 -1
  553. package/dist/navigation/groundAreas.js +407 -0
  554. package/dist/navigation/groundAreas.js.map +1 -0
  555. package/dist/navigation/navigation.d.ts +98 -9
  556. package/dist/navigation/recast.d.ts +194 -18
  557. package/dist/navigation/recast.js +1379 -0
  558. package/dist/navigation/recast.js.map +1 -0
  559. package/dist/navigation/sidePaths.d.ts +8 -3
  560. package/dist/navigation/sidePaths.js +241 -0
  561. package/dist/navigation/sidePaths.js.map +1 -0
  562. package/dist/navigation/sized.js +243 -0
  563. package/dist/navigation/sized.js.map +1 -0
  564. package/dist/nearest.js +32 -0
  565. package/dist/nearest.js.map +1 -0
  566. package/dist/noise.js +59 -0
  567. package/dist/noise.js.map +1 -0
  568. package/dist/objectives.d.ts +12 -3
  569. package/dist/objectives.js +144 -0
  570. package/dist/objectives.js.map +1 -0
  571. package/dist/orders/basic.d.ts +5 -5
  572. package/dist/orders/basic.js +417 -0
  573. package/dist/orders/basic.js.map +1 -0
  574. package/dist/orders/build.js +278 -0
  575. package/dist/orders/build.js.map +1 -0
  576. package/dist/orders/cast.d.ts +13 -3
  577. package/dist/orders/cast.js +558 -0
  578. package/dist/orders/cast.js.map +1 -0
  579. package/dist/orders/facts.js +16 -0
  580. package/dist/orders/facts.js.map +1 -0
  581. package/dist/orders/harvest.d.ts +21 -5
  582. package/dist/orders/harvest.js +540 -0
  583. package/dist/orders/harvest.js.map +1 -0
  584. package/dist/orders/idle.d.ts +3 -1
  585. package/dist/orders/idle.js +234 -0
  586. package/dist/orders/idle.js.map +1 -0
  587. package/dist/orders/items.js +92 -0
  588. package/dist/orders/items.js.map +1 -0
  589. package/dist/orders/queue.js +108 -0
  590. package/dist/orders/queue.js.map +1 -0
  591. package/dist/orders/waiting.d.ts +39 -0
  592. package/dist/orders/waiting.js +149 -0
  593. package/dist/orders/waiting.js.map +1 -0
  594. package/dist/pack.schema.js +13 -0
  595. package/dist/pack.schema.js.map +1 -0
  596. package/dist/pack.schema.json +7622 -841
  597. package/dist/packs/director/index.d.ts +13 -5
  598. package/dist/packs/director/index.js +204 -0
  599. package/dist/packs/director/index.js.map +1 -0
  600. package/dist/packs/heroes/campaign.d.ts +3 -2
  601. package/dist/packs/heroes/campaign.js +241 -0
  602. package/dist/packs/heroes/campaign.js.map +1 -0
  603. package/dist/packs/heroes/carry.d.ts +6 -0
  604. package/dist/packs/heroes/carry.js +112 -0
  605. package/dist/packs/heroes/carry.js.map +1 -0
  606. package/dist/packs/heroes/commands.js +115 -0
  607. package/dist/packs/heroes/commands.js.map +1 -0
  608. package/dist/packs/heroes/fallen.d.ts +43 -0
  609. package/dist/packs/heroes/fallen.js +61 -0
  610. package/dist/packs/heroes/fallen.js.map +1 -0
  611. package/dist/packs/heroes/hire.js +60 -0
  612. package/dist/packs/heroes/hire.js.map +1 -0
  613. package/dist/packs/heroes/index.d.ts +7 -6
  614. package/dist/packs/heroes/index.js +130 -0
  615. package/dist/packs/heroes/index.js.map +1 -0
  616. package/dist/packs/heroes/loop.d.ts +95 -0
  617. package/dist/packs/heroes/loop.js +250 -0
  618. package/dist/packs/heroes/loop.js.map +1 -0
  619. package/dist/packs/heroes/making.d.ts +6 -3
  620. package/dist/packs/heroes/making.js +55 -0
  621. package/dist/packs/heroes/making.js.map +1 -0
  622. package/dist/packs/heroes/respawn.d.ts +3 -3
  623. package/dist/packs/heroes/respawn.js +87 -0
  624. package/dist/packs/heroes/respawn.js.map +1 -0
  625. package/dist/packs/heroes/sets.d.ts +32 -0
  626. package/dist/packs/heroes/sets.js +51 -0
  627. package/dist/packs/heroes/sets.js.map +1 -0
  628. package/dist/packs/heroes/spells.d.ts +16 -0
  629. package/dist/packs/heroes/spells.js +269 -0
  630. package/dist/packs/heroes/spells.js.map +1 -0
  631. package/dist/packs/items/defaults.d.ts +43 -0
  632. package/dist/packs/items/defaults.js +1504 -0
  633. package/dist/packs/items/defaults.js.map +1 -0
  634. package/dist/packs/items/index.d.ts +27 -0
  635. package/dist/packs/items/index.js +214 -0
  636. package/dist/packs/items/index.js.map +1 -0
  637. package/dist/packs/moba/index.d.ts +3 -3
  638. package/dist/packs/moba/index.js +174 -0
  639. package/dist/packs/moba/index.js.map +1 -0
  640. package/dist/packs/pack.d.ts +15 -15
  641. package/dist/packs/pack.js +14 -0
  642. package/dist/packs/pack.js.map +1 -0
  643. package/dist/packs.d.ts +15 -7
  644. package/dist/packs.js +222 -0
  645. package/dist/packs.js.map +1 -0
  646. package/dist/paths.d.ts +2 -0
  647. package/dist/paths.js +109 -0
  648. package/dist/paths.js.map +1 -0
  649. package/dist/plain.js +57 -0
  650. package/dist/plain.js.map +1 -0
  651. package/dist/player.d.ts +33 -10
  652. package/dist/player.js +159 -0
  653. package/dist/player.js.map +1 -0
  654. package/dist/portals.d.ts +1 -1
  655. package/dist/portals.js +194 -0
  656. package/dist/portals.js.map +1 -0
  657. package/dist/prefabs.d.ts +25 -2
  658. package/dist/prefabs.js +239 -0
  659. package/dist/prefabs.js.map +1 -0
  660. package/dist/presetBuildings.js +58 -0
  661. package/dist/presetBuildings.js.map +1 -0
  662. package/dist/presetFoliage.d.ts +27 -0
  663. package/dist/presetFoliage.js +98 -0
  664. package/dist/presetFoliage.js.map +1 -0
  665. package/dist/presetGround.js +65 -0
  666. package/dist/presetGround.js.map +1 -0
  667. package/dist/proxies.d.ts +12 -0
  668. package/dist/proxies.js +79 -0
  669. package/dist/proxies.js.map +1 -0
  670. package/dist/query.d.ts +56 -0
  671. package/dist/query.js +88 -0
  672. package/dist/query.js.map +1 -0
  673. package/dist/races.d.ts +15 -14
  674. package/dist/races.js +172 -0
  675. package/dist/races.js.map +1 -0
  676. package/dist/randomGroups.js +91 -0
  677. package/dist/randomGroups.js.map +1 -0
  678. package/dist/registry.d.ts +117 -53
  679. package/dist/registry.js +323 -0
  680. package/dist/registry.js.map +1 -0
  681. package/dist/remains.d.ts +11 -9
  682. package/dist/remains.js +188 -0
  683. package/dist/remains.js.map +1 -0
  684. package/dist/replication.d.ts +12 -7
  685. package/dist/replication.js +100 -0
  686. package/dist/replication.js.map +1 -0
  687. package/dist/rng.d.ts +2 -0
  688. package/dist/rng.js +40 -0
  689. package/dist/rng.js.map +1 -0
  690. package/dist/rules.d.ts +186 -99
  691. package/dist/rules.js +179 -0
  692. package/dist/rules.js.map +1 -0
  693. package/dist/rulesCheck.d.ts +5 -4
  694. package/dist/rulesCheck.js +693 -0
  695. package/dist/rulesCheck.js.map +1 -0
  696. package/dist/runes.d.ts +2 -2
  697. package/dist/runes.js +80 -0
  698. package/dist/runes.js.map +1 -0
  699. package/dist/save.d.ts +37 -12
  700. package/dist/save.js +532 -0
  701. package/dist/save.js.map +1 -0
  702. package/dist/scenario.d.ts +2 -2
  703. package/dist/scenario.js +99 -0
  704. package/dist/scenario.js.map +1 -0
  705. package/dist/scheduler.d.ts +3 -0
  706. package/dist/scheduler.js +156 -0
  707. package/dist/scheduler.js.map +1 -0
  708. package/dist/score.d.ts +19 -19
  709. package/dist/score.js +709 -0
  710. package/dist/score.js.map +1 -0
  711. package/dist/sequences.d.ts +10 -6
  712. package/dist/sequences.js +206 -0
  713. package/dist/sequences.js.map +1 -0
  714. package/dist/server/doorman.js +154 -0
  715. package/dist/server/doorman.js.map +1 -0
  716. package/dist/server/gameServer.d.ts +16 -1
  717. package/dist/server/gameServer.js +643 -0
  718. package/dist/server/gameServer.js.map +1 -0
  719. package/dist/server/index.d.ts +1 -1
  720. package/dist/server/lobby.js +199 -0
  721. package/dist/server/lobby.js.map +1 -0
  722. package/dist/server/log.js +18 -0
  723. package/dist/server/log.js.map +1 -0
  724. package/dist/server/match.js +267 -0
  725. package/dist/server/match.js.map +1 -0
  726. package/dist/server/mode.d.ts +18 -9
  727. package/dist/server/mode.js +220 -0
  728. package/dist/server/mode.js.map +1 -0
  729. package/dist/{navigation-worker.js → server/navigation-worker.js} +1 -1
  730. package/dist/server/navigation-worker.js.map +1 -0
  731. package/dist/server/navigation.js +39 -0
  732. package/dist/server/navigation.js.map +1 -0
  733. package/dist/server/ops.d.ts +4 -0
  734. package/dist/server/ops.js +137 -0
  735. package/dist/server/ops.js.map +1 -0
  736. package/dist/server/packs.d.ts +3 -3
  737. package/dist/server/packs.js +32 -0
  738. package/dist/server/packs.js.map +1 -0
  739. package/dist/server/ratings.d.ts +5 -0
  740. package/dist/server/ratings.js +104 -0
  741. package/dist/server/ratings.js.map +1 -0
  742. package/dist/server/relay.d.ts +12 -2
  743. package/dist/server/relay.js +144 -0
  744. package/dist/server/relay.js.map +1 -0
  745. package/dist/server/rooms.d.ts +9 -2
  746. package/dist/server/rooms.js +442 -0
  747. package/dist/server/rooms.js.map +1 -0
  748. package/dist/server/seat.js +116 -0
  749. package/dist/server/seat.js.map +1 -0
  750. package/dist/server/seatSettings.d.ts +3 -3
  751. package/dist/server/seatSettings.js +63 -0
  752. package/dist/server/seatSettings.js.map +1 -0
  753. package/dist/server/secret.js +13 -0
  754. package/dist/server/secret.js.map +1 -0
  755. package/dist/server/start.d.ts +13 -6
  756. package/dist/server/start.js +76 -0
  757. package/dist/server/start.js.map +1 -0
  758. package/dist/server/websocket.d.ts +9 -1
  759. package/dist/server/websocket.js +306 -0
  760. package/dist/server/websocket.js.map +1 -0
  761. package/dist/server.js +15 -2861
  762. package/dist/session/can.js +26 -0
  763. package/dist/session/can.js.map +1 -0
  764. package/dist/session/commandReplay.d.ts +8 -2
  765. package/dist/session/commandReplay.js +293 -0
  766. package/dist/session/commandReplay.js.map +1 -0
  767. package/dist/session/debug.js +151 -0
  768. package/dist/session/debug.js.map +1 -0
  769. package/dist/session/delay.js +62 -0
  770. package/dist/session/delay.js.map +1 -0
  771. package/dist/session/delta.d.ts +14 -1
  772. package/dist/session/delta.js +407 -0
  773. package/dist/session/delta.js.map +1 -0
  774. package/dist/session/entityState.js +415 -0
  775. package/dist/session/entityState.js.map +1 -0
  776. package/dist/session/local.d.ts +47 -5
  777. package/dist/session/local.js +670 -0
  778. package/dist/session/local.js.map +1 -0
  779. package/dist/session/memory.d.ts +20 -2
  780. package/dist/session/memory.js +131 -0
  781. package/dist/session/memory.js.map +1 -0
  782. package/dist/session/protocol.d.ts +325 -31
  783. package/dist/session/protocol.js +55 -0
  784. package/dist/session/protocol.js.map +1 -0
  785. package/dist/session/remote.d.ts +74 -12
  786. package/dist/session/remote.js +1394 -0
  787. package/dist/session/remote.js.map +1 -0
  788. package/dist/session/replay.d.ts +11 -2
  789. package/dist/session/replay.js +160 -0
  790. package/dist/session/replay.js.map +1 -0
  791. package/dist/session/seed.js +12 -0
  792. package/dist/session/seed.js.map +1 -0
  793. package/dist/session/share.d.ts +5 -1
  794. package/dist/session/share.js +94 -0
  795. package/dist/session/share.js.map +1 -0
  796. package/dist/session/socket.d.ts +1 -1
  797. package/dist/session/socket.js +29 -0
  798. package/dist/session/socket.js.map +1 -0
  799. package/dist/session/wire.d.ts +5 -0
  800. package/dist/session/wire.js +84 -0
  801. package/dist/session/wire.js.map +1 -0
  802. package/dist/session/worker.d.ts +77 -12
  803. package/dist/session/worker.js +499 -0
  804. package/dist/session/worker.js.map +1 -0
  805. package/dist/shared.d.ts +31 -5
  806. package/dist/shared.js +166 -0
  807. package/dist/shared.js.map +1 -0
  808. package/dist/sides.d.ts +9 -3
  809. package/dist/sides.js +149 -0
  810. package/dist/sides.js.map +1 -0
  811. package/dist/sight.js +85 -0
  812. package/dist/sight.js.map +1 -0
  813. package/dist/simulate-worker.js +1 -1
  814. package/dist/simulate.d.ts +12 -8
  815. package/dist/{simulate-oXBiw1Ff.js → simulate.js} +10 -11
  816. package/dist/simulate.js.map +1 -0
  817. package/dist/smart.js +77 -0
  818. package/dist/smart.js.map +1 -0
  819. package/dist/spatial.d.ts +32 -16
  820. package/dist/spatial.js +234 -0
  821. package/dist/spatial.js.map +1 -0
  822. package/dist/spawning.d.ts +1 -0
  823. package/dist/spawning.js +224 -0
  824. package/dist/spawning.js.map +1 -0
  825. package/dist/stances.d.ts +6 -3
  826. package/dist/stances.js +169 -0
  827. package/dist/stances.js.map +1 -0
  828. package/dist/start.d.ts +10 -10
  829. package/dist/start.js +75 -0
  830. package/dist/start.js.map +1 -0
  831. package/dist/stats.d.ts +42 -16
  832. package/dist/stats.js +290 -0
  833. package/dist/stats.js.map +1 -0
  834. package/dist/summoned.d.ts +52 -0
  835. package/dist/summoned.js +38 -0
  836. package/dist/summoned.js.map +1 -0
  837. package/dist/summons.d.ts +10 -13
  838. package/dist/summons.js +271 -0
  839. package/dist/summons.js.map +1 -0
  840. package/dist/systems/abilities.js +224 -0
  841. package/dist/systems/abilities.js.map +1 -0
  842. package/dist/systems/combat.d.ts +35 -1
  843. package/dist/systems/combat.js +677 -0
  844. package/dist/systems/combat.js.map +1 -0
  845. package/dist/systems/combatTold.d.ts +3 -1
  846. package/dist/systems/combatTold.js +85 -0
  847. package/dist/systems/combatTold.js.map +1 -0
  848. package/dist/systems/construction.js +80 -0
  849. package/dist/systems/construction.js.map +1 -0
  850. package/dist/systems/economy.d.ts +0 -6
  851. package/dist/systems/economy.js +128 -0
  852. package/dist/systems/economy.js.map +1 -0
  853. package/dist/systems/fog.d.ts +1 -1
  854. package/dist/systems/fog.js +120 -0
  855. package/dist/systems/fog.js.map +1 -0
  856. package/dist/systems/life.js +32 -0
  857. package/dist/systems/life.js.map +1 -0
  858. package/dist/systems/movement.d.ts +24 -12
  859. package/dist/systems/movement.js +1247 -0
  860. package/dist/systems/movement.js.map +1 -0
  861. package/dist/systems/orders.js +64 -0
  862. package/dist/systems/orders.js.map +1 -0
  863. package/dist/systems/production.js +322 -0
  864. package/dist/systems/production.js.map +1 -0
  865. package/dist/systems/productionQueue.js +120 -0
  866. package/dist/systems/productionQueue.js.map +1 -0
  867. package/dist/systems/victory.d.ts +1 -1
  868. package/dist/systems/victory.js +56 -0
  869. package/dist/systems/victory.js.map +1 -0
  870. package/dist/talk.d.ts +6 -6
  871. package/dist/talk.js +153 -0
  872. package/dist/talk.js.map +1 -0
  873. package/dist/targeting.d.ts +142 -0
  874. package/dist/targeting.js +49 -0
  875. package/dist/targeting.js.map +1 -0
  876. package/dist/tech.d.ts +20 -3
  877. package/dist/tech.js +239 -0
  878. package/dist/tech.js.map +1 -0
  879. package/dist/techTree.d.ts +7 -0
  880. package/dist/techTree.js +90 -0
  881. package/dist/techTree.js.map +1 -0
  882. package/dist/terrain.d.ts +59 -7
  883. package/dist/terrain.js +389 -0
  884. package/dist/terrain.js.map +1 -0
  885. package/dist/terrainSave.d.ts +6 -0
  886. package/dist/terrainSave.js +74 -0
  887. package/dist/terrainSave.js.map +1 -0
  888. package/dist/testing.d.ts +8 -7
  889. package/dist/testing.js +13 -739
  890. package/dist/testing.js.map +1 -1
  891. package/dist/tiles.d.ts +1 -1
  892. package/dist/tiles.js +43 -0
  893. package/dist/tiles.js.map +1 -0
  894. package/dist/timers.d.ts +29 -4
  895. package/dist/timers.js +242 -0
  896. package/dist/timers.js.map +1 -0
  897. package/dist/tomes.d.ts +4 -4
  898. package/dist/tomes.js +94 -0
  899. package/dist/tomes.js.map +1 -0
  900. package/dist/trade.js +103 -0
  901. package/dist/trade.js.map +1 -0
  902. package/dist/transport.d.ts +6 -1
  903. package/dist/transport.js +281 -0
  904. package/dist/transport.js.map +1 -0
  905. package/dist/tunables.d.ts +10 -3
  906. package/dist/tunables.js +56 -0
  907. package/dist/tunables.js.map +1 -0
  908. package/dist/unitResources.d.ts +67 -0
  909. package/dist/unitResources.js +266 -0
  910. package/dist/unitResources.js.map +1 -0
  911. package/dist/upkeep.d.ts +6 -1
  912. package/dist/upkeep.js +26 -0
  913. package/dist/upkeep.js.map +1 -0
  914. package/dist/veterancy.d.ts +8 -3
  915. package/dist/veterancy.js +131 -0
  916. package/dist/veterancy.js.map +1 -0
  917. package/dist/vision.d.ts +36 -0
  918. package/dist/vision.js +133 -0
  919. package/dist/vision.js.map +1 -0
  920. package/dist/walls.d.ts +1 -1
  921. package/dist/walls.js +278 -0
  922. package/dist/walls.js.map +1 -0
  923. package/dist/world.d.ts +606 -88
  924. package/dist/world.js +1263 -0
  925. package/dist/world.js.map +1 -0
  926. package/package.json +2 -2
  927. package/dist/ai.js.map +0 -1
  928. package/dist/attributes.d.ts +0 -66
  929. package/dist/brain-BvVdUhX8.js +0 -7659
  930. package/dist/brain-BvVdUhX8.js.map +0 -1
  931. package/dist/builds-C6LfgvEU.js +0 -460
  932. package/dist/builds-C6LfgvEU.js.map +0 -1
  933. package/dist/coreComponents-syuh2fPG.js +0 -5149
  934. package/dist/coreComponents-syuh2fPG.js.map +0 -1
  935. package/dist/debugCommands-CzjrSm66.js +0 -14739
  936. package/dist/debugCommands-CzjrSm66.js.map +0 -1
  937. package/dist/determinism-BCymQwiE.js +0 -518
  938. package/dist/determinism-BCymQwiE.js.map +0 -1
  939. package/dist/game-DiJEN-Ks.js +0 -5800
  940. package/dist/game-DiJEN-Ks.js.map +0 -1
  941. package/dist/index.js.map +0 -1
  942. package/dist/inspect-D9dWHmZ0.js.map +0 -1
  943. package/dist/local-Dkovq42k.js +0 -1379
  944. package/dist/local-Dkovq42k.js.map +0 -1
  945. package/dist/missionRules-C-bGxm0Q.js.map +0 -1
  946. package/dist/navigation-worker.js.map +0 -1
  947. package/dist/packs-g5thvmGn.js +0 -3199
  948. package/dist/packs-g5thvmGn.js.map +0 -1
  949. package/dist/profiles-B3NS9jwk.js.map +0 -1
  950. package/dist/server.js.map +0 -1
  951. package/dist/simulate-oXBiw1Ff.js.map +0 -1
@@ -0,0 +1,99 @@
1
+ import { parseMap, serializeMap } from "./map/file.js";
2
+ import { decodeSave, encodeSave, saveWorld } from "./save.js";
3
+ import { createWorldFromMap, loadWorld } from "./game.js";
4
+ //#region src/scenario.ts
5
+ /**
6
+ * The format scenarios are written in now
7
+ *
8
+ * @beta
9
+ */
10
+ var SCENARIO_FORMAT = 1;
11
+ /**
12
+ * A scenario file as it is now, checked. Throws on what is wrong with it
13
+ *
14
+ * @beta
15
+ */
16
+ function readScenario(data) {
17
+ if (typeof data !== "object" || data === null || Array.isArray(data)) throw new Error("A scenario is an object");
18
+ const file = data;
19
+ if (typeof file.format !== "number" || file.format > 1) throw new Error(`A scenario of format ${file.format}, which this engine does not know`);
20
+ if (typeof file.name !== "string" || !file.name) throw new Error("A scenario has a name");
21
+ if (typeof file.game !== "string" || !file.game) throw new Error(`The scenario ${file.name} does not say which game it is of`);
22
+ if (file.kind === "map") parseMap(file.map);
23
+ else if (file.kind === "save") {
24
+ if (typeof file.save !== "string") throw new Error(`The scenario ${file.name} has no save in it`);
25
+ } else throw new Error(`The scenario ${file.name} is neither a map nor a save`);
26
+ return {
27
+ ...file,
28
+ format: 1
29
+ };
30
+ }
31
+ /**
32
+ * A map made for a test, as a scenario
33
+ *
34
+ * @beta
35
+ */
36
+ function scenarioOfMap(map, name, game, description) {
37
+ return {
38
+ format: 1,
39
+ name,
40
+ game,
41
+ ...description && { description },
42
+ kind: "map",
43
+ map: serializeMap(map)
44
+ };
45
+ }
46
+ /**
47
+ * A world at the moment that matters, as a scenario
48
+ *
49
+ * @beta
50
+ */
51
+ function scenarioOfWorld(world, name, description) {
52
+ return {
53
+ format: 1,
54
+ name,
55
+ game: world.registry.game,
56
+ ...description && { description },
57
+ kind: "save",
58
+ save: encodeSave(portableSave(world.registry, saveWorld(world)))
59
+ };
60
+ }
61
+ /** Only what is the game's: what an app keeps of its own in the world (`Component.portable` false) left out */
62
+ function portableSave(registry, save) {
63
+ const keep = (values) => values && Object.fromEntries(Object.entries(values).filter(([id]) => registry.component(id)?.portable !== false));
64
+ return {
65
+ ...save,
66
+ state: keep(save.state),
67
+ players: save.players.map((player) => ({
68
+ ...player,
69
+ state: keep(player.state)
70
+ })),
71
+ entities: save.entities.map((entity) => entity.components ? {
72
+ ...entity,
73
+ components: keep(entity.components)
74
+ } : entity),
75
+ detached: save.detached.map((entity) => entity.components ? {
76
+ ...entity,
77
+ components: keep(entity.components)
78
+ } : entity)
79
+ };
80
+ }
81
+ /**
82
+ * The world of a scenario, with the game's module: a map made into a world as a game would make it (with the seed 1,
83
+ * so that it is the same every time), or a saved world loaded as it was
84
+ *
85
+ * @beta
86
+ */
87
+ async function scenarioWorld(scenario, game) {
88
+ if (scenario.game !== game.id) throw new Error(`The scenario ${scenario.name} is of the game "${scenario.game}", not "${game.id}"`);
89
+ if (scenario.kind === "map") return createWorldFromMap({
90
+ map: parseMap(scenario.map),
91
+ rules: game,
92
+ seed: 1
93
+ });
94
+ return loadWorld(decodeSave(scenario.save), { rules: game });
95
+ }
96
+ //#endregion
97
+ export { SCENARIO_FORMAT, readScenario, scenarioOfMap, scenarioOfWorld, scenarioWorld };
98
+
99
+ //# sourceMappingURL=scenario.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario.js","names":[],"sources":["../src/scenario.ts"],"sourcesContent":["import { createWorldFromMap, type Rules, loadWorld } from './game'\nimport { type GameMap, type MapFile, parseMap, serializeMap } from './map'\nimport { decodeSave, encodeSave, saveWorld, type WorldSave } from './save'\nimport type { Registry } from './registry'\nimport type { World } from './world'\n\n/**\n * A situation for a test to start from, set up in the editor: a map made for it, or a world saved at the moment that\n * matters (in the editor's play mode). Kept in the tests' scenarios (`<scenarios>/<game>/<name>.scenario.json`: `tests/scenarios` unless the project says otherwise), or in a game's folder,\n * and loaded with what was named in the editor found by name. It says which format it was saved with, and is brought\n * up to date like a map (`readScenario`): one that no longer loads fails its test with what is wrong\n *\n * @beta\n */\nexport type ScenarioFile = {\n\tformat: number\n\tname: string\n\t/** The game it is of, by the id of its module */\n\tgame: string\n\t/** What it is for, to read in a list */\n\tdescription?: string\n} & ({ kind: 'map'; map: MapFile } | { kind: 'save'; save: string })\n\n/**\n * The format scenarios are written in now\n *\n * @beta\n */\nexport const SCENARIO_FORMAT = 1\n\n/**\n * A scenario file as it is now, checked. Throws on what is wrong with it\n *\n * @beta\n */\nexport function readScenario(data: unknown): ScenarioFile {\n\tif (typeof data !== 'object' || data === null || Array.isArray(data)) throw new Error('A scenario is an object')\n\tconst file = data as Partial<ScenarioFile> & Record<string, unknown>\n\tif (typeof file.format !== 'number' || file.format > SCENARIO_FORMAT)\n\t\tthrow new Error(`A scenario of format ${file.format}, which this engine does not know`)\n\tif (typeof file.name !== 'string' || !file.name) throw new Error('A scenario has a name')\n\tif (typeof file.game !== 'string' || !file.game) throw new Error(`The scenario ${file.name} does not say which game it is of`)\n\tif (file.kind === 'map') {\n\t\t// what a map file is is the map's to say: read now, so that a broken one says what is wrong at once\n\t\tparseMap(file.map)\n\t} else if (file.kind === 'save') {\n\t\tif (typeof file.save !== 'string') throw new Error(`The scenario ${file.name} has no save in it`)\n\t} else throw new Error(`The scenario ${file.name} is neither a map nor a save`)\n\treturn { ...(file as ScenarioFile), format: SCENARIO_FORMAT }\n}\n\n/**\n * A map made for a test, as a scenario\n *\n * @beta\n */\nexport function scenarioOfMap(map: GameMap, name: string, game: string, description?: string): ScenarioFile {\n\treturn { format: SCENARIO_FORMAT, name, game, ...(description && { description }), kind: 'map', map: serializeMap(map) }\n}\n\n/**\n * A world at the moment that matters, as a scenario\n *\n * @beta\n */\nexport function scenarioOfWorld(world: World, name: string, description?: string): ScenarioFile {\n\treturn {\n\t\tformat: SCENARIO_FORMAT,\n\t\tname,\n\t\tgame: world.registry.game,\n\t\t...(description && { description }),\n\t\tkind: 'save',\n\t\tsave: encodeSave(portableSave(world.registry, saveWorld(world)))\n\t}\n}\n\n/** Only what is the game's: what an app keeps of its own in the world (`Component.portable` false) left out */\nfunction portableSave(registry: Registry, save: WorldSave): WorldSave {\n\tconst keep = (values: Record<string, unknown> | undefined) =>\n\t\tvalues && Object.fromEntries(Object.entries(values).filter(([id]) => registry.component(id)?.portable !== false))\n\treturn {\n\t\t...save,\n\t\tstate: keep(save.state)!,\n\t\tplayers: save.players.map((player) => ({ ...player, state: keep(player.state)! })),\n\t\tentities: save.entities.map((entity) =>\n\t\t\tentity.components ? { ...entity, components: keep(entity.components as Record<string, unknown>) } : entity\n\t\t),\n\t\tdetached: save.detached.map((entity) =>\n\t\t\tentity.components ? { ...entity, components: keep(entity.components as Record<string, unknown>) } : entity\n\t\t)\n\t}\n}\n\n/**\n * The world of a scenario, with the game's module: a map made into a world as a game would make it (with the seed 1,\n * so that it is the same every time), or a saved world loaded as it was\n *\n * @beta\n */\nexport async function scenarioWorld(scenario: ScenarioFile, game: Rules): Promise<World> {\n\tif (scenario.game !== game.id) throw new Error(`The scenario ${scenario.name} is of the game \"${scenario.game}\", not \"${game.id}\"`)\n\tif (scenario.kind === 'map') return createWorldFromMap({ map: parseMap(scenario.map), rules: game, seed: 1 })\n\treturn loadWorld(decodeSave(scenario.save), { rules: game })\n}\n"],"mappings":";;;;;;;;;AA4BA,IAAa,kBAAkB;;;;;;AAO/B,SAAgB,aAAa,MAA6B;CACzD,IAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,MAAM,QAAQ,IAAI,GAAG,MAAM,IAAI,MAAM,yBAAyB;CAC/G,MAAM,OAAO;CACb,IAAI,OAAO,KAAK,WAAW,YAAY,KAAK,SAAA,GAC3C,MAAM,IAAI,MAAM,wBAAwB,KAAK,OAAO,kCAAkC;CACvF,IAAI,OAAO,KAAK,SAAS,YAAY,CAAC,KAAK,MAAM,MAAM,IAAI,MAAM,uBAAuB;CACxF,IAAI,OAAO,KAAK,SAAS,YAAY,CAAC,KAAK,MAAM,MAAM,IAAI,MAAM,gBAAgB,KAAK,KAAK,kCAAkC;CAC7H,IAAI,KAAK,SAAS,OAEjB,SAAS,KAAK,GAAG;MACX,IAAI,KAAK,SAAS,QACpB;MAAA,OAAO,KAAK,SAAS,UAAU,MAAM,IAAI,MAAM,gBAAgB,KAAK,KAAK,mBAAmB;CAAA,OAC1F,MAAM,IAAI,MAAM,gBAAgB,KAAK,KAAK,6BAA6B;CAC9E,OAAO;EAAE,GAAI;EAAuB,QAAA;CAAwB;AAC7D;;;;;;AAOA,SAAgB,cAAc,KAAc,MAAc,MAAc,aAAoC;CAC3G,OAAO;EAAE,QAAA;EAAyB;EAAM;EAAM,GAAI,eAAe,EAAE,YAAY;EAAI,MAAM;EAAO,KAAK,aAAa,GAAG;CAAE;AACxH;;;;;;AAOA,SAAgB,gBAAgB,OAAc,MAAc,aAAoC;CAC/F,OAAO;EACN,QAAA;EACA;EACA,MAAM,MAAM,SAAS;EACrB,GAAI,eAAe,EAAE,YAAY;EACjC,MAAM;EACN,MAAM,WAAW,aAAa,MAAM,UAAU,UAAU,KAAK,CAAC,CAAC;CAChE;AACD;;AAGA,SAAS,aAAa,UAAoB,MAA4B;CACrE,MAAM,QAAQ,WACb,UAAU,OAAO,YAAY,OAAO,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,SAAS,UAAU,EAAE,CAAC,EAAE,aAAa,KAAK,CAAC;CACjH,OAAO;EACN,GAAG;EACH,OAAO,KAAK,KAAK,KAAK;EACtB,SAAS,KAAK,QAAQ,KAAK,YAAY;GAAE,GAAG;GAAQ,OAAO,KAAK,OAAO,KAAK;EAAG,EAAE;EACjF,UAAU,KAAK,SAAS,KAAK,WAC5B,OAAO,aAAa;GAAE,GAAG;GAAQ,YAAY,KAAK,OAAO,UAAqC;EAAE,IAAI,MACrG;EACA,UAAU,KAAK,SAAS,KAAK,WAC5B,OAAO,aAAa;GAAE,GAAG;GAAQ,YAAY,KAAK,OAAO,UAAqC;EAAE,IAAI,MACrG;CACD;AACD;;;;;;;AAQA,eAAsB,cAAc,UAAwB,MAA6B;CACxF,IAAI,SAAS,SAAS,KAAK,IAAI,MAAM,IAAI,MAAM,gBAAgB,SAAS,KAAK,mBAAmB,SAAS,KAAK,UAAU,KAAK,GAAG,EAAE;CAClI,IAAI,SAAS,SAAS,OAAO,OAAO,mBAAmB;EAAE,KAAK,SAAS,SAAS,GAAG;EAAG,OAAO;EAAM,MAAM;CAAE,CAAC;CAC5G,OAAO,UAAU,WAAW,SAAS,IAAI,GAAG,EAAE,OAAO,KAAK,CAAC;AAC5D"}
@@ -17,8 +17,11 @@ export declare const PHASES: readonly SystemPhase[];
17
17
  * @beta
18
18
  */
19
19
  export interface SystemTiming {
20
+ /** The system's name */
20
21
  name: string;
22
+ /** The phase the system runs in */
21
23
  phase: SystemPhase;
24
+ /** Averaged milliseconds the system takes per tick */
22
25
  ms: number;
23
26
  }
24
27
  /**
@@ -0,0 +1,156 @@
1
+ //#region src/scheduler.ts
2
+ /**
3
+ * The parts of a tick, in the order they run. The player commands of the tick have been applied before any of them.
4
+ * - `commands`: first, for what reacts to the commands, or adds some of its own
5
+ * - `decide`: units choose and carry out what they do: abilities, orders
6
+ * - `move`: everything that moves, moves
7
+ * - `resolve`: what follows from where things ended up: attacks land, buildings go up, units are trained
8
+ * - `cleanup`: bookkeeping once everything happened: what runs out, what each team sees, who won
9
+ *
10
+ * @beta
11
+ */
12
+ var PHASES = [
13
+ "commands",
14
+ "decide",
15
+ "move",
16
+ "resolve",
17
+ "cleanup"
18
+ ];
19
+ /** Where a system without a phase runs: after everything, like the systems of game modules always did */
20
+ var DEFAULT_PHASE = "cleanup";
21
+ /** How much of each new tick goes into the averaged time of a system. Small: the panel shows a steady number */
22
+ var SMOOTHING = .02;
23
+ /**
24
+ * Runs the systems of a world in their order, each as often as it asks. The order is worked out whenever a system
25
+ * is added or taken out: by phase first, then by what each says it comes `before` or `after`, then in the order
26
+ * they were added. Measures each one while `profiling` is on, for the stats panel.
27
+ *
28
+ * @beta
29
+ */
30
+ var Scheduler = class {
31
+ added = [];
32
+ ordered = [];
33
+ timings = /* @__PURE__ */ new Map();
34
+ /** Whether to time each system. Costs two clock readings per system per tick, so it is off unless someone looks */
35
+ profiling = false;
36
+ constructor(systems) {
37
+ for (const system of systems) {
38
+ this.check(system);
39
+ this.added.push(system);
40
+ }
41
+ this.ordered = order(this.added).filter((system) => !this.off.has(system.name));
42
+ }
43
+ /** The systems, in the order they run */
44
+ get systems() {
45
+ return this.ordered;
46
+ }
47
+ /** Adds a system to a world that is already running, like a computer player */
48
+ add(system) {
49
+ this.check(system);
50
+ this.added.push(system);
51
+ this.ordered = order(this.added).filter((system) => !this.off.has(system.name));
52
+ }
53
+ /** Takes a system out by name. False when there is none of that name */
54
+ remove(name) {
55
+ const index = this.added.findIndex((system) => system.name === name);
56
+ if (index < 0) return false;
57
+ this.added.splice(index, 1);
58
+ this.ordered = order(this.added).filter((system) => !this.off.has(system.name));
59
+ this.timings.delete(name);
60
+ return true;
61
+ }
62
+ /** Runs one tick of every system that is due. Each is given the time since it last ran */
63
+ run(world) {
64
+ const { tick, dt } = world;
65
+ for (const system of this.ordered) {
66
+ const every = system.every ?? 1;
67
+ const due = every === 1 || tick % every === (system.offset ?? 0) % every;
68
+ if (!this.profiling) {
69
+ if (due) this.update(system, world, dt * every);
70
+ continue;
71
+ }
72
+ const start = performance.now();
73
+ if (due) this.update(system, world, dt * every);
74
+ const took = due ? performance.now() - start : 0;
75
+ const before = this.timings.get(system.name);
76
+ this.timings.set(system.name, before === void 0 ? took : before + (took - before) * SMOOTHING);
77
+ }
78
+ }
79
+ /** Runs a system. One that throws comes to what the world says of errors (`World.caught`): switched off, where it says so */
80
+ update(system, world, dt) {
81
+ try {
82
+ system.update?.(world, dt);
83
+ if (system.each) runEach(system, world, dt);
84
+ } catch (error) {
85
+ world.caught(error, {
86
+ kind: "system",
87
+ id: system.name
88
+ });
89
+ this.disable(system.name);
90
+ }
91
+ }
92
+ off = /* @__PURE__ */ new Set();
93
+ /** Switches a system off: it no longer runs, and stays off when others are added */
94
+ disable(name) {
95
+ this.off.add(name);
96
+ this.ordered = this.ordered.filter((system) => system.name !== name);
97
+ }
98
+ /** What each system takes, in the order they run. Empty until `profiling` has been on for a while */
99
+ timing() {
100
+ return this.ordered.flatMap((system) => {
101
+ const ms = this.timings.get(system.name);
102
+ return ms === void 0 ? [] : [{
103
+ name: system.name,
104
+ phase: system.phase ?? DEFAULT_PHASE,
105
+ ms
106
+ }];
107
+ });
108
+ }
109
+ check(system) {
110
+ if (this.added.some((other) => other.name === system.name)) throw new Error(`There is a system called "${system.name}" already`);
111
+ if (!system.update && !system.each) throw new Error(`System "${system.name}" has neither update nor each: nothing to run`);
112
+ if (system.every !== void 0 && (!Number.isInteger(system.every) || system.every < 1)) throw new Error(`System "${system.name}" runs every ${system.every} ticks: that has to be a whole number, 1 or more`);
113
+ }
114
+ };
115
+ /** Runs a system's `each` over what it says (`System.over`): the units, what has a component in the order of its id, or a test's */
116
+ function runEach(system, world, dt) {
117
+ const each = system.each;
118
+ const { over } = system;
119
+ if (over === void 0 || over === "units") for (const entity of world.units.values()) each.call(system, world, entity, dt);
120
+ else if (typeof over === "function") {
121
+ for (const entity of world.units.values()) if (over(entity, world)) each.call(system, world, entity, dt);
122
+ } else for (const entity of world.index.ordered(over)) each.call(system, world, entity, dt);
123
+ }
124
+ /**
125
+ * Sorts systems by phase, then by `before` and `after`, keeping the order they were given in where nothing says
126
+ * otherwise. Names that are not among them are passed over: what they named may have been left out of the game.
127
+ * The modules of a computer player's brain are put in their order by it too (`ai/brain.ts`)
128
+ */
129
+ function order(systems) {
130
+ const phaseOf = (system) => PHASES.indexOf(system.phase ?? DEFAULT_PHASE);
131
+ const byName = new Map(systems.map((system) => [system.name, system]));
132
+ const needs = new Map(systems.map((system) => [system, /* @__PURE__ */ new Set()]));
133
+ const rule = (first, then) => {
134
+ if (phaseOf(first) > phaseOf(then)) throw new Error(`System "${first.name}" cannot run before "${then.name}": it is in a later phase (${first.phase ?? DEFAULT_PHASE})`);
135
+ needs.get(then).add(first);
136
+ };
137
+ for (const system of systems) {
138
+ for (const name of system.before ?? []) if (byName.has(name)) rule(system, byName.get(name));
139
+ for (const name of system.after ?? []) if (byName.has(name)) rule(byName.get(name), system);
140
+ }
141
+ const result = [];
142
+ const done = /* @__PURE__ */ new Set();
143
+ const waiting = [...systems].sort((a, b) => phaseOf(a) - phaseOf(b));
144
+ while (waiting.length) {
145
+ const index = waiting.findIndex((system) => [...needs.get(system)].every((first) => done.has(first)));
146
+ if (index < 0) throw new Error(`Systems wait for each other in a circle: ${waiting.map((system) => system.name).join(", ")}`);
147
+ const [next] = waiting.splice(index, 1);
148
+ done.add(next);
149
+ result.push(next);
150
+ }
151
+ return result;
152
+ }
153
+ //#endregion
154
+ export { PHASES, Scheduler, order };
155
+
156
+ //# sourceMappingURL=scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.js","names":[],"sources":["../src/scheduler.ts"],"sourcesContent":["import type { System, SystemPhase } from './registry'\nimport type { World } from './world'\n\n/**\n * The parts of a tick, in the order they run. The player commands of the tick have been applied before any of them.\n * - `commands`: first, for what reacts to the commands, or adds some of its own\n * - `decide`: units choose and carry out what they do: abilities, orders\n * - `move`: everything that moves, moves\n * - `resolve`: what follows from where things ended up: attacks land, buildings go up, units are trained\n * - `cleanup`: bookkeeping once everything happened: what runs out, what each team sees, who won\n *\n * @beta\n */\nexport const PHASES: readonly SystemPhase[] = ['commands', 'decide', 'move', 'resolve', 'cleanup']\n\n/** Where a system without a phase runs: after everything, like the systems of game modules always did */\nconst DEFAULT_PHASE: SystemPhase = 'cleanup'\n\n/** How much of each new tick goes into the averaged time of a system. Small: the panel shows a steady number */\nconst SMOOTHING = 0.02\n\n/**\n * What the scheduler measured of a system: milliseconds per tick, averaged, with the ticks it does not run counted as nothing\n *\n * @beta\n */\nexport interface SystemTiming {\n\t/** The system's name */\n\tname: string\n\t/** The phase the system runs in */\n\tphase: SystemPhase\n\t/** Averaged milliseconds the system takes per tick */\n\tms: number\n}\n\n/**\n * Runs the systems of a world in their order, each as often as it asks. The order is worked out whenever a system\n * is added or taken out: by phase first, then by what each says it comes `before` or `after`, then in the order\n * they were added. Measures each one while `profiling` is on, for the stats panel.\n *\n * @beta\n */\nexport class Scheduler {\n\tprivate readonly added: System[] = []\n\tprivate ordered: System[] = []\n\tprivate readonly timings = new Map<string, number>()\n\t/** Whether to time each system. Costs two clock readings per system per tick, so it is off unless someone looks */\n\tprofiling = false\n\n\tconstructor(systems: System[]) {\n\t\tfor (const system of systems) {\n\t\t\tthis.check(system)\n\t\t\tthis.added.push(system)\n\t\t}\n\t\tthis.ordered = order(this.added).filter((system) => !this.off.has(system.name))\n\t}\n\n\t/** The systems, in the order they run */\n\tget systems(): readonly System[] {\n\t\treturn this.ordered\n\t}\n\n\t/** Adds a system to a world that is already running, like a computer player */\n\tadd(system: System): void {\n\t\tthis.check(system)\n\t\tthis.added.push(system)\n\t\tthis.ordered = order(this.added).filter((system) => !this.off.has(system.name))\n\t}\n\n\t/** Takes a system out by name. False when there is none of that name */\n\tremove(name: string): boolean {\n\t\tconst index = this.added.findIndex((system) => system.name === name)\n\t\tif (index < 0) return false\n\t\tthis.added.splice(index, 1)\n\t\tthis.ordered = order(this.added).filter((system) => !this.off.has(system.name))\n\t\tthis.timings.delete(name)\n\t\treturn true\n\t}\n\n\t/** Runs one tick of every system that is due. Each is given the time since it last ran */\n\trun(world: World): void {\n\t\tconst { tick, dt } = world\n\t\tfor (const system of this.ordered) {\n\t\t\tconst every = system.every ?? 1\n\t\t\tconst due = every === 1 || tick % every === (system.offset ?? 0) % every\n\t\t\tif (!this.profiling) {\n\t\t\t\tif (due) this.update(system, world, dt * every)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst start = performance.now()\n\t\t\tif (due) this.update(system, world, dt * every)\n\t\t\tconst took = due ? performance.now() - start : 0\n\t\t\tconst before = this.timings.get(system.name)\n\t\t\tthis.timings.set(system.name, before === undefined ? took : before + (took - before) * SMOOTHING)\n\t\t}\n\t}\n\n\t/** Runs a system. One that throws comes to what the world says of errors (`World.caught`): switched off, where it says so */\n\tprivate update(system: System, world: World, dt: number): void {\n\t\ttry {\n\t\t\tsystem.update?.(world, dt)\n\t\t\tif (system.each) runEach(system, world, dt)\n\t\t} catch (error) {\n\t\t\tworld.caught(error, { kind: 'system', id: system.name })\n\t\t\tthis.disable(system.name)\n\t\t}\n\t}\n\n\tprivate readonly off = new Set<string>()\n\n\t/** Switches a system off: it no longer runs, and stays off when others are added */\n\tdisable(name: string): void {\n\t\tthis.off.add(name)\n\t\tthis.ordered = this.ordered.filter((system) => system.name !== name)\n\t}\n\n\t/** What each system takes, in the order they run. Empty until `profiling` has been on for a while */\n\ttiming(): SystemTiming[] {\n\t\treturn this.ordered.flatMap((system) => {\n\t\t\tconst ms = this.timings.get(system.name)\n\t\t\treturn ms === undefined ? [] : [{ name: system.name, phase: system.phase ?? DEFAULT_PHASE, ms }]\n\t\t})\n\t}\n\n\tprivate check(system: System): void {\n\t\tif (this.added.some((other) => other.name === system.name)) throw new Error(`There is a system called \"${system.name}\" already`)\n\t\tif (!system.update && !system.each) throw new Error(`System \"${system.name}\" has neither update nor each: nothing to run`)\n\t\tif (system.every !== undefined && (!Number.isInteger(system.every) || system.every < 1))\n\t\t\tthrow new Error(`System \"${system.name}\" runs every ${system.every} ticks: that has to be a whole number, 1 or more`)\n\t}\n}\n\n/** Runs a system's `each` over what it says (`System.over`): the units, what has a component in the order of its id, or a test's */\nfunction runEach(system: System, world: World, dt: number): void {\n\tconst each = system.each!\n\tconst { over } = system\n\tif (over === undefined || over === 'units') {\n\t\tfor (const entity of world.units.values()) each.call(system, world, entity, dt)\n\t} else if (typeof over === 'function') {\n\t\tfor (const entity of world.units.values()) if (over(entity, world)) each.call(system, world, entity, dt)\n\t} else {\n\t\tfor (const entity of world.index.ordered(over)) each.call(system, world, entity, dt)\n\t}\n}\n\n/** What `order` sorts: a system, or anything else that runs in turn and says what it comes before and after (a brain's modules) */\nexport interface Ordered {\n\tname: string\n\tphase?: SystemPhase\n\tbefore?: string[]\n\tafter?: string[]\n}\n\n/**\n * Sorts systems by phase, then by `before` and `after`, keeping the order they were given in where nothing says\n * otherwise. Names that are not among them are passed over: what they named may have been left out of the game.\n * The modules of a computer player's brain are put in their order by it too (`ai/brain.ts`)\n */\nexport function order<T extends Ordered>(systems: T[]): T[] {\n\tconst phaseOf = (system: T) => PHASES.indexOf(system.phase ?? DEFAULT_PHASE)\n\tconst byName = new Map(systems.map((system) => [system.name, system]))\n\t// for each system, the ones that have to run before it\n\tconst needs = new Map<T, Set<T>>(systems.map((system) => [system, new Set()]))\n\tconst rule = (first: T, then: T) => {\n\t\tif (phaseOf(first) > phaseOf(then))\n\t\t\tthrow new Error(`System \"${first.name}\" cannot run before \"${then.name}\": it is in a later phase (${first.phase ?? DEFAULT_PHASE})`)\n\t\tneeds.get(then)!.add(first)\n\t}\n\tfor (const system of systems) {\n\t\tfor (const name of system.before ?? []) if (byName.has(name)) rule(system, byName.get(name)!)\n\t\tfor (const name of system.after ?? []) if (byName.has(name)) rule(byName.get(name)!, system)\n\t}\n\n\tconst result: T[] = []\n\tconst done = new Set<T>()\n\t// phase by phase, the first system in the given order that has nothing left to wait for\n\tconst waiting = [...systems].sort((a, b) => phaseOf(a) - phaseOf(b))\n\twhile (waiting.length) {\n\t\tconst index = waiting.findIndex((system) => [...needs.get(system)!].every((first) => done.has(first)))\n\t\tif (index < 0) throw new Error(`Systems wait for each other in a circle: ${waiting.map((system) => system.name).join(', ')}`)\n\t\tconst [next] = waiting.splice(index, 1)\n\t\tdone.add(next)\n\t\tresult.push(next)\n\t}\n\treturn result\n}\n"],"mappings":"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"}
package/dist/score.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { type Component } from './components';
2
2
  import type { PlayerId } from './entity';
3
3
  import type { EventKey } from './events';
4
- import type { GameModule } from './game';
4
+ import type { Rules } from './game';
5
5
  import type { System } from './registry';
6
6
  import type { World } from './world';
7
7
  /**
@@ -52,7 +52,7 @@ export interface ScoreSource {
52
52
  count(payload: any, world: World): ScoreCounted;
53
53
  }
54
54
  /**
55
- * A number the score keeps for each player (`GameRules.score`, `defineStat`): what it is called, how it adds up, where
55
+ * A number the score keeps for each player (`RuleSettings.score`, `defineStat`): what it is called, how it adds up, where
56
56
  * it comes from, and how it is shown. One with no source is counted by the game's code alone (`world.score.add`)
57
57
  *
58
58
  * @beta
@@ -77,7 +77,7 @@ export interface ScoreStatDef {
77
77
  sample?(world: World, player: PlayerId): number | undefined;
78
78
  /** Kept by what it was counted of too (`ScoreCount.type`): units killed by unit type, abilities cast by ability */
79
79
  byType?: boolean;
80
- /** On the timeline: sampled every `ScoreRules.every` seconds, for a screen's graph */
80
+ /** On the timeline: sampled every `ScoreSettings.every` seconds, for a screen's graph */
81
81
  timeline?: boolean;
82
82
  /** How its number is written: `number` (when left out), `decimal`, `percent` (0 to 1), `time` (seconds) */
83
83
  format?: ScoreFormat;
@@ -92,14 +92,14 @@ export interface ScoreStatDef {
92
92
  */
93
93
  export type ScoreAudience = 'own' | 'allies' | 'everyone' | 'none' | ((world: World, viewer: PlayerId | undefined, player: PlayerId) => boolean);
94
94
  /**
95
- * What a game counts of its players (`GameRules.score`): the stats, how often the timeline is sampled, and who is told
95
+ * What a game counts of its players (`RuleSettings.score`): the stats, how often the timeline is sampled, and who is told
96
96
  * what while the game goes on and after it ended. `presetScore()` makes one of the engine's stats
97
97
  *
98
98
  * @beta
99
99
  */
100
- export interface ScoreRules {
100
+ export interface ScoreSettings {
101
101
  /** The stats, or what makes them of the game (the engine's set makes one of each resource) */
102
- stats: readonly ScoreStatDef[] | ((game: GameModule) => readonly ScoreStatDef[]);
102
+ stats: readonly ScoreStatDef[] | ((game: Rules) => readonly ScoreStatDef[]);
103
103
  /** Seconds between two points of the timeline: 10 when left out, 0 for no timeline */
104
104
  every?: number;
105
105
  /**
@@ -128,7 +128,7 @@ export interface ScoreRules {
128
128
  */
129
129
  export interface ResolvedScore {
130
130
  /** The rules as the game gave them */
131
- readonly rules: ScoreRules;
131
+ readonly rules: ScoreSettings;
132
132
  /** Every stat, made */
133
133
  readonly stats: readonly ScoreStatDef[];
134
134
  /** Every stat by its id */
@@ -173,7 +173,7 @@ export declare const scoreData: Component<ScoreData>;
173
173
  export interface ScoreState {
174
174
  /** The tick the numbers stood at */
175
175
  tick: number;
176
- /** The game is decided: these are the numbers it ended with, told as `ScoreRules.end` says */
176
+ /** The game is decided: these are the numbers it ended with, told as `ScoreSettings.end` says */
177
177
  final: boolean;
178
178
  /** Whose numbers are in it */
179
179
  players: PlayerId[];
@@ -204,15 +204,15 @@ export interface ScoreLineState {
204
204
  */
205
205
  export declare function scoreOn<T>(event: EventKey<T>, count: (payload: T, world: World) => ScoreCounted): ScoreSource;
206
206
  /**
207
- * A stat of the game's own, for `GameRules.score`: `defineStat('towersLost', { label: 'Towers lost', category: 'units',
207
+ * A stat of the game's own, for `RuleSettings.score`: `defineStat({ id: 'towersLost', label: 'Towers lost', category: 'units',
208
208
  * from: scoreOn(entityDied, ({ entity }) => entity.def.tags?.includes('tower') ? entity.owner : undefined) })`.
209
209
  * One with no source is counted in code (`world.score.add(player, 'towersLost')`)
210
210
  *
211
- * @beta
211
+ * @public
212
212
  */
213
- export declare function defineStat(id: string, def?: Omit<ScoreStatDef, 'id'>): ScoreStatDef;
213
+ export declare function defineStat(def: ScoreStatDef): ScoreStatDef;
214
214
  /** The score's rules with their stats made of the game, checked: an id twice, or a timeline of no length, throws */
215
- export declare function resolveScore(rules: ScoreRules | undefined | null, game: GameModule): ResolvedScore | null;
215
+ export declare function resolveScore(rules: ScoreSettings | undefined | null, game: Rules): ResolvedScore | null;
216
216
  /**
217
217
  * The score of a world (`world.score`): counts what its stats are told of the world's events, takes the gauges and
218
218
  * the timeline's points, and is what the game's code counts with, and reads, in the rules. What it keeps is the
@@ -276,14 +276,14 @@ export declare function scoreSystem(world: World): System;
276
276
  *
277
277
  * @beta
278
278
  */
279
- export declare function engineStats(game: GameModule): ScoreStatDef[];
279
+ export declare function engineStats(game: Rules): ScoreStatDef[];
280
280
  /**
281
281
  * What `presetScore` is given: which of the engine's stats (`only`, or all but `without`), stats of the game's own
282
282
  * after them, and the score's other rules
283
283
  *
284
284
  * @beta
285
285
  */
286
- export interface PresetScoreOptions extends Omit<ScoreRules, 'stats'> {
286
+ export interface PresetScoreOptions extends Omit<ScoreSettings, 'stats'> {
287
287
  /** Only these of the engine's stats, by id (`gathered` for every `gathered.<resource>`) */
288
288
  only?: readonly string[];
289
289
  /** The engine's stats but these, by id or as `only` */
@@ -292,15 +292,15 @@ export interface PresetScoreOptions extends Omit<ScoreRules, 'stats'> {
292
292
  stats?: readonly ScoreStatDef[];
293
293
  }
294
294
  /**
295
- * The engine's score, for `GameRules.score`: a classic RTS score screen. Units produced, killed and lost, buildings
295
+ * The engine's score, for `RuleSettings.score`: a classic RTS score screen. Units produced, killed and lost, buildings
296
296
  * built, razed and lost, the army and the largest, heroes killed and lost, the highest hero level, experience, creeps
297
297
  * killed, items obtained, abilities cast, damage dealt and taken, healing, and of each resource what was gathered,
298
298
  * spent and lost to upkeep, the bounty and what went between allies
299
299
  *
300
- * @beta
300
+ * @public
301
301
  */
302
- export declare function presetScore(options?: PresetScoreOptions): ScoreRules;
302
+ export declare function presetScore(options?: PresetScoreOptions): ScoreSettings;
303
303
  /** The score the player is told (`Snapshot.score`) */
304
- export declare const scorePart: import("./replication").SnapshotPart<keyof import(".").Snapshot>;
304
+ export declare const scorePart: import("./replication").SnapshotField<keyof import(".").Snapshot>;
305
305
  /** The score's line over time the player is told (`Snapshot.scoreLine`) */
306
- export declare const scoreLinePart: import("./replication").SnapshotPart<keyof import(".").Snapshot>;
306
+ export declare const scoreLinePart: import("./replication").SnapshotField<keyof import(".").Snapshot>;