@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/fog.js ADDED
@@ -0,0 +1,333 @@
1
+ import { clamp } from "./math.js";
2
+ import { packBytes, unpackBytes } from "./bytes.js";
3
+ //#region src/fog.ts
4
+ /**
5
+ * The state of a cell the team has not seen yet
6
+ *
7
+ * @internal
8
+ */
9
+ var FOG_UNEXPLORED = 0;
10
+ /**
11
+ * The state of a cell the team has seen but does not see now
12
+ *
13
+ * @internal
14
+ */
15
+ var FOG_EXPLORED = 1;
16
+ /**
17
+ * The state of a cell the team sees now
18
+ *
19
+ * @internal
20
+ */
21
+ var FOG_VISIBLE = 2;
22
+ /**
23
+ * Bit positions are 0..31: JavaScript bitwise operators work on 32 bit integers
24
+ *
25
+ * @internal
26
+ */
27
+ var MAX_FOG_TEAMS = 32;
28
+ /** Whether the middle of a cell of a row is in a circle: `across` is the square of how far the row's middle is from the circle's */
29
+ var inside = (cx, x, across, r2) => (cx + .5 - x) * (cx + .5 - x) + across <= r2;
30
+ /**
31
+ * What each team sees and has seen of the map, by cell, and the bit each team has in `Entity.seenBy`
32
+ *
33
+ * @beta
34
+ */
35
+ var FogOfWar = class {
36
+ width;
37
+ depth;
38
+ visible = /* @__PURE__ */ new Map();
39
+ explored = /* @__PURE__ */ new Map();
40
+ revealed = /* @__PURE__ */ new Set();
41
+ /**
42
+ * One bit per team, for per-entity bitmasks like `Entity.seenBy`. Team ids come from the map and can be
43
+ * any number (the creeps are team 1000), so they are numbered 0, 1, 2... here instead of being used as
44
+ * bit positions directly: `1 << 1000` is `1 << 8` in JavaScript and would mix up two teams.
45
+ */
46
+ bits = /* @__PURE__ */ new Map();
47
+ levels;
48
+ /**
49
+ * What is being lit during an update (`beginUpdate`), a bit a cell, a row of the map `words` of 32 bits: a row of a
50
+ * circle is a word or two, not hundreds of cells. Written into the grids as the update ends
51
+ */
52
+ lit = /* @__PURE__ */ new Map();
53
+ words;
54
+ updating = false;
55
+ /**
56
+ * Whether `lit` holds what each team sees now, as the grids do: from the end of an update until the grids are written
57
+ * otherwise (a reveal outside an update, a save taken back)
58
+ */
59
+ litIsSight = false;
60
+ /** The cells at or under each level, as bits: what a viewer on that level sees of what it lights. Made as they are first asked for */
61
+ levelMasks = /* @__PURE__ */ new Map();
62
+ /** The highest level of the ground: a viewer on it or above sees everything it lights. -1 until worked out */
63
+ top = -1;
64
+ /** Bumped every time visibility is recomputed */
65
+ version = 0;
66
+ constructor(width, depth, teams, levels) {
67
+ this.width = width;
68
+ this.depth = depth;
69
+ this.levels = levels ?? new Uint8Array(width * depth);
70
+ this.words = Math.ceil(width / 32);
71
+ if (teams.length > 32) throw new Error(`Fog of war supports at most 32 teams, got ${teams.length}`);
72
+ for (const team of teams) this.makeTeam(team);
73
+ }
74
+ /** Gives a team that has none yet fog of its own: a player moved to a new team mid-game. Nothing for one there is */
75
+ addTeam(team) {
76
+ if (this.visible.has(team)) return;
77
+ this.makeTeam(team);
78
+ this.version++;
79
+ }
80
+ /**
81
+ * Whether the whole map is explored from the start (`FogSettings.startExplored`, `MapDef.explored`): every team's, and
82
+ * the teams' made from now on. What stands on it and is no player's is then known to every team from the first moment
83
+ * (the sessions' `TeamMemory.startKnown`). Set with `exploreFromStart`
84
+ */
85
+ exploredFromStart = false;
86
+ /** Grids for a team, and the first bit no other team has */
87
+ makeTeam(team, bit = this.freeBit()) {
88
+ this.visible.set(team, new Uint8Array(this.width * this.depth));
89
+ this.explored.set(team, new Uint8Array(this.width * this.depth).fill(this.exploredFromStart ? 1 : 0));
90
+ this.bits.set(team, bit);
91
+ this.lit.set(team, new Uint32Array(this.words * this.depth));
92
+ }
93
+ freeBit() {
94
+ const taken = new Set(this.bits.values());
95
+ for (let place = 0; place < 32; place++) if (!taken.has(1 << place)) return 1 << place;
96
+ throw new Error(`Fog of war supports at most 32 teams`);
97
+ }
98
+ /** The team's bit in per-entity team masks. 0 for a team without fog (neutral), which then never shows up in one */
99
+ /** What each team sees and has explored, for a save, with each team's bit */
100
+ save() {
101
+ const save = {
102
+ version: this.version,
103
+ revealed: [...this.revealed],
104
+ teams: {},
105
+ bits: Object.fromEntries(this.bits),
106
+ ...this.exploredFromStart && { exploredFromStart: true }
107
+ };
108
+ for (const team of this.teams) save.teams[team] = {
109
+ visible: packBytes(this.visible.get(team)),
110
+ explored: packBytes(this.explored.get(team))
111
+ };
112
+ return save;
113
+ }
114
+ /** Takes the fog back from a save, teams and revealed ones too; throws when a team's cells are missing or of another size */
115
+ restore(save) {
116
+ const cells = this.width * this.depth;
117
+ if (save.bits) {
118
+ for (const team of this.teams) {
119
+ this.visible.delete(team);
120
+ this.explored.delete(team);
121
+ this.lit.delete(team);
122
+ }
123
+ this.bits.clear();
124
+ for (const [team, bit] of Object.entries(save.bits)) this.makeTeam(Number(team), bit);
125
+ }
126
+ for (const team of this.teams) {
127
+ const saved = save.teams[team];
128
+ const visible = saved && unpackBytes(saved.visible, cells);
129
+ const explored = saved && unpackBytes(saved.explored, cells);
130
+ if (!visible || !explored) throw new Error(`Save: the fog of team ${team} is missing or not the size of the map`);
131
+ this.visible.get(team).set(visible);
132
+ this.explored.get(team).set(explored);
133
+ }
134
+ this.litIsSight = false;
135
+ this.revealed.clear();
136
+ for (const team of save.revealed) this.revealed.add(team);
137
+ this.exploredFromStart = !!save.exploredFromStart;
138
+ this.version = save.version;
139
+ }
140
+ /** The bit a team has in per-entity bitmasks such as `Entity.seenBy`; 0 for a team that is not known */
141
+ teamBit(team) {
142
+ return this.bits.get(team) ?? 0;
143
+ }
144
+ /** The teams the fog holds cells for */
145
+ get teams() {
146
+ return [...this.visible.keys()];
147
+ }
148
+ /** Debug switch: the team sees everything */
149
+ setRevealed(team, revealed) {
150
+ if (revealed) this.revealed.add(team);
151
+ else this.revealed.delete(team);
152
+ this.version++;
153
+ }
154
+ /** Whether the team is shown everything (`setRevealed`) */
155
+ isRevealed(team) {
156
+ return this.revealed.has(team);
157
+ }
158
+ /**
159
+ * Starts working out what is seen: what is lit from here to `endUpdate` is collected as bits, and the grids
160
+ * are written when it ends, so `visible` and `explored` say what they did before until then
161
+ */
162
+ beginUpdate() {
163
+ this.updating = true;
164
+ this.litIsSight = false;
165
+ for (const bits of this.lit.values()) bits.fill(0);
166
+ }
167
+ /** Ends the update begun by `beginUpdate`: writes what was lit into the grids, so that visibility changes at once */
168
+ endUpdate() {
169
+ this.updating = false;
170
+ const { width, depth, words } = this;
171
+ for (const [team, bits] of this.lit) {
172
+ const visible = this.visible.get(team);
173
+ const explored = this.explored.get(team);
174
+ visible.fill(0);
175
+ for (let cz = 0; cz < depth; cz++) for (let w = 0; w < words; w++) {
176
+ let word = bits[cz * words + w];
177
+ if (word === 0) continue;
178
+ const row = cz * width + w * 32;
179
+ if (word === 4294967295) {
180
+ for (let i = row; i < row + 32; i++) {
181
+ visible[i] = 1;
182
+ explored[i] = 1;
183
+ }
184
+ continue;
185
+ }
186
+ while (word !== 0) {
187
+ const low = word & -word;
188
+ const i = row + 31 - Math.clz32(low);
189
+ visible[i] = 1;
190
+ explored[i] = 1;
191
+ word ^= low;
192
+ }
193
+ }
194
+ }
195
+ this.litIsSight = true;
196
+ this.version++;
197
+ }
198
+ /**
199
+ * What a team sees now as bits, a bit a cell, the lowest first: a row of the map `ceil(width / 32)` words, each row
200
+ * starting a word. As the last update (`endUpdate`) worked it out: undefined where the grids were written otherwise
201
+ * since (a reveal outside an update, a save taken back), or the team has no fog. Read, never written to
202
+ *
203
+ * @internal
204
+ */
205
+ sightBits(team) {
206
+ return this.litIsSight ? this.lit.get(team) : void 0;
207
+ }
208
+ /**
209
+ * Says the ground's levels changed (`Terrain.levels` written to while the world runs): what a viewer on a level sees
210
+ * is worked out from them once, and again after this
211
+ *
212
+ * @beta
213
+ */
214
+ levelsChanged() {
215
+ this.levelMasks.clear();
216
+ this.top = -1;
217
+ }
218
+ highest() {
219
+ if (this.top < 0) {
220
+ let top = 0;
221
+ for (const level of this.levels) if (level > top) top = level;
222
+ this.top = top;
223
+ }
224
+ return this.top;
225
+ }
226
+ maskOf(level) {
227
+ let mask = this.levelMasks.get(level);
228
+ if (!mask) {
229
+ const { width, depth, words, levels } = this;
230
+ mask = new Uint32Array(words * depth);
231
+ for (let cz = 0; cz < depth; cz++) for (let cx = 0; cx < width; cx++) if (levels[cz * width + cx] <= level) mask[cz * words + (cx >> 5)] |= 1 << (cx & 31);
232
+ this.levelMasks.set(level, mask);
233
+ }
234
+ return mask;
235
+ }
236
+ /** Lights up what a viewer at the point sees. Ground above the viewer's `level` stays dark, so a flyer passes Infinity */
237
+ reveal(team, x, z, radius, level = Infinity) {
238
+ const visible = this.visible.get(team);
239
+ const explored = this.explored.get(team);
240
+ if (!visible || !explored) return;
241
+ const { width, depth, words } = this;
242
+ const minZ = clamp(Math.floor(z - radius), 0, depth - 1);
243
+ const maxZ = clamp(Math.ceil(z + radius), 0, depth - 1);
244
+ const r2 = radius * radius;
245
+ const bits = this.updating ? this.lit.get(team) : null;
246
+ const mask = bits && level < this.highest() ? this.maskOf(level) : null;
247
+ for (let cz = minZ; cz <= maxZ; cz++) {
248
+ const dz = cz + .5 - z;
249
+ const across = dz * dz;
250
+ if (across > r2) continue;
251
+ const half = Math.sqrt(r2 - across);
252
+ let from = Math.max(Math.ceil(x - half - .5), 0);
253
+ let to = Math.min(Math.floor(x + half - .5), width - 1);
254
+ while (from <= to && !inside(from, x, across, r2)) from++;
255
+ while (to >= from && !inside(to, x, across, r2)) to--;
256
+ while (from > 0 && inside(from - 1, x, across, r2)) from--;
257
+ while (to < width - 1 && inside(to + 1, x, across, r2)) to++;
258
+ if (to < from) continue;
259
+ if (!bits) {
260
+ const { levels } = this;
261
+ for (let cx = from; cx <= to; cx++) {
262
+ const i = cz * width + cx;
263
+ if (levels[i] > level) continue;
264
+ visible[i] = 1;
265
+ explored[i] = 1;
266
+ }
267
+ continue;
268
+ }
269
+ const first = from >> 5;
270
+ const last = to >> 5;
271
+ const row = cz * words;
272
+ const head = -1 << (from & 31);
273
+ const tail = -1 >>> 31 - (to & 31);
274
+ if (first === last) bits[row + first] |= mask ? head & tail & mask[row + first] : head & tail;
275
+ else {
276
+ bits[row + first] |= mask ? head & mask[row + first] : head;
277
+ for (let w = first + 1; w < last; w++) bits[row + w] |= mask ? mask[row + w] : -1;
278
+ bits[row + last] |= mask ? tail & mask[row + last] : tail;
279
+ }
280
+ }
281
+ }
282
+ /** The state of the cell at (x, z) for the team: `FOG_VISIBLE` when it is revealed, else visible, explored or unexplored */
283
+ stateAt(team, x, z) {
284
+ if (this.revealed.has(team)) return 2;
285
+ const visible = this.visible.get(team);
286
+ if (!visible) return 0;
287
+ const cx = clamp(Math.floor(x), 0, this.width - 1);
288
+ const i = clamp(Math.floor(z), 0, this.depth - 1) * this.width + cx;
289
+ if (visible[i]) return 2;
290
+ return this.explored.get(team)[i] ? 1 : 0;
291
+ }
292
+ /** Whether the team sees the cell at (x, z) now */
293
+ isVisible(team, x, z) {
294
+ return this.stateAt(team, x, z) === 2;
295
+ }
296
+ /** Whether the team has seen the cell at (x, z) at some time */
297
+ isExplored(team, x, z) {
298
+ return this.stateAt(team, x, z) !== 0;
299
+ }
300
+ /** A team has seen every cell once: the map starts explored for it */
301
+ exploreAll(team) {
302
+ this.explored.get(team)?.fill(1);
303
+ this.version++;
304
+ }
305
+ /**
306
+ * The whole map explored from the start, for every team and the teams to come (`exploredFromStart`), or no longer:
307
+ * then each team has explored what it sees now, and no more (a debug switch, mid-game)
308
+ *
309
+ * @beta
310
+ */
311
+ exploreFromStart(on) {
312
+ this.exploredFromStart = on;
313
+ for (const team of this.teams) {
314
+ const explored = this.explored.get(team);
315
+ if (on) explored.fill(1);
316
+ else explored.set(this.visible.get(team));
317
+ }
318
+ this.version++;
319
+ }
320
+ /** Raw per cell state for rendering */
321
+ cells(team) {
322
+ const visible = this.visible.get(team);
323
+ const explored = this.explored.get(team);
324
+ return visible && explored ? {
325
+ visible,
326
+ explored
327
+ } : null;
328
+ }
329
+ };
330
+ //#endregion
331
+ export { FOG_EXPLORED, FOG_UNEXPLORED, FOG_VISIBLE, FogOfWar, MAX_FOG_TEAMS };
332
+
333
+ //# sourceMappingURL=fog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fog.js","names":[],"sources":["../src/fog.ts"],"sourcesContent":["import { packBytes, unpackBytes } from './bytes'\nimport { clamp } from './math'\n\n/**\n * The state of a cell the team has not seen yet\n *\n * @internal\n */\nexport const FOG_UNEXPLORED = 0\n/**\n * The state of a cell the team has seen but does not see now\n *\n * @internal\n */\nexport const FOG_EXPLORED = 1\n/**\n * The state of a cell the team sees now\n *\n * @internal\n */\nexport const FOG_VISIBLE = 2\n\n/**\n * Bit positions are 0..31: JavaScript bitwise operators work on 32 bit integers\n *\n * @internal\n */\nexport const MAX_FOG_TEAMS = 32\n\n/**\n * Per team visibility of the map, one cell per world unit.\n *\n * Each team has two grids. `visible` is what the team sees right now and is cleared and drawn again\n * on every update. `explored` only ever gets set: ground the team has looked at at least once, which\n * is drawn as the dimmed \"explored\" fog and lets players build there.\n */\n/** The fog in a save, see `FogOfWar.save` */\nexport interface FogSave {\n\tversion: number\n\trevealed: number[]\n\t/** Cells of each team, packed */\n\tteams: Record<number, { visible: string; explored: string }>\n\t/**\n\t * Each team's bit in the masks entities keep (`Entity.seenBy`): in the order teams first had fog, which a world loaded\n\t * from the save would not know otherwise once a player has moved to another team. Saves from before it numbered them\n\t * from the teams the world was made with\n\t */\n\tbits?: Record<number, number>\n\t/** Whether the map is explored from the start, for the teams to come too (`FogOfWar.exploredFromStart`) */\n\texploredFromStart?: true\n}\n\n/** Whether the middle of a cell of a row is in a circle: `across` is the square of how far the row's middle is from the circle's */\nconst inside = (cx: number, x: number, across: number, r2: number): boolean => (cx + 0.5 - x) * (cx + 0.5 - x) + across <= r2\n\n/**\n * What each team sees and has seen of the map, by cell, and the bit each team has in `Entity.seenBy`\n *\n * @beta\n */\nexport class FogOfWar {\n\t// (the maps below hold a team's cells for every team of `teams`, made together in the constructor: a `get(team)!` on\n\t// one of those teams cannot miss)\n\tprivate readonly visible = new Map<number, Uint8Array>()\n\tprivate readonly explored = new Map<number, Uint8Array>()\n\tprivate readonly revealed = new Set<number>()\n\t/**\n\t * One bit per team, for per-entity bitmasks like `Entity.seenBy`. Team ids come from the map and can be\n\t * any number (the creeps are team 1000), so they are numbered 0, 1, 2... here instead of being used as\n\t * bit positions directly: `1 << 1000` is `1 << 8` in JavaScript and would mix up two teams.\n\t */\n\tprivate readonly bits = new Map<number, number>()\n\tprivate readonly levels: Uint8Array\n\t/**\n\t * What is being lit during an update (`beginUpdate`), a bit a cell, a row of the map `words` of 32 bits: a row of a\n\t * circle is a word or two, not hundreds of cells. Written into the grids as the update ends\n\t */\n\tprivate readonly lit = new Map<number, Uint32Array>()\n\tprivate readonly words: number\n\tprivate updating = false\n\t/**\n\t * Whether `lit` holds what each team sees now, as the grids do: from the end of an update until the grids are written\n\t * otherwise (a reveal outside an update, a save taken back)\n\t */\n\tprivate litIsSight = false\n\t/** The cells at or under each level, as bits: what a viewer on that level sees of what it lights. Made as they are first asked for */\n\tprivate readonly levelMasks = new Map<number, Uint32Array>()\n\t/** The highest level of the ground: a viewer on it or above sees everything it lights. -1 until worked out */\n\tprivate top = -1\n\t/** Bumped every time visibility is recomputed */\n\tversion = 0\n\n\tconstructor(\n\t\t/** The map's width in cells */\n\t\treadonly width: number,\n\t\t/** The map's depth in cells */\n\t\treadonly depth: number,\n\t\tteams: number[],\n\t\t/** Level of every cell: nobody sees up a cliff. All on the ground floor when left out */\n\t\tlevels?: Uint8Array\n\t) {\n\t\tthis.levels = levels ?? new Uint8Array(width * depth)\n\t\tthis.words = Math.ceil(width / 32)\n\t\tif (teams.length > MAX_FOG_TEAMS) throw new Error(`Fog of war supports at most ${MAX_FOG_TEAMS} teams, got ${teams.length}`)\n\t\tfor (const team of teams) this.makeTeam(team)\n\t}\n\n\t/** Gives a team that has none yet fog of its own: a player moved to a new team mid-game. Nothing for one there is */\n\taddTeam(team: number): void {\n\t\tif (this.visible.has(team)) return\n\t\tthis.makeTeam(team)\n\t\tthis.version++\n\t}\n\n\t/**\n\t * Whether the whole map is explored from the start (`FogSettings.startExplored`, `MapDef.explored`): every team's, and\n\t * the teams' made from now on. What stands on it and is no player's is then known to every team from the first moment\n\t * (the sessions' `TeamMemory.startKnown`). Set with `exploreFromStart`\n\t */\n\texploredFromStart = false\n\n\t/** Grids for a team, and the first bit no other team has */\n\tprivate makeTeam(team: number, bit = this.freeBit()): void {\n\t\tthis.visible.set(team, new Uint8Array(this.width * this.depth))\n\t\tthis.explored.set(team, new Uint8Array(this.width * this.depth).fill(this.exploredFromStart ? 1 : 0))\n\t\tthis.bits.set(team, bit)\n\t\tthis.lit.set(team, new Uint32Array(this.words * this.depth))\n\t}\n\n\tprivate freeBit(): number {\n\t\tconst taken = new Set(this.bits.values())\n\t\tfor (let place = 0; place < MAX_FOG_TEAMS; place++) if (!taken.has(1 << place)) return 1 << place\n\t\tthrow new Error(`Fog of war supports at most ${MAX_FOG_TEAMS} teams`)\n\t}\n\n\t/** The team's bit in per-entity team masks. 0 for a team without fog (neutral), which then never shows up in one */\n\t/** What each team sees and has explored, for a save, with each team's bit */\n\tsave(): FogSave {\n\t\tconst save: FogSave = {\n\t\t\tversion: this.version,\n\t\t\trevealed: [...this.revealed],\n\t\t\tteams: {},\n\t\t\tbits: Object.fromEntries(this.bits),\n\t\t\t...(this.exploredFromStart && { exploredFromStart: true })\n\t\t}\n\t\tfor (const team of this.teams) save.teams[team] = { visible: packBytes(this.visible.get(team)!), explored: packBytes(this.explored.get(team)!) }\n\t\treturn save\n\t}\n\n\t/** Takes the fog back from a save, teams and revealed ones too; throws when a team's cells are missing or of another size */\n\trestore(save: FogSave): void {\n\t\tconst cells = this.width * this.depth\n\t\tif (save.bits) {\n\t\t\t// the teams as the saved world had them, each with its bit: those of players who moved since, too\n\t\t\tfor (const team of this.teams) {\n\t\t\t\tthis.visible.delete(team)\n\t\t\t\tthis.explored.delete(team)\n\t\t\t\tthis.lit.delete(team)\n\t\t\t}\n\t\t\tthis.bits.clear()\n\t\t\tfor (const [team, bit] of Object.entries(save.bits)) this.makeTeam(Number(team), bit)\n\t\t}\n\t\tfor (const team of this.teams) {\n\t\t\tconst saved = save.teams[team]\n\t\t\tconst visible = saved && unpackBytes(saved.visible, cells)\n\t\t\tconst explored = saved && unpackBytes(saved.explored, cells)\n\t\t\tif (!visible || !explored) throw new Error(`Save: the fog of team ${team} is missing or not the size of the map`)\n\t\t\tthis.visible.get(team)!.set(visible)\n\t\t\tthis.explored.get(team)!.set(explored)\n\t\t}\n\t\t// the grids from the save, the bits still of the update before (or none)\n\t\tthis.litIsSight = false\n\t\tthis.revealed.clear()\n\t\tfor (const team of save.revealed) this.revealed.add(team)\n\t\tthis.exploredFromStart = !!save.exploredFromStart\n\t\tthis.version = save.version\n\t}\n\n\t/** The bit a team has in per-entity bitmasks such as `Entity.seenBy`; 0 for a team that is not known */\n\tteamBit(team: number): number {\n\t\treturn this.bits.get(team) ?? 0\n\t}\n\n\t/** The teams the fog holds cells for */\n\tget teams(): number[] {\n\t\treturn [...this.visible.keys()]\n\t}\n\n\t/** Debug switch: the team sees everything */\n\tsetRevealed(team: number, revealed: boolean): void {\n\t\tif (revealed) this.revealed.add(team)\n\t\telse this.revealed.delete(team)\n\t\tthis.version++\n\t}\n\n\t/** Whether the team is shown everything (`setRevealed`) */\n\tisRevealed(team: number): boolean {\n\t\treturn this.revealed.has(team)\n\t}\n\n\t/**\n\t * Starts working out what is seen: what is lit from here to `endUpdate` is collected as bits, and the grids\n\t * are written when it ends, so `visible` and `explored` say what they did before until then\n\t */\n\tbeginUpdate(): void {\n\t\tthis.updating = true\n\t\tthis.litIsSight = false\n\t\tfor (const bits of this.lit.values()) bits.fill(0)\n\t}\n\n\t/** Ends the update begun by `beginUpdate`: writes what was lit into the grids, so that visibility changes at once */\n\tendUpdate(): void {\n\t\tthis.updating = false\n\t\tconst { width, depth, words } = this\n\t\tfor (const [team, bits] of this.lit) {\n\t\t\tconst visible = this.visible.get(team)!\n\t\t\tconst explored = this.explored.get(team)!\n\t\t\tvisible.fill(0)\n\t\t\tfor (let cz = 0; cz < depth; cz++) {\n\t\t\t\tfor (let w = 0; w < words; w++) {\n\t\t\t\t\tlet word = bits[cz * words + w]\n\t\t\t\t\tif (word === 0) continue\n\t\t\t\t\tconst row = cz * width + w * 32\n\t\t\t\t\tif (word === 0xffffffff) {\n\t\t\t\t\t\tfor (let i = row; i < row + 32; i++) {\n\t\t\t\t\t\t\tvisible[i] = 1\n\t\t\t\t\t\t\texplored[i] = 1\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\twhile (word !== 0) {\n\t\t\t\t\t\tconst low = word & -word\n\t\t\t\t\t\tconst i = row + 31 - Math.clz32(low)\n\t\t\t\t\t\tvisible[i] = 1\n\t\t\t\t\t\texplored[i] = 1\n\t\t\t\t\t\tword ^= low\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.litIsSight = true\n\t\tthis.version++\n\t}\n\n\t/**\n\t * What a team sees now as bits, a bit a cell, the lowest first: a row of the map `ceil(width / 32)` words, each row\n\t * starting a word. As the last update (`endUpdate`) worked it out: undefined where the grids were written otherwise\n\t * since (a reveal outside an update, a save taken back), or the team has no fog. Read, never written to\n\t *\n\t * @internal\n\t */\n\tsightBits(team: number): Uint32Array | undefined {\n\t\treturn this.litIsSight ? this.lit.get(team) : undefined\n\t}\n\n\t/**\n\t * Says the ground's levels changed (`Terrain.levels` written to while the world runs): what a viewer on a level sees\n\t * is worked out from them once, and again after this\n\t *\n\t * @beta\n\t */\n\tlevelsChanged(): void {\n\t\tthis.levelMasks.clear()\n\t\tthis.top = -1\n\t}\n\n\tprivate highest(): number {\n\t\tif (this.top < 0) {\n\t\t\tlet top = 0\n\t\t\tfor (const level of this.levels) if (level > top) top = level\n\t\t\tthis.top = top\n\t\t}\n\t\treturn this.top\n\t}\n\n\tprivate maskOf(level: number): Uint32Array {\n\t\tlet mask = this.levelMasks.get(level)\n\t\tif (!mask) {\n\t\t\tconst { width, depth, words, levels } = this\n\t\t\tmask = new Uint32Array(words * depth)\n\t\t\tfor (let cz = 0; cz < depth; cz++) {\n\t\t\t\tfor (let cx = 0; cx < width; cx++) if (levels[cz * width + cx] <= level) mask[cz * words + (cx >> 5)] |= 1 << (cx & 31)\n\t\t\t}\n\t\t\tthis.levelMasks.set(level, mask)\n\t\t}\n\t\treturn mask\n\t}\n\n\t/** Lights up what a viewer at the point sees. Ground above the viewer's `level` stays dark, so a flyer passes Infinity */\n\treveal(team: number, x: number, z: number, radius: number, level = Infinity): void {\n\t\tconst visible = this.visible.get(team)\n\t\tconst explored = this.explored.get(team)\n\t\tif (!visible || !explored) return\n\t\tconst { width, depth, words } = this\n\t\tconst minZ = clamp(Math.floor(z - radius), 0, depth - 1)\n\t\tconst maxZ = clamp(Math.ceil(z + radius), 0, depth - 1)\n\t\tconst r2 = radius * radius\n\t\tconst bits = this.updating ? this.lit.get(team)! : null\n\t\tconst mask = bits && level < this.highest() ? this.maskOf(level) : null\n\t\tfor (let cz = minZ; cz <= maxZ; cz++) {\n\t\t\tconst dz = cz + 0.5 - z\n\t\t\tconst across = dz * dz\n\t\t\tif (across > r2) continue\n\t\t\t// the cells of the row whose middle is in the circle: from the root, then made exact (the same test as ever)\n\t\t\tconst half = Math.sqrt(r2 - across)\n\t\t\tlet from = Math.max(Math.ceil(x - half - 0.5), 0)\n\t\t\tlet to = Math.min(Math.floor(x + half - 0.5), width - 1)\n\t\t\twhile (from <= to && !inside(from, x, across, r2)) from++\n\t\t\twhile (to >= from && !inside(to, x, across, r2)) to--\n\t\t\twhile (from > 0 && inside(from - 1, x, across, r2)) from--\n\t\t\twhile (to < width - 1 && inside(to + 1, x, across, r2)) to++\n\t\t\tif (to < from) continue\n\t\t\tif (!bits) {\n\t\t\t\t// outside an update: the grids at once\n\t\t\t\tconst { levels } = this\n\t\t\t\tfor (let cx = from; cx <= to; cx++) {\n\t\t\t\t\tconst i = cz * width + cx\n\t\t\t\t\tif (levels[i] > level) continue\n\t\t\t\t\tvisible[i] = 1\n\t\t\t\t\texplored[i] = 1\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst first = from >> 5\n\t\t\tconst last = to >> 5\n\t\t\tconst row = cz * words\n\t\t\tconst head = -1 << (from & 31)\n\t\t\tconst tail = -1 >>> (31 - (to & 31))\n\t\t\tif (first === last) bits[row + first] |= mask ? head & tail & mask[row + first] : head & tail\n\t\t\telse {\n\t\t\t\tbits[row + first] |= mask ? head & mask[row + first] : head\n\t\t\t\tfor (let w = first + 1; w < last; w++) bits[row + w] |= mask ? mask[row + w] : -1\n\t\t\t\tbits[row + last] |= mask ? tail & mask[row + last] : tail\n\t\t\t}\n\t\t}\n\t}\n\n\t/** The state of the cell at (x, z) for the team: `FOG_VISIBLE` when it is revealed, else visible, explored or unexplored */\n\tstateAt(team: number, x: number, z: number): number {\n\t\tif (this.revealed.has(team)) return FOG_VISIBLE\n\t\tconst visible = this.visible.get(team)\n\t\tif (!visible) return FOG_UNEXPLORED\n\t\tconst cx = clamp(Math.floor(x), 0, this.width - 1)\n\t\tconst cz = clamp(Math.floor(z), 0, this.depth - 1)\n\t\tconst i = cz * this.width + cx\n\t\tif (visible[i]) return FOG_VISIBLE\n\t\treturn this.explored.get(team)![i] ? FOG_EXPLORED : FOG_UNEXPLORED\n\t}\n\n\t/** Whether the team sees the cell at (x, z) now */\n\tisVisible(team: number, x: number, z: number): boolean {\n\t\treturn this.stateAt(team, x, z) === FOG_VISIBLE\n\t}\n\n\t/** Whether the team has seen the cell at (x, z) at some time */\n\tisExplored(team: number, x: number, z: number): boolean {\n\t\treturn this.stateAt(team, x, z) !== FOG_UNEXPLORED\n\t}\n\n\t/** A team has seen every cell once: the map starts explored for it */\n\texploreAll(team: number): void {\n\t\tthis.explored.get(team)?.fill(1)\n\t\tthis.version++\n\t}\n\n\t/**\n\t * The whole map explored from the start, for every team and the teams to come (`exploredFromStart`), or no longer:\n\t * then each team has explored what it sees now, and no more (a debug switch, mid-game)\n\t *\n\t * @beta\n\t */\n\texploreFromStart(on: boolean): void {\n\t\tthis.exploredFromStart = on\n\t\tfor (const team of this.teams) {\n\t\t\tconst explored = this.explored.get(team)!\n\t\t\tif (on) explored.fill(1)\n\t\t\telse explored.set(this.visible.get(team)!)\n\t\t}\n\t\tthis.version++\n\t}\n\n\t/** Raw per cell state for rendering */\n\tcells(team: number): { visible: Uint8Array; explored: Uint8Array } | null {\n\t\tconst visible = this.visible.get(team)\n\t\tconst explored = this.explored.get(team)\n\t\treturn visible && explored ? { visible, explored } : null\n\t}\n}\n"],"mappings":"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"}