@v12-engine/engine 0.1.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (951) hide show
  1. package/dist/abilities/amounts.d.ts +28 -0
  2. package/dist/abilities/amounts.js +74 -0
  3. package/dist/abilities/amounts.js.map +1 -0
  4. package/dist/abilities/buffs.d.ts +106 -6
  5. package/dist/abilities/buffs.js +443 -0
  6. package/dist/abilities/buffs.js.map +1 -0
  7. package/dist/abilities/castTold.d.ts +2 -0
  8. package/dist/abilities/castTold.js +66 -0
  9. package/dist/abilities/castTold.js.map +1 -0
  10. package/dist/abilities/chance.d.ts +38 -0
  11. package/dist/abilities/chance.js +77 -0
  12. package/dist/abilities/chance.js.map +1 -0
  13. package/dist/abilities/charges.d.ts +18 -0
  14. package/dist/abilities/charges.js +101 -0
  15. package/dist/abilities/charges.js.map +1 -0
  16. package/dist/abilities/control.d.ts +28 -0
  17. package/dist/abilities/control.js +113 -0
  18. package/dist/abilities/control.js.map +1 -0
  19. package/dist/abilities/dispel.js +51 -0
  20. package/dist/abilities/dispel.js.map +1 -0
  21. package/dist/abilities/effectFields.d.ts +1 -1
  22. package/dist/abilities/effectFields.js +676 -0
  23. package/dist/abilities/effectFields.js.map +1 -0
  24. package/dist/abilities/effectIndex.d.ts +27 -0
  25. package/dist/abilities/effectIndex.js +64 -0
  26. package/dist/abilities/effectIndex.js.map +1 -0
  27. package/dist/abilities/effects/buff.d.ts +9 -3
  28. package/dist/abilities/effects/buff.js +84 -0
  29. package/dist/abilities/effects/buff.js.map +1 -0
  30. package/dist/abilities/effects/conditions.d.ts +2 -0
  31. package/dist/abilities/effects/conditions.js +41 -0
  32. package/dist/abilities/effects/conditions.js.map +1 -0
  33. package/dist/abilities/effects/core.js +54 -0
  34. package/dist/abilities/effects/core.js.map +1 -0
  35. package/dist/abilities/effects/damage.d.ts +1 -1
  36. package/dist/abilities/effects/damage.js +43 -0
  37. package/dist/abilities/effects/damage.js.map +1 -0
  38. package/dist/abilities/effects/heal.d.ts +2 -2
  39. package/dist/abilities/effects/heal.js +51 -0
  40. package/dist/abilities/effects/heal.js.map +1 -0
  41. package/dist/abilities/effects/missile.d.ts +13 -1
  42. package/dist/abilities/effects/missile.js +104 -0
  43. package/dist/abilities/effects/missile.js.map +1 -0
  44. package/dist/abilities/effects/morph.d.ts +5 -0
  45. package/dist/abilities/effects/morph.js +43 -0
  46. package/dist/abilities/effects/morph.js.map +1 -0
  47. package/dist/abilities/effects/moves.d.ts +16 -4
  48. package/dist/abilities/effects/moves.js +212 -0
  49. package/dist/abilities/effects/moves.js.map +1 -0
  50. package/dist/abilities/effects/passives.d.ts +19 -9
  51. package/dist/abilities/effects/passives.js +131 -0
  52. package/dist/abilities/effects/passives.js.map +1 -0
  53. package/dist/abilities/effects/proxy.d.ts +5 -0
  54. package/dist/abilities/effects/proxy.js +60 -0
  55. package/dist/abilities/effects/proxy.js.map +1 -0
  56. package/dist/abilities/effects/sight.d.ts +2 -2
  57. package/dist/abilities/effects/sight.js +39 -0
  58. package/dist/abilities/effects/sight.js.map +1 -0
  59. package/dist/abilities/effects/spawn.d.ts +5 -2
  60. package/dist/abilities/effects/spawn.js +40 -0
  61. package/dist/abilities/effects/spawn.js.map +1 -0
  62. package/dist/abilities/effects/timed.d.ts +2 -2
  63. package/dist/abilities/effects/timed.js +96 -0
  64. package/dist/abilities/effects/timed.js.map +1 -0
  65. package/dist/abilities/effects/trade.d.ts +1 -1
  66. package/dist/abilities/effects/trade.js +25 -0
  67. package/dist/abilities/effects/trade.js.map +1 -0
  68. package/dist/abilities/effects.d.ts +97 -23
  69. package/dist/abilities/effects.js +860 -0
  70. package/dist/abilities/effects.js.map +1 -0
  71. package/dist/abilities/land.d.ts +38 -4
  72. package/dist/abilities/land.js +189 -0
  73. package/dist/abilities/land.js.map +1 -0
  74. package/dist/abilities/recast.d.ts +45 -0
  75. package/dist/abilities/recast.js +118 -0
  76. package/dist/abilities/recast.js.map +1 -0
  77. package/dist/abilities/scaled.js +40 -0
  78. package/dist/abilities/scaled.js.map +1 -0
  79. package/dist/abilities/screen.d.ts +6 -0
  80. package/dist/abilities/screen.js +83 -0
  81. package/dist/abilities/screen.js.map +1 -0
  82. package/dist/abilities/shapes.d.ts +66 -0
  83. package/dist/abilities/shapes.js +122 -0
  84. package/dist/abilities/shapes.js.map +1 -0
  85. package/dist/abilities/text.d.ts +14 -2
  86. package/dist/abilities/text.js +204 -0
  87. package/dist/abilities/text.js.map +1 -0
  88. package/dist/abilities/triggers.d.ts +98 -0
  89. package/dist/abilities/triggers.js +351 -0
  90. package/dist/abilities/triggers.js.map +1 -0
  91. package/dist/abilityChanges.d.ts +131 -0
  92. package/dist/abilityChanges.js +345 -0
  93. package/dist/abilityChanges.js.map +1 -0
  94. package/dist/ai/area.d.ts +4 -1
  95. package/dist/ai/brain.d.ts +4 -1
  96. package/dist/ai/brain.js +844 -0
  97. package/dist/ai/brain.js.map +1 -0
  98. package/dist/ai/budget.js +74 -0
  99. package/dist/ai/budget.js.map +1 -0
  100. package/dist/ai/checks.d.ts +9 -1
  101. package/dist/ai/checks.js +242 -0
  102. package/dist/ai/checks.js.map +1 -0
  103. package/dist/ai/computer.d.ts +11 -4
  104. package/dist/ai/computer.js +251 -0
  105. package/dist/ai/computer.js.map +1 -0
  106. package/dist/ai/defence.d.ts +4 -0
  107. package/dist/ai/defence.js +430 -0
  108. package/dist/ai/defence.js.map +1 -0
  109. package/dist/ai/define.d.ts +3 -2
  110. package/dist/ai/define.js +31 -0
  111. package/dist/ai/define.js.map +1 -0
  112. package/dist/ai/economy.d.ts +10 -7
  113. package/dist/ai/economy.js +780 -0
  114. package/dist/ai/economy.js.map +1 -0
  115. package/dist/ai/geometry.js +38 -0
  116. package/dist/ai/geometry.js.map +1 -0
  117. package/dist/ai/goals.d.ts +1 -0
  118. package/dist/ai/goals.js +560 -0
  119. package/dist/ai/goals.js.map +1 -0
  120. package/dist/ai/knowledge.d.ts +72 -7
  121. package/dist/ai/knowledge.js +804 -0
  122. package/dist/ai/knowledge.js.map +1 -0
  123. package/dist/ai/lanes.d.ts +10 -2
  124. package/dist/ai/lanes.js +715 -0
  125. package/dist/ai/lanes.js.map +1 -0
  126. package/dist/ai/melee/build.js +264 -0
  127. package/dist/ai/melee/build.js.map +1 -0
  128. package/dist/ai/melee/goals.d.ts +7 -0
  129. package/dist/ai/melee/goals.js +720 -0
  130. package/dist/ai/melee/goals.js.map +1 -0
  131. package/dist/ai/melee/heroes.js +68 -0
  132. package/dist/ai/melee/heroes.js.map +1 -0
  133. package/dist/ai/melee/index.d.ts +1 -1
  134. package/dist/ai/melee/index.js +51 -0
  135. package/dist/ai/melee/index.js.map +1 -0
  136. package/dist/ai/melee/production.js +29 -0
  137. package/dist/ai/melee/production.js.map +1 -0
  138. package/dist/ai/melee/surrender.js +64 -0
  139. package/dist/ai/melee/surrender.js.map +1 -0
  140. package/dist/ai/micro.d.ts +9 -0
  141. package/dist/ai/micro.js +1316 -0
  142. package/dist/ai/micro.js.map +1 -0
  143. package/dist/ai/mission.d.ts +9 -2
  144. package/dist/ai/mission.js +538 -0
  145. package/dist/ai/mission.js.map +1 -0
  146. package/dist/ai/missionRules.d.ts +1 -1
  147. package/dist/ai/missionRules.js +26 -0
  148. package/dist/ai/missionRules.js.map +1 -0
  149. package/dist/ai/module.d.ts +6 -2
  150. package/dist/ai/module.js +37 -0
  151. package/dist/ai/module.js.map +1 -0
  152. package/dist/ai/options.d.ts +3 -3
  153. package/dist/ai/plans/build.d.ts +20 -1
  154. package/dist/ai/plans/build.js +608 -0
  155. package/dist/ai/plans/build.js.map +1 -0
  156. package/dist/ai/plans/placement.d.ts +4 -1
  157. package/dist/ai/plans/placement.js +295 -0
  158. package/dist/ai/plans/placement.js.map +1 -0
  159. package/dist/ai/plans/plans.d.ts +9 -0
  160. package/dist/ai/plans/plans.js +110 -0
  161. package/dist/ai/plans/plans.js.map +1 -0
  162. package/dist/ai/plans/production.d.ts +14 -2
  163. package/dist/ai/plans/production.js +434 -0
  164. package/dist/ai/plans/production.js.map +1 -0
  165. package/dist/ai/plans/purse.d.ts +6 -3
  166. package/dist/ai/plans/purse.js +139 -0
  167. package/dist/ai/plans/purse.js.map +1 -0
  168. package/dist/ai/plans/tech.d.ts +6 -0
  169. package/dist/ai/plans/tech.js +122 -0
  170. package/dist/ai/plans/tech.js.map +1 -0
  171. package/dist/ai/profiles.d.ts +4 -4
  172. package/dist/{profiles-B3NS9jwk.js → ai/profiles.js} +3 -98
  173. package/dist/ai/profiles.js.map +1 -0
  174. package/dist/ai/reach.js +54 -0
  175. package/dist/ai/reach.js.map +1 -0
  176. package/dist/ai/report.d.ts +8 -0
  177. package/dist/ai/report.js +87 -0
  178. package/dist/ai/report.js.map +1 -0
  179. package/dist/ai/roles.d.ts +4 -0
  180. package/dist/ai/roles.js +207 -0
  181. package/dist/ai/roles.js.map +1 -0
  182. package/dist/ai/rules.d.ts +8 -2
  183. package/dist/ai/rules.js +416 -0
  184. package/dist/ai/rules.js.map +1 -0
  185. package/dist/ai/scouting.d.ts +6 -0
  186. package/dist/ai/scouting.js +324 -0
  187. package/dist/ai/scouting.js.map +1 -0
  188. package/dist/ai/settings.js +99 -0
  189. package/dist/ai/settings.js.map +1 -0
  190. package/dist/ai/squads.d.ts +21 -2
  191. package/dist/ai/squads.js +916 -0
  192. package/dist/ai/squads.js.map +1 -0
  193. package/dist/ai/strength.js +320 -0
  194. package/dist/ai/strength.js.map +1 -0
  195. package/dist/ai/task.d.ts +3 -1
  196. package/dist/ai/task.js +17 -0
  197. package/dist/ai/task.js.map +1 -0
  198. package/dist/ai/tasks/attack.js +24 -0
  199. package/dist/ai/tasks/attack.js.map +1 -0
  200. package/dist/ai/tasks/capture.d.ts +3 -3
  201. package/dist/ai/tasks/capture.js +37 -0
  202. package/dist/ai/tasks/capture.js.map +1 -0
  203. package/dist/ai/tasks/creep.js +29 -0
  204. package/dist/ai/tasks/creep.js.map +1 -0
  205. package/dist/ai/tasks/defend.js +61 -0
  206. package/dist/ai/tasks/defend.js.map +1 -0
  207. package/dist/ai/tasks/drop.js +81 -0
  208. package/dist/ai/tasks/drop.js.map +1 -0
  209. package/dist/ai/tasks/escort.js +59 -0
  210. package/dist/ai/tasks/escort.js.map +1 -0
  211. package/dist/ai/tasks/gather.js +48 -0
  212. package/dist/ai/tasks/gather.js.map +1 -0
  213. package/dist/ai/tasks/harass.js +39 -0
  214. package/dist/ai/tasks/harass.js.map +1 -0
  215. package/dist/ai/tasks/hold.js +32 -0
  216. package/dist/ai/tasks/hold.js.map +1 -0
  217. package/dist/ai/tasks/index.js +34 -0
  218. package/dist/ai/tasks/index.js.map +1 -0
  219. package/dist/ai/tasks/move.js +26 -0
  220. package/dist/ai/tasks/move.js.map +1 -0
  221. package/dist/ai/tasks/patrol.js +59 -0
  222. package/dist/ai/tasks/patrol.js.map +1 -0
  223. package/dist/ai/tasks/retreat.js +28 -0
  224. package/dist/ai/tasks/retreat.js.map +1 -0
  225. package/dist/ai/tasks/scout.js +73 -0
  226. package/dist/ai/tasks/scout.js.map +1 -0
  227. package/dist/ai/tasks/shared.d.ts +1 -1
  228. package/dist/ai/tasks/shared.js +137 -0
  229. package/dist/ai/tasks/shared.js.map +1 -0
  230. package/dist/ai/team.d.ts +18 -1
  231. package/dist/ai/team.js +492 -0
  232. package/dist/ai/team.js.map +1 -0
  233. package/dist/ai/threat.d.ts +6 -0
  234. package/dist/ai/threat.js +206 -0
  235. package/dist/ai/threat.js.map +1 -0
  236. package/dist/ai/view.d.ts +21 -7
  237. package/dist/ai/view.js +677 -0
  238. package/dist/ai/view.js.map +1 -0
  239. package/dist/ai/waves.d.ts +6 -0
  240. package/dist/ai/waves.js +410 -0
  241. package/dist/ai/waves.js.map +1 -0
  242. package/dist/ai.js +54 -6239
  243. package/dist/aiTesting.d.ts +6 -3
  244. package/dist/aiTesting.js +229 -0
  245. package/dist/aiTesting.js.map +1 -0
  246. package/dist/areas.d.ts +4 -1
  247. package/dist/areas.js +295 -0
  248. package/dist/areas.js.map +1 -0
  249. package/dist/attacks.d.ts +3 -3
  250. package/dist/attacks.js +127 -0
  251. package/dist/attacks.js.map +1 -0
  252. package/dist/burning.d.ts +267 -0
  253. package/dist/burning.js +795 -0
  254. package/dist/burning.js.map +1 -0
  255. package/dist/bytes.js +21 -0
  256. package/dist/bytes.js.map +1 -0
  257. package/dist/callings.d.ts +71 -0
  258. package/dist/callings.js +157 -0
  259. package/dist/callings.js.map +1 -0
  260. package/dist/cameraOrders.d.ts +78 -0
  261. package/dist/cameraOrders.js +114 -0
  262. package/dist/cameraOrders.js.map +1 -0
  263. package/dist/camps.d.ts +70 -4
  264. package/dist/camps.js +501 -0
  265. package/dist/camps.js.map +1 -0
  266. package/dist/capture.d.ts +15 -3
  267. package/dist/capture.js +304 -0
  268. package/dist/capture.js.map +1 -0
  269. package/dist/cellLayers.d.ts +78 -13
  270. package/dist/cellLayers.js +275 -0
  271. package/dist/cellLayers.js.map +1 -0
  272. package/dist/cellPatches.d.ts +24 -0
  273. package/dist/cellPatches.js +73 -0
  274. package/dist/cellPatches.js.map +1 -0
  275. package/dist/cinematics.d.ts +10 -5
  276. package/dist/cinematics.js +161 -0
  277. package/dist/cinematics.js.map +1 -0
  278. package/dist/clock.d.ts +2 -2
  279. package/dist/clock.js +78 -0
  280. package/dist/clock.js.map +1 -0
  281. package/dist/commands.d.ts +36 -4
  282. package/dist/commands.js +636 -0
  283. package/dist/commands.js.map +1 -0
  284. package/dist/components.d.ts +31 -10
  285. package/dist/components.js +74 -0
  286. package/dist/components.js.map +1 -0
  287. package/dist/computers.d.ts +4 -4
  288. package/dist/computers.js +194 -0
  289. package/dist/computers.js.map +1 -0
  290. package/dist/concealment.d.ts +25 -2
  291. package/dist/concealment.js +409 -0
  292. package/dist/concealment.js.map +1 -0
  293. package/dist/coreComponents.js +130 -0
  294. package/dist/coreComponents.js.map +1 -0
  295. package/dist/createGame.d.ts +306 -0
  296. package/dist/createGame.js +405 -0
  297. package/dist/createGame.js.map +1 -0
  298. package/dist/dashing.d.ts +18 -2
  299. package/dist/dashing.js +41 -0
  300. package/dist/dashing.js.map +1 -0
  301. package/dist/debug.d.ts +8 -0
  302. package/dist/debug.js +5 -3
  303. package/dist/debug2.js +76 -0
  304. package/dist/debug2.js.map +1 -0
  305. package/dist/debugCommands.d.ts +6 -6
  306. package/dist/debugCommands.js +537 -0
  307. package/dist/debugCommands.js.map +1 -0
  308. package/dist/debugging.d.ts +1 -0
  309. package/dist/defaultSets.d.ts +183 -0
  310. package/dist/defaultSets.js +216 -0
  311. package/dist/defaultSets.js.map +1 -0
  312. package/dist/definitions.d.ts +6 -0
  313. package/dist/definitions.js +78 -0
  314. package/dist/definitions.js.map +1 -0
  315. package/dist/defs.d.ts +1895 -165
  316. package/dist/defs.js +380 -0
  317. package/dist/defs.js.map +1 -0
  318. package/dist/denying.d.ts +4 -4
  319. package/dist/denying.js +106 -0
  320. package/dist/denying.js.map +1 -0
  321. package/dist/destructibles.d.ts +2 -2
  322. package/dist/destructibles.js +36 -0
  323. package/dist/destructibles.js.map +1 -0
  324. package/dist/determinism.d.ts +4 -4
  325. package/dist/determinism.js +247 -0
  326. package/dist/determinism.js.map +1 -0
  327. package/dist/dialog.d.ts +17 -2
  328. package/dist/dialog.js +108 -0
  329. package/dist/dialog.js.map +1 -0
  330. package/dist/effectRefs.js +28 -0
  331. package/dist/effectRefs.js.map +1 -0
  332. package/dist/effects.d.ts +27 -11
  333. package/dist/effects.js +110 -0
  334. package/dist/effects.js.map +1 -0
  335. package/dist/endings.d.ts +1 -1
  336. package/dist/endings.js +78 -0
  337. package/dist/endings.js.map +1 -0
  338. package/dist/engagement.d.ts +40 -6
  339. package/dist/engagement.js +530 -0
  340. package/dist/engagement.js.map +1 -0
  341. package/dist/engineEvents.d.ts +72 -9
  342. package/dist/engineEvents.js +520 -0
  343. package/dist/engineEvents.js.map +1 -0
  344. package/dist/entity.d.ts +275 -26
  345. package/dist/entity.js +441 -0
  346. package/dist/entity.js.map +1 -0
  347. package/dist/entityIndex.d.ts +10 -3
  348. package/dist/entityIndex.js +149 -0
  349. package/dist/entityIndex.js.map +1 -0
  350. package/dist/errors.d.ts +6 -2
  351. package/dist/errors.js +59 -0
  352. package/dist/errors.js.map +1 -0
  353. package/dist/events.d.ts +11 -5
  354. package/dist/events.js +158 -0
  355. package/dist/events.js.map +1 -0
  356. package/dist/exactMath.js +273 -0
  357. package/dist/exactMath.js.map +1 -0
  358. package/dist/features.d.ts +1 -1
  359. package/dist/features.js +127 -0
  360. package/dist/features.js.map +1 -0
  361. package/dist/fields.d.ts +25 -5
  362. package/dist/fields.js +140 -0
  363. package/dist/fields.js.map +1 -0
  364. package/dist/fixture.d.ts +3 -3
  365. package/dist/fixture.js +512 -0
  366. package/dist/fixture.js.map +1 -0
  367. package/dist/fog.d.ts +26 -3
  368. package/dist/fog.js +333 -0
  369. package/dist/fog.js.map +1 -0
  370. package/dist/foliage.d.ts +476 -0
  371. package/dist/foliage.js +1478 -0
  372. package/dist/foliage.js.map +1 -0
  373. package/dist/foliageDebug.d.ts +57 -0
  374. package/dist/foliageDebug.js +172 -0
  375. package/dist/foliageDebug.js.map +1 -0
  376. package/dist/foliageRegrowth.d.ts +20 -0
  377. package/dist/foliageRegrowth.js +332 -0
  378. package/dist/foliageRegrowth.js.map +1 -0
  379. package/dist/formState.d.ts +67 -0
  380. package/dist/formState.js +65 -0
  381. package/dist/formState.js.map +1 -0
  382. package/dist/formation.d.ts +46 -8
  383. package/dist/formation.js +297 -0
  384. package/dist/formation.js.map +1 -0
  385. package/dist/forms.d.ts +58 -0
  386. package/dist/forms.js +146 -0
  387. package/dist/forms.js.map +1 -0
  388. package/dist/friendlyFire.d.ts +2 -2
  389. package/dist/friendlyFire.js +37 -0
  390. package/dist/friendlyFire.js.map +1 -0
  391. package/dist/game.d.ts +141 -48
  392. package/dist/game.js +834 -0
  393. package/dist/game.js.map +1 -0
  394. package/dist/gameData.d.ts +96 -22
  395. package/dist/gameData.js +1690 -0
  396. package/dist/gameData.js.map +1 -0
  397. package/dist/gameFiles.d.ts +3 -3
  398. package/dist/gameFiles.js +14 -0
  399. package/dist/gameFiles.js.map +1 -0
  400. package/dist/gates.js +92 -0
  401. package/dist/gates.js.map +1 -0
  402. package/dist/generate.d.ts +28 -1
  403. package/dist/generate.js +1062 -0
  404. package/dist/generate.js.map +1 -0
  405. package/dist/generateWorker.d.ts +7 -3
  406. package/dist/generateWorker.js +86 -0
  407. package/dist/generateWorker.js.map +1 -0
  408. package/dist/grid.d.ts +9 -0
  409. package/dist/grid.js +102 -0
  410. package/dist/grid.js.map +1 -0
  411. package/dist/ground.d.ts +17 -1
  412. package/dist/ground.js +375 -0
  413. package/dist/ground.js.map +1 -0
  414. package/dist/groundObjects.d.ts +70 -0
  415. package/dist/groundObjects.js +371 -0
  416. package/dist/groundObjects.js.map +1 -0
  417. package/dist/groundSpeed.d.ts +20 -3
  418. package/dist/groundSpeed.js +117 -0
  419. package/dist/groundSpeed.js.map +1 -0
  420. package/dist/hero.d.ts +126 -10
  421. package/dist/hero.js +432 -0
  422. package/dist/hero.js.map +1 -0
  423. package/dist/holds.d.ts +94 -0
  424. package/dist/holds.js +305 -0
  425. package/dist/holds.js.map +1 -0
  426. package/dist/home.d.ts +1 -1
  427. package/dist/home.js +30 -0
  428. package/dist/home.js.map +1 -0
  429. package/dist/hooks.d.ts +339 -57
  430. package/dist/hooks.js +105 -0
  431. package/dist/hooks.js.map +1 -0
  432. package/dist/hotReload.d.ts +6 -5
  433. package/dist/hotReload.js +145 -0
  434. package/dist/hotReload.js.map +1 -0
  435. package/dist/ids.d.ts +3 -3
  436. package/dist/ids.js +30 -0
  437. package/dist/ids.js.map +1 -0
  438. package/dist/idsFile.d.ts +36 -0
  439. package/dist/idsFile.js +134 -0
  440. package/dist/idsFile.js.map +1 -0
  441. package/dist/index.d.ts +105 -68
  442. package/dist/index.js +194 -4701
  443. package/dist/inspect.d.ts +29 -2
  444. package/dist/{inspect-D9dWHmZ0.js → inspect.js} +21 -12
  445. package/dist/inspect.js.map +1 -0
  446. package/dist/inventory.d.ts +14 -1
  447. package/dist/inventory.js +84 -0
  448. package/dist/inventory.js.map +1 -0
  449. package/dist/items.d.ts +136 -8
  450. package/dist/items.js +585 -0
  451. package/dist/items.js.map +1 -0
  452. package/dist/lanes.d.ts +12 -3
  453. package/dist/lanes.js +496 -0
  454. package/dist/lanes.js.map +1 -0
  455. package/dist/life.d.ts +6 -2
  456. package/dist/life.js +287 -0
  457. package/dist/life.js.map +1 -0
  458. package/dist/log.d.ts +26 -3
  459. package/dist/log.js +192 -0
  460. package/dist/log.js.map +1 -0
  461. package/dist/manaBurn.d.ts +2 -2
  462. package/dist/manaBurn.js +75 -0
  463. package/dist/manaBurn.js.map +1 -0
  464. package/dist/map/file.d.ts +56 -3
  465. package/dist/map/file.js +264 -0
  466. package/dist/map/file.js.map +1 -0
  467. package/dist/map/images.js +61 -0
  468. package/dist/map/images.js.map +1 -0
  469. package/dist/map/look.d.ts +1 -1
  470. package/dist/map/look.js +30 -0
  471. package/dist/map/look.js.map +1 -0
  472. package/dist/map/pathProfile.js +183 -0
  473. package/dist/map/pathProfile.js.map +1 -0
  474. package/dist/map/resize.d.ts +4 -0
  475. package/dist/map/resize.js +136 -0
  476. package/dist/map/resize.js.map +1 -0
  477. package/dist/map/schema.js +257 -0
  478. package/dist/map/schema.js.map +1 -0
  479. package/dist/map/terrain.js +214 -0
  480. package/dist/map/terrain.js.map +1 -0
  481. package/dist/map/types.d.ts +92 -13
  482. package/dist/map/types.js +251 -0
  483. package/dist/map/types.js.map +1 -0
  484. package/dist/mapCheck/cells.js +94 -0
  485. package/dist/mapCheck/cells.js.map +1 -0
  486. package/dist/mapCheck/rules/foliage.d.ts +9 -0
  487. package/dist/mapCheck/rules/foliage.js +83 -0
  488. package/dist/mapCheck/rules/foliage.js.map +1 -0
  489. package/dist/mapCheck/rules/names.js +39 -0
  490. package/dist/mapCheck/rules/names.js.map +1 -0
  491. package/dist/mapCheck/rules/objects.d.ts +1 -1
  492. package/dist/mapCheck/rules/objects.js +56 -0
  493. package/dist/mapCheck/rules/objects.js.map +1 -0
  494. package/dist/mapCheck/rules/paths.js +32 -0
  495. package/dist/mapCheck/rules/paths.js.map +1 -0
  496. package/dist/mapCheck/rules/players.js +20 -0
  497. package/dist/mapCheck/rules/players.js.map +1 -0
  498. package/dist/mapCheck/rules/races.js +56 -0
  499. package/dist/mapCheck/rules/races.js.map +1 -0
  500. package/dist/mapCheck/rules/random.js +47 -0
  501. package/dist/mapCheck/rules/random.js.map +1 -0
  502. package/dist/mapCheck/rules/regions.js +30 -0
  503. package/dist/mapCheck/rules/regions.js.map +1 -0
  504. package/dist/mapCheck/rules/targets.js +31 -0
  505. package/dist/mapCheck/rules/targets.js.map +1 -0
  506. package/dist/mapCheck/rules/walking.js +45 -0
  507. package/dist/mapCheck/rules/walking.js.map +1 -0
  508. package/dist/mapCheck.d.ts +2 -2
  509. package/dist/mapCheck.js +63 -0
  510. package/dist/mapCheck.js.map +1 -0
  511. package/dist/mapFields.d.ts +25 -2
  512. package/dist/mapFields.js +134 -0
  513. package/dist/mapFields.js.map +1 -0
  514. package/dist/mapFile.js +176 -0
  515. package/dist/mapFile.js.map +1 -0
  516. package/dist/mapMeasure.d.ts +8 -0
  517. package/dist/mapMeasure.js +283 -0
  518. package/dist/mapMeasure.js.map +1 -0
  519. package/dist/mapMerge.d.ts +1 -0
  520. package/dist/mapMerge.js +172 -0
  521. package/dist/mapMerge.js.map +1 -0
  522. package/dist/mapObjectives.js +138 -0
  523. package/dist/mapObjectives.js.map +1 -0
  524. package/dist/mapObjects.js +80 -0
  525. package/dist/mapObjects.js.map +1 -0
  526. package/dist/math.d.ts +37 -7
  527. package/dist/math.js +155 -0
  528. package/dist/math.js.map +1 -0
  529. package/dist/messages.d.ts +71 -4
  530. package/dist/messages.js +29 -0
  531. package/dist/messages.js.map +1 -0
  532. package/dist/missionRules.d.ts +10 -2
  533. package/dist/{missionRules-C-bGxm0Q.js → missionRules.js} +30 -150
  534. package/dist/missionRules.js.map +1 -0
  535. package/dist/mods.d.ts +39 -20
  536. package/dist/mods.js +271 -0
  537. package/dist/mods.js.map +1 -0
  538. package/dist/moves.d.ts +87 -0
  539. package/dist/moves.js +539 -0
  540. package/dist/moves.js.map +1 -0
  541. package/dist/names.d.ts +7 -0
  542. package/dist/names.js +122 -0
  543. package/dist/names.js.map +1 -0
  544. package/dist/navigation/agentParams.js +14 -0
  545. package/dist/navigation/agentParams.js.map +1 -0
  546. package/dist/navigation/air.d.ts +7 -3
  547. package/dist/navigation/air.js +401 -0
  548. package/dist/navigation/air.js.map +1 -0
  549. package/dist/navigation/builds.d.ts +34 -2
  550. package/dist/navigation/builds.js +287 -0
  551. package/dist/navigation/builds.js.map +1 -0
  552. package/dist/navigation/groundAreas.d.ts +59 -1
  553. package/dist/navigation/groundAreas.js +407 -0
  554. package/dist/navigation/groundAreas.js.map +1 -0
  555. package/dist/navigation/navigation.d.ts +98 -9
  556. package/dist/navigation/recast.d.ts +194 -18
  557. package/dist/navigation/recast.js +1379 -0
  558. package/dist/navigation/recast.js.map +1 -0
  559. package/dist/navigation/sidePaths.d.ts +8 -3
  560. package/dist/navigation/sidePaths.js +241 -0
  561. package/dist/navigation/sidePaths.js.map +1 -0
  562. package/dist/navigation/sized.js +243 -0
  563. package/dist/navigation/sized.js.map +1 -0
  564. package/dist/nearest.js +32 -0
  565. package/dist/nearest.js.map +1 -0
  566. package/dist/noise.js +59 -0
  567. package/dist/noise.js.map +1 -0
  568. package/dist/objectives.d.ts +12 -3
  569. package/dist/objectives.js +144 -0
  570. package/dist/objectives.js.map +1 -0
  571. package/dist/orders/basic.d.ts +5 -5
  572. package/dist/orders/basic.js +417 -0
  573. package/dist/orders/basic.js.map +1 -0
  574. package/dist/orders/build.js +278 -0
  575. package/dist/orders/build.js.map +1 -0
  576. package/dist/orders/cast.d.ts +13 -3
  577. package/dist/orders/cast.js +558 -0
  578. package/dist/orders/cast.js.map +1 -0
  579. package/dist/orders/facts.js +16 -0
  580. package/dist/orders/facts.js.map +1 -0
  581. package/dist/orders/harvest.d.ts +21 -5
  582. package/dist/orders/harvest.js +540 -0
  583. package/dist/orders/harvest.js.map +1 -0
  584. package/dist/orders/idle.d.ts +3 -1
  585. package/dist/orders/idle.js +234 -0
  586. package/dist/orders/idle.js.map +1 -0
  587. package/dist/orders/items.js +92 -0
  588. package/dist/orders/items.js.map +1 -0
  589. package/dist/orders/queue.js +108 -0
  590. package/dist/orders/queue.js.map +1 -0
  591. package/dist/orders/waiting.d.ts +39 -0
  592. package/dist/orders/waiting.js +149 -0
  593. package/dist/orders/waiting.js.map +1 -0
  594. package/dist/pack.schema.js +13 -0
  595. package/dist/pack.schema.js.map +1 -0
  596. package/dist/pack.schema.json +7622 -841
  597. package/dist/packs/director/index.d.ts +13 -5
  598. package/dist/packs/director/index.js +204 -0
  599. package/dist/packs/director/index.js.map +1 -0
  600. package/dist/packs/heroes/campaign.d.ts +3 -2
  601. package/dist/packs/heroes/campaign.js +241 -0
  602. package/dist/packs/heroes/campaign.js.map +1 -0
  603. package/dist/packs/heroes/carry.d.ts +6 -0
  604. package/dist/packs/heroes/carry.js +112 -0
  605. package/dist/packs/heroes/carry.js.map +1 -0
  606. package/dist/packs/heroes/commands.js +115 -0
  607. package/dist/packs/heroes/commands.js.map +1 -0
  608. package/dist/packs/heroes/fallen.d.ts +43 -0
  609. package/dist/packs/heroes/fallen.js +61 -0
  610. package/dist/packs/heroes/fallen.js.map +1 -0
  611. package/dist/packs/heroes/hire.js +60 -0
  612. package/dist/packs/heroes/hire.js.map +1 -0
  613. package/dist/packs/heroes/index.d.ts +7 -6
  614. package/dist/packs/heroes/index.js +130 -0
  615. package/dist/packs/heroes/index.js.map +1 -0
  616. package/dist/packs/heroes/loop.d.ts +95 -0
  617. package/dist/packs/heroes/loop.js +250 -0
  618. package/dist/packs/heroes/loop.js.map +1 -0
  619. package/dist/packs/heroes/making.d.ts +6 -3
  620. package/dist/packs/heroes/making.js +55 -0
  621. package/dist/packs/heroes/making.js.map +1 -0
  622. package/dist/packs/heroes/respawn.d.ts +3 -3
  623. package/dist/packs/heroes/respawn.js +87 -0
  624. package/dist/packs/heroes/respawn.js.map +1 -0
  625. package/dist/packs/heroes/sets.d.ts +32 -0
  626. package/dist/packs/heroes/sets.js +51 -0
  627. package/dist/packs/heroes/sets.js.map +1 -0
  628. package/dist/packs/heroes/spells.d.ts +16 -0
  629. package/dist/packs/heroes/spells.js +269 -0
  630. package/dist/packs/heroes/spells.js.map +1 -0
  631. package/dist/packs/items/defaults.d.ts +43 -0
  632. package/dist/packs/items/defaults.js +1504 -0
  633. package/dist/packs/items/defaults.js.map +1 -0
  634. package/dist/packs/items/index.d.ts +27 -0
  635. package/dist/packs/items/index.js +214 -0
  636. package/dist/packs/items/index.js.map +1 -0
  637. package/dist/packs/moba/index.d.ts +3 -3
  638. package/dist/packs/moba/index.js +174 -0
  639. package/dist/packs/moba/index.js.map +1 -0
  640. package/dist/packs/pack.d.ts +15 -15
  641. package/dist/packs/pack.js +14 -0
  642. package/dist/packs/pack.js.map +1 -0
  643. package/dist/packs.d.ts +15 -7
  644. package/dist/packs.js +222 -0
  645. package/dist/packs.js.map +1 -0
  646. package/dist/paths.d.ts +2 -0
  647. package/dist/paths.js +109 -0
  648. package/dist/paths.js.map +1 -0
  649. package/dist/plain.js +57 -0
  650. package/dist/plain.js.map +1 -0
  651. package/dist/player.d.ts +33 -10
  652. package/dist/player.js +159 -0
  653. package/dist/player.js.map +1 -0
  654. package/dist/portals.d.ts +1 -1
  655. package/dist/portals.js +194 -0
  656. package/dist/portals.js.map +1 -0
  657. package/dist/prefabs.d.ts +25 -2
  658. package/dist/prefabs.js +239 -0
  659. package/dist/prefabs.js.map +1 -0
  660. package/dist/presetBuildings.js +58 -0
  661. package/dist/presetBuildings.js.map +1 -0
  662. package/dist/presetFoliage.d.ts +27 -0
  663. package/dist/presetFoliage.js +98 -0
  664. package/dist/presetFoliage.js.map +1 -0
  665. package/dist/presetGround.js +65 -0
  666. package/dist/presetGround.js.map +1 -0
  667. package/dist/proxies.d.ts +12 -0
  668. package/dist/proxies.js +79 -0
  669. package/dist/proxies.js.map +1 -0
  670. package/dist/query.d.ts +56 -0
  671. package/dist/query.js +88 -0
  672. package/dist/query.js.map +1 -0
  673. package/dist/races.d.ts +15 -14
  674. package/dist/races.js +172 -0
  675. package/dist/races.js.map +1 -0
  676. package/dist/randomGroups.js +91 -0
  677. package/dist/randomGroups.js.map +1 -0
  678. package/dist/registry.d.ts +117 -53
  679. package/dist/registry.js +323 -0
  680. package/dist/registry.js.map +1 -0
  681. package/dist/remains.d.ts +11 -9
  682. package/dist/remains.js +188 -0
  683. package/dist/remains.js.map +1 -0
  684. package/dist/replication.d.ts +12 -7
  685. package/dist/replication.js +100 -0
  686. package/dist/replication.js.map +1 -0
  687. package/dist/rng.d.ts +2 -0
  688. package/dist/rng.js +40 -0
  689. package/dist/rng.js.map +1 -0
  690. package/dist/rules.d.ts +186 -99
  691. package/dist/rules.js +179 -0
  692. package/dist/rules.js.map +1 -0
  693. package/dist/rulesCheck.d.ts +5 -4
  694. package/dist/rulesCheck.js +693 -0
  695. package/dist/rulesCheck.js.map +1 -0
  696. package/dist/runes.d.ts +2 -2
  697. package/dist/runes.js +80 -0
  698. package/dist/runes.js.map +1 -0
  699. package/dist/save.d.ts +37 -12
  700. package/dist/save.js +532 -0
  701. package/dist/save.js.map +1 -0
  702. package/dist/scenario.d.ts +2 -2
  703. package/dist/scenario.js +99 -0
  704. package/dist/scenario.js.map +1 -0
  705. package/dist/scheduler.d.ts +3 -0
  706. package/dist/scheduler.js +156 -0
  707. package/dist/scheduler.js.map +1 -0
  708. package/dist/score.d.ts +19 -19
  709. package/dist/score.js +709 -0
  710. package/dist/score.js.map +1 -0
  711. package/dist/sequences.d.ts +10 -6
  712. package/dist/sequences.js +206 -0
  713. package/dist/sequences.js.map +1 -0
  714. package/dist/server/doorman.js +154 -0
  715. package/dist/server/doorman.js.map +1 -0
  716. package/dist/server/gameServer.d.ts +16 -1
  717. package/dist/server/gameServer.js +643 -0
  718. package/dist/server/gameServer.js.map +1 -0
  719. package/dist/server/index.d.ts +1 -1
  720. package/dist/server/lobby.js +199 -0
  721. package/dist/server/lobby.js.map +1 -0
  722. package/dist/server/log.js +18 -0
  723. package/dist/server/log.js.map +1 -0
  724. package/dist/server/match.js +267 -0
  725. package/dist/server/match.js.map +1 -0
  726. package/dist/server/mode.d.ts +18 -9
  727. package/dist/server/mode.js +220 -0
  728. package/dist/server/mode.js.map +1 -0
  729. package/dist/{navigation-worker.js → server/navigation-worker.js} +1 -1
  730. package/dist/server/navigation-worker.js.map +1 -0
  731. package/dist/server/navigation.js +39 -0
  732. package/dist/server/navigation.js.map +1 -0
  733. package/dist/server/ops.d.ts +4 -0
  734. package/dist/server/ops.js +137 -0
  735. package/dist/server/ops.js.map +1 -0
  736. package/dist/server/packs.d.ts +3 -3
  737. package/dist/server/packs.js +32 -0
  738. package/dist/server/packs.js.map +1 -0
  739. package/dist/server/ratings.d.ts +5 -0
  740. package/dist/server/ratings.js +104 -0
  741. package/dist/server/ratings.js.map +1 -0
  742. package/dist/server/relay.d.ts +12 -2
  743. package/dist/server/relay.js +144 -0
  744. package/dist/server/relay.js.map +1 -0
  745. package/dist/server/rooms.d.ts +9 -2
  746. package/dist/server/rooms.js +442 -0
  747. package/dist/server/rooms.js.map +1 -0
  748. package/dist/server/seat.js +116 -0
  749. package/dist/server/seat.js.map +1 -0
  750. package/dist/server/seatSettings.d.ts +3 -3
  751. package/dist/server/seatSettings.js +63 -0
  752. package/dist/server/seatSettings.js.map +1 -0
  753. package/dist/server/secret.js +13 -0
  754. package/dist/server/secret.js.map +1 -0
  755. package/dist/server/start.d.ts +13 -6
  756. package/dist/server/start.js +76 -0
  757. package/dist/server/start.js.map +1 -0
  758. package/dist/server/websocket.d.ts +9 -1
  759. package/dist/server/websocket.js +306 -0
  760. package/dist/server/websocket.js.map +1 -0
  761. package/dist/server.js +15 -2861
  762. package/dist/session/can.js +26 -0
  763. package/dist/session/can.js.map +1 -0
  764. package/dist/session/commandReplay.d.ts +8 -2
  765. package/dist/session/commandReplay.js +293 -0
  766. package/dist/session/commandReplay.js.map +1 -0
  767. package/dist/session/debug.js +151 -0
  768. package/dist/session/debug.js.map +1 -0
  769. package/dist/session/delay.js +62 -0
  770. package/dist/session/delay.js.map +1 -0
  771. package/dist/session/delta.d.ts +14 -1
  772. package/dist/session/delta.js +407 -0
  773. package/dist/session/delta.js.map +1 -0
  774. package/dist/session/entityState.js +415 -0
  775. package/dist/session/entityState.js.map +1 -0
  776. package/dist/session/local.d.ts +47 -5
  777. package/dist/session/local.js +670 -0
  778. package/dist/session/local.js.map +1 -0
  779. package/dist/session/memory.d.ts +20 -2
  780. package/dist/session/memory.js +131 -0
  781. package/dist/session/memory.js.map +1 -0
  782. package/dist/session/protocol.d.ts +325 -31
  783. package/dist/session/protocol.js +55 -0
  784. package/dist/session/protocol.js.map +1 -0
  785. package/dist/session/remote.d.ts +74 -12
  786. package/dist/session/remote.js +1394 -0
  787. package/dist/session/remote.js.map +1 -0
  788. package/dist/session/replay.d.ts +11 -2
  789. package/dist/session/replay.js +160 -0
  790. package/dist/session/replay.js.map +1 -0
  791. package/dist/session/seed.js +12 -0
  792. package/dist/session/seed.js.map +1 -0
  793. package/dist/session/share.d.ts +5 -1
  794. package/dist/session/share.js +94 -0
  795. package/dist/session/share.js.map +1 -0
  796. package/dist/session/socket.d.ts +1 -1
  797. package/dist/session/socket.js +29 -0
  798. package/dist/session/socket.js.map +1 -0
  799. package/dist/session/wire.d.ts +5 -0
  800. package/dist/session/wire.js +84 -0
  801. package/dist/session/wire.js.map +1 -0
  802. package/dist/session/worker.d.ts +77 -12
  803. package/dist/session/worker.js +499 -0
  804. package/dist/session/worker.js.map +1 -0
  805. package/dist/shared.d.ts +31 -5
  806. package/dist/shared.js +166 -0
  807. package/dist/shared.js.map +1 -0
  808. package/dist/sides.d.ts +9 -3
  809. package/dist/sides.js +149 -0
  810. package/dist/sides.js.map +1 -0
  811. package/dist/sight.js +85 -0
  812. package/dist/sight.js.map +1 -0
  813. package/dist/simulate-worker.js +1 -1
  814. package/dist/simulate.d.ts +12 -8
  815. package/dist/{simulate-oXBiw1Ff.js → simulate.js} +10 -11
  816. package/dist/simulate.js.map +1 -0
  817. package/dist/smart.js +77 -0
  818. package/dist/smart.js.map +1 -0
  819. package/dist/spatial.d.ts +32 -16
  820. package/dist/spatial.js +234 -0
  821. package/dist/spatial.js.map +1 -0
  822. package/dist/spawning.d.ts +1 -0
  823. package/dist/spawning.js +224 -0
  824. package/dist/spawning.js.map +1 -0
  825. package/dist/stances.d.ts +6 -3
  826. package/dist/stances.js +169 -0
  827. package/dist/stances.js.map +1 -0
  828. package/dist/start.d.ts +10 -10
  829. package/dist/start.js +75 -0
  830. package/dist/start.js.map +1 -0
  831. package/dist/stats.d.ts +42 -16
  832. package/dist/stats.js +290 -0
  833. package/dist/stats.js.map +1 -0
  834. package/dist/summoned.d.ts +52 -0
  835. package/dist/summoned.js +38 -0
  836. package/dist/summoned.js.map +1 -0
  837. package/dist/summons.d.ts +10 -13
  838. package/dist/summons.js +271 -0
  839. package/dist/summons.js.map +1 -0
  840. package/dist/systems/abilities.js +224 -0
  841. package/dist/systems/abilities.js.map +1 -0
  842. package/dist/systems/combat.d.ts +35 -1
  843. package/dist/systems/combat.js +677 -0
  844. package/dist/systems/combat.js.map +1 -0
  845. package/dist/systems/combatTold.d.ts +3 -1
  846. package/dist/systems/combatTold.js +85 -0
  847. package/dist/systems/combatTold.js.map +1 -0
  848. package/dist/systems/construction.js +80 -0
  849. package/dist/systems/construction.js.map +1 -0
  850. package/dist/systems/economy.d.ts +0 -6
  851. package/dist/systems/economy.js +128 -0
  852. package/dist/systems/economy.js.map +1 -0
  853. package/dist/systems/fog.d.ts +1 -1
  854. package/dist/systems/fog.js +120 -0
  855. package/dist/systems/fog.js.map +1 -0
  856. package/dist/systems/life.js +32 -0
  857. package/dist/systems/life.js.map +1 -0
  858. package/dist/systems/movement.d.ts +24 -12
  859. package/dist/systems/movement.js +1247 -0
  860. package/dist/systems/movement.js.map +1 -0
  861. package/dist/systems/orders.js +64 -0
  862. package/dist/systems/orders.js.map +1 -0
  863. package/dist/systems/production.js +322 -0
  864. package/dist/systems/production.js.map +1 -0
  865. package/dist/systems/productionQueue.js +120 -0
  866. package/dist/systems/productionQueue.js.map +1 -0
  867. package/dist/systems/victory.d.ts +1 -1
  868. package/dist/systems/victory.js +56 -0
  869. package/dist/systems/victory.js.map +1 -0
  870. package/dist/talk.d.ts +6 -6
  871. package/dist/talk.js +153 -0
  872. package/dist/talk.js.map +1 -0
  873. package/dist/targeting.d.ts +142 -0
  874. package/dist/targeting.js +49 -0
  875. package/dist/targeting.js.map +1 -0
  876. package/dist/tech.d.ts +20 -3
  877. package/dist/tech.js +239 -0
  878. package/dist/tech.js.map +1 -0
  879. package/dist/techTree.d.ts +7 -0
  880. package/dist/techTree.js +90 -0
  881. package/dist/techTree.js.map +1 -0
  882. package/dist/terrain.d.ts +59 -7
  883. package/dist/terrain.js +389 -0
  884. package/dist/terrain.js.map +1 -0
  885. package/dist/terrainSave.d.ts +6 -0
  886. package/dist/terrainSave.js +74 -0
  887. package/dist/terrainSave.js.map +1 -0
  888. package/dist/testing.d.ts +8 -7
  889. package/dist/testing.js +13 -739
  890. package/dist/testing.js.map +1 -1
  891. package/dist/tiles.d.ts +1 -1
  892. package/dist/tiles.js +43 -0
  893. package/dist/tiles.js.map +1 -0
  894. package/dist/timers.d.ts +29 -4
  895. package/dist/timers.js +242 -0
  896. package/dist/timers.js.map +1 -0
  897. package/dist/tomes.d.ts +4 -4
  898. package/dist/tomes.js +94 -0
  899. package/dist/tomes.js.map +1 -0
  900. package/dist/trade.js +103 -0
  901. package/dist/trade.js.map +1 -0
  902. package/dist/transport.d.ts +6 -1
  903. package/dist/transport.js +281 -0
  904. package/dist/transport.js.map +1 -0
  905. package/dist/tunables.d.ts +10 -3
  906. package/dist/tunables.js +56 -0
  907. package/dist/tunables.js.map +1 -0
  908. package/dist/unitResources.d.ts +67 -0
  909. package/dist/unitResources.js +266 -0
  910. package/dist/unitResources.js.map +1 -0
  911. package/dist/upkeep.d.ts +6 -1
  912. package/dist/upkeep.js +26 -0
  913. package/dist/upkeep.js.map +1 -0
  914. package/dist/veterancy.d.ts +8 -3
  915. package/dist/veterancy.js +131 -0
  916. package/dist/veterancy.js.map +1 -0
  917. package/dist/vision.d.ts +36 -0
  918. package/dist/vision.js +133 -0
  919. package/dist/vision.js.map +1 -0
  920. package/dist/walls.d.ts +1 -1
  921. package/dist/walls.js +278 -0
  922. package/dist/walls.js.map +1 -0
  923. package/dist/world.d.ts +606 -88
  924. package/dist/world.js +1263 -0
  925. package/dist/world.js.map +1 -0
  926. package/package.json +2 -2
  927. package/dist/ai.js.map +0 -1
  928. package/dist/attributes.d.ts +0 -66
  929. package/dist/brain-BvVdUhX8.js +0 -7659
  930. package/dist/brain-BvVdUhX8.js.map +0 -1
  931. package/dist/builds-C6LfgvEU.js +0 -460
  932. package/dist/builds-C6LfgvEU.js.map +0 -1
  933. package/dist/coreComponents-syuh2fPG.js +0 -5149
  934. package/dist/coreComponents-syuh2fPG.js.map +0 -1
  935. package/dist/debugCommands-CzjrSm66.js +0 -14739
  936. package/dist/debugCommands-CzjrSm66.js.map +0 -1
  937. package/dist/determinism-BCymQwiE.js +0 -518
  938. package/dist/determinism-BCymQwiE.js.map +0 -1
  939. package/dist/game-DiJEN-Ks.js +0 -5800
  940. package/dist/game-DiJEN-Ks.js.map +0 -1
  941. package/dist/index.js.map +0 -1
  942. package/dist/inspect-D9dWHmZ0.js.map +0 -1
  943. package/dist/local-Dkovq42k.js +0 -1379
  944. package/dist/local-Dkovq42k.js.map +0 -1
  945. package/dist/missionRules-C-bGxm0Q.js.map +0 -1
  946. package/dist/navigation-worker.js.map +0 -1
  947. package/dist/packs-g5thvmGn.js +0 -3199
  948. package/dist/packs-g5thvmGn.js.map +0 -1
  949. package/dist/profiles-B3NS9jwk.js.map +0 -1
  950. package/dist/server.js.map +0 -1
  951. package/dist/simulate-oXBiw1Ff.js.map +0 -1
package/dist/score.js ADDED
@@ -0,0 +1,709 @@
1
+ import { defineComponent } from "./components.js";
2
+ import { abilityCast, bounty, constructionFinished, damaged, entityDied, gameOver, healed, heroLevelUp, itemPicked, resourcesDeposited, resourcesSpent, traded, unitHired, unitTrained, xpGained } from "./engineEvents.js";
3
+ import { snapshotField } from "./replication.js";
4
+ import { boughtBack, heroAssisted, heroOf, heroState, killStreak } from "./hero.js";
5
+ //#region src/score.ts
6
+ /**
7
+ * The world's component the score is kept in (`core.score`, on the world's own entity): what a save keeps of it
8
+ *
9
+ * @beta
10
+ */
11
+ var scoreData = defineComponent({
12
+ id: "core.score",
13
+ default: () => ({
14
+ values: {},
15
+ types: {},
16
+ every: 0,
17
+ ticks: [],
18
+ line: {}
19
+ })
20
+ });
21
+ /**
22
+ * A source of a stat, typed by its event, the engine's or the game's own: `scoreOn(entityDied, ({ entity, killer }) =>
23
+ * killer && { player: killer.owner })`
24
+ *
25
+ * @beta
26
+ */
27
+ function scoreOn(event, count) {
28
+ return {
29
+ event,
30
+ count
31
+ };
32
+ }
33
+ /**
34
+ * A stat of the game's own, for `RuleSettings.score`: `defineStat({ id: 'towersLost', label: 'Towers lost', category: 'units',
35
+ * from: scoreOn(entityDied, ({ entity }) => entity.def.tags?.includes('tower') ? entity.owner : undefined) })`.
36
+ * One with no source is counted in code (`world.score.add(player, 'towersLost')`)
37
+ *
38
+ * @public
39
+ */
40
+ function defineStat(def) {
41
+ return def;
42
+ }
43
+ var CATEGORY_LABELS = {
44
+ units: "Units",
45
+ heroes: "Heroes",
46
+ resources: "Resources",
47
+ combat: "Combat",
48
+ other: "Other"
49
+ };
50
+ /** The score's rules with their stats made of the game, checked: an id twice, or a timeline of no length, throws */
51
+ function resolveScore(rules, game) {
52
+ if (!rules) return null;
53
+ const stats = typeof rules.stats === "function" ? rules.stats(game) : rules.stats;
54
+ const byId = /* @__PURE__ */ new Map();
55
+ for (const stat of stats) {
56
+ if (byId.has(stat.id)) throw new Error(`The score has the stat "${stat.id}" twice`);
57
+ byId.set(stat.id, stat);
58
+ }
59
+ if (rules.every !== void 0 && !(rules.every >= 0)) throw new Error(`The score's timeline is sampled every ${rules.every} seconds: 0 or more`);
60
+ const categories = [...rules.categories ?? []];
61
+ for (const stat of stats) {
62
+ const id = stat.category ?? "other";
63
+ if (!stat.hidden && !categories.some((category) => category.id === id)) categories.push({
64
+ id,
65
+ label: CATEGORY_LABELS[id] ?? id
66
+ });
67
+ }
68
+ return {
69
+ rules,
70
+ stats,
71
+ byId,
72
+ categories
73
+ };
74
+ }
75
+ /** What a kind makes of a number and what is told */
76
+ function combine(kind, before, amount) {
77
+ switch (kind) {
78
+ case "count": return (before ?? 0) + 1;
79
+ case "max": return before === void 0 ? amount : Math.max(before, amount);
80
+ case "min": return before === void 0 ? amount : Math.min(before, amount);
81
+ case "last": return amount;
82
+ default: return (before ?? 0) + amount;
83
+ }
84
+ }
85
+ /** Rounded to hundredths, for the wire */
86
+ var hundredths = (value) => Math.round(value * 100) / 100;
87
+ /**
88
+ * The score of a world (`world.score`): counts what its stats are told of the world's events, takes the gauges and
89
+ * the timeline's points, and is what the game's code counts with, and reads, in the rules. What it keeps is the
90
+ * world's state (`scoreData`); nothing of it is kept here but what is made again from the game
91
+ *
92
+ * @beta
93
+ */
94
+ var Score = class {
95
+ world;
96
+ /** Goes up with every change of a number: what a session tells the screens again by */
97
+ version = 0;
98
+ /** Goes up with every point of the timeline */
99
+ lineVersion = 0;
100
+ offs = [];
101
+ constructor(world) {
102
+ this.world = world;
103
+ this.listen();
104
+ }
105
+ /** The game's score, as its rules say: none for a game that counts nothing */
106
+ get rules() {
107
+ return this.world.registry.score;
108
+ }
109
+ /** Whether the game counts anything */
110
+ get on() {
111
+ return this.world.registry.score !== null;
112
+ }
113
+ /** The stats, in order */
114
+ stats() {
115
+ return this.rules?.stats ?? [];
116
+ }
117
+ /** Hears the events the stats are counted from: again when the game takes a new version (`reloadGame`) */
118
+ listen() {
119
+ for (const off of this.offs) off();
120
+ this.offs = [];
121
+ const score = this.rules;
122
+ if (!score) return;
123
+ const byEvent = /* @__PURE__ */ new Map();
124
+ for (const stat of score.stats) {
125
+ const sources = !stat.from ? [] : Array.isArray(stat.from) ? stat.from : [stat.from];
126
+ for (const source of sources) {
127
+ let heard = byEvent.get(source.event.id);
128
+ if (!heard) byEvent.set(source.event.id, heard = {
129
+ key: source.event,
130
+ list: []
131
+ });
132
+ heard.list.push({
133
+ stat,
134
+ source
135
+ });
136
+ }
137
+ }
138
+ const world = this.world;
139
+ for (const { key, list } of byEvent.values()) this.offs.push(world.events.on(key, (payload) => {
140
+ for (let i = 0; i < list.length; i++) {
141
+ const { stat, source } = list[i];
142
+ if (world.disabled.size && world.disabled.has(`listener:score:${stat.id}`)) continue;
143
+ let counted;
144
+ try {
145
+ counted = source.count(payload, world);
146
+ } catch (error) {
147
+ world.caught(error, {
148
+ kind: "listener",
149
+ id: `score:${stat.id}`
150
+ });
151
+ continue;
152
+ }
153
+ this.take(stat, counted);
154
+ }
155
+ }));
156
+ this.offs.push(world.events.on(gameOver, () => this.sample(true)));
157
+ }
158
+ take(stat, counted) {
159
+ if (counted === void 0 || counted === null) return;
160
+ if (typeof counted === "number") this.put(stat, counted, 1, void 0);
161
+ else if (Array.isArray(counted)) for (const each of counted) this.put(stat, each.player, each.amount ?? 1, each.type);
162
+ else {
163
+ const each = counted;
164
+ this.put(stat, each.player, each.amount ?? 1, each.type);
165
+ }
166
+ }
167
+ /** Whether a player's numbers are kept: as the rules say, every player but the neutral ones and the creeps when they do not */
168
+ counts(player) {
169
+ const own = this.rules?.rules.counts;
170
+ if (own) return own(this.world, player);
171
+ const found = this.world.players.get(player);
172
+ return !!found && !found.neutral && !found.creeps;
173
+ }
174
+ /** Who `counts`, by player id, where the rules leave it to the engine (whether a player is neutral never changes) */
175
+ counted = [];
176
+ /** The players whose numbers are kept, by id */
177
+ players() {
178
+ const players = [];
179
+ for (const id of this.world.players.keys()) if (this.counts(id)) players.push(id);
180
+ return players.sort((a, b) => a - b);
181
+ }
182
+ put(stat, player, amount, type) {
183
+ if (!Number.isFinite(amount)) return;
184
+ if (this.rules.rules.counts ? !this.counts(player) : !(this.counted[player] ??= this.counts(player))) return;
185
+ const data = this.world.state(scoreData);
186
+ const values = data.values[stat.id] ??= {};
187
+ values[player] = combine(stat.kind, values[player], amount);
188
+ if (stat.byType && type !== void 0) {
189
+ const types = (data.types[stat.id] ??= {})[player] ??= {};
190
+ types[type] = combine(stat.kind, types[type], amount);
191
+ }
192
+ this.version++;
193
+ }
194
+ stat(id) {
195
+ const stat = this.rules?.byId.get(id);
196
+ if (!stat) throw new Error(this.rules ? `The score has no stat "${id}": give it in RuleSettings.score (defineStat)` : `The game counts no score: give RuleSettings.score (presetScore(), or stats of its own) to count "${id}"`);
197
+ return stat;
198
+ }
199
+ /** Counts something for a player, as the stat's kind takes it (adds it up for a sum): one when no amount is given */
200
+ add(player, id, amount = 1, type) {
201
+ this.put(this.stat(id), player, amount, type);
202
+ }
203
+ /** Sets a player's number, whatever the stat's kind */
204
+ set(player, id, value, type) {
205
+ this.put({
206
+ ...this.stat(id),
207
+ kind: "last"
208
+ }, player, value, type);
209
+ }
210
+ /** A player's number of a stat: 0 for one never counted */
211
+ get(player, id) {
212
+ return this.world.state(scoreData).values[id]?.[player] ?? 0;
213
+ }
214
+ /** A player's numbers of a stat kept by type, by type */
215
+ byType(player, id) {
216
+ return this.world.state(scoreData).types[id]?.[player] ?? {};
217
+ }
218
+ /** A team's number of a stat: its players' added up, or the most or the least of them for `max` and `min` */
219
+ team(team, id) {
220
+ const stat = this.stat(id);
221
+ let total;
222
+ for (const player of this.players()) {
223
+ if (this.world.player(player).team !== team) continue;
224
+ const value = this.get(player, id);
225
+ total = stat.kind === "max" || stat.kind === "min" ? total === void 0 ? value : combine(stat.kind, total, value) : (total ?? 0) + value;
226
+ }
227
+ return total ?? 0;
228
+ }
229
+ /** The timeline of a player's number of a stat on it: its points, at `ticks` */
230
+ timeline(player, id) {
231
+ const data = this.world.state(scoreData);
232
+ return {
233
+ ticks: data.ticks,
234
+ values: data.line[id]?.[player] ?? []
235
+ };
236
+ }
237
+ /** Reads the gauges, and on a point of the timeline (or `point`) takes a point. Run once a second by the score's system */
238
+ sample(point = false) {
239
+ const score = this.rules;
240
+ if (!score) return;
241
+ const { world } = this;
242
+ const players = this.players();
243
+ for (const stat of score.stats) {
244
+ if (!stat.sample || world.disabled.size && world.disabled.has(`system:score:${stat.id}`)) continue;
245
+ const kind = stat.kind ?? "last";
246
+ for (const player of players) {
247
+ let value;
248
+ try {
249
+ value = stat.sample(world, player);
250
+ } catch (error) {
251
+ world.caught(error, {
252
+ kind: "system",
253
+ id: `score:${stat.id}`
254
+ });
255
+ continue;
256
+ }
257
+ if (value !== void 0) this.put(stat.kind ? stat : {
258
+ ...stat,
259
+ kind
260
+ }, player, value, void 0);
261
+ }
262
+ }
263
+ const data = world.state(scoreData);
264
+ const every = Math.round((score.rules.every ?? 10) * world.tickRate);
265
+ if (every <= 0) return;
266
+ if (!data.every) data.every = every;
267
+ if (!(data.ticks.length === 0 || world.tick - data.ticks[data.ticks.length - 1] >= data.every) && !(point && data.ticks[data.ticks.length - 1] !== world.tick)) return;
268
+ data.ticks.push(world.tick);
269
+ for (const stat of score.stats) {
270
+ if (!stat.timeline) continue;
271
+ const line = data.line[stat.id] ??= {};
272
+ for (const player of players) {
273
+ const points = line[player] ??= [];
274
+ while (points.length < data.ticks.length - 1) points.push(0);
275
+ points.push(data.values[stat.id]?.[player] ?? 0);
276
+ }
277
+ }
278
+ const max = Math.max(score.rules.maxPoints ?? 360, 8);
279
+ if (data.ticks.length > max) {
280
+ const keep = (list) => list.filter((_, i) => i % 2 === 0 || i === list.length - 1);
281
+ data.ticks = keep(data.ticks);
282
+ for (const lines of Object.values(data.line)) for (const player in lines) lines[player] = keep(lines[player]);
283
+ data.every *= 2;
284
+ }
285
+ this.lineVersion++;
286
+ this.version++;
287
+ }
288
+ /** Whether `viewer` (`undefined` for an observer) is told `player`'s numbers now */
289
+ tells(viewer, player, final) {
290
+ const rules = this.rules?.rules;
291
+ if (!rules) return false;
292
+ const audience = final ? rules.end ?? "everyone" : rules.live ?? "allies";
293
+ if (typeof audience === "function") return audience(this.world, viewer, player);
294
+ if (audience === "none") return false;
295
+ if (viewer === void 0 || audience === "everyone") return true;
296
+ if (audience === "own") return viewer === player;
297
+ return viewer === player || this.world.player(viewer).team === this.world.player(player).team;
298
+ }
299
+ /** What `viewer` is told of the numbers (`Snapshot.score`): nothing for a game that counts none, or a viewer told of no one */
300
+ stateFor(viewer, final) {
301
+ const score = this.rules;
302
+ if (!score) return void 0;
303
+ const players = this.players().filter((player) => this.tells(viewer, player, final));
304
+ if (!players.length) return void 0;
305
+ const data = this.world.state(scoreData);
306
+ const values = {};
307
+ let types;
308
+ for (const stat of score.stats) {
309
+ const all = data.values[stat.id];
310
+ if (all) {
311
+ const told = {};
312
+ for (const player of players) if (player in all) told[player] = hundredths(all[player]);
313
+ values[stat.id] = told;
314
+ }
315
+ const byType = stat.byType ? data.types[stat.id] : void 0;
316
+ if (byType) {
317
+ const told = {};
318
+ for (const player of players) {
319
+ if (!byType[player]) continue;
320
+ const each = {};
321
+ for (const type in byType[player]) each[type] = hundredths(byType[player][type]);
322
+ told[player] = each;
323
+ }
324
+ (types ??= {})[stat.id] = told;
325
+ }
326
+ }
327
+ return {
328
+ tick: this.world.tick,
329
+ final,
330
+ players,
331
+ values,
332
+ ...types && { types }
333
+ };
334
+ }
335
+ /** What `viewer` is told of the timeline (`Snapshot.scoreLine`): nothing without one */
336
+ lineFor(viewer, final) {
337
+ if (!this.rules) return void 0;
338
+ const data = this.world.state(scoreData);
339
+ if (!data.ticks.length) return void 0;
340
+ const players = this.players().filter((player) => this.tells(viewer, player, final));
341
+ if (!players.length) return void 0;
342
+ const values = {};
343
+ for (const stat in data.line) {
344
+ const told = {};
345
+ for (const player of players) if (data.line[stat][player]) told[player] = data.line[stat][player].map(hundredths);
346
+ values[stat] = told;
347
+ }
348
+ return {
349
+ every: data.every / this.world.tickRate,
350
+ ticks: [...data.ticks],
351
+ values
352
+ };
353
+ }
354
+ };
355
+ /** The score's system: the gauges once a second, a point of the timeline when one is due. Only in a game that counts */
356
+ function scoreSystem(world) {
357
+ return {
358
+ name: "score",
359
+ phase: "cleanup",
360
+ every: Math.max(Math.round(world.tickRate), 1),
361
+ update: (world) => world.score.sample()
362
+ };
363
+ }
364
+ var enemies = (world, a, b) => world.areEnemies(a, b);
365
+ /** Whether a death is a loss: what was cancelled, ran out, was removed, a tree felled or a mine dry is not */
366
+ var lost = (reason) => reason !== "cancelled" && reason !== "expired" && reason !== "removed" && reason !== "depleted" && reason !== "felled";
367
+ var killedBy = (world, entity, killer) => killer && enemies(world, killer.owner, entity.owner) ? killer.owner : void 0;
368
+ /**
369
+ * The stats `presetScore` has, by id, those of each resource made of the game (`gathered.gold`, `spent.gold`...)
370
+ *
371
+ * @beta
372
+ */
373
+ function engineStats(game) {
374
+ const resources = game.resources ?? [];
375
+ const currency = game.currency ?? resources[0]?.id;
376
+ return [
377
+ defineStat({
378
+ id: "unitsProduced",
379
+ label: "Units produced",
380
+ category: "units",
381
+ byType: true,
382
+ from: [scoreOn(unitTrained, ({ unit }) => ({
383
+ player: unit.owner,
384
+ type: unit.def.id
385
+ })), scoreOn(unitHired, ({ unit, player }) => ({
386
+ player,
387
+ type: unit.def.id
388
+ }))]
389
+ }),
390
+ defineStat({
391
+ id: "unitsKilled",
392
+ label: "Units killed",
393
+ category: "units",
394
+ byType: true,
395
+ timeline: true,
396
+ from: scoreOn(entityDied, ({ entity, killer }, world) => {
397
+ if (!entity.isUnit) return void 0;
398
+ const by = killedBy(world, entity, killer);
399
+ return by === void 0 ? void 0 : {
400
+ player: by,
401
+ type: entity.def.id
402
+ };
403
+ })
404
+ }),
405
+ defineStat({
406
+ id: "unitsLost",
407
+ label: "Units lost",
408
+ category: "units",
409
+ byType: true,
410
+ from: scoreOn(entityDied, ({ entity, reason }) => entity.isUnit && lost(reason) ? {
411
+ player: entity.owner,
412
+ type: entity.def.id
413
+ } : void 0)
414
+ }),
415
+ defineStat({
416
+ id: "buildingsBuilt",
417
+ label: "Buildings built",
418
+ category: "units",
419
+ byType: true,
420
+ from: scoreOn(constructionFinished, (building) => ({
421
+ player: building.owner,
422
+ type: building.def.id
423
+ }))
424
+ }),
425
+ defineStat({
426
+ id: "buildingsRazed",
427
+ label: "Buildings razed",
428
+ category: "units",
429
+ byType: true,
430
+ from: scoreOn(entityDied, ({ entity, killer }, world) => {
431
+ if (!entity.isBuilding) return void 0;
432
+ const by = killedBy(world, entity, killer);
433
+ return by === void 0 ? void 0 : {
434
+ player: by,
435
+ type: entity.def.id
436
+ };
437
+ })
438
+ }),
439
+ defineStat({
440
+ id: "buildingsLost",
441
+ label: "Buildings lost",
442
+ category: "units",
443
+ from: scoreOn(entityDied, ({ entity, reason }) => entity.isBuilding && lost(reason) ? entity.owner : void 0)
444
+ }),
445
+ defineStat({
446
+ id: "army",
447
+ label: "Army",
448
+ description: "The supply used now",
449
+ category: "units",
450
+ kind: "last",
451
+ timeline: true,
452
+ sample: (world, player) => world.player(player).supplyUsed
453
+ }),
454
+ defineStat({
455
+ id: "largestArmy",
456
+ label: "Largest army",
457
+ description: "The most supply used at once",
458
+ category: "units",
459
+ kind: "max",
460
+ sample: (world, player) => world.player(player).supplyUsed
461
+ }),
462
+ defineStat({
463
+ id: "heroesKilled",
464
+ label: "Heroes killed",
465
+ category: "heroes",
466
+ byType: true,
467
+ from: scoreOn(entityDied, ({ entity, killer }, world) => {
468
+ if (!entity.has(heroState)) return void 0;
469
+ const by = killedBy(world, entity, killer);
470
+ return by === void 0 ? void 0 : {
471
+ player: by,
472
+ type: entity.def.id
473
+ };
474
+ })
475
+ }),
476
+ defineStat({
477
+ id: "heroesLost",
478
+ label: "Heroes lost",
479
+ category: "heroes",
480
+ from: scoreOn(entityDied, ({ entity, reason }) => heroOf(entity) && lost(reason) ? entity.owner : void 0)
481
+ }),
482
+ defineStat({
483
+ id: "heroAssists",
484
+ label: "Assists",
485
+ description: "Heroes killed with the help of its heroes: hurt by them, or their killer healed, shielded or buffed",
486
+ category: "heroes",
487
+ byType: true,
488
+ from: scoreOn(heroAssisted, ({ player, type }) => ({
489
+ player,
490
+ type
491
+ }))
492
+ }),
493
+ defineStat({
494
+ id: "longestKillStreak",
495
+ label: "Longest kill streak",
496
+ description: "The most heroes one of its heroes killed without dying",
497
+ category: "heroes",
498
+ kind: "max",
499
+ from: scoreOn(killStreak, ({ player, streak, type }) => ({
500
+ player,
501
+ amount: streak,
502
+ type
503
+ }))
504
+ }),
505
+ defineStat({
506
+ id: "buybacks",
507
+ label: "Buybacks",
508
+ category: "heroes",
509
+ from: scoreOn(boughtBack, ({ player, type }) => ({
510
+ player,
511
+ type
512
+ }))
513
+ }),
514
+ defineStat({
515
+ id: "highestHeroLevel",
516
+ label: "Highest hero level",
517
+ category: "heroes",
518
+ kind: "max",
519
+ from: scoreOn(heroLevelUp, ({ hero, level }) => ({
520
+ player: hero.owner,
521
+ amount: level,
522
+ type: hero.def.id
523
+ }))
524
+ }),
525
+ defineStat({
526
+ id: "experience",
527
+ label: "Experience gained",
528
+ category: "heroes",
529
+ byType: true,
530
+ from: scoreOn(xpGained, ({ hero, amount }) => ({
531
+ player: hero.owner,
532
+ amount,
533
+ type: hero.def.id
534
+ }))
535
+ }),
536
+ defineStat({
537
+ id: "creepsKilled",
538
+ label: "Creeps killed",
539
+ category: "heroes",
540
+ from: scoreOn(entityDied, ({ entity, killer }, world) => killer && world.player(entity.owner).creeps ? killer.owner : void 0)
541
+ }),
542
+ defineStat({
543
+ id: "itemsObtained",
544
+ label: "Items obtained",
545
+ category: "heroes",
546
+ byType: true,
547
+ from: scoreOn(itemPicked, ({ entity, item }) => ({
548
+ player: entity.owner,
549
+ type: item.item
550
+ }))
551
+ }),
552
+ defineStat({
553
+ id: "abilitiesCast",
554
+ label: "Abilities cast",
555
+ category: "heroes",
556
+ byType: true,
557
+ from: scoreOn(abilityCast, ({ caster, ability }) => ({
558
+ player: caster.owner,
559
+ type: ability.id
560
+ }))
561
+ }),
562
+ defineStat({
563
+ id: "damageDealt",
564
+ label: "Damage dealt",
565
+ category: "combat",
566
+ byType: true,
567
+ timeline: true,
568
+ from: scoreOn(damaged, ({ target, source, amount }, world) => source && enemies(world, source.owner, target.owner) ? {
569
+ player: source.owner,
570
+ amount,
571
+ type: source.def.id
572
+ } : void 0)
573
+ }),
574
+ defineStat({
575
+ id: "damageTaken",
576
+ label: "Damage taken",
577
+ category: "combat",
578
+ from: scoreOn(damaged, ({ target, amount }) => ({
579
+ player: target.owner,
580
+ amount
581
+ }))
582
+ }),
583
+ defineStat({
584
+ id: "healing",
585
+ label: "Healing done",
586
+ category: "combat",
587
+ byType: true,
588
+ from: scoreOn(healed, ({ target, source, amount }) => ({
589
+ player: (source ?? target).owner,
590
+ amount,
591
+ type: (source ?? target).def.id
592
+ }))
593
+ }),
594
+ ...resources.flatMap((resource) => [
595
+ defineStat({
596
+ id: `gathered.${resource.id}`,
597
+ label: `${resource.name} gathered`,
598
+ category: "resources",
599
+ timeline: resource.id === currency,
600
+ from: scoreOn(resourcesDeposited, ({ player, kind, amount }) => kind === resource.id ? {
601
+ player,
602
+ amount
603
+ } : void 0)
604
+ }),
605
+ defineStat({
606
+ id: `spent.${resource.id}`,
607
+ label: `${resource.name} spent`,
608
+ category: "resources",
609
+ byType: true,
610
+ from: scoreOn(resourcesSpent, ({ player, cost, on, refund }) => cost[resource.id] ? {
611
+ player,
612
+ amount: refund ? -cost[resource.id] : cost[resource.id],
613
+ type: on
614
+ } : void 0)
615
+ }),
616
+ ...resource.upkeep ? [defineStat({
617
+ id: `upkeep.${resource.id}`,
618
+ label: `${resource.name} lost to upkeep`,
619
+ category: "resources",
620
+ from: scoreOn(resourcesDeposited, ({ player, kind, upkeep }) => kind === resource.id && upkeep ? {
621
+ player,
622
+ amount: upkeep
623
+ } : void 0)
624
+ })] : []
625
+ ]),
626
+ ...currency ? [defineStat({
627
+ id: "bounty",
628
+ label: "Bounty",
629
+ description: `${resources.find((resource) => resource.id === currency)?.name ?? currency} for kills`,
630
+ category: "resources",
631
+ from: scoreOn(bounty, ({ player, amount }) => ({
632
+ player,
633
+ amount
634
+ }))
635
+ })] : [],
636
+ ...resources.length ? [defineStat({
637
+ id: "tradedOut",
638
+ label: "Given to allies",
639
+ category: "resources",
640
+ byType: true,
641
+ from: scoreOn(traded, ({ from, resource, sent }) => ({
642
+ player: from,
643
+ amount: sent,
644
+ type: resource
645
+ }))
646
+ }), defineStat({
647
+ id: "tradedIn",
648
+ label: "Given by allies",
649
+ category: "resources",
650
+ byType: true,
651
+ from: scoreOn(traded, ({ to, resource, received }) => ({
652
+ player: to,
653
+ amount: received,
654
+ type: resource
655
+ }))
656
+ })] : []
657
+ ];
658
+ }
659
+ /**
660
+ * The engine's score, for `RuleSettings.score`: a classic RTS score screen. Units produced, killed and lost, buildings
661
+ * built, razed and lost, the army and the largest, heroes killed and lost, the highest hero level, experience, creeps
662
+ * killed, items obtained, abilities cast, damage dealt and taken, healing, and of each resource what was gathered,
663
+ * spent and lost to upkeep, the bounty and what went between allies
664
+ *
665
+ * @public
666
+ */
667
+ function presetScore(options = {}) {
668
+ const { only, without, stats: own = [], ...rules } = options;
669
+ const named = (list, id) => !!list?.some((name) => name === id || id.startsWith(`${name}.`));
670
+ return {
671
+ ...rules,
672
+ stats: (game) => [...engineStats(game).filter((stat) => (!only || named(only, stat.id)) && !named(without, stat.id)), ...own]
673
+ };
674
+ }
675
+ var TOLD = {};
676
+ /** What the seat is told of the score now: the same objects while nothing new is to be told */
677
+ function scoreTold(view) {
678
+ const { world } = view;
679
+ const counted = world.score.rules;
680
+ if (!counted || view.forComputer) return void 0;
681
+ const told = view.keep(TOLD, () => ({
682
+ tick: -Infinity,
683
+ version: -1,
684
+ lineVersion: -1,
685
+ final: false
686
+ }));
687
+ const final = world.winner !== null || world.failure !== null;
688
+ const viewer = view.observer ? void 0 : view.player;
689
+ const refresh = Math.max(Math.round((counted.rules.refresh ?? 1) * world.tickRate), 1);
690
+ if (final !== told.final || world.tick - told.tick >= refresh && world.score.version !== told.version) {
691
+ told.score = world.score.stateFor(viewer, final);
692
+ told.tick = world.tick;
693
+ told.version = world.score.version;
694
+ }
695
+ if (final !== told.final || world.score.lineVersion !== told.lineVersion) {
696
+ told.line = world.score.lineFor(viewer, final);
697
+ told.lineVersion = world.score.lineVersion;
698
+ }
699
+ told.final = final;
700
+ return told;
701
+ }
702
+ /** The score the player is told (`Snapshot.score`) */
703
+ var scorePart = snapshotField("score", (view) => scoreTold(view)?.score);
704
+ /** The score's line over time the player is told (`Snapshot.scoreLine`) */
705
+ var scoreLinePart = snapshotField("scoreLine", (view) => scoreTold(view)?.line);
706
+ //#endregion
707
+ export { Score, defineStat, engineStats, presetScore, resolveScore, scoreData, scoreLinePart, scoreOn, scorePart, scoreSystem };
708
+
709
+ //# sourceMappingURL=score.js.map