@v12-engine/engine 0.1.1 → 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/debug2.js ADDED
@@ -0,0 +1,76 @@
1
+ //#region src/debug.ts
2
+ /** The process's: what a world that says nothing starts with */
3
+ var debugChecks = {
4
+ /** `statsOf` adds the stats up from scratch on every call and compares them with what it had cached */
5
+ stats: false,
6
+ /** Every tick, scenery (see `isScenery`) is checked for having anything that per-tick systems would have to see to */
7
+ scenery: false,
8
+ /** Every tick, `World.index` is checked against the entities: whose they are, which are heroes, which are shops */
9
+ index: false,
10
+ /** Every snapshot a session puts together is checked to have in sight exactly what testing every entity of the world would give */
11
+ sight: false,
12
+ /** What a snapshot tells of an entity as it was told last time, in whole or in part, is checked against describing it anew */
13
+ snapshots: false,
14
+ /** What a game's replicated events say is checked to be plain data, which could cross a network */
15
+ events: false,
16
+ /** Every think of every computer player's brain is checked against the invariants of `ai/checks.ts`: the first broken one throws */
17
+ ai: false
18
+ };
19
+ /**
20
+ * A world's checks, of what it was made with (`CreateWorldOptions.checks`): all on or off, some of them (the rest the
21
+ * process's), or the process's (`setDebugChecks`) when nothing is said
22
+ */
23
+ function checksOf(given) {
24
+ if (typeof given === "boolean") return {
25
+ stats: given,
26
+ scenery: given,
27
+ index: given,
28
+ sight: given,
29
+ snapshots: given,
30
+ events: given,
31
+ ai: given
32
+ };
33
+ return {
34
+ ...debugChecks,
35
+ ...given
36
+ };
37
+ }
38
+ /**
39
+ * Turns every check on or off for the worlds made from now on that say nothing of their own (`CreateWorldOptions.checks`),
40
+ * and for computer players' brains
41
+ *
42
+ * @beta
43
+ */
44
+ function setDebugChecks(enabled) {
45
+ debugChecks.stats = enabled;
46
+ debugChecks.scenery = enabled;
47
+ debugChecks.index = enabled;
48
+ debugChecks.sight = enabled;
49
+ debugChecks.snapshots = enabled;
50
+ debugChecks.events = enabled;
51
+ debugChecks.ai = enabled;
52
+ }
53
+ /**
54
+ * Throws when a value is not plain data: numbers, text, booleans, lists and plain objects of them. An entity, a
55
+ * map or a function in an event would only work while the screen and the simulation share a page
56
+ */
57
+ function assertPlainData(value, what, path = "") {
58
+ if (value === null || value === void 0) return;
59
+ const type = typeof value;
60
+ if (type === "number" || type === "string" || type === "boolean") return;
61
+ if (type !== "object") throw new Error(`${what}: ${path || "it"} is a ${type}, which is not plain data`);
62
+ if (Array.isArray(value)) {
63
+ value.forEach((item, index) => assertPlainData(item, what, `${path}[${index}]`));
64
+ return;
65
+ }
66
+ const proto = Object.getPrototypeOf(value);
67
+ if (proto !== Object.prototype && proto !== null) {
68
+ const name = value.constructor?.name ?? "object";
69
+ throw new Error(`${what}: ${path || "it"} is a ${name}, which is not plain data. Give entities by id`);
70
+ }
71
+ for (const [key, item] of Object.entries(value)) assertPlainData(item, what, path ? `${path}.${key}` : key);
72
+ }
73
+ //#endregion
74
+ export { assertPlainData, checksOf, debugChecks, setDebugChecks };
75
+
76
+ //# sourceMappingURL=debug2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug2.js","names":[],"sources":["../src/debug.ts"],"sourcesContent":["/**\n * Checks the engine can run on itself, for tests and development. Each one redoes or re-verifies work\n * that the engine normally skips or caches, and throws as soon as the shortcut gave a different answer.\n * They are slow; a real game leaves them off. A world's are its own (`world.checks`, `CreateWorldOptions.checks`);\n * these are what a world that says nothing starts with (`setDebugChecks`), and what a computer player's brain, which\n * has no world, reads\n *\n * @beta\n */\nexport interface DebugChecks {\n\t/** Whether `statsOf` is checked against adding the stats up from scratch */\n\tstats: boolean\n\t/** Whether scenery is checked every tick for having nothing the per-tick systems should see to */\n\tscenery: boolean\n\t/** Whether `World.index` is checked every tick against the entities */\n\tindex: boolean\n\t/** Whether each snapshot's sight is checked against testing every entity of the world */\n\tsight: boolean\n\t/** Whether what a snapshot tells of an entity again from last time is checked against describing it anew */\n\tsnapshots: boolean\n\t/** Whether replicated events are checked to be plain data that could cross a network */\n\tevents: boolean\n\t/** Whether every think of every computer player's brain is checked against the invariants of `ai/checks.ts` */\n\tai: boolean\n}\n\n/** The process's: what a world that says nothing starts with */\nexport const debugChecks: DebugChecks = {\n\t/** `statsOf` adds the stats up from scratch on every call and compares them with what it had cached */\n\tstats: false,\n\t/** Every tick, scenery (see `isScenery`) is checked for having anything that per-tick systems would have to see to */\n\tscenery: false,\n\t/** Every tick, `World.index` is checked against the entities: whose they are, which are heroes, which are shops */\n\tindex: false,\n\t/** Every snapshot a session puts together is checked to have in sight exactly what testing every entity of the world would give */\n\tsight: false,\n\t/** What a snapshot tells of an entity as it was told last time, in whole or in part, is checked against describing it anew */\n\tsnapshots: false,\n\t/** What a game's replicated events say is checked to be plain data, which could cross a network */\n\tevents: false,\n\t/** Every think of every computer player's brain is checked against the invariants of `ai/checks.ts`: the first broken one throws */\n\tai: false\n}\n\n/**\n * A world's checks, of what it was made with (`CreateWorldOptions.checks`): all on or off, some of them (the rest the\n * process's), or the process's (`setDebugChecks`) when nothing is said\n */\nexport function checksOf(given: boolean | Partial<DebugChecks> | undefined): DebugChecks {\n\tif (typeof given === 'boolean') return { stats: given, scenery: given, index: given, sight: given, snapshots: given, events: given, ai: given }\n\treturn { ...debugChecks, ...given }\n}\n\n/**\n * Turns every check on or off for the worlds made from now on that say nothing of their own (`CreateWorldOptions.checks`),\n * and for computer players' brains\n *\n * @beta\n */\nexport function setDebugChecks(enabled: boolean): void {\n\tdebugChecks.stats = enabled\n\tdebugChecks.scenery = enabled\n\tdebugChecks.index = enabled\n\tdebugChecks.sight = enabled\n\tdebugChecks.snapshots = enabled\n\tdebugChecks.events = enabled\n\tdebugChecks.ai = enabled\n}\n\n/**\n * Throws when a value is not plain data: numbers, text, booleans, lists and plain objects of them. An entity, a\n * map or a function in an event would only work while the screen and the simulation share a page\n */\nexport function assertPlainData(value: unknown, what: string, path = ''): void {\n\tif (value === null || value === undefined) return\n\tconst type = typeof value\n\tif (type === 'number' || type === 'string' || type === 'boolean') return\n\tif (type !== 'object') throw new Error(`${what}: ${path || 'it'} is a ${type}, which is not plain data`)\n\tif (Array.isArray(value)) {\n\t\tvalue.forEach((item, index) => assertPlainData(item, what, `${path}[${index}]`))\n\t\treturn\n\t}\n\tconst proto = Object.getPrototypeOf(value)\n\tif (proto !== Object.prototype && proto !== null) {\n\t\tconst name = (value as object).constructor?.name ?? 'object'\n\t\tthrow new Error(`${what}: ${path || 'it'} is a ${name}, which is not plain data. Give entities by id`)\n\t}\n\tfor (const [key, item] of Object.entries(value)) assertPlainData(item, what, path ? `${path}.${key}` : key)\n}\n"],"mappings":";;AA2BA,IAAa,cAA2B;;CAEvC,OAAO;;CAEP,SAAS;;CAET,OAAO;;CAEP,OAAO;;CAEP,WAAW;;CAEX,QAAQ;;CAER,IAAI;AACL;;;;;AAMA,SAAgB,SAAS,OAAgE;CACxF,IAAI,OAAO,UAAU,WAAW,OAAO;EAAE,OAAO;EAAO,SAAS;EAAO,OAAO;EAAO,OAAO;EAAO,WAAW;EAAO,QAAQ;EAAO,IAAI;CAAM;CAC9I,OAAO;EAAE,GAAG;EAAa,GAAG;CAAM;AACnC;;;;;;;AAQA,SAAgB,eAAe,SAAwB;CACtD,YAAY,QAAQ;CACpB,YAAY,UAAU;CACtB,YAAY,QAAQ;CACpB,YAAY,QAAQ;CACpB,YAAY,YAAY;CACxB,YAAY,SAAS;CACrB,YAAY,KAAK;AAClB;;;;;AAMA,SAAgB,gBAAgB,OAAgB,MAAc,OAAO,IAAU;CAC9E,IAAI,UAAU,QAAQ,UAAU,KAAA,GAAW;CAC3C,MAAM,OAAO,OAAO;CACpB,IAAI,SAAS,YAAY,SAAS,YAAY,SAAS,WAAW;CAClE,IAAI,SAAS,UAAU,MAAM,IAAI,MAAM,GAAG,KAAK,IAAI,QAAQ,KAAK,QAAQ,KAAK,0BAA0B;CACvG,IAAI,MAAM,QAAQ,KAAK,GAAG;EACzB,MAAM,SAAS,MAAM,UAAU,gBAAgB,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC;EAC/E;CACD;CACA,MAAM,QAAQ,OAAO,eAAe,KAAK;CACzC,IAAI,UAAU,OAAO,aAAa,UAAU,MAAM;EACjD,MAAM,OAAQ,MAAiB,aAAa,QAAQ;EACpD,MAAM,IAAI,MAAM,GAAG,KAAK,IAAI,QAAQ,KAAK,QAAQ,KAAK,+CAA+C;CACtG;CACA,KAAK,MAAM,CAAC,KAAK,SAAS,OAAO,QAAQ,KAAK,GAAG,gBAAgB,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG;AAC3G"}
@@ -40,7 +40,7 @@ export declare const revealCommand: DefinedCommand<"debug.reveal", {
40
40
  on: Check<boolean>;
41
41
  }>;
42
42
  /**
43
- * The whole map explored for everyone, as a map that starts explored has it (`FogRules.startExplored`): the fog stays,
43
+ * The whole map explored for everyone, as a map that starts explored has it (`FogSettings.startExplored`): the fog stays,
44
44
  * over what is not seen now, but the ground is dim, not black, and what stands on it and is no player's is known. Or no
45
45
  * longer: each team has explored what it sees now, and forgets what it does not
46
46
  *
@@ -148,7 +148,7 @@ export declare const killCommand: DefinedCommand<"debug.kill", {
148
148
  }>;
149
149
  /**
150
150
  * Changes a field of a definition while the game runs, as the editor's Data panel tries it: only one the game lets be
151
- * changed (`GameModule.editable`), and for players allowed the debug tools
151
+ * changed (`Rules.editable`), and for players allowed the debug tools
152
152
  *
153
153
  * @beta
154
154
  */
@@ -161,7 +161,7 @@ export declare const redefineCommand: DefinedCommand<"debug.redefine", {
161
161
  /**
162
162
  * An object placed on the map put in the world as the map's are as the world is made (`spawnMapObject`): its type,
163
163
  * owner, where it stands and how it is turned, and the rest the map says of it (its health, level, items, the game's
164
- * fields, its orders), kept as the entity of that object (`World.mapEntities`): what the editor's Play here sends as
164
+ * fields, its orders), kept as the entity of that object (`World.fromMap`): what the editor's Play here sends as
165
165
  * something is placed on the map while it plays (EQ10). A building where there is no room is refused, as `debug.spawn`
166
166
  * refuses it
167
167
  *
@@ -171,7 +171,7 @@ export declare const mapObjectCommand: DefinedCommand<"debug.mapObject", {
171
171
  object: Check<MapObject>;
172
172
  }>;
173
173
  /**
174
- * Moves what an object of the map became (`World.mapEntities`, by the object's id) where it stands on the map now,
174
+ * Moves what an object of the map became (`World.fromMap`, by the object's id) where it stands on the map now,
175
175
  * turned as it is: a unit is put there (`World.place`), the way there not its concern. A structure is not moved: the
176
176
  * editor takes it away and puts it down again
177
177
  *
@@ -183,7 +183,7 @@ export declare const placeCommand: DefinedCommand<"debug.place", {
183
183
  facing: Check<number | undefined>;
184
184
  }>;
185
185
  /**
186
- * Takes what objects of the map became (`World.mapEntities`, by the objects' ids) out of the world, whatever they
186
+ * Takes what objects of the map became (`World.fromMap`, by the objects' ids) out of the world, whatever they
187
187
  * are, scenery included: no corpse is left. What the editor's Play here sends as something is taken off the map
188
188
  *
189
189
  * @beta
@@ -210,4 +210,4 @@ export declare const toldGround: import("./replication").ReplicatedEvent;
210
210
  */
211
211
  export declare const debugCommands: CommandDef[];
212
212
  /** What a player who may use the debug commands is told of them (`Snapshot.debug`): the switches on, and whether the map started explored */
213
- export declare const debugPart: import("./replication").SnapshotPart<keyof import(".").Snapshot>;
213
+ export declare const debugPart: import("./replication").SnapshotField<keyof import(".").Snapshot>;
@@ -0,0 +1,537 @@
1
+ import { hypot } from "./exactMath.js";
2
+ import { footprintOf } from "./defs.js";
3
+ import { gameOver, groundReshaped } from "./engineEvents.js";
4
+ import { teamMemory } from "./session/memory.js";
5
+ import { replicateEvent, snapshotField } from "./replication.js";
6
+ import { earn } from "./player.js";
7
+ import { grantXp, heroesOf, setHeroLevel } from "./hero.js";
8
+ import { Invalid, bool, id, ids, isObject, number, object, oneOf, optional, point, string } from "./fields.js";
9
+ import { createItem, giveItem } from "./items.js";
10
+ import { defeat } from "./systems/victory.js";
11
+ import { defineCommand } from "./commands.js";
12
+ import { corpses } from "./summons.js";
13
+ import { COPY_OF, DATA_KINDS, blankDefinition, definitionIn, editableFields, fitValue, nested, pathCheck, valueCheck } from "./gameData.js";
14
+ import { terrainPatchProblem } from "./ground.js";
15
+ import { giveMapOrders, spawnMapObject } from "./mapObjects.js";
16
+ //#region src/debugCommands.ts
17
+ /**
18
+ * A debug command of a game's or a scene's own: one that goes through only for players allowed the debug tools
19
+ * (`world.debugPlayers`), and tells others so. Otherwise like `defineCommand`
20
+ *
21
+ * @beta
22
+ */
23
+ function defineDebugCommand(type, fields, execute) {
24
+ return defineCommand(type, fields, (world, player, command) => {
25
+ if (!world.debugPlayers.has(player)) {
26
+ world.message(player, { key: "debugNotAllowed" });
27
+ return;
28
+ }
29
+ execute(world, player, command);
30
+ });
31
+ }
32
+ /**
33
+ * A prefab of the game's put down where it says, for the sender, turned as said: to try one out, and for the editor's Play
34
+ *
35
+ * @beta
36
+ */
37
+ var spawnPrefabCommand = defineDebugCommand("debug.spawnPrefab", {
38
+ prefab: string,
39
+ at: point,
40
+ facing: optional(number)
41
+ }, (world, player, command) => {
42
+ if (!world.registry.prefabs.has(command.prefab)) return world.message(player, {
43
+ key: "unknownPrefab",
44
+ params: { prefab: command.prefab }
45
+ });
46
+ world.spawnPrefab(command.prefab, {
47
+ at: command.at,
48
+ owner: player,
49
+ facing: command.facing
50
+ });
51
+ });
52
+ /**
53
+ * A switch for trying things out: abilities used again at once, abilities that cost no mana, the units of those who may
54
+ * use the debug tools unharmed (`World.cheats`)
55
+ *
56
+ * @beta
57
+ */
58
+ var cheatCommand = defineDebugCommand("debug.cheat", {
59
+ cheat: oneOf("noCooldowns", "noManaCosts", "invulnerable"),
60
+ on: bool
61
+ }, (world, _player, command) => {
62
+ world.cheats[command.cheat] = command.on;
63
+ });
64
+ /**
65
+ * Lifts the fog for the sender's team, or puts it back: in the simulation itself, so that units react to what is shown
66
+ *
67
+ * @beta
68
+ */
69
+ var revealCommand = defineDebugCommand("debug.reveal", { on: bool }, (world, player, command) => {
70
+ world.fog.setRevealed(world.player(player).team, command.on);
71
+ });
72
+ /**
73
+ * The whole map explored for everyone, as a map that starts explored has it (`FogSettings.startExplored`): the fog stays,
74
+ * over what is not seen now, but the ground is dim, not black, and what stands on it and is no player's is known. Or no
75
+ * longer: each team has explored what it sees now, and forgets what it does not
76
+ *
77
+ * @beta
78
+ */
79
+ var exploreCommand = defineDebugCommand("debug.explore", { on: bool }, (world, _player, command) => {
80
+ world.fog.exploreFromStart(command.on);
81
+ for (const [team, memory] of Object.entries(world.state(teamMemory))) {
82
+ memory.startKnown = false;
83
+ if (command.on) continue;
84
+ for (const [id, state] of Object.entries(memory.structures)) if (!world.fog.isVisible(Number(team), state.x, state.z)) delete memory.structures[Number(id)];
85
+ }
86
+ });
87
+ /**
88
+ * The time of day, in a game with days and nights
89
+ *
90
+ * @beta
91
+ */
92
+ var hourCommand = defineDebugCommand("debug.hour", { hour: number }, (world, _player, command) => {
93
+ if (world.registry.day) world.clock.setHour((command.hour % 24 + 24) % 24);
94
+ });
95
+ /**
96
+ * How fast the game goes, 0 to pause, 8 at most: whoever runs it (a session in the page, a server) goes by it
97
+ *
98
+ * @beta
99
+ */
100
+ var speedCommand = defineDebugCommand("debug.speed", { speed: number }, (world, _player, command) => {
101
+ world.cheats.speed = Math.min(Math.max(command.speed, 0), 8);
102
+ });
103
+ /**
104
+ * Creates something at a point, for a player: a building or a resource where there is room, or a group of units
105
+ * (`count`, 50 at most). `hidden`: what can be invisible is out of sight from the start
106
+ *
107
+ * @beta
108
+ */
109
+ var spawnCommand = defineDebugCommand("debug.spawn", {
110
+ unitType: string,
111
+ owner: id,
112
+ point,
113
+ count: optional(number),
114
+ hidden: optional(bool)
115
+ }, (world, player, command) => {
116
+ if (!world.registry.units.has(command.unitType) || !world.players.has(command.owner)) return;
117
+ const def = world.registry.unit(command.unitType);
118
+ const at = command.point;
119
+ if (def.kind !== "unit") {
120
+ const fp = footprintOf(def);
121
+ const cell = world.grid.cellFor(at.x, at.z, fp.w, fp.d);
122
+ if (!world.grid.canPlace(cell.x, cell.z, fp.w, fp.d)) world.message(player, { key: "noRoomHere" });
123
+ else world.spawn(def.id, command.owner, at);
124
+ return;
125
+ }
126
+ const count = Math.min(Math.max(Math.round(command.count ?? 1), 1), 50);
127
+ const columns = Math.ceil(Math.sqrt(count));
128
+ const spacing = def.radius * 2 + .4;
129
+ for (let i = 0; i < count; i++) {
130
+ const column = i % columns - (columns - 1) / 2;
131
+ const row = Math.floor(i / columns) - (Math.ceil(count / columns) - 1) / 2;
132
+ const entity = world.spawn(def.id, command.owner, {
133
+ x: at.x + column * spacing,
134
+ z: at.z - row * spacing
135
+ });
136
+ if (command.hidden && entity.unseenIn !== null) entity.unseenIn = 0;
137
+ }
138
+ });
139
+ /**
140
+ * A brush: fills a circle with what stands on the grid (trees, rocks), thinner towards its edge, wherever there is room;
141
+ * or, with `erase`, clears it of that type
142
+ *
143
+ * @beta
144
+ */
145
+ var paintCommand = defineDebugCommand("debug.paint", {
146
+ unitType: string,
147
+ owner: id,
148
+ point,
149
+ radius: number,
150
+ erase: bool
151
+ }, (world, _player, command) => {
152
+ if (!world.registry.units.has(command.unitType)) return;
153
+ const def = world.registry.unit(command.unitType);
154
+ const { point: at } = command;
155
+ const radius = Math.min(Math.max(command.radius, .5), 20);
156
+ if (command.erase) {
157
+ for (const entity of [...world.entities.values()]) if (entity.def.id === def.id && hypot(entity.pos.x - at.x, entity.pos.z - at.z) <= radius) world.kill(entity, void 0, false, "removed");
158
+ return;
159
+ }
160
+ if (def.kind === "unit" || !world.players.has(command.owner)) return;
161
+ const fp = footprintOf(def);
162
+ for (let z = Math.floor(at.z - radius); z <= at.z + radius; z += fp.d) for (let x = Math.floor(at.x - radius); x <= at.x + radius; x += fp.w) {
163
+ const centre = {
164
+ x: x + fp.w / 2,
165
+ z: z + fp.d / 2
166
+ };
167
+ const distance = hypot(centre.x - at.x, centre.z - at.z);
168
+ if (distance > radius) continue;
169
+ const chance = (x * 73856093 ^ z * 19349663) >>> 0;
170
+ if (distance > radius * .6 && chance % 100 < (distance / radius - .6) / .4 * 70) continue;
171
+ if (!world.grid.canPlace(x, z, fp.w, fp.d)) continue;
172
+ world.spawn(def.id, command.owner, centre);
173
+ }
174
+ });
175
+ /**
176
+ * Gives the sender this much of every resource
177
+ *
178
+ * @beta
179
+ */
180
+ var giveCommand = defineDebugCommand("debug.give", { amount: number }, (world, player, command) => {
181
+ for (const resource of world.registry.resources) earn(world.player(player).resources, resource.id, command.amount);
182
+ });
183
+ /**
184
+ * Gives the sender's heroes this much experience
185
+ *
186
+ * @beta
187
+ */
188
+ var experienceCommand = defineDebugCommand("debug.experience", { amount: number }, (world, player, command) => {
189
+ for (const hero of heroesOf(world, player)) if (hero.alive) grantXp(world, hero, command.amount);
190
+ });
191
+ /**
192
+ * Puts units at a point, side by side, wherever they stood: structures stay where they were built. The way there is
193
+ * not their concern (`World.place`)
194
+ *
195
+ * @internal
196
+ */
197
+ var teleportCommand = defineDebugCommand("debug.teleport", {
198
+ entities: ids,
199
+ point
200
+ }, (world, _player, command) => {
201
+ const units = command.entities.flatMap((entityId) => {
202
+ const entity = world.get(entityId);
203
+ return entity?.alive && entity.isUnit ? [entity] : [];
204
+ });
205
+ const columns = Math.ceil(Math.sqrt(units.length));
206
+ units.forEach((entity, i) => {
207
+ const spacing = entity.def.radius * 2 + .4;
208
+ const column = i % columns - (columns - 1) / 2;
209
+ const row = Math.floor(i / columns) - (Math.ceil(units.length / columns) - 1) / 2;
210
+ world.place(entity, {
211
+ x: command.point.x + column * spacing,
212
+ z: command.point.z - row * spacing
213
+ });
214
+ });
215
+ });
216
+ /**
217
+ * Gives what it names to another player (`World.setOwner`): what it was doing is called off
218
+ *
219
+ * @internal
220
+ */
221
+ var setOwnerCommand = defineDebugCommand("debug.setOwner", {
222
+ entities: ids,
223
+ owner: id
224
+ }, (world, _player, command) => {
225
+ if (!world.players.has(command.owner)) return;
226
+ for (const entityId of command.entities) {
227
+ const entity = world.get(entityId);
228
+ if (entity?.alive) world.setOwner(entity, command.owner);
229
+ }
230
+ });
231
+ /**
232
+ * Puts an item of the game's in the first free slot of what carries things
233
+ *
234
+ * @beta
235
+ */
236
+ var giveItemCommand = defineDebugCommand("debug.giveItem", {
237
+ entity: id,
238
+ item: string
239
+ }, (world, _player, command) => {
240
+ const entity = world.get(command.entity);
241
+ if (!entity?.alive || !world.registry.items.has(command.item)) return;
242
+ giveItem(world, entity, createItem(world, command.item));
243
+ });
244
+ /**
245
+ * Researches an upgrade for the sender, to the level asked (its last when left out), at once and for nothing: what it
246
+ * does to the units there are runs for each level it gains
247
+ *
248
+ * @internal
249
+ */
250
+ var researchCommand = defineDebugCommand("debug.research", {
251
+ upgrade: string,
252
+ level: optional(number)
253
+ }, (world, player, command) => {
254
+ if (!world.registry.upgrades.has(command.upgrade)) return;
255
+ const def = world.registry.upgrade(command.upgrade);
256
+ const who = world.player(player);
257
+ const to = Math.min(Math.max(Math.round(command.level ?? def.maxLevel ?? 1), 0), def.maxLevel ?? 1);
258
+ for (let level = (who.upgrades.get(command.upgrade) ?? 0) + 1; level <= to; level++) {
259
+ who.setUpgrade(command.upgrade, level);
260
+ if (def.apply) {
261
+ for (const entity of [...world.index.ownedBy(player)]) if (entity.alive) def.apply(world, entity, level);
262
+ }
263
+ }
264
+ who.researching.delete(command.upgrade);
265
+ });
266
+ /**
267
+ * Raises heroes to a level (never down, and no further than they can go: `setHeroLevel`)
268
+ *
269
+ * @beta
270
+ */
271
+ var setLevelCommand = defineDebugCommand("debug.setLevel", {
272
+ entities: ids,
273
+ level: number
274
+ }, (world, _player, command) => {
275
+ for (const entityId of command.entities) {
276
+ const entity = world.get(entityId);
277
+ if (entity?.alive) setHeroLevel(world, entity, command.level);
278
+ }
279
+ });
280
+ /**
281
+ * Wins the game for the sender's team: the others are out, and it is over. A game with a way to win of its own is
282
+ * ended all the same
283
+ *
284
+ * @beta
285
+ */
286
+ var winCommand = defineDebugCommand("debug.win", {}, (world, player) => {
287
+ if (world.winner !== null) return;
288
+ const team = world.player(player).team;
289
+ for (const other of world.players.values()) {
290
+ if (other.neutral || other.creeps) continue;
291
+ other.established = true;
292
+ if (other.team !== team && !other.defeated) defeat(world, other.id);
293
+ }
294
+ world.winner = team;
295
+ world.events.emit(gameOver, { winner: team });
296
+ });
297
+ /**
298
+ * Puts the sender out of the game, as if beaten: the others play on, or win by the game's own rule
299
+ *
300
+ * @beta
301
+ */
302
+ var loseCommand = defineDebugCommand("debug.lose", {}, (world, player) => {
303
+ const who = world.player(player);
304
+ if (who.neutral || who.creeps || who.defeated || world.winner !== null) return;
305
+ who.established = true;
306
+ defeat(world, player);
307
+ });
308
+ /**
309
+ * Kills what it names, whoever's it is: what cannot be hurt included, but not scenery the map is made of
310
+ *
311
+ * @beta
312
+ */
313
+ var killCommand = defineDebugCommand("debug.kill", { entities: ids }, (world, _player, command) => {
314
+ for (const entityId of command.entities) {
315
+ const entity = world.get(entityId);
316
+ if (entity?.alive && !entity.def.invulnerable) world.kill(entity, void 0, false, "removed");
317
+ }
318
+ });
319
+ /**
320
+ * Changes a field of a definition while the game runs, as the editor's Data panel tries it: only one the game lets be
321
+ * changed (`Rules.editable`), and for players allowed the debug tools
322
+ *
323
+ * @beta
324
+ */
325
+ var redefineCommand = defineDebugCommand("debug.redefine", {
326
+ kind: oneOf(...DATA_KINDS),
327
+ id: string,
328
+ path: pathCheck,
329
+ value: valueCheck
330
+ }, (world, player, command) => {
331
+ const def = definitionIn(world.registry, command.kind, command.id);
332
+ if (!def && command.path === "copyOf" && typeof command.value === "string") {
333
+ const base = definitionIn(world.registry, command.kind, command.value);
334
+ if (base && editableFields(world.registry.module, command.kind, base).length) world.redefine(command.kind, command.id, { [COPY_OF]: command.value });
335
+ return;
336
+ }
337
+ if (!def && command.path === "new" && command.value === true) {
338
+ if (editableFields(world.registry.module, command.kind, blankDefinition(command.kind, command.id)).length) world.redefine(command.kind, command.id, { ["new"]: true });
339
+ return;
340
+ }
341
+ if (!def) return;
342
+ const field = editableFields(world.registry.module, command.kind, def).find((each) => each.path === command.path);
343
+ const fit = field ? fitValue(field, command.value) : { error: `${command.path} cannot be changed` };
344
+ if ("error" in fit) world.message(player, {
345
+ key: "dataRefused",
346
+ params: { why: fit.error }
347
+ });
348
+ else world.redefine(command.kind, command.id, nested(command.path, fit.value));
349
+ });
350
+ /** The most of anything a value of a map's own may hold, and as deep: a field of the game's, not a file */
351
+ var PLAIN_MOST = 1e4;
352
+ var PLAIN_DEPTH = 16;
353
+ /** What the map's own fields hold (`MapObject.data`): numbers, words, switches, lists and objects of them, and nothing else */
354
+ var plain = (value, path) => {
355
+ let count = 0;
356
+ const copy = (each, at, depth) => {
357
+ if (++count > PLAIN_MOST || depth > PLAIN_DEPTH) throw new Invalid(`${path} is more than a field of the map holds`);
358
+ if (each === null || typeof each === "boolean" || typeof each === "string") return each;
359
+ if (typeof each === "number") return number(each, at);
360
+ if (Array.isArray(each)) return each.map((item, i) => copy(item, `${at}[${i}]`, depth + 1));
361
+ if (isObject(each)) return Object.fromEntries(Object.entries(each).map(([key, item]) => [key, copy(item, `${at}.${key}`, depth + 1)]));
362
+ throw new Invalid(`${at} is not a value of the map's`);
363
+ };
364
+ return copy(value, path, 0);
365
+ };
366
+ /** A list of what a check takes, so long at most */
367
+ var listOf = (check, most) => (value, path) => {
368
+ if (!Array.isArray(value) || value.length > most) throw new Invalid(`${path} is a list of at most ${most}`);
369
+ return value.map((item, i) => check(item, `${path}[${i}]`));
370
+ };
371
+ /** What a cell of the ground holds: 0 to 255 */
372
+ var byte = (value, path) => {
373
+ if (!Number.isInteger(value) || value < 0 || value > 255) throw new Invalid(`${path} is a whole number of 0 to 255`);
374
+ return value;
375
+ };
376
+ /** The most cells a patch of the ground has: a map of 2048 a side */
377
+ var MOST_CELLS = 4198401;
378
+ /** A patch of the ground (`TerrainPatch`), each layer the size the ground says, checked as it is put in */
379
+ var terrainPatchCheck = (value, path) => {
380
+ return object({
381
+ x: id,
382
+ z: id,
383
+ width: id,
384
+ depth: id,
385
+ heights: listOf(number, MOST_CELLS),
386
+ waterHeights: listOf(number, MOST_CELLS),
387
+ levels: listOf(byte, MOST_CELLS),
388
+ water: listOf(byte, MOST_CELLS),
389
+ tiles: listOf(byte, MOST_CELLS),
390
+ blocked: listOf(byte, MOST_CELLS),
391
+ cells: optional((layers, at) => {
392
+ if (!isObject(layers)) throw new Invalid(`${at} is the layers of cells by id`);
393
+ return Object.fromEntries(Object.entries(layers).map(([layer, cells]) => [string(layer, at), listOf(byte, MOST_CELLS)(cells, `${at}.${layer}`)]));
394
+ })
395
+ })(value, path);
396
+ };
397
+ /** An object of the map (`MapObject`), as the editor has it: what of it the world reads, checked. Not turned, and as big as its type, when it does not say */
398
+ var mapObjectCheck = (value, path) => ({
399
+ facing: 0,
400
+ scale: 1,
401
+ ...object({
402
+ id,
403
+ type: string,
404
+ owner: id,
405
+ x: number,
406
+ z: number,
407
+ facing: optional(number),
408
+ scale: optional(number),
409
+ look: optional(string),
410
+ drops: optional(string),
411
+ name: optional(string),
412
+ health: optional(number),
413
+ mana: optional(number),
414
+ level: optional(number),
415
+ abilities: optional(plain),
416
+ items: optional(listOf(string, 100)),
417
+ amount: optional(number),
418
+ underConstruction: optional(bool),
419
+ lifetime: optional(number),
420
+ orders: optional(plain),
421
+ data: optional(plain)
422
+ })(value, path)
423
+ });
424
+ /**
425
+ * An object placed on the map put in the world as the map's are as the world is made (`spawnMapObject`): its type,
426
+ * owner, where it stands and how it is turned, and the rest the map says of it (its health, level, items, the game's
427
+ * fields, its orders), kept as the entity of that object (`World.fromMap`): what the editor's Play here sends as
428
+ * something is placed on the map while it plays (EQ10). A building where there is no room is refused, as `debug.spawn`
429
+ * refuses it
430
+ *
431
+ * @beta
432
+ */
433
+ var mapObjectCommand = defineDebugCommand("debug.mapObject", { object: mapObjectCheck }, (world, player, command) => {
434
+ const { object } = command;
435
+ if (!world.registry.units.has(object.type) || !world.players.has(object.owner)) return;
436
+ const def = world.registry.unit(object.type);
437
+ if (def.kind !== "unit") {
438
+ const fp = footprintOf(def);
439
+ const cell = world.grid.cellFor(object.x, object.z, fp.w, fp.d);
440
+ if (!world.grid.canPlace(cell.x, cell.z, fp.w, fp.d)) return world.message(player, { key: "noRoomHere" });
441
+ }
442
+ const entity = spawnMapObject(world, object);
443
+ if (Array.isArray(object.orders) && object.orders.length) giveMapOrders(world, entity, object.orders);
444
+ });
445
+ /**
446
+ * Moves what an object of the map became (`World.fromMap`, by the object's id) where it stands on the map now,
447
+ * turned as it is: a unit is put there (`World.place`), the way there not its concern. A structure is not moved: the
448
+ * editor takes it away and puts it down again
449
+ *
450
+ * @beta
451
+ */
452
+ var placeCommand = defineDebugCommand("debug.place", {
453
+ object: id,
454
+ point,
455
+ facing: optional(number)
456
+ }, (world, _player, command) => {
457
+ const entity = world.get(world.fromMap.get(command.object));
458
+ if (!entity?.alive || entity.isStructure) return;
459
+ world.place(entity, command.point);
460
+ if (command.facing !== void 0) entity.facing = command.facing;
461
+ });
462
+ /**
463
+ * Takes what objects of the map became (`World.fromMap`, by the objects' ids) out of the world, whatever they
464
+ * are, scenery included: no corpse is left. What the editor's Play here sends as something is taken off the map
465
+ *
466
+ * @beta
467
+ */
468
+ var unplaceCommand = defineDebugCommand("debug.unplace", { objects: ids }, (world, _player, command) => {
469
+ const gone = /* @__PURE__ */ new Set();
470
+ for (const object of command.objects) {
471
+ const entity = world.get(world.fromMap.get(object));
472
+ world.fromMap.delete(object);
473
+ if (!entity?.alive) continue;
474
+ world.kill(entity, void 0, false, "removed");
475
+ gone.add(entity.id);
476
+ }
477
+ const lying = world.state(corpses);
478
+ if (lying.some((corpse) => gone.has(corpse.id))) world.setState(corpses, lying.filter((corpse) => !gone.has(corpse.id)));
479
+ });
480
+ /**
481
+ * Reshapes a part of the ground as the patch has it (`World.reshapeGround`): what the editor's Play here sends of the
482
+ * map's ground as its heights, cliffs, water and paint are edited while it plays. A patch that does not fit the ground
483
+ * is refused
484
+ *
485
+ * @beta
486
+ */
487
+ var groundCommand = defineDebugCommand("debug.ground", { patch: terrainPatchCheck }, (world, player, command) => {
488
+ const problem = terrainPatchProblem(world.terrain, command.patch);
489
+ if (problem) return world.message(player, {
490
+ key: "dataRefused",
491
+ params: { why: problem }
492
+ });
493
+ world.reshapeGround(command.patch);
494
+ });
495
+ /** The ground reshaped (`World.reshapeGround`): to everyone, as it is now */
496
+ var toldGround = replicateEvent(groundReshaped, "ground", ({ patch }) => ({
497
+ type: "ground",
498
+ patch: structuredClone(patch)
499
+ }));
500
+ /**
501
+ * The debug commands of the engine, which every game has; they go through only for who may use them
502
+ *
503
+ * @beta
504
+ */
505
+ var debugCommands = [
506
+ cheatCommand,
507
+ revealCommand,
508
+ exploreCommand,
509
+ hourCommand,
510
+ speedCommand,
511
+ spawnCommand,
512
+ paintCommand,
513
+ giveCommand,
514
+ experienceCommand,
515
+ killCommand,
516
+ spawnPrefabCommand,
517
+ teleportCommand,
518
+ setOwnerCommand,
519
+ giveItemCommand,
520
+ researchCommand,
521
+ setLevelCommand,
522
+ winCommand,
523
+ loseCommand,
524
+ mapObjectCommand,
525
+ placeCommand,
526
+ unplaceCommand,
527
+ groundCommand
528
+ ];
529
+ /** What a player who may use the debug commands is told of them (`Snapshot.debug`): the switches on, and whether the map started explored */
530
+ var debugPart = snapshotField("debug", ({ world, player }) => world.debugPlayers.has(player) ? {
531
+ ...world.cheats,
532
+ explored: world.fog.exploredFromStart
533
+ } : void 0, true);
534
+ //#endregion
535
+ export { cheatCommand, debugCommands, debugPart, defineDebugCommand, experienceCommand, exploreCommand, giveCommand, giveItemCommand, groundCommand, hourCommand, killCommand, loseCommand, mapObjectCommand, paintCommand, placeCommand, redefineCommand, researchCommand, revealCommand, setLevelCommand, setOwnerCommand, spawnCommand, spawnPrefabCommand, speedCommand, teleportCommand, toldGround, unplaceCommand, winCommand };
536
+
537
+ //# sourceMappingURL=debugCommands.js.map