@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 @@
1
+ {"version":3,"file":"share.js","names":[],"sources":["../../src/session/share.ts"],"sourcesContent":["import type { PlayerId } from '#engine/entity'\nimport type { World } from '#engine/world'\nimport { SessionHost, type Transport } from './remote'\nimport { openSocket } from './socket'\n\n/*\n * A game played in the page, watched from others: through a relay (the server's `WatchRelay`), as a page cannot take\n * connections. The page shares its world under a key; the relay tells it of each watcher, and the page's own host\n * seats them at the world as observers, the way a server seats those who watch its games. The world is stepped by the\n * page's game as it always is: the host only sends (`SessionHost.publish`)\n */\n\n/**\n * What a page says to the relay, before it watches; and what a sharing page says all along\n *\n * @internal\n */\nexport type RelayRequest =\n\t/** The page plays a game under `key`, and lets others watch it */\n\t| { type: 'share'; key: string; name: string }\n\t/** The sharing page's game, for one watcher */\n\t| { type: 'send'; to: number; text: string }\n\t/** Watches what is shared under `key`, now or once it is */\n\t| { type: 'watch'; key: string }\n\n/**\n * What the relay tells pages besides the game itself\n *\n * @beta\n */\nexport type RelayNotice =\n\t/** To a sharing page: it shares under `key` now */\n\t| { type: 'shared'; key: string }\n\t/** To a sharing page: another page shares under that key already */\n\t| { type: 'taken'; key: string }\n\t/** To a sharing page: someone watches, by the id the relay gave them */\n\t| { type: 'watcher'; id: number }\n\t/** To a sharing page: what a watcher said (that it got a tick, a ping) */\n\t| { type: 'from'; watcher: number; text: string }\n\t/** To a sharing page: a watcher left */\n\t| { type: 'gone'; watcher: number }\n\t/** To a watcher: nothing is shared under the key right now. The game comes once it is */\n\t| { type: 'waiting'; key: string }\n\t/** To a watcher: the game shared ended. The next one under the key comes when it is shared */\n\t| { type: 'ended'; key: string }\n\n/**\n * What `shareGame` is given: the relay's address, the key and name of the share and whose side watchers see\n *\n * @beta\n */\nexport interface ShareOptions {\n\t/** The relay's address, `ws://host:port` */\n\turl: string\n\t/** What watchers ask for: the same for every game of a campaign, so they stay from one mission to the next */\n\tkey: string\n\t/** What it is, for the relay's log */\n\tname: string\n\t/** Whose side watchers see it from: they get that player's lines and cinematics, and see everything besides */\n\tplayer: PlayerId\n\t/** Snapshots a second to each watcher. 20 when left out */\n\tsendRate?: number\n}\n\n/**\n * A game shared for watching (`shareGame`)\n *\n * @beta\n */\nexport interface SharedGame {\n\t/** `shared` once the relay has it; `taken` when another page shares under the key; `closed` once it is over */\n\treadonly state: 'shared' | 'taken' | 'closed'\n\t/** How many watch it now */\n\treadonly watchers: number\n\t/** Told whenever the state or the number of watchers changes */\n\tonChange(handler: () => void): void\n\t/** Stops sharing: the watchers are told it ended */\n\tclose(): void\n}\n\n/** How often the host looks whether the world went on, a second: it sends at its own rate */\nconst LOOKS = 30\n\n/**\n * Shares the page's world through a relay, for others to watch. Fails when the relay cannot be reached\n *\n * @beta\n */\nexport async function shareGame(world: World, options: ShareOptions): Promise<SharedGame> {\n\tconst relay = await openSocket(options.url)\n\tconst host = new SessionHost(world, { sendRate: options.sendRate })\n\t/** Each watcher's end of the connection, as the host holds it: what the relay brings from them goes to it */\n\tconst ends = new Map<number, { message: (text: string) => void; closed: () => void }>()\n\tlet state: SharedGame['state'] = 'shared'\n\tlet changed: () => void = () => {}\n\tconst ask = (request: RelayRequest) => relay.send(JSON.stringify(request))\n\n\tconst seat = (id: number) => {\n\t\tconst end = { message: (_text: string) => {}, closed: () => {} }\n\t\tends.set(id, end)\n\t\tconst transport: Transport = {\n\t\t\tsend: (text) => ask({ type: 'send', to: id, text }),\n\t\t\tonMessage: (handler) => (end.message = handler),\n\t\t\tonClose: (handler) => (end.closed = handler),\n\t\t\t// a watcher leaves by closing their own connection: the relay says so\n\t\t\tclose: () => {}\n\t\t}\n\t\thost.connect(options.player, transport, { readOnly: true, observer: true })\n\t}\n\n\tlet last = performance.now()\n\tconst timer = setInterval(() => {\n\t\tconst now = performance.now()\n\t\thost.publish((now - last) / 1000)\n\t\tlast = now\n\t}, 1000 / LOOKS)\n\n\t/** Over once: closed, or never shared as the key was taken */\n\tconst stop = (next: 'closed' | 'taken' = 'closed') => {\n\t\tif (state !== 'shared') return\n\t\tclearInterval(timer)\n\t\thost.dispose()\n\t\tends.clear()\n\t\tstate = next\n\t\tchanged()\n\t}\n\n\trelay.onMessage((text) => {\n\t\tconst notice = JSON.parse(text) as RelayNotice\n\t\tif (notice.type === 'taken') {\n\t\t\tstop('taken')\n\t\t\trelay.close()\n\t\t} else if (notice.type === 'watcher') {\n\t\t\tseat(notice.id)\n\t\t\tchanged()\n\t\t} else if (notice.type === 'from') ends.get(notice.watcher)?.message(notice.text)\n\t\telse if (notice.type === 'gone') {\n\t\t\tends.get(notice.watcher)?.closed()\n\t\t\tends.delete(notice.watcher)\n\t\t\tchanged()\n\t\t}\n\t})\n\trelay.onClose(() => stop())\n\task({ type: 'share', key: options.key, name: options.name })\n\n\treturn {\n\t\tget state() {\n\t\t\treturn state\n\t\t},\n\t\tget watchers() {\n\t\t\treturn ends.size\n\t\t},\n\t\tonChange(handler) {\n\t\t\tchanged = handler\n\t\t},\n\t\tclose() {\n\t\t\tstop()\n\t\t\trelay.close()\n\t\t}\n\t}\n}\n"],"mappings":";;;;AAiFA,IAAM,QAAQ;;;;;;AAOd,eAAsB,UAAU,OAAc,SAA4C;CACzF,MAAM,QAAQ,MAAM,WAAW,QAAQ,GAAG;CAC1C,MAAM,OAAO,IAAI,YAAY,OAAO,EAAE,UAAU,QAAQ,SAAS,CAAC;;CAElE,MAAM,uBAAO,IAAI,IAAqE;CACtF,IAAI,QAA6B;CACjC,IAAI,gBAA4B,CAAC;CACjC,MAAM,OAAO,YAA0B,MAAM,KAAK,KAAK,UAAU,OAAO,CAAC;CAEzE,MAAM,QAAQ,OAAe;EAC5B,MAAM,MAAM;GAAE,UAAU,UAAkB,CAAC;GAAG,cAAc,CAAC;EAAE;EAC/D,KAAK,IAAI,IAAI,GAAG;EAQhB,KAAK,QAAQ,QAAQ,QAAQ;GAN5B,OAAO,SAAS,IAAI;IAAE,MAAM;IAAQ,IAAI;IAAI;GAAK,CAAC;GAClD,YAAY,YAAa,IAAI,UAAU;GACvC,UAAU,YAAa,IAAI,SAAS;GAEpC,aAAa,CAAC;EAEc,GAAW;GAAE,UAAU;GAAM,UAAU;EAAK,CAAC;CAC3E;CAEA,IAAI,OAAO,YAAY,IAAI;CAC3B,MAAM,QAAQ,kBAAkB;EAC/B,MAAM,MAAM,YAAY,IAAI;EAC5B,KAAK,SAAS,MAAM,QAAQ,GAAI;EAChC,OAAO;CACR,GAAG,MAAO,KAAK;;CAGf,MAAM,QAAQ,OAA2B,aAAa;EACrD,IAAI,UAAU,UAAU;EACxB,cAAc,KAAK;EACnB,KAAK,QAAQ;EACb,KAAK,MAAM;EACX,QAAQ;EACR,QAAQ;CACT;CAEA,MAAM,WAAW,SAAS;EACzB,MAAM,SAAS,KAAK,MAAM,IAAI;EAC9B,IAAI,OAAO,SAAS,SAAS;GAC5B,KAAK,OAAO;GACZ,MAAM,MAAM;EACb,OAAO,IAAI,OAAO,SAAS,WAAW;GACrC,KAAK,OAAO,EAAE;GACd,QAAQ;EACT,OAAO,IAAI,OAAO,SAAS,QAAQ,KAAK,IAAI,OAAO,OAAO,CAAC,EAAE,QAAQ,OAAO,IAAI;OAC3E,IAAI,OAAO,SAAS,QAAQ;GAChC,KAAK,IAAI,OAAO,OAAO,CAAC,EAAE,OAAO;GACjC,KAAK,OAAO,OAAO,OAAO;GAC1B,QAAQ;EACT;CACD,CAAC;CACD,MAAM,cAAc,KAAK,CAAC;CAC1B,IAAI;EAAE,MAAM;EAAS,KAAK,QAAQ;EAAK,MAAM,QAAQ;CAAK,CAAC;CAE3D,OAAO;EACN,IAAI,QAAQ;GACX,OAAO;EACR;EACA,IAAI,WAAW;GACd,OAAO,KAAK;EACb;EACA,SAAS,SAAS;GACjB,UAAU;EACX;EACA,QAAQ;GACP,KAAK;GACL,MAAM,MAAM;EACb;CACD;AACD"}
@@ -3,6 +3,6 @@ import type { Transport } from './remote';
3
3
  * The player's end of a connection to a server, over a WebSocket: what `connect` and a server's lobby talk through.
4
4
  * Resolves once the connection is open; fails when it cannot be made
5
5
  *
6
- * @beta
6
+ * @public
7
7
  */
8
8
  export declare function openSocket(url: string): Promise<Transport>;
@@ -0,0 +1,29 @@
1
+ //#region src/session/socket.ts
2
+ /**
3
+ * The player's end of a connection to a server, over a WebSocket: what `connect` and a server's lobby talk through.
4
+ * Resolves once the connection is open; fails when it cannot be made
5
+ *
6
+ * @public
7
+ */
8
+ function openSocket(url) {
9
+ return new Promise((resolve, reject) => {
10
+ const socket = new WebSocket(url);
11
+ let handler = () => {};
12
+ let closed = () => {};
13
+ socket.onmessage = (event) => handler(String(event.data));
14
+ socket.onclose = () => closed();
15
+ socket.onerror = () => reject(/* @__PURE__ */ new Error(`Could not connect to ${url}`));
16
+ socket.onopen = () => resolve({
17
+ send: (message) => {
18
+ if (socket.readyState === WebSocket.OPEN) socket.send(message);
19
+ },
20
+ onMessage: (next) => handler = next,
21
+ onClose: (next) => closed = next,
22
+ close: () => socket.close()
23
+ });
24
+ });
25
+ }
26
+ //#endregion
27
+ export { openSocket };
28
+
29
+ //# sourceMappingURL=socket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket.js","names":[],"sources":["../../src/session/socket.ts"],"sourcesContent":["import type { Transport } from './remote'\n\n/**\n * The player's end of a connection to a server, over a WebSocket: what `connect` and a server's lobby talk through.\n * Resolves once the connection is open; fails when it cannot be made\n *\n * @public\n */\nexport function openSocket(url: string): Promise<Transport> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst socket = new WebSocket(url)\n\t\tlet handler: (message: string) => void = () => {}\n\t\tlet closed: () => void = () => {}\n\t\tsocket.onmessage = (event) => handler(String(event.data))\n\t\tsocket.onclose = () => closed()\n\t\tsocket.onerror = () => reject(new Error(`Could not connect to ${url}`))\n\t\tsocket.onopen = () =>\n\t\t\tresolve({\n\t\t\t\tsend: (message) => {\n\t\t\t\t\tif (socket.readyState === WebSocket.OPEN) socket.send(message)\n\t\t\t\t},\n\t\t\t\tonMessage: (next) => (handler = next),\n\t\t\t\tonClose: (next) => (closed = next),\n\t\t\t\tclose: () => socket.close()\n\t\t\t})\n\t})\n}\n"],"mappings":";;;;;;;AAQA,SAAgB,WAAW,KAAiC;CAC3D,OAAO,IAAI,SAAS,SAAS,WAAW;EACvC,MAAM,SAAS,IAAI,UAAU,GAAG;EAChC,IAAI,gBAA2C,CAAC;EAChD,IAAI,eAA2B,CAAC;EAChC,OAAO,aAAa,UAAU,QAAQ,OAAO,MAAM,IAAI,CAAC;EACxD,OAAO,gBAAgB,OAAO;EAC9B,OAAO,gBAAgB,uBAAO,IAAI,MAAM,wBAAwB,KAAK,CAAC;EACtE,OAAO,eACN,QAAQ;GACP,OAAO,YAAY;IAClB,IAAI,OAAO,eAAe,UAAU,MAAM,OAAO,KAAK,OAAO;GAC9D;GACA,YAAY,SAAU,UAAU;GAChC,UAAU,SAAU,SAAS;GAC7B,aAAa,OAAO,MAAM;EAC3B,CAAC;CACH,CAAC;AACF"}
@@ -81,13 +81,18 @@ export type GameHostMessage = {
81
81
  * @beta
82
82
  */
83
83
  export interface DebugAsk {
84
+ /** The entity or object to inspect, or null to stop inspecting */
84
85
  inspect?: InspectTarget | null;
86
+ /** A value to change in the inspected object: the path to it and the new number or boolean */
85
87
  set?: {
86
88
  path: (string | number)[];
87
89
  value: number | boolean;
88
90
  };
91
+ /** Whether to send the list of inspectable things */
89
92
  listing?: boolean;
93
+ /** Whether to send the world's log lines */
90
94
  logging?: boolean;
95
+ /** Asks the world to clear its kept log lines */
91
96
  clearLog?: true;
92
97
  }
93
98
  /**
@@ -0,0 +1,84 @@
1
+ //#region src/session/wire.ts
2
+ /** The game's own messages to a player: the rest are a server's or a relay's (`ServerToPlayer`) */
3
+ var GAME_TYPES = /* @__PURE__ */ new Set([
4
+ "welcome",
5
+ "pong",
6
+ "ground",
7
+ "failed",
8
+ "delta",
9
+ "debug"
10
+ ]);
11
+ /**
12
+ * Whether a message to a player is a server's or a relay's, not the game's
13
+ *
14
+ * @internal
15
+ */
16
+ var isServerMessage = (message) => !GAME_TYPES.has(message.type);
17
+ /** Every type a player is sent, each said once: what is not one of them is not read */
18
+ var HOST_TYPES = {
19
+ welcome: true,
20
+ pong: true,
21
+ ground: true,
22
+ failed: true,
23
+ delta: true,
24
+ debug: true,
25
+ lobby: true,
26
+ seated: true,
27
+ watching: true,
28
+ full: true,
29
+ refused: true,
30
+ lobbyChat: true,
31
+ paused: true,
32
+ result: true,
33
+ waiting: true,
34
+ ended: true
35
+ };
36
+ /** Every type a host or a server is sent */
37
+ var PLAYER_TYPES = {
38
+ command: true,
39
+ ack: true,
40
+ ping: true,
41
+ ground: true,
42
+ debug: true,
43
+ join: true,
44
+ start: true,
45
+ sit: true,
46
+ ready: true,
47
+ name: true,
48
+ resume: true,
49
+ setting: true,
50
+ seatSetting: true,
51
+ admin: true,
52
+ lobbyChat: true,
53
+ kick: true,
54
+ watch: true
55
+ };
56
+ /** A message as text, an object of a known type, or nothing: not JSON, not an object, a type that is not one of `types` */
57
+ function read(text, types) {
58
+ let message;
59
+ try {
60
+ message = JSON.parse(text);
61
+ } catch {
62
+ return;
63
+ }
64
+ if (typeof message !== "object" || message === null || Array.isArray(message)) return void 0;
65
+ const { type } = message;
66
+ return typeof type === "string" && Object.hasOwn(types, type) ? message : void 0;
67
+ }
68
+ /**
69
+ * What a host or a server sent, as text: one of its messages, or nothing for what is not (not JSON, not an object of a
70
+ * type a player is sent). Its fields are its receiver's to check
71
+ *
72
+ * @internal
73
+ */
74
+ var readHostMessage = (text) => read(text, HOST_TYPES);
75
+ /**
76
+ * What a player sent, as text: one of its messages, or nothing for what is not
77
+ *
78
+ * @internal
79
+ */
80
+ var readPlayerMessage = (text) => read(text, PLAYER_TYPES);
81
+ //#endregion
82
+ export { isServerMessage, readHostMessage, readPlayerMessage };
83
+
84
+ //# sourceMappingURL=wire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.js","names":[],"sources":["../../src/session/wire.ts"],"sourcesContent":["/**\n * What goes over the wire between a host and a player, both layers of it in one place (design review E11): the game's\n * (`GameHostMessage`, `GameCommandMessage`: a `SessionHost` and a `RemoteSession`) and a server's lobby beside it\n * (`LobbyServerMessage`, `LobbyPlayerMessage`: a `GameServer`). One union each way (`HostToPlayer`, `PlayerToHost`),\n * discriminated by `type` (no type is both a game's and a lobby's), read with a shape check (`readHostMessage`,\n * `readPlayerMessage`), and `PROTOCOL_VERSION` is of all of it\n */\nimport type { GameData } from '#engine/gameData'\nimport type { Inspection, InspectTarget, LoggedEvent, WorldListing } from '#engine/inspect'\nimport type { PlayerId } from '#engine/entity'\nimport type { GameResult, ServerHooks, ServerSeat } from '#engine/game'\nimport type { SavedGround } from '#engine/ground'\nimport type { MapCamera, MapDoodad, MapEnvironment, MapPath, MapRegion } from '#engine/map'\nimport type { Delta } from './delta'\nimport type { PlayerCommand } from './protocol'\nimport type { RelayNotice, RelayRequest } from './share'\n\n/**\n * What the host sends a player\n *\n * @beta\n */\nexport type GameHostMessage =\n\t| {\n\t\t\ttype: 'welcome'\n\t\t\t/** The version of the wire the host speaks (`PROTOCOL_VERSION`): a player of another refuses the game */\n\t\t\tprotocol: number\n\t\t\tplayer: PlayerId\n\t\t\ttickRate: number\n\t\t\t/** The game module the world runs, by id, and the version of its data (`Registry.dataHash`): the player's has to be the same */\n\t\t\tgame: string\n\t\t\thash: string\n\t\t\t/**\n\t\t\t * The ground: all of it, or the map of the game it started as and what changed of it since (S36). A player\n\t\t\t * without that map asks for it (`ground`), and is sent it in parts\n\t\t\t */\n\t\t\tterrain: SavedGround\n\t\t\t/** What the map looks like beyond its ground, for the screen */\n\t\t\tenvironment?: MapEnvironment\n\t\t\t/** Its scenery, for the screen */\n\t\t\tdoodads?: MapDoodad[]\n\t\t\t/** Its regions, for the screen: what mist in places lies over by name */\n\t\t\tregions?: MapRegion[]\n\t\t\t/** Its views saved under names */\n\t\t\tcameras?: MapCamera[]\n\t\t\t/** Its paths, for a cinematic's camera on a rail */\n\t\t\tpaths?: MapPath[]\n\t\t\t/** What its definitions were changed to while it ran (`world.redefine`), copies and all: put in the player's registry */\n\t\t\tredefinitions?: GameData\n\t\t\t/** Everything the player knows, as a delta without a base */\n\t\t\tfirst: Delta\n\t\t\t/** The player only watches, and sees everything */\n\t\t\tobserver?: boolean\n\t\t\t/** The player may use the debug tools (`world.debugPlayers`): the host follows the world for them (`debug`) */\n\t\t\tdebug?: true\n\t }\n\t| { type: 'pong'; at: number }\n\t/** A part of the ground a world started as, for a player who does not have its map: `text` of `parts`, joined, is a `TerrainSave` */\n\t| { type: 'ground'; part: number; parts: number; text: string }\n\t/** The game ended on an error in its rules (`World.failure`): what the players are told of it */\n\t| { type: 'failed'; message: string }\n\t| ({ type: 'delta' } & Delta)\n\t/** The debug tools' view of the world (`SessionDebug`), for a player who may use them and follows something: every tenth of a second */\n\t| { type: 'debug'; inspection: Inspection | null; world: WorldListing | null; log: readonly LoggedEvent[] }\n\n/**\n * What a player sends the host: commands, and which ticks it has got (what the next deltas are made against)\n *\n * @internal\n */\nexport type GameCommandMessage =\n\t| { type: 'command'; seq: number; command: PlayerCommand }\n\t| { type: 'ack'; tick: number; events?: number }\n\t/** To measure the time there and back: answered at once with a `pong` of the same `at` */\n\t| { type: 'ping'; at: number }\n\t/** A part of the ground the world started as, for a player who does not have its map (`ground` answers it) */\n\t| { type: 'ground'; part: number }\n\t/** What the debug tools follow, change and list (`SessionDebug`), from a player who may use them: `debug` answers it */\n\t| ({ type: 'debug' } & DebugAsk)\n\n/**\n * What the debug tools of a screen ask of a world elsewhere (`SessionDebug`), as said over the wire or to a worker\n *\n * @beta\n */\nexport interface DebugAsk {\n\t/** The entity or object to inspect, or null to stop inspecting */\n\tinspect?: InspectTarget | null\n\t/** A value to change in the inspected object: the path to it and the new number or boolean */\n\tset?: { path: (string | number)[]; value: number | boolean }\n\t/** Whether to send the list of inspectable things */\n\tlisting?: boolean\n\t/** Whether to send the world's log lines */\n\tlogging?: boolean\n\t/** Asks the world to clear its kept log lines */\n\tclearLog?: true\n}\n\n/**\n * What a player says to the server, besides what goes to the game\n *\n * @internal\n */\nexport type LobbyPlayerMessage =\n\t| {\n\t\t\ttype: 'join'\n\t\t\tname?: string\n\t\t\ttoken?: string\n\t\t\tticket?: string\n\t\t\twatch?: boolean\n\t\t\tkey?: string\n\t\t\tback?: boolean\n\t\t\twho?: string\n\t\t\t/**\n\t\t\t * The version of the wire the player speaks (`PROTOCOL_VERSION`): one of another is refused with why. Left\n\t\t\t * out, the player's own check of the welcome is what tells them\n\t\t\t */\n\t\t\tprotocol?: number\n\t }\n\t| { type: 'start' }\n\t/** In the lobby: another seat, free, for who is seated */\n\t| { type: 'sit'; player: PlayerId }\n\t/** In the lobby: ready, or not. Once every player seated is, the game starts */\n\t| { type: 'ready'; ready: boolean }\n\t/** In the lobby: the name one is shown by */\n\t| { type: 'name'; name: string }\n\t/** In a game a player paused (`pause` command): it goes on, for everyone */\n\t| { type: 'resume' }\n\t| { type: 'setting'; name: string; value: string }\n\t/** In the lobby: a setting of a seat (`ServerHooks.seatSettings`): one's own, or one no other player holds */\n\t| { type: 'seatSetting'; player: PlayerId; name: string; value: string }\n\t| { type: 'admin'; key: string; action: 'pause' | 'resume' | 'stop' }\n\t/** In the lobby: a line said to everyone there, before the game */\n\t| { type: 'lobbyChat'; text: string }\n\t/** In the lobby: a vote to let another seated player go. Once most of the others vote so, they are let go */\n\t| { type: 'kick'; player: PlayerId }\n\n/**\n * What the server tells everyone connected, as it changes\n *\n * @beta\n */\nexport type LobbyServerMessage =\n\t| {\n\t\t\ttype: 'lobby'\n\t\t\tmode: string\n\t\t\tgame: string\n\t\t\tphase: 'lobby' | 'game' | 'ended'\n\t\t\tseats: ServerSeat[]\n\t\t\tsettings: Record<string, string>\n\t\t\t/** What the game offers to set (`ServerHooks.settings`) */\n\t\t\toffered: NonNullable<ServerHooks['settings']>\n\t\t\t/** What the game offers to set for each seat (`ServerHooks.seatSettings`, and a race: `seatSettingsOf`) */\n\t\t\tseatOffered: NonNullable<ServerHooks['seatSettings']>\n\t }\n\t| { type: 'seated'; player: PlayerId; token: string }\n\t/** A line said in the lobby (`lobbyChat`): by whom, their seat where they have one */\n\t| { type: 'lobbyChat'; player?: PlayerId; name: string; text: string }\n\t| { type: 'watching'; player: PlayerId }\n\t| { type: 'full' }\n\t| { type: 'refused'; reason: string }\n\t/** The game paused, or going on: by a player (`player`, for `seconds` at most) or by an admin (no player) */\n\t| { type: 'paused'; paused: boolean; player?: PlayerId; seconds?: number }\n\t| { type: 'result'; result: GameResult }\n\n/**\n * What a player is told besides the game: a server's lobby, a pause, the result, or, watching through a relay, that\n * nothing is shared yet or that the game watched ended\n *\n * @beta\n */\nexport type ServerToPlayer = LobbyServerMessage | Extract<RelayNotice, { type: 'waiting' | 'ended' }>\n\n/**\n * Everything a host, a server or a relay sends a player\n *\n * @beta\n */\nexport type HostToPlayer = GameHostMessage | ServerToPlayer\n\n/**\n * Everything a player sends a host or a server, or a relay to watch through\n *\n * @internal\n */\nexport type PlayerToHost = GameCommandMessage | LobbyPlayerMessage | Extract<RelayRequest, { type: 'watch' }>\n\n/** The game's own messages to a player: the rest are a server's or a relay's (`ServerToPlayer`) */\nconst GAME_TYPES = new Set<string>(['welcome', 'pong', 'ground', 'failed', 'delta', 'debug'] satisfies GameHostMessage['type'][])\n\n/**\n * Whether a message to a player is a server's or a relay's, not the game's\n *\n * @internal\n */\nexport const isServerMessage = (message: HostToPlayer): message is ServerToPlayer => !GAME_TYPES.has(message.type)\n\n/** Every type a player is sent, each said once: what is not one of them is not read */\nconst HOST_TYPES: Record<HostToPlayer['type'], true> = {\n\twelcome: true,\n\tpong: true,\n\tground: true,\n\tfailed: true,\n\tdelta: true,\n\tdebug: true,\n\tlobby: true,\n\tseated: true,\n\twatching: true,\n\tfull: true,\n\trefused: true,\n\tlobbyChat: true,\n\tpaused: true,\n\tresult: true,\n\twaiting: true,\n\tended: true\n}\n\n/** Every type a host or a server is sent */\nconst PLAYER_TYPES: Record<PlayerToHost['type'], true> = {\n\tcommand: true,\n\tack: true,\n\tping: true,\n\tground: true,\n\tdebug: true,\n\tjoin: true,\n\tstart: true,\n\tsit: true,\n\tready: true,\n\tname: true,\n\tresume: true,\n\tsetting: true,\n\tseatSetting: true,\n\tadmin: true,\n\tlobbyChat: true,\n\tkick: true,\n\twatch: true\n}\n\n/** A message as text, an object of a known type, or nothing: not JSON, not an object, a type that is not one of `types` */\nfunction read<M extends { type: string }>(text: string, types: Record<string, true>): M | undefined {\n\tlet message: unknown\n\ttry {\n\t\tmessage = JSON.parse(text)\n\t} catch {\n\t\treturn undefined\n\t}\n\tif (typeof message !== 'object' || message === null || Array.isArray(message)) return undefined\n\tconst { type } = message as { type?: unknown }\n\treturn typeof type === 'string' && Object.hasOwn(types, type) ? (message as M) : undefined\n}\n\n/**\n * What a host or a server sent, as text: one of its messages, or nothing for what is not (not JSON, not an object of a\n * type a player is sent). Its fields are its receiver's to check\n *\n * @internal\n */\nexport const readHostMessage = (text: string): HostToPlayer | undefined => read(text, HOST_TYPES)\n\n/**\n * What a player sent, as text: one of its messages, or nothing for what is not\n *\n * @internal\n */\nexport const readPlayerMessage = (text: string): PlayerToHost | undefined => read(text, PLAYER_TYPES)\n"],"mappings":";;AA4LA,IAAM,6BAAa,IAAI,IAAY;CAAC;CAAW;CAAQ;CAAU;CAAU;CAAS;AAAO,CAAqC;;;;;;AAOhI,IAAa,mBAAmB,YAAqD,CAAC,WAAW,IAAI,QAAQ,IAAI;;AAGjH,IAAM,aAAiD;CACtD,SAAS;CACT,MAAM;CACN,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,OAAO;CACP,QAAQ;CACR,UAAU;CACV,MAAM;CACN,SAAS;CACT,WAAW;CACX,QAAQ;CACR,QAAQ;CACR,SAAS;CACT,OAAO;AACR;;AAGA,IAAM,eAAmD;CACxD,SAAS;CACT,KAAK;CACL,MAAM;CACN,QAAQ;CACR,OAAO;CACP,MAAM;CACN,OAAO;CACP,KAAK;CACL,OAAO;CACP,MAAM;CACN,QAAQ;CACR,SAAS;CACT,aAAa;CACb,OAAO;CACP,WAAW;CACX,MAAM;CACN,OAAO;AACR;;AAGA,SAAS,KAAiC,MAAc,OAA4C;CACnG,IAAI;CACJ,IAAI;EACH,UAAU,KAAK,MAAM,IAAI;CAC1B,QAAQ;EACP;CACD;CACA,IAAI,OAAO,YAAY,YAAY,YAAY,QAAQ,MAAM,QAAQ,OAAO,GAAG,OAAO,KAAA;CACtF,MAAM,EAAE,SAAS;CACjB,OAAO,OAAO,SAAS,YAAY,OAAO,OAAO,OAAO,IAAI,IAAK,UAAgB,KAAA;AAClF;;;;;;;AAQA,IAAa,mBAAmB,SAA2C,KAAK,MAAM,UAAU;;;;;;AAOhG,IAAa,qBAAqB,SAA2C,KAAK,MAAM,YAAY"}
@@ -1,5 +1,5 @@
1
1
  import type { PlayerId } from '#engine/entity';
2
- import { type GameModule } from '#engine/game';
2
+ import { type Rules } from '#engine/game';
3
3
  import { type LogEntry, Logger } from '#engine/log';
4
4
  import type { GameMap } from '#engine/map';
5
5
  import type { Message } from '#engine/messages';
@@ -15,16 +15,21 @@ import { type ConnectOptions, RemoteSession } from './remote';
15
15
  * @beta
16
16
  */
17
17
  export interface WorldWorkerLike {
18
+ /** Sends a message to the worker, with objects to transfer rather than copy */
18
19
  postMessage(message: unknown, transfer?: unknown[]): void;
20
+ /** Listens for the worker's messages or errors, where the worker is a page's `Worker` */
19
21
  addEventListener?(type: 'message' | 'error', listener: (event: {
20
22
  data?: unknown;
21
23
  message?: string;
22
24
  }) => void): void;
25
+ /** Stops a listener added with `addEventListener` */
23
26
  removeEventListener?(type: 'message' | 'error', listener: (event: {
24
27
  data?: unknown;
25
28
  message?: string;
26
29
  }) => void): void;
30
+ /** Listens for the worker's messages or errors, where the worker is Node's `worker_threads` one */
27
31
  on?(type: 'message' | 'error', listener: (value: unknown) => void): void;
32
+ /** Stops a listener added with `on` */
28
33
  off?(type: 'message' | 'error', listener: (value: unknown) => void): void;
29
34
  }
30
35
  /**
@@ -33,10 +38,13 @@ export interface WorldWorkerLike {
33
38
  * @beta
34
39
  */
35
40
  export interface WorldPort {
41
+ /** Sends a message to the page, with objects to transfer rather than copy */
36
42
  postMessage(message: unknown, transfer?: unknown[]): void;
43
+ /** Listens for the page's messages, where the port is a worker scope */
37
44
  addEventListener?(type: 'message', listener: (event: {
38
45
  data: unknown;
39
46
  }) => void): void;
47
+ /** Listens for the page's messages, where the port is Node's `parentPort` */
40
48
  on?(type: 'message', listener: (value: unknown) => void): void;
41
49
  }
42
50
  /**
@@ -47,16 +55,39 @@ export interface WorldPort {
47
55
  export interface WorkerGame {
48
56
  /** A map of the game: the world is made from it. Or a save to go on from (`from`); or neither, where the worker makes its world in code */
49
57
  map?: GameMap;
58
+ /** A save to continue the game from, in place of a map */
50
59
  from?: WorldSave;
51
60
  /** Who the player at the screen is: as the worker says (`ServeWorldOptions.player`), then the map's first with a start, when left out */
52
61
  player?: PlayerId;
62
+ /** The seed the world's random generator starts with */
53
63
  seed?: number;
54
64
  /** Whether the player may use the debug tools, and sees everything from the start */
55
65
  debug?: boolean;
66
+ /** Whether the player sees the whole map from the start */
56
67
  reveal?: boolean;
57
68
  /** Anything else the worker's own code is to know (`start`, `world`): plain data */
58
69
  args?: unknown;
59
70
  }
71
+ /**
72
+ * What the worker's code that runs on a world is given (`ServeWorldOptions.onStart`, `beforePlay`): the player at the
73
+ * screen, the map, what the page sent (`WorkerGame.args`), and a way to tell the page something
74
+ *
75
+ * @beta
76
+ */
77
+ export interface WorkerGameContext {
78
+ /** The player at the screen */
79
+ player: PlayerId;
80
+ /** The map the world was made from, where it was made from one (or sent with a save) */
81
+ map?: GameMap;
82
+ /** What the page sent for the worker's own code (`WorkerGame.args`): plain data */
83
+ args: unknown;
84
+ /**
85
+ * Tells the page something, while this game lasts: plain data, as it crosses (a mission won and what it carries on).
86
+ * The page hears it on its session (`WorkerSession.onTold`), in order with the game's ticks: what is told in a tick
87
+ * is heard before the snapshot of that tick. Said for nothing once the game has ended
88
+ */
89
+ tell(data: unknown): void;
90
+ }
60
91
  /**
61
92
  * What the worker's file gives besides the game: its code that runs on the world, which cannot be sent
62
93
  *
@@ -65,19 +96,33 @@ export interface WorkerGame {
65
96
  export interface ServeWorldOptions {
66
97
  /** A world made in code, where the page gives neither a map nor a save: generated ground, players of its own */
67
98
  world?: (context: {
68
- rules: GameModule;
99
+ rules: Rules;
69
100
  seed: number;
70
101
  args: unknown;
71
102
  log: Logger;
72
103
  }) => World | Promise<World>;
73
104
  /** What the game does once a new world is made, before anyone plays: as `launch`'s `start`, which a worker's game has here */
74
- start?: (world: World, context: {
75
- player: PlayerId;
76
- map?: GameMap;
77
- args: unknown;
105
+ onStart?: (world: World, context: WorkerGameContext) => void | Promise<void>;
106
+ /**
107
+ * What the game does before anyone plays, a new world or one loaded from a save (`fresh`), after `onStart`: as
108
+ * `prepareGame`'s `beforePlay`, which a worker's game has here. What it listens to on the world it listens to for
109
+ * this game alone, as a loaded game has none of what the game before listened to
110
+ */
111
+ beforePlay?: (world: World, context: WorkerGameContext & {
112
+ fresh: boolean;
78
113
  }) => void | Promise<void>;
79
114
  /** Who the player at the screen is, where the page does not say */
80
115
  player?: (world: World, map?: GameMap) => PlayerId;
116
+ /**
117
+ * What the page is told of the world as the game starts, which it cannot reach into: where the player's base is, who
118
+ * the other side is. Plain data, as it crosses; the page reads it on its session (`WorkerSession.about`). Asked once
119
+ * the world is made and started (`onStart`), for a new game and for one loaded
120
+ */
121
+ about?: (world: World, context: {
122
+ player: PlayerId;
123
+ map?: GameMap;
124
+ args: unknown;
125
+ }) => unknown;
81
126
  /** Where it hears: the worker's own scope when left out (a page's worker); Node's `parentPort` in a worker thread */
82
127
  port?: WorldPort;
83
128
  /**
@@ -86,7 +131,7 @@ export interface ServeWorldOptions {
86
131
  * now: `(version) => import(/* @vite-ignore *\/ `./index.ts?t=${version}`).then((module) => module.myGame)` (a path
87
132
  * from the worker's file). Only ever asked for in the dev server. Without it, a game in the worker keeps the version it began with
88
133
  */
89
- reload?: (version: number) => Promise<GameModule | undefined> | GameModule | undefined;
134
+ reload?: (version: number) => Promise<Rules | undefined> | Rules | undefined;
90
135
  }
91
136
  /** What goes between the page and the worker besides the session's own text */
92
137
  type ToWorker = ({
@@ -115,6 +160,7 @@ type ToWorker = ({
115
160
  type FromWorker = {
116
161
  vg: 'ready';
117
162
  player: PlayerId;
163
+ about?: unknown;
118
164
  } | {
119
165
  vg: 'refused';
120
166
  message: string;
@@ -142,15 +188,18 @@ type FromWorker = {
142
188
  tickMax: number;
143
189
  send: number;
144
190
  systems: SystemTiming[];
191
+ } | {
192
+ vg: 'told';
193
+ data: unknown;
145
194
  };
146
195
  /**
147
- * What a game's worker file does: `serveWorld(game, { start })`. It waits for the page to say what to play (a map, a
196
+ * What a game's worker file does: `serveWorld(game, { onStart })`. It waits for the page to say what to play (a map, a
148
197
  * save, or nothing for a world made here in code), makes the world, runs it by the clock, and seats the page's player
149
198
  * at it. A new game asked for ends the one before: a restart is the same worker, its navigation built already
150
199
  *
151
- * @beta
200
+ * @public
152
201
  */
153
- export declare function serveWorld(first: GameModule, options?: ServeWorldOptions): void;
202
+ export declare function serveWorld(first: Rules, options?: ServeWorldOptions): void;
154
203
  /**
155
204
  * A seat at a game run in a worker of this page (`workerSession`): a `RemoteSession` whose host is a message away,
156
205
  * with what a game played in the page has besides: its pace held and stepped (`speed`, `advance`), a save of it
@@ -161,10 +210,13 @@ export declare function serveWorld(first: GameModule, options?: ServeWorldOption
161
210
  export declare class WorkerSession extends RemoteSession {
162
211
  /** What the world says (`World.log`), said again here: the page shows it with its own */
163
212
  log: Logger;
213
+ /** The label and save of the last checkpoint the worker's game took, to retry from */
164
214
  checkpoint?: {
165
215
  label: Message;
166
216
  save: WorldSave;
167
217
  };
218
+ /** What the worker's file said of the world as the game started (`ServeWorldOptions.about`): plain data, none where it says nothing */
219
+ about?: unknown;
168
220
  /** The debug tools' view of the world, where they are on: over the session's own words, as a server's is */
169
221
  get debug(): SessionDebug | undefined;
170
222
  /** Its pace held and stepped, saves of it, the debug tools' view where they are on, and where its time went and in which systems */
@@ -177,24 +229,36 @@ export declare class WorkerSession extends RemoteSession {
177
229
  private readonly saves;
178
230
  private nextSave;
179
231
  private stopHearing;
232
+ /** Who hears what the worker's code tells (`onTold`), and what it told before anyone listened */
233
+ private readonly listening;
234
+ private readonly toldBefore;
180
235
  /** What `workerSession` gives it once it is made: the way to the worker, and what stops hearing it */
181
236
  wire(post: (message: ToWorker) => void, log: Logger, stop: () => void): void;
182
237
  /** What the worker said that is not the session's own text */
183
238
  heard(said: FromWorker): void;
239
+ /**
240
+ * Hears what the worker's code tells the page (`WorkerGameContext.tell`): plain data, in order with the ticks. What
241
+ * it told before anyone listened is heard by the first listener, at once. Gives back what stops hearing it
242
+ */
243
+ onTold(listener: (data: unknown) => void): () => void;
184
244
  /**
185
245
  * How far behind the newest tick the screen is shown, in ticks: one, and room for how unevenly they come (a tick
186
246
  * that took long comes late). Less than over a wire, where two are kept in hand: there is no line to stall here
187
247
  */
188
248
  get delay(): number;
249
+ /** The simulation speed multiplier the worker's game runs at, 0 pauses; setting it tells the worker */
189
250
  get speed(): number;
190
251
  set speed(speed: number);
252
+ /** Asks the worker to step the held game by this many ticks */
191
253
  advance(ticks?: number): void;
192
254
  /**
193
255
  * Asks the worker to take a new version of the game (hot reload): it loads the game again itself, as its file says
194
256
  * (`serveWorld` `reload`), and puts it into its world
195
257
  */
196
258
  reloadGame(): void;
259
+ /** Asks the worker for a save of its world and resolves with it; rejects if the game ends first */
197
260
  save(): Promise<WorldSave>;
261
+ /** Where the worker's time went (tick, send and receive milliseconds and each system's), or undefined until it has said */
198
262
  timing(): {
199
263
  tick: number;
200
264
  tickMax: number;
@@ -211,7 +275,8 @@ export declare class WorkerSession extends RemoteSession {
211
275
  * @beta
212
276
  */
213
277
  export interface WorkerSessionOptions extends WorkerGame, Pick<ConnectOptions, 'navigation' | 'maps'> {
214
- game: GameModule;
278
+ /** The game module's rules the worker's game runs, which the page needs the data of */
279
+ rules: Rules;
215
280
  /** The logger what the world says is said under, in the page: the root one when left out */
216
281
  log?: Logger;
217
282
  }
@@ -219,7 +284,7 @@ export interface WorkerSessionOptions extends WorkerGame, Pick<ConnectOptions, '
219
284
  * Plays a game in a worker, and seats this page's player at it: the worker's file calls `serveWorld` with the same
220
285
  * game. Settles once the world is made there and its welcome is in; fails with what the worker said went wrong
221
286
  *
222
- * const session = await workerSession(new Worker(new URL('./game.worker.ts', import.meta.url), { type: 'module' }), { game, map })
287
+ * const session = await workerSession(new Worker(new URL('./game.worker.ts', import.meta.url), { type: 'module' }), { rules: game, map })
223
288
  *
224
289
  * @beta
225
290
  */