@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":"rules.js","names":[],"sources":["../src/rules.ts"],"sourcesContent":["import { type DamageType, type ItemDef, type Stats, supplyOf, type UnitTypeDef } from './defs'\nimport type { MessageRef } from './messages'\nimport type { Registry } from './registry'\nimport { orderSays } from './orders/facts'\nimport { clamp } from './math'\nimport { damageScale, healingScale, mitigation } from './stats'\nimport { cleaveOf, type CleaveNow, shootsUphill, UPHILL_MISS } from './systems/combat'\nimport { defaultPickAttack, farthestAcquisition } from './attacks'\nimport type { Entity, PlayerId } from './entity'\nimport { type Upkeep, upkeepOf } from './upkeep'\nimport { defaultEngageLayer, defaultEngageRoom, defaultQueueDistance } from './engagement'\nimport type { World } from './world'\nimport type { OrderInit } from './registry'\nimport { groundSpeedAt } from './groundSpeed'\nimport type { ScoreSettings } from './score'\nimport { defaultHeroSettings, type HeroSettings } from './hero'\nimport { moving } from './entity'\nimport { type AttackModifier, bySlot } from './abilities/triggers'\n\n/**\n * A rule of `HudSharing`: one value for every unit, or a function deciding it for each (only heroes', only a boss's)\n *\n * @beta\n */\nexport type HudShareRule<T> = T | ((world: World, entity: Entity) => T)\n\n/**\n * What of a unit the players who see it are told beyond what they always are (`RuleSettings.hud`), each for the plates\n * over it to show. What is not shared never reaches a player, so no screen can show it. A game's own data goes in a\n * component with `replicate` (the client's `hudData` reads it)\n *\n * @beta\n */\nexport interface HudSharing {\n\t/**\n\t * The seconds left of its buffs (`EntityState.buffTimes`): to everyone who sees it (`true`), to its owner and their\n\t * allies (`'allies'`), or to no one (`false`, when left out)\n\t */\n\tshareBuffTimes?: HudShareRule<boolean | 'allies'>\n\t/**\n\t * Its abilities (`EntityState.abilities`) to everyone who sees it, its side's or not: those it has learned and\n\t * their levels (`'icons'`), with how much of their cooldowns is left too (`'cooldowns'`), or none (`'none'`, when\n\t * left out: its side has them in `own` all the same)\n\t */\n\tshareAbilities?: HudShareRule<'none' | 'icons' | 'cooldowns'>\n\t/** A hero's experience (`HeroSent.xp`) to everyone who sees it. Its side's alone when left out */\n\tshareXp?: HudShareRule<boolean>\n}\n\n/**\n * A unit in a queue, not made yet, as the supply it will take is asked of it (`RuleSettings.supply.of`)\n *\n * @beta\n */\nexport interface QueuedUnit {\n\t/** The unit type being queued */\n\treadonly def: UnitTypeDef\n\t/** The player who queued it */\n\treadonly owner: PlayerId\n\t/** Always true: tells a queued unit from an `Entity` where the supply it takes is asked */\n\treadonly queued: true\n}\n\n/**\n * How the fog of war keeps what was seen (`RuleSettings.fog`)\n *\n * @beta\n */\nexport interface FogSettings {\n\t/** Part of its sight a unit has at night, for types that do not say (`UnitTypeDef.sightNight`) */\n\tnightSight: number\n\t/**\n\t * What is kept of what was seen once: `remembered`, ground drawn dim and buildings as they were last seen (when left\n\t * out); `nothing`, out of sight is as never seen (ground black again, buildings forgotten; building there is still\n\t * allowed)\n\t */\n\texplored?: 'remembered' | 'nothing'\n\t/**\n\t * The whole map explored from the start, the fog over it all the same (as classic RTS melee maps are): the ground drawn\n\t * dim, and what stands on it and belongs to no player (trees, mines, rocks, neutral buildings: shops, taverns, the\n\t * creeps' own) seen from the first moment, as it stood then; units, and players' buildings, only once in sight. A map\n\t * says otherwise (`MapDef.explored`). No when left out\n\t */\n\tstartExplored?: boolean\n\t/** How ground never seen is drawn: `black` (when left out), or `dim` as explored ground is */\n\tmask?: 'black' | 'dim'\n}\n\n/**\n * The numbers and formulas of a kind of game that are not about any one unit: the supply cap, what selling gives\n * back, how a hit is mitigated. In groups, each about one thing: supply, production, the economy, combat, movement,\n * the fog, talk, the camps, heroes, what the HUD is told, the score. A game module changes the ones it wants\n * (`Rules.settings`: any of a group, the rest of it the engine's) and a pack the ones it brings (`GamePack.settings`).\n *\n * Read them from `world.settings` in the simulation, and from `session.registry.settings` on a player's screen.\n *\n * @beta\n */\nexport interface RuleSettings {\n\t/** What armies cost in supply, and how much a player may have (`SupplySettings`) */\n\tsupply: SupplySettings\n\t/** What buildings make and how they go up (`ProductionSettings`) */\n\tproduction: ProductionSettings\n\t/** What is paid back, paid for and given away (`EconomySettings`) */\n\teconomy: EconomySettings\n\t/**\n\t * What a hero may carry and how what it carries works (`ItemSettings`): the limits of groups of items (one pair of\n\t * boots), unique passives counted once, the game's own rule of what may be carried\n\t *\n\t * @beta\n\t */\n\titems: ItemSettings\n\t/**\n\t * Shops (`ShopSettings`): the seconds within which a purchase is taken back\n\t *\n\t * @beta\n\t */\n\tshop: ShopSettings\n\t/** How a hit lands and how much of it is felt, and who fights whom (`CombatSettings`) */\n\tcombat: CombatSettings\n\t/** How units find their way among each other (`MovementSettings`) */\n\tmovement: MovementSettings\n\t/** What is seen and kept of what was (`FogSettings`) */\n\tfog: FogSettings\n\t/** Pings, chat and pauses (`TalkSettings`) */\n\ttalk: TalkSettings\n\t/**\n\t * Creeps' camps (`camps.ts`, `CampSettings`): how far from its centre a camp fights (`leash`), how long a creep chases\n\t * without a blow (`chaseTime`), how long after the last blow the camp goes home (`resetAfter`), whether all of it\n\t * answers a hit at once (`helpAtOnce`), whether creeps sleep at home at night until attacked (`sleep`), and the\n\t * seconds after a camp is cleared that it comes back (`respawn`; never when left out). What makes creeps keep to them,\n\t * sleep and come back is the heroes pack's (`heroesPack`). See docs/creeps.md\n\t */\n\tcamps: CampSettings\n\t/**\n\t * Heroes' numbers (`HeroSettings`): how many a player may have, the experience a level takes, what bringing one back\n\t * costs. The heroes pack's to change (`heroesPack(rules)`); the classic RTS numbers when left out\n\t */\n\theroes: HeroSettings\n\t/**\n\t * What of a unit the players who see it are told beyond what they always are (its health, mana, level, buffs and\n\t * their stacks), for the plates over it to show (indicators-plan U3): the seconds left of its buffs, its abilities,\n\t * a hero's experience. Nothing more than that when left out\n\t *\n\t * @beta\n\t */\n\thud: HudSharing\n\t/**\n\t * What the game counts of its players for its score (a classic RTS score screen): kills, losses, damage, healing,\n\t * resources, its own (`ScoreSettings`, `presetScore()`, `defineStat`). Counted by the rules as the game goes, kept in\n\t * saves, told to the players as it says. Nothing is counted when left out\n\t *\n\t * @beta\n\t */\n\tscore?: ScoreSettings\n\t/**\n\t * Whether a player may command an entity: its owner, and whoever the owner shares control with\n\t * (`world.sides.shareControl`, a force's `sharedControl`), when left out. What every command is checked against, and\n\t * what decides whose units a player is told the own state of (orders, the queue, the bag)\n\t */\n\tmayCommand(world: World, player: PlayerId, entity: Entity): boolean\n}\n\n/**\n * Supply (`RuleSettings.supply`)\n *\n * @beta\n */\nexport interface SupplySettings {\n\t/** Supply no player can go past, however much they build to provide it */\n\tmax: number\n\t/**\n\t * Pools of supply besides the one there always is (`supply`, food), by name, each with what it is called and its\n\t * most: a cap on commanders, on vehicles. A unit takes of one with `supply`, a building provides with\n\t * `supplyGiven`. None when left out\n\t */\n\tpools?: Record<string, { name: string; max: number }>\n\t/**\n\t * Supply a unit takes: summons taking none, an aura that lowers it. Its type's `supply`, when left out. Asked of the\n\t * units there are, and of those in a queue, which are not yet (`QueuedUnit`: their type and owner)\n\t */\n\tof(world: World, unit: Entity | QueuedUnit): number\n}\n\n/**\n * Production and construction (`RuleSettings.production`)\n *\n * @beta\n */\nexport interface ProductionSettings {\n\t/** Things a building can have waiting to be made */\n\tqueue: number\n\t/** Part of what a structure cost that comes back when it is called off while being built */\n\tcancelRefund: number\n\t/** Part of its health a structure starts being built with */\n\tconstructionHealth: number\n\t/** How fast a structure goes up with so many builders at it, as a part of its build time a second: the first builder all of it, every other half, when left out */\n\tbuildRate(world: World, structure: Entity, builders: number): number\n}\n\n/**\n * Selling, repairing, giving and upkeep (`RuleSettings.economy`)\n *\n * @beta\n */\nexport interface EconomySettings {\n\t/** Part of an item's price a shop pays for it */\n\tsellPrice: number\n\t/** Part of what a building cost that mending all of its health costs */\n\trepairCost: number\n\t/** The part of what a player gives an ally that is lost on the way, 0..1 (see `give`). Nothing when left out */\n\ttradeTax: number\n\t/** What a player's army costs them in income. The game's upkeep tiers by supply used, when left out */\n\tupkeep(world: World, player: PlayerId): Upkeep\n}\n\n/**\n * What a hero may carry, and how what it carries works (`RuleSettings.items`)\n *\n * @beta\n */\nexport interface ItemSettings {\n\t/**\n\t * The most of a group of items (`ItemDef.group`) one carrier may have, by group: `{ boots: 1 }` when left out. An\n\t * item's own `groupLimit` comes first; a group named nowhere is 1\n\t */\n\tgroups: Record<string, number>\n\t/** Whether the passives of items sharing a `unique` name work once for all of them (yes), or each (no) */\n\tunique: boolean\n\t/**\n\t * The game's own rule of what a carrier may take, asked after the engine's (a group's limit) as it buys an item, picks\n\t * one up or is handed one: a reason to refuse (a `MessageRef`, told to the player), nothing to let it. `uses` are\n\t * the parts buying it uses up, by id (none for a pick-up or a hand-over). Everything may when left out\n\t */\n\tmayCarry?: (world: World, carrier: Entity, item: ItemDef, uses: readonly string[]) => MessageRef | undefined\n}\n\n/**\n * Shops (`RuleSettings.shop`): taking a purchase back\n *\n * @beta\n */\nexport interface ShopSettings {\n\t/**\n\t * Seconds within which a purchase is undone (`undoBuy`, the `undoBuy` command: the shop window's Undo) for all it\n\t * cost, as long as the buyer stands at the shop still and has not used the item: what it took is given back, the\n\t * parts it used up come back, the shop has it back in stock. 10 when left out; 0 for no undoing\n\t */\n\tundo: number\n}\n\n/**\n * Fighting (`RuleSettings.combat`)\n *\n * @beta\n */\nexport interface CombatSettings {\n\t/**\n\t * Whether a basic attack of `attacker` strikes critically, and what it multiplies the damage by then: a number for a\n\t * critical strike, nothing for none. Asked as the attack goes off, before whether it misses. None when left out (a\n\t * game's crits: `mobaStatsPack`, or its own)\n\t */\n\tcritical(world: World, attacker: Entity, stats: Readonly<Stats>): number | undefined\n\t/**\n\t * What is left of damage once the defences of the target had their say, as a part of it. `source` is the stats\n\t * of whoever deals it, when someone does. Armor and magic resist, with penetration, when left out\n\t */\n\tmitigation(type: DamageType, target: Readonly<Stats>, source?: Readonly<Stats>): number\n\t/**\n\t * What damage is multiplied by once mitigated, before shields, for the stats of who takes it and of who deals it\n\t * (when someone does): their `incomingDamage` (and of the type: `incomingMagicDamage`) and `outgoingDamage`, never\n\t * below none, when left out (`damageScale`)\n\t */\n\tdamageScale(type: DamageType, target: Readonly<Stats>, source?: Readonly<Stats>): number\n\t/**\n\t * What healing is multiplied by, for the stats of who gets it, before the `beforeHeal` hook: its `incomingHealing`,\n\t * never below none, when left out (`healingScale`)\n\t */\n\thealingScale(target: Readonly<Stats>, source?: Readonly<Stats>): number\n\t/**\n\t * Keeps stats within what the game allows, once everything that changes them was added up. Changes them in place.\n\t * The default keeps attack speed within its limits (below)\n\t */\n\tclampStats(stats: Stats, rules: Readonly<RuleSettings>): void\n\t/** Seconds an ability takes to be ready again, for a unit with these stats. Its cooldown as it is, when left out */\n\tcooldown(seconds: number, stats: Readonly<Stats>): number\n\t/**\n\t * How much of a slow a unit with these stats takes: `slow` is what slows it, added up, below 0 (-0.3 for 30% slower).\n\t * All of it, when left out\n\t */\n\tslowTaken(stats: Readonly<Stats>, slow: number): number\n\t/** What the heals and shields `source` gives are multiplied by. 1, when left out */\n\thealPower(world: World, source: Entity): number\n\t/**\n\t * What a blow from up close of `attacker`'s weapon at that place cleaves: the part of its damage the enemies round\n\t * `target` take, how far round it, how wide a cone. Its attack's own or a buff's, the larger part, when left out\n\t * (`cleaveOf`); nothing for none\n\t */\n\tcleave(world: World, attacker: Entity, target: Entity, weapon: number): CleaveNow | undefined\n\t/**\n\t * Which of what an attack of `attacker` sets off go off (its attack modifiers: the `onHit` of its abilities, items\n\t * and buffs that can now), of those it is given, in their order. One a slot, the highest `priority`, and all of\n\t * those of no slot, when left out (`bySlot`); `(world, attacker, target, modifiers) => modifiers` for all of them\n\t */\n\tattackModifiers(world: World, attacker: Entity, target: Entity, modifiers: readonly AttackModifier[]): readonly AttackModifier[]\n\t/** Nobody attacks slower or faster than this, whatever they carry: [lowest, highest] attack speed */\n\tattackSpeedLimits: [number, number]\n\t/** Seconds a corpse lies where a unit of flesh died, for spells to use (see `raiseDead`). None at all for 0 */\n\tcorpseTime: number\n\t/** The chance, 0..1, that an attack of `attacker` at `target` goes wide. A quarter up a cliff, when left out */\n\tmissChance(world: World, attacker: Entity, target: Entity): number\n\t/**\n\t * What part of an attack that hits an area an entity standing there gets, 0..1: 0 spares it. `source` is who fired\n\t * it, `distance` how far from the middle the entity is. Everyone there but whoever fired it, all of it in the inner\n\t * half and half outside, when left out\n\t */\n\tsplash(world: World, source: Entity | undefined, other: Entity, distance: number, radius: number): number\n\t/** How far a unit looks for enemies by itself, and chases them. The farthest `acquisitionRange` of its attacks, when left out */\n\tacquisitionRange(world: World, entity: Entity): number\n\t/**\n\t * Which of its attacks (`UnitTypeDef.attacks`, by place) an attacker uses against a target, or -1 for none: it cannot\n\t * attack it. The first whose `targets` reach the target where it is, when left out (`defaultPickAttack`): a siege\n\t * weapon for what is on the ground, a second for the air. Asked for every target looked at: keep it cheap\n\t */\n\tpickAttack(world: World, attacker: Entity, target: Entity): number\n\t/**\n\t * The layer an attacker fights from, around a target: room is counted apart for each (see `engageRoom`). The air\n\t * for what flies, the water for boats, the ground for the rest, when left out; any name of the game's own besides\n\t */\n\tengageLayer(world: World, attacker: Entity): string\n\t/**\n\t * How many attackers like this one (of its layer, reaching as far) may fight a target at once. A full target is\n\t * picked last, and the melee spread around it on as many spots. As many as stand side by side around it, out where\n\t * they reach, when left out: few for swords around a footman, all of them for long guns\n\t */\n\tengageRoom(world: World, target: Entity, attacker: Entity): number\n\t/**\n\t * Seconds a unit that picked a target by itself closes in on it without getting closer before it lets it go and\n\t * fights something else (blocked by its own in a pass, say). A target it was told to attack it never lets go. One,\n\t * when left out; Infinity never\n\t */\n\tgiveUpChase(world: World, attacker: Entity, target: Entity): number\n\t/**\n\t * How far from the middle of a target an attacker waits for room there, when it was told to attack it and it has no\n\t * room for it or no way to it (`holdOff`): on its own side, out of the way of those fighting it. Just behind them\n\t * when left out (`defaultQueueDistance`): the target's size, two of the attacker, its reach and half a cell\n\t */\n\tqueueDistance(world: World, attacker: Entity, target: Entity): number\n\t/**\n\t * Whether an order given to a unit in the recovery after its blow (`AttackDef.recovery`) cuts the recovery short and\n\t * is carried out at once. Nothing is given back of the attack: its cooldown runs on. Never, when left out: the order\n\t * waits until the recovery is over\n\t */\n\trecoveryCancels(world: World, entity: Entity): boolean\n\t/**\n\t * How far from an ally that is hit an idle unit of the same owner comes to its help: it takes the attacker, as a\n\t * camp's creeps do (`helpAtOnce`). Asked of each helper, with the ally hit: how far apart they are (centre to centre)\n\t * it must be at most. Never more than `HELP_SEARCH` (20) is looked for. 0 turns it off. The helper's acquisition range\n\t * and 4 more, when left out\n\t */\n\thelpRange(world: World, helper: Entity, victim: Entity): number\n}\n\n/**\n * How units move among each other (`RuleSettings.movement`)\n *\n * @beta\n */\nexport interface MovementSettings {\n\t/**\n\t * Whether an ally standing in the way of a unit on its way steps aside when asked (see `makeWay`). Those standing\n\t * about with nothing to do, or waiting by a fight for a spot in it, when left out: not those fighting, walking or\n\t * with orders of their own\n\t */\n\tmakesWay(world: World, mover: Entity, other: Entity): boolean\n\t/**\n\t * How far ahead, in ground units, a unit on its way looks for others standing in it, to go round them\n\t * (`goesAround`) or, where it cannot, ask them to step aside (`makesWay`) before it reaches them. 0 looks no\n\t * further than its nose: it then goes round nothing, and asks only once it is held up. 3 when left out\n\t */\n\tlookAhead(world: World, mover: Entity): number\n\t/**\n\t * Whether a unit goes round the units standing in its way (`around`), where the way round is `longer` ground units\n\t * more than the `straight` way to the next corner of its path, rather than through them, which slows it until they\n\t * step aside or it has pushed past. Yes for up to a unit and a half more, and a quarter of the straight way, when\n\t * left out. Where the way round is found is the `detour` hook's\n\t */\n\tgoesAround(world: World, mover: Entity, around: readonly Entity[], longer: number, straight: number): boolean\n\t/**\n\t * Whether a group sent somewhere with a right-click moves at the pace of its slowest (`OrderParams.together`), so\n\t * that it arrives together: no when left out, each at its own speed. Attack-moves are each at their own always\n\t */\n\ttogether?: boolean\n\t/**\n\t * The formation units ordered to a point together take, by id (`FormationDef`), where the order names none\n\t * (`OrderInit.formation`): `rows` when left out, which keeps a tight group's shape and lines a scattered one up\n\t */\n\tformation(world: World, units: readonly Entity[], init: OrderInit): string\n\t/**\n\t * How fast a unit goes where it is, from its `moveSpeed`: slower in shallow water, faster on roads. Asked every\n\t * tick for every unit that moves: keep it cheap. Its speed as it is, when left out\n\t */\n\tmoveSpeed(world: World, entity: Entity, speed: number): number\n\t/**\n\t * How fast a unit turns, in radians a second, where its type says nothing of its own (`UnitTypeDef.turnRate`): on\n\t * its way, to face what it attacks, works on or casts at. 12 when left out, which is all but at once (a half turn\n\t * in a quarter of a second); 2 or 3 for units that visibly come round, as a classic RTS's do, less for ships\n\t */\n\tturnRate: number\n}\n\n/**\n * Pings, chat and pauses (`RuleSettings.talk`)\n *\n * @beta\n */\nexport interface TalkSettings {\n\t/**\n\t * Pings (see `ping`): how many a player may send `within` so many seconds, the kinds there are (a hero arena game's\n\t * when left out; a game adds its own), and what each kind asks of a computer ally (indicators-plan P4): a request on\n\t * its team's board (`help`, which computers answer by sending fighters; `attack`, `defend` and `rally`, put on the\n\t * board for the brains that read them), or nothing. A kind not named is heard and not acted on. `kinds` may be\n\t * worked out from the registry as the game plays (`(registry) => …`): from a file of the game's (`registry.file`),\n\t * one the editor writes, so a kind added there is let go at once (see `pingKinds`)\n\t */\n\tpings: {\n\t\tmost: number\n\t\twithin: number\n\t\tkinds: readonly string[] | ((registry: Registry) => readonly string[])\n\t\tmeanings: Readonly<Record<string, 'help' | 'attack' | 'defend' | 'rally' | 'ignore'>>\n\t}\n\t/** Lines of chat: how many a player may send `within` so many seconds, and how long one may be */\n\tlines: { most: number; within: number; length: number }\n\t/** Pauses in a game on a server (see `askPause`): how many each player may ask for (none at 0), and how many seconds one lasts at most */\n\tpauses: { each: number; seconds: number }\n}\n\n/**\n * The engine's rules: those of a classic RTS melee game\n *\n * @beta\n */\nexport const defaultSettings: Readonly<RuleSettings> = Object.freeze({\n\tsupply: {\n\t\tmax: 100,\n\t\t// none besides food: a game names its own\n\t\tpools: undefined,\n\t\tof: (_world: World, unit: Entity | QueuedUnit) => supplyOf(unit.def)\n\t},\n\tproduction: {\n\t\tqueue: 7,\n\t\tcancelRefund: 0.75,\n\t\tconstructionHealth: 0.1,\n\t\tbuildRate: (_world: World, _structure: Entity, builders: number) => 1 + (builders - 1) * 0.5\n\t},\n\teconomy: {\n\t\tsellPrice: 0.7,\n\t\trepairCost: 0.35,\n\t\ttradeTax: 0,\n\t\tupkeep: (world: World, player: PlayerId) => upkeepOf(world, player)\n\t},\n\t// one pair of boots a hero, a unique passive once\n\titems: { groups: { boots: 1 }, unique: true, mayCarry: undefined },\n\t// a purchase is taken back within ten seconds\n\tshop: { undo: 10 },\n\tcombat: {\n\t\tcritical: () => undefined,\n\t\tmitigation,\n\t\tdamageScale,\n\t\thealingScale,\n\t\tclampStats(stats: Stats, rules: Readonly<RuleSettings>) {\n\t\t\tconst { attackSpeedLimits } = rules.combat\n\t\t\tif (stats.attackSpeed > 0) stats.attackSpeed = clamp(stats.attackSpeed, attackSpeedLimits[0], attackSpeedLimits[1])\n\t\t},\n\t\tcooldown: (seconds: number) => seconds,\n\t\tslowTaken: (_stats: Readonly<Stats>, slow: number) => slow,\n\t\thealPower: () => 1,\n\t\tcleave: cleaveOf,\n\t\tattackModifiers: bySlot,\n\t\tattackSpeedLimits: [0.1, 5] as [number, number],\n\t\tcorpseTime: 60,\n\t\tmissChance: (world: World, attacker: Entity, target: Entity) => (shootsUphill(world, attacker, target) ? UPHILL_MISS : 0),\n\t\tsplash: (_world: World, source: Entity | undefined, other: Entity, distance: number, radius: number) =>\n\t\t\tother === source ? 0 : distance <= radius / 2 ? 1 : 0.5,\n\t\tacquisitionRange: (_world: World, entity: Entity) => farthestAcquisition(entity.def),\n\t\tpickAttack: defaultPickAttack,\n\t\tengageLayer: defaultEngageLayer,\n\t\tengageRoom: defaultEngageRoom,\n\t\tgiveUpChase: () => 1,\n\t\tqueueDistance: defaultQueueDistance,\n\t\trecoveryCancels: () => false,\n\t\thelpRange: (world: World, helper: Entity) => world.settings.combat.acquisitionRange(world, helper) + 4\n\t},\n\tmovement: {\n\t\tmakesWay: (world: World, _mover: Entity, other: Entity) =>\n\t\t\tother.get(moving)?.status !== 'moving' && !other.get(moving)?.anchored && (other.orders.length === 0 || orderSays(world, other, 'waiting')),\n\t\tlookAhead: () => 3,\n\t\tgoesAround: (_world: World, _mover: Entity, _around: readonly Entity[], longer: number, straight: number) => longer <= 1.5 + straight * 0.25,\n\t\tformation: () => 'rows',\n\t\t// slowed by the ground it stands on (a tile's or a layer of cells' `speed`), unless it flies or sails\n\t\tmoveSpeed: (world: World, entity: Entity, speed: number) => speed * groundSpeedAt(world, entity),\n\t\tturnRate: 12,\n\t\ttogether: false\n\t},\n\tfog: { nightSight: 0.6, explored: undefined, startExplored: undefined, mask: undefined },\n\ttalk: {\n\t\tpings: {\n\t\t\tmost: 4,\n\t\t\twithin: 5,\n\t\t\tkinds: ['look', 'danger', 'assist', 'onMyWay'],\n\t\t\tmeanings: { danger: 'help', assist: 'help', push: 'attack', hold: 'defend', retreat: 'rally' } as TalkSettings['pings']['meanings']\n\t\t},\n\t\tlines: { most: 5, within: 5, length: 160 },\n\t\tpauses: { each: 3, seconds: 60 }\n\t},\n\t// creeps fight up to 14 cells from their camp, let a chase go after 5 seconds without a blow, go home 6 seconds after\n\t// the last, come all at once; they sleep at night, and a camp cleared stays cleared, as in classic RTS games\n\tcamps: { leash: 14, chaseTime: 5, resetAfter: 6, helpAtOnce: true, sleep: true, respawn: undefined },\n\theroes: defaultHeroSettings,\n\t// what everyone who sees a unit is told and no more\n\thud: {},\n\tscore: undefined,\n\tmayCommand: (world: World, player: PlayerId, entity: Entity) => entity.owner === player || world.sides.controlOf(entity.owner).includes(player)\n})\n\n/**\n * Creeps' camps' rules (`RuleSettings.camps`)\n *\n * @beta\n */\nexport interface CampSettings {\n\t/**\n\t * How far from the camp's centre its creeps fight, in cells: what goes past it is let go of, and a creep led past it\n\t * turns back. 14 by default. A camp's own is `Camp.leash` (`spawnCamp`'s `leash`)\n\t */\n\tleash: number\n\t/**\n\t * Seconds a creep chases what has neither hit it nor been hit by it before it lets it go for the next of the camp's\n\t * list (`Camp.aggro`): a kiting archer is not followed round the camp for ever. 5 by default. A camp's own is\n\t * `Camp.chaseTime`\n\t */\n\tchaseTime: number\n\t/**\n\t * Seconds without a blow (none of the camp's creeps hitting or hit) before the camp gives up the fight and goes home:\n\t * until then its creeps wait where they stand for what comes next. 6 by default. A camp's own is `Camp.resetAfter`;\n\t * `resetCamp` sends one home now\n\t */\n\tresetAfter: number\n\t/**\n\t * Whether every creep of a camp answers a hit on one of them at once, as it lands, rather than at its next look round\n\t * (every fourth tick). True by default. A camp's own is `Camp.helpAtOnce`\n\t */\n\thelpAtOnce: boolean\n\t/** Whether creeps sleep at home at night, until attacked */\n\tsleep: boolean\n\t/** Seconds after a camp is cleared that it comes back, for every camp (see `Camp.respawn`). Never when left out */\n\trespawn?: number\n}\n\n/** What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole */\nexport type SettingsPart<T> = T extends (...args: never[]) => unknown\n\t? T\n\t: T extends readonly unknown[]\n\t\t? T\n\t\t: T extends object\n\t\t\t? { [K in keyof T]?: SettingsPart<T[K]> }\n\t\t\t: T\n\n/**\n * What a game says of its rules (`Rules.settings`), or a pack (`GamePack.settings`): any of them, a group in part\n * (`{ supply: { max: 200 } }`), the engine's for the rest. The score and the HUD's sharing are\n * given whole\n *\n * @beta\n */\nexport type RuleSettingsInit = { [K in Exclude<keyof RuleSettings, 'score' | 'hud'>]?: SettingsPart<RuleSettings[K]> } & {\n\tscore?: ScoreSettings\n\thud?: HudSharing\n}\n\n/** Whether a value is a group of the rules to be laid over in part: a plain object of named parts, not a table or a list */\nconst isGroup = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype\n\n/**\n * Lays what is said of rules over rules, group by group: a group of named parts (`supply`, `talk.pings`) part by part,\n * everything else whole. A name the rules have not got is refused: a typo would otherwise change nothing, without a word\n *\n * @internal\n */\nexport function laySettings<T extends object>(under: T, over: object, path = ''): T {\n\tconst laid: Record<string, unknown> = { ...(under as Record<string, unknown>) }\n\tfor (const [key, value] of Object.entries(over)) {\n\t\tif (value === undefined) continue\n\t\tif (!(key in under)) throw new Error(`\"${path}${key}\" is not a game rule`)\n\t\tconst before = (under as Record<string, unknown>)[key]\n\t\tlaid[key] = isGroup(before) && Object.keys(before).length && isGroup(value) ? laySettings(before, value, `${path}${key}.`) : value\n\t}\n\treturn laid as T\n}\n\n/**\n * What is said of rules laid over what was said before (a pack's over the game's, a mod's over the game's), group by\n * group as `laySettings` does, neither of them whole\n *\n * @internal\n */\nexport function overSettings(under: RuleSettingsInit, over: RuleSettingsInit): RuleSettingsInit {\n\tconst laid: Record<string, unknown> = { ...under }\n\tfor (const [key, value] of Object.entries(over)) {\n\t\tif (value === undefined) continue\n\t\tconst before = laid[key]\n\t\tlaid[key] = isGroup(before) && isGroup(value) ? overSettings(before as RuleSettingsInit, value as RuleSettingsInit) : value\n\t}\n\treturn laid as RuleSettingsInit\n}\n\n/**\n * The names of the rules what is said of them changes, group by group (`supply.max`, `talk.pings.most`): what two\n * mods are found to both change by\n *\n * @internal\n */\nexport function rulesSaid(said: object, path = ''): string[] {\n\treturn Object.entries(said).flatMap(([key, value]) =>\n\t\tvalue === undefined ? [] : isGroup(value) && Object.keys(value).length ? rulesSaid(value, `${path}${key}.`) : [`${path}${key}`]\n\t)\n}\n\n/**\n * The rules of a game: what its module changes, over the engine's\n *\n * @internal\n */\nexport function resolveSettings(changes: RuleSettingsInit = {}): Readonly<RuleSettings> {\n\treturn Object.freeze(laySettings(defaultSettings, changes))\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AA0bA,IAAa,kBAA0C,OAAO,OAAO;CACpE,QAAQ;EACP,KAAK;EAEL,OAAO,KAAA;EACP,KAAK,QAAe,SAA8B,SAAS,KAAK,GAAG;CACpE;CACA,YAAY;EACX,OAAO;EACP,cAAc;EACd,oBAAoB;EACpB,YAAY,QAAe,YAAoB,aAAqB,KAAK,WAAW,KAAK;CAC1F;CACA,SAAS;EACR,WAAW;EACX,YAAY;EACZ,UAAU;EACV,SAAS,OAAc,WAAqB,SAAS,OAAO,MAAM;CACnE;CAEA,OAAO;EAAE,QAAQ,EAAE,OAAO,EAAE;EAAG,QAAQ;EAAM,UAAU,KAAA;CAAU;CAEjE,MAAM,EAAE,MAAM,GAAG;CACjB,QAAQ;EACP,gBAAgB,KAAA;EAChB;EACA;EACA;EACA,WAAW,OAAc,OAA+B;GACvD,MAAM,EAAE,sBAAsB,MAAM;GACpC,IAAI,MAAM,cAAc,GAAG,MAAM,cAAc,MAAM,MAAM,aAAa,kBAAkB,IAAI,kBAAkB,EAAE;EACnH;EACA,WAAW,YAAoB;EAC/B,YAAY,QAAyB,SAAiB;EACtD,iBAAiB;EACjB,QAAQ;EACR,iBAAiB;EACjB,mBAAmB,CAAC,IAAK,CAAC;EAC1B,YAAY;EACZ,aAAa,OAAc,UAAkB,WAAoB,aAAa,OAAO,UAAU,MAAM,IAAI,cAAc;EACvH,SAAS,QAAe,QAA4B,OAAe,UAAkB,WACpF,UAAU,SAAS,IAAI,YAAY,SAAS,IAAI,IAAI;EACrD,mBAAmB,QAAe,WAAmB,oBAAoB,OAAO,GAAG;EACnF,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,mBAAmB;EACnB,eAAe;EACf,uBAAuB;EACvB,YAAY,OAAc,WAAmB,MAAM,SAAS,OAAO,iBAAiB,OAAO,MAAM,IAAI;CACtG;CACA,UAAU;EACT,WAAW,OAAc,QAAgB,UACxC,MAAM,IAAI,MAAM,CAAC,EAAE,WAAW,YAAY,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,aAAa,MAAM,OAAO,WAAW,KAAK,UAAU,OAAO,OAAO,SAAS;EAC1I,iBAAiB;EACjB,aAAa,QAAe,QAAgB,SAA4B,QAAgB,aAAqB,UAAU,MAAM,WAAW;EACxI,iBAAiB;EAEjB,YAAY,OAAc,QAAgB,UAAkB,QAAQ,cAAc,OAAO,MAAM;EAC/F,UAAU;EACV,UAAU;CACX;CACA,KAAK;EAAE,YAAY;EAAK,UAAU,KAAA;EAAW,eAAe,KAAA;EAAW,MAAM,KAAA;CAAU;CACvF,MAAM;EACL,OAAO;GACN,MAAM;GACN,QAAQ;GACR,OAAO;IAAC;IAAQ;IAAU;IAAU;GAAS;GAC7C,UAAU;IAAE,QAAQ;IAAQ,QAAQ;IAAQ,MAAM;IAAU,MAAM;IAAU,SAAS;GAAQ;EAC9F;EACA,OAAO;GAAE,MAAM;GAAG,QAAQ;GAAG,QAAQ;EAAI;EACzC,QAAQ;GAAE,MAAM;GAAG,SAAS;EAAG;CAChC;CAGA,OAAO;EAAE,OAAO;EAAI,WAAW;EAAG,YAAY;EAAG,YAAY;EAAM,OAAO;EAAM,SAAS,KAAA;CAAU;CACnG,QAAQ;CAER,KAAK,CAAC;CACN,OAAO,KAAA;CACP,aAAa,OAAc,QAAkB,WAAmB,OAAO,UAAU,UAAU,MAAM,MAAM,UAAU,OAAO,KAAK,CAAC,CAAC,SAAS,MAAM;AAC/I,CAAC;;AA0DD,IAAM,WAAW,UAChB,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,KAAK,OAAO,eAAe,KAAK,MAAM,OAAO;;;;;;;AAQjH,SAAgB,YAA8B,OAAU,MAAc,OAAO,IAAO;CACnF,MAAM,OAAgC,EAAE,GAAI,MAAkC;CAC9E,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAAI,GAAG;EAChD,IAAI,UAAU,KAAA,GAAW;EACzB,IAAI,EAAE,OAAO,QAAQ,MAAM,IAAI,MAAM,IAAI,OAAO,IAAI,qBAAqB;EACzE,MAAM,SAAU,MAAkC;EAClD,KAAK,OAAO,QAAQ,MAAM,KAAK,OAAO,KAAK,MAAM,CAAC,CAAC,UAAU,QAAQ,KAAK,IAAI,YAAY,QAAQ,OAAO,GAAG,OAAO,IAAI,EAAE,IAAI;CAC9H;CACA,OAAO;AACR;;;;;;;AAQA,SAAgB,aAAa,OAAyB,MAA0C;CAC/F,MAAM,OAAgC,EAAE,GAAG,MAAM;CACjD,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAAI,GAAG;EAChD,IAAI,UAAU,KAAA,GAAW;EACzB,MAAM,SAAS,KAAK;EACpB,KAAK,OAAO,QAAQ,MAAM,KAAK,QAAQ,KAAK,IAAI,aAAa,QAA4B,KAAyB,IAAI;CACvH;CACA,OAAO;AACR;;;;;;;AAQA,SAAgB,UAAU,MAAc,OAAO,IAAc;CAC5D,OAAO,OAAO,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,WAC1C,UAAU,KAAA,IAAY,CAAC,IAAI,QAAQ,KAAK,KAAK,OAAO,KAAK,KAAK,CAAC,CAAC,SAAS,UAAU,OAAO,GAAG,OAAO,IAAI,EAAE,IAAI,CAAC,GAAG,OAAO,KAAK,CAC/H;AACD;;;;;;AAOA,SAAgB,gBAAgB,UAA4B,CAAC,GAA2B;CACvF,OAAO,OAAO,OAAO,YAAY,iBAAiB,OAAO,CAAC;AAC3D"}
@@ -1,5 +1,5 @@
1
1
  import { type DataKind } from './gameData';
2
- import type { GameModule } from './game';
2
+ import type { Rules } from './game';
3
3
  /**
4
4
  * What of a game's rules does not fit together (`checkRules`): an id that names nothing (an ability's buff, a unit's
5
5
  * `trains`, an upgrade's `requires`, a shop's items), an effect of a type nobody handles, requirements that wait on
@@ -16,6 +16,7 @@ export interface RulesProblem {
16
16
  where: string;
17
17
  /** The id that is wrong, or the definition the warning is about */
18
18
  id: string;
19
+ /** What is wrong, in words for the person writing the rules */
19
20
  message: string;
20
21
  /**
21
22
  * The definition it is in and the field, as the editor's Data panel names them (`{ kind: 'abilities', id:
@@ -28,10 +29,10 @@ export interface RulesProblem {
28
29
  };
29
30
  }
30
31
  /**
31
- * Checks a game's rules against themselves (`RulesProblem`): run by `defineGame` with the view's checks, and in a
32
+ * Checks a game's rules against themselves (`RulesProblem`): run by a game's `check()` and as a page fetches its view, and in a
32
33
  * game's tests (`expect(checkRules(rules).filter((p) => p.level === 'error')).toEqual([])`). Nothing is thrown
33
34
  *
34
- * @beta
35
+ * @public
35
36
  */
36
- export declare function checkRules(rules: GameModule): RulesProblem[];
37
+ export declare function checkRules(rules: Rules): RulesProblem[];
37
38
  export { editDistance } from './nearest';