@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
@@ -0,0 +1,409 @@
1
+ import { cellsChanged, groundReshaped, rustled } from "./engineEvents.js";
2
+ import { replicateEvent } from "./replication.js";
3
+ import { detection, exposure } from "./entity.js";
4
+ import { defineHook } from "./hooks.js";
5
+ import { floodCells } from "./cellPatches.js";
6
+ //#region src/concealment.ts
7
+ var known = /* @__PURE__ */ new WeakMap();
8
+ /** How the game's pack on a layer hides in it (`conceals`, `follows`), read from its hook: none where no pack is on it */
9
+ function concealingOf(world, layer) {
10
+ for (const hook of world.registry.assembly?.hooks ?? []) {
11
+ const concealing = hook.concealing;
12
+ if (concealing?.layer === layer) return concealing;
13
+ }
14
+ }
15
+ /** The patches of the layer of a world, worked out again when the layer, or one it follows, changed since */
16
+ function patchesOf(world, layer) {
17
+ let byLayer = known.get(world);
18
+ if (!byLayer) known.set(world, byLayer = /* @__PURE__ */ new Map());
19
+ let patches = byLayer.get(layer);
20
+ if (!patches) {
21
+ const how = concealingOf(world, layer);
22
+ const follows = how?.follows ?? [];
23
+ const made = {
24
+ cells: void 0,
25
+ of: /* @__PURE__ */ new Int32Array(0),
26
+ hiding: void 0,
27
+ conceals: how?.conceals,
28
+ next: 0,
29
+ searched: /* @__PURE__ */ new Int32Array(0),
30
+ searcher: /* @__PURE__ */ new Uint8Array(0),
31
+ stamp: 0,
32
+ dirty: true,
33
+ counted: false,
34
+ occupied: /* @__PURE__ */ new Map(),
35
+ stop: () => {}
36
+ };
37
+ const stopCells = world.events.on(cellsChanged, (change) => {
38
+ if (change.layer === layer || follows.includes(change.layer)) follow(world, made, layer, change.cells);
39
+ });
40
+ const stopGround = world.events.on(groundReshaped, ({ patch }) => {
41
+ const cells = patch.cells;
42
+ if (cells && (layer in cells || follows.some((id) => id in cells))) made.dirty = true;
43
+ });
44
+ made.stop = () => {
45
+ stopCells();
46
+ stopGround();
47
+ };
48
+ byLayer.set(layer, patches = made);
49
+ }
50
+ const cells = world.terrain.cells[layer];
51
+ if (patches.dirty || patches.cells !== cells) {
52
+ label(world, patches, cells);
53
+ patches.cells = cells;
54
+ patches.dirty = false;
55
+ }
56
+ return patches;
57
+ }
58
+ /**
59
+ * The patches of a layer of a world worked out again whole at the next ask: after what decides which cells hide
60
+ * changed while no cell did (a style's `conceals` changed in play, `debug.cellStyles`), who has someone in which
61
+ * counted again of them
62
+ *
63
+ * @internal
64
+ */
65
+ function markPatchesStale(world, layer) {
66
+ const patches = known.get(world)?.get(layer);
67
+ if (!patches) return;
68
+ patches.dirty = true;
69
+ patches.counted = false;
70
+ }
71
+ /**
72
+ * The patches of a layer: each cell the number of the patch it is in, of the cells that hide and touch (corners too).
73
+ * Into the patches' own arrays, where they are the size of the map
74
+ */
75
+ function label(world, patches, cells) {
76
+ const { width, depth } = world.terrain;
77
+ const of = patches.of = new Int32Array(width * depth);
78
+ if (!cells) return;
79
+ let hiding = cells;
80
+ const { conceals } = patches;
81
+ if (conceals) {
82
+ if (patches.hiding?.length !== cells.length) patches.hiding = new Uint8Array(cells.length);
83
+ hiding = patches.hiding;
84
+ for (let c = 0; c < cells.length; c++) hiding[c] = cells[c] && conceals(world, c) ? 1 : 0;
85
+ }
86
+ let next = 0;
87
+ const stack = [];
88
+ for (let start = 0; start < hiding.length; start++) if (hiding[start] && !of[start]) floodCells(width, depth, hiding, -1, start, of, ++next, stack);
89
+ patches.next = next;
90
+ }
91
+ /** The eight cells about one, in order round it (a corner, a side, a corner…): what is asked of a cell that stops hiding */
92
+ var ROUND_X = [
93
+ -1,
94
+ 0,
95
+ 1,
96
+ 1,
97
+ 1,
98
+ 0,
99
+ -1,
100
+ -1
101
+ ];
102
+ var ROUND_Z = [
103
+ -1,
104
+ -1,
105
+ -1,
106
+ 0,
107
+ 1,
108
+ 1,
109
+ 1,
110
+ 0
111
+ ];
112
+ /**
113
+ * Cells of the layer, or of one it follows, changed: each that started or stopped hiding is followed into the
114
+ * patches where that is sure (`leave`, `join`), so that a fire that changes cells every tick does not have the whole
115
+ * map worked out again every tick. Where it is not, the patches are marked to be worked out again at the next ask
116
+ */
117
+ function follow(world, patches, layer, changed) {
118
+ if (patches.dirty) return;
119
+ const cells = world.terrain.cells[layer];
120
+ if (!cells || patches.cells !== cells || patches.of.length !== cells.length) return void (patches.dirty = true);
121
+ const { of, conceals } = patches;
122
+ for (let i = 0; i < changed.length; i++) {
123
+ const cell = changed[i];
124
+ const was = of[cell] !== 0;
125
+ if (was === (cells[cell] !== 0 && (!conceals || conceals(world, cell)))) continue;
126
+ if (!(was ? leave(world, patches, cell) : join(world, patches, cell))) return void (patches.dirty = true);
127
+ }
128
+ }
129
+ /**
130
+ * A cell stops hiding: out of its patch. The patch stays one where the cells about it that hide touch each other
131
+ * round it (one run of them round the cell, a corner between two sides counting as touching): any way through the
132
+ * cell goes round it. Else the patch may have come apart there, and the parts are looked for (`part`)
133
+ */
134
+ function leave(world, patches, cell) {
135
+ const { width, depth } = world.terrain;
136
+ const { of } = patches;
137
+ of[cell] = 0;
138
+ const x = cell % width;
139
+ const z = (cell - x) / width;
140
+ let mask = 0;
141
+ for (let i = 0; i < 8; i++) {
142
+ const nx = x + ROUND_X[i];
143
+ const nz = z + ROUND_Z[i];
144
+ if (nx >= 0 && nz >= 0 && nx < width && nz < depth && of[nz * width + nx]) mask |= 1 << i;
145
+ }
146
+ let joined = mask;
147
+ for (let i = 0; i < 8; i += 2) if (!(mask & 1 << i) && mask & 1 << (i + 7 & 7) && mask & 1 << i + 1) joined |= 1 << i;
148
+ const starts = [];
149
+ for (let i = 0; i < 8; i++) if (joined & 1 << i && !(joined & 1 << (i + 7 & 7))) starts.push(i);
150
+ if (starts.length <= 1) return true;
151
+ part(world, patches, starts.map((i) => {
152
+ const at = mask & 1 << i ? i : i + 1 & 7;
153
+ return (z + ROUND_Z[at]) * width + x + ROUND_X[at];
154
+ }));
155
+ return true;
156
+ }
157
+ /**
158
+ * A patch may have come apart: searches from a cell of each part, a step each in turn, through the cells of the
159
+ * patch. Two that meet are one part; one that runs out has gone through a part of its own, given a patch number of
160
+ * its own. It stops as soon as one search is left: what it goes through is about the smaller parts, not the patch
161
+ */
162
+ function part(world, patches, from) {
163
+ const { width, depth } = world.terrain;
164
+ const { of } = patches;
165
+ if (patches.searched.length !== of.length) {
166
+ patches.searched = new Int32Array(of.length);
167
+ patches.searcher = new Uint8Array(of.length);
168
+ patches.stamp = 0;
169
+ }
170
+ const stamp = ++patches.stamp;
171
+ const { searched, searcher } = patches;
172
+ const patch = of[from[0]];
173
+ const count = from.length;
174
+ const queues = from.map((cell) => [cell]);
175
+ const heads = from.map(() => 0);
176
+ const went = from.map((cell) => [cell]);
177
+ const one = from.map((_, i) => i);
178
+ const done = from.map(() => false);
179
+ const find = (i) => {
180
+ while (one[i] !== i) i = one[i] = one[one[i]];
181
+ return i;
182
+ };
183
+ from.forEach((cell, i) => {
184
+ searched[cell] = stamp;
185
+ searcher[cell] = i;
186
+ });
187
+ let going = count;
188
+ while (going > 1) for (let s = 0; s < count && going > 1; s++) {
189
+ if (one[s] !== s || done[s]) continue;
190
+ if (heads[s] >= queues[s].length) {
191
+ done[s] = true;
192
+ going--;
193
+ continue;
194
+ }
195
+ const cell = queues[s][heads[s]++];
196
+ const x = cell % width;
197
+ const z = (cell - x) / width;
198
+ for (let i = 0; i < 8; i++) {
199
+ const nx = x + ROUND_X[i];
200
+ const nz = z + ROUND_Z[i];
201
+ if (nx < 0 || nz < 0 || nx >= width || nz >= depth) continue;
202
+ const n = nz * width + nx;
203
+ if (of[n] !== patch) continue;
204
+ if (searched[n] === stamp) {
205
+ const other = find(searcher[n]);
206
+ if (other === s) continue;
207
+ one[other] = s;
208
+ for (let k = heads[other]; k < queues[other].length; k++) queues[s].push(queues[other][k]);
209
+ for (const each of went[other]) went[s].push(each);
210
+ going--;
211
+ continue;
212
+ }
213
+ searched[n] = stamp;
214
+ searcher[n] = s;
215
+ queues[s].push(n);
216
+ went[s].push(n);
217
+ }
218
+ }
219
+ let kept = from.findIndex((_, s) => one[s] === s && !done[s]);
220
+ for (let s = 0; s < count; s++) {
221
+ if (one[s] !== s || s === kept) continue;
222
+ if (kept < 0) {
223
+ kept = s;
224
+ continue;
225
+ }
226
+ const number = ++patches.next;
227
+ for (const cell of went[s]) of[cell] = number;
228
+ }
229
+ }
230
+ /**
231
+ * A cell starts hiding: into the patch about it, or a patch of its own where none is about. Where it joins two
232
+ * patches into one it is not followed (false): the patches are worked out again
233
+ */
234
+ function join(world, patches, cell) {
235
+ const { width, depth } = world.terrain;
236
+ const { of } = patches;
237
+ const x = cell % width;
238
+ const z = (cell - x) / width;
239
+ let found = 0;
240
+ for (let i = 0; i < 8; i++) {
241
+ const nx = x + ROUND_X[i];
242
+ const nz = z + ROUND_Z[i];
243
+ if (nx < 0 || nz < 0 || nx >= width || nz >= depth) continue;
244
+ const patch = of[nz * width + nx];
245
+ if (!patch || patch === found) continue;
246
+ if (found) return false;
247
+ found = patch;
248
+ }
249
+ of[cell] = found || ++patches.next;
250
+ return true;
251
+ }
252
+ /** Units on the ground, not structures: what hides when a game does not say */
253
+ var onTheGround = (_world, entity) => !entity.def.footprint && !entity.flying && entity.def.kind === "unit";
254
+ /**
255
+ * The patch of a layer an entity stands in, 1 and up, or 0 where it stands in none (`ConcealmentOptions`). For a
256
+ * game's rules and screen: who is in the grass
257
+ *
258
+ * @beta
259
+ */
260
+ function patchAt(world, layer, x, z) {
261
+ const { terrain } = world;
262
+ if (x < 0 || z < 0 || x >= terrain.width || z >= terrain.depth) return 0;
263
+ return patchesOf(world, layer).of[Math.floor(z) * terrain.width + Math.floor(x)];
264
+ }
265
+ /**
266
+ * A game where what stands in a layer of cells is hidden from the teams that are not in it with them (see
267
+ * `ConcealmentOptions`): a `visible` hook, and a system that works out who has someone in which patch at the start of
268
+ * every tick (the same in every copy of the game, whoever asks what in between). On as many layers as it is given
269
+ *
270
+ * @beta
271
+ */
272
+ function concealmentPack(options) {
273
+ const { layer, hides = onTheGround, seenBy } = options;
274
+ const reach = options.reach ?? 2;
275
+ const id = options.id ?? `concealment:${layer}`;
276
+ const { rustle } = options;
277
+ const count = {
278
+ name: id,
279
+ phase: "commands",
280
+ update(world) {
281
+ if (!world.terrain.cells[layer]) return;
282
+ const patches = patchesOf(world, layer);
283
+ const { eachUnit } = options;
284
+ countOccupied(world, patches, hides, eachUnit);
285
+ if (eachUnit?.done(world)) countOccupied(world, patchesOf(world, layer), hides);
286
+ if (rustle) tellRustles(world, layer, patches, hides, rustle, options.rustleEvery ?? .3);
287
+ }
288
+ };
289
+ return {
290
+ id: "concealment",
291
+ options,
292
+ hooks: [{
293
+ ...defineHook({
294
+ hook: "visible",
295
+ id,
296
+ run(world, event) {
297
+ if (!event.visible) return;
298
+ const { entity, team } = event;
299
+ if (!world.terrain.cells[layer]) return;
300
+ const patches = patchesOf(world, layer);
301
+ const { width, depth } = world.terrain;
302
+ const { x, z } = entity.pos;
303
+ if (x < 0 || z < 0 || x >= width || z >= depth) return;
304
+ const patch = patches.of[Math.floor(z) * width + Math.floor(x)];
305
+ if (!patch || !hides(world, entity)) return;
306
+ if (entity.get(exposure)?.has(team) || entity.get(detection)?.has(team)) return;
307
+ if (!patches.counted) countOccupied(world, patches, hides);
308
+ if (patches.occupied.get(team)?.has(patch)) return;
309
+ for (const near of world.spatial.query(x, z, reach, nearby)) {
310
+ if (near === entity || !near.alive || near.hidden) continue;
311
+ if (world.player(near.owner).team !== team || world.player(near.owner).neutral) continue;
312
+ const dx = near.pos.x - x;
313
+ const dz = near.pos.z - z;
314
+ if (dx * dx + dz * dz <= reach * reach) return;
315
+ }
316
+ if (seenBy?.(world, entity, team)) return;
317
+ event.visible = false;
318
+ }
319
+ }),
320
+ concealing: options
321
+ }],
322
+ systems: [count]
323
+ };
324
+ }
325
+ /** What the `visible` hook finds near a hidden one, kept between asks so that asking allocates nothing */
326
+ var nearby = [];
327
+ /** Where each that hides stood the tick before, and in which patch: what a rustle is told from. Not the world's state */
328
+ var stood = /* @__PURE__ */ new WeakMap();
329
+ /** One hidden that moved in a patch, or stepped into one: told to the teams the game says (`ConcealmentOptions.rustle`) */
330
+ function tellRustles(world, layer, patches, hides, rustle, seconds) {
331
+ let was = stood.get(world);
332
+ if (!was) stood.set(world, was = /* @__PURE__ */ new Map());
333
+ const every = Math.max(1, Math.round(seconds / world.dt));
334
+ const { width, depth } = world.terrain;
335
+ const teams = typeof rustle === "function" ? [...new Set([...world.players.values()].filter((p) => !p.neutral).map((p) => p.team))] : void 0;
336
+ for (const entity of world.units.values()) {
337
+ if (!entity.alive || entity.hidden || !hides(world, entity)) continue;
338
+ const { x, z } = entity.pos;
339
+ const patch = x < 0 || z < 0 || x >= width || z >= depth ? 0 : patches.of[Math.floor(z) * width + Math.floor(x)];
340
+ const before = was.get(entity.id);
341
+ if (!before) {
342
+ was.set(entity.id, {
343
+ x,
344
+ z,
345
+ patch
346
+ });
347
+ continue;
348
+ }
349
+ const dx = before.x - x;
350
+ const dz = before.z - z;
351
+ const moved = dx * dx + dz * dz > 1e-4;
352
+ const entered = !!patch && patch !== before.patch;
353
+ before.x = x;
354
+ before.z = z;
355
+ before.patch = patch;
356
+ if (!patch || !moved || !entered && (world.tick + entity.id) % every !== 0) continue;
357
+ const told = teams && typeof rustle === "function" ? teams.filter((team) => rustle(world, entity, team)) : void 0;
358
+ if (told && !told.length) continue;
359
+ world.events.emit(rustled, {
360
+ layer,
361
+ entity,
362
+ x,
363
+ z,
364
+ entered,
365
+ ...told && { teams: told }
366
+ });
367
+ }
368
+ if (was.size > world.entities.size * 2 + 64) {
369
+ for (const id of was.keys()) if (!world.entities.has(id)) was.delete(id);
370
+ }
371
+ }
372
+ /** The patches each team has someone in, worked out anew; each unit told to `each` on the way (`ConcealmentOptions.eachUnit`) */
373
+ function countOccupied(world, patches, hides, each) {
374
+ patches.counted = true;
375
+ const { occupied, of } = patches;
376
+ for (const set of occupied.values()) set.clear();
377
+ const { width, depth } = world.terrain;
378
+ for (const entity of world.units.values()) {
379
+ if (!entity.alive || entity.hidden) continue;
380
+ const { x, z } = entity.pos;
381
+ if (x < 0 || z < 0 || x >= width || z >= depth) continue;
382
+ const cell = Math.floor(z) * width + Math.floor(x);
383
+ each?.unit(world, entity, cell);
384
+ if (!hides(world, entity)) continue;
385
+ const patch = of[cell];
386
+ if (!patch) continue;
387
+ const owner = world.player(entity.owner);
388
+ if (owner.neutral) continue;
389
+ let set = occupied.get(owner.team);
390
+ if (!set) occupied.set(owner.team, set = /* @__PURE__ */ new Set());
391
+ set.add(patch);
392
+ }
393
+ }
394
+ /** One hidden moving in a layer: where the player sees the ground, to whom the rules tell it, a shake of the bushes */
395
+ var toldRustle = replicateEvent(rustled, "rustle", ({ layer, entity, x, z, entered, teams }, view) => {
396
+ if (view.observer || view.knows(entity) || !view.sees(x, z)) return void 0;
397
+ if (teams && !teams.includes(view.team)) return void 0;
398
+ return {
399
+ type: "rustle",
400
+ layer,
401
+ x: Math.round(x * 10) / 10,
402
+ z: Math.round(z * 10) / 10,
403
+ ...entered && { entered }
404
+ };
405
+ });
406
+ //#endregion
407
+ export { concealmentPack, markPatchesStale, patchAt, toldRustle };
408
+
409
+ //# sourceMappingURL=concealment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concealment.js","names":[],"sources":["../src/concealment.ts"],"sourcesContent":["import { cellsChanged, groundReshaped, rustled } from '#engine/engineEvents'\nimport type { Entity } from './entity'\nimport { exposure, detection } from './entity'\nimport type { GamePack } from './packs/pack'\nimport { defineHook, type HookDef } from './hooks'\nimport type { System } from './registry'\nimport type { World } from './world'\nimport { replicateEvent } from './replication'\nimport { floodCells } from './cellPatches'\n\n/**\n * Hiding places painted on a map, as a layer of cells (`CellLayerDef`): tall grass, a forest's edge. Who stands in one\n * is seen by another team only from inside the same patch of it (the cells of the layer that touch, sides or corners),\n * or from close by (`reach`). An attacker in one is seen by whom it hits for a moment, as anyone is (`expose`), and\n * what detects the invisible (`entity.detected`) sees it too. A game turns it on, on as many layers as it likes:\n *\n * export const rules = { ...myGame, packs: [concealmentPack({ layer: 'bush' })] }\n *\n * Everything that asks what a team sees (`world.isVisibleTo`) goes by it: what units pick to attack, the commands a\n * player may give, the fog's memory, and each player's snapshots, so the computer player and the players over a wire\n * see what the rules let them. Nothing is saved: it is worked out from the layer and where everyone stands\n *\n * @beta\n */\nexport interface ConcealmentOptions {\n\t/** The layer of cells that hides (`Terrain.cells`): any cell of it with a value other than 0 */\n\tlayer: string\n\t/** How near, in cells, someone of another team has to be to see into it from outside: 2 when left out */\n\treach?: number\n\t/**\n\t * What it hides: units on the ground, of anyone, when left out (not structures, not what flies). A game's own, to hide\n\t * heroes only or let some types never hide\n\t */\n\thides?: (world: World, entity: Entity) => boolean\n\t/**\n\t * Whether a team sees a hidden entity anyway, after what the patch and `reach` make of it: a ward, a scout's ability.\n\t * Asked only of what would otherwise be hidden\n\t */\n\tseenBy?: (world: World, entity: Entity, team: number) => boolean\n\t/**\n\t * Whether one hidden in it gives itself away by moving, as the brush of a hero arena game shakes: the teams that do not see it are\n\t * told where it moves in it and steps into it (a `rustle` event, where they see the ground; not who), and their\n\t * screens shake the bushes there. `true` for every team, a function to say for each (`team`), no when left out:\n\t * a hidden unit shakes nothing on the screens of those who do not see it\n\t */\n\trustle?: boolean | ((world: World, entity: Entity, team: number) => boolean)\n\t/** How often one moving in it is told again, in seconds: 0.3 when left out. Stepping in is told at once */\n\trustleEvery?: number\n\t/** The id of its hook and its system, to replace or leave out: `concealment:<layer>` when left out */\n\tid?: string\n\t/**\n\t * Which cells of the layer hide, by their index: every cell that is not 0 when left out. The patches are of the\n\t * cells that do (those that touch), so grass that is cut or burnt neither hides nor joins two patches. What the\n\t * foliage pack hides by: a style that conceals, in a state that still does (`foliagePack`). Asked as the patches are\n\t * worked out, not for every unit\n\t */\n\tconceals?: (world: World, cell: number) => boolean\n\t/**\n\t * Other layers whose cells decide what hides (`conceals`), by id: the patches are worked out again when one of them\n\t * changes, as when the layer itself does. The foliage pack's state layer (`foliageStateLayer`)\n\t */\n\tfollows?: readonly string[]\n\t/**\n\t * Told of each unit on the map as the count goes through the units at the start of a tick (alive, not inside\n\t * anything), with the cell it stands in (`unit`), and once the count is done (`done`, whether it changed cells of the\n\t * layer or of one it follows: the count is made again of the patches as they are now). What the foliage pack\n\t * tramples by, in the same pass over the units as the count (`FoliageStyleDef.trample`). Never told from a `visible`\n\t * asked before the tick's count\n\t */\n\teachUnit?: { unit(world: World, entity: Entity, cell: number): void; done(world: World): boolean }\n}\n\n/** What a world's patches of a layer are, worked out once and again when the layer changes */\ninterface Patches {\n\t/** The cells of the layer this was worked out from: another array (the map resized, a save loaded) works it out again */\n\tcells: Uint8Array | undefined\n\t/** The patch of each cell, 1 and up; 0 for none */\n\tof: Int32Array\n\t/** Which cells hide, of a layer whose pack says (`ConcealmentOptions.conceals`): filled again as the patches are worked out */\n\thiding: Uint8Array | undefined\n\t/** Which cells of the layer hide, as the pack on it says: every cell not 0 where none says */\n\tconceals: ConcealmentOptions['conceals']\n\t/** The highest patch number given yet: a patch parted from another is given the next */\n\tnext: number\n\t/** Scratch of a parting (`part`): the cells a search went through, by the search's stamp, and which search each */\n\tsearched: Int32Array\n\tsearcher: Uint8Array\n\tstamp: number\n\tdirty: boolean\n\t/** Whether `occupied` was worked out yet: at the start of every tick, by the system, and never in the middle of one */\n\tcounted: boolean\n\t/** The patches each team has someone on the ground in, by team */\n\toccupied: Map<number, Set<number>>\n\tstop: () => void\n}\n\nconst known = new WeakMap<World, Map<string, Patches>>()\n\n/** The hook of a concealment pack, with how it hides: what its patches are worked out by, wherever they are asked for */\ninterface ConcealingHook extends HookDef {\n\treadonly concealing: ConcealmentOptions\n}\n\n/** How the game's pack on a layer hides in it (`conceals`, `follows`), read from its hook: none where no pack is on it */\nfunction concealingOf(world: World, layer: string): ConcealmentOptions | undefined {\n\tfor (const hook of world.registry.assembly?.hooks ?? []) {\n\t\tconst concealing = (hook as Partial<ConcealingHook>).concealing\n\t\tif (concealing?.layer === layer) return concealing\n\t}\n\treturn undefined\n}\n\n/** The patches of the layer of a world, worked out again when the layer, or one it follows, changed since */\nfunction patchesOf(world: World, layer: string): Patches {\n\tlet byLayer = known.get(world)\n\tif (!byLayer) known.set(world, (byLayer = new Map()))\n\tlet patches = byLayer.get(layer)\n\tif (!patches) {\n\t\tconst how = concealingOf(world, layer)\n\t\tconst follows = how?.follows ?? []\n\t\tconst made: Patches = {\n\t\t\tcells: undefined,\n\t\t\tof: new Int32Array(0),\n\t\t\thiding: undefined,\n\t\t\tconceals: how?.conceals,\n\t\t\tnext: 0,\n\t\t\tsearched: new Int32Array(0),\n\t\t\tsearcher: new Uint8Array(0),\n\t\t\tstamp: 0,\n\t\t\tdirty: true,\n\t\t\tcounted: false,\n\t\t\toccupied: new Map(),\n\t\t\tstop: () => {}\n\t\t}\n\t\t// the cells that changed followed one by one, where that is sure to come to what working them all out again\n\t\t// would; else only marked, worked out at the next ask, so a layer changed many times in a tick is worked out once\n\t\tconst stopCells = world.events.on(cellsChanged, (change) => {\n\t\t\tif (change.layer === layer || follows.includes(change.layer)) follow(world, made, layer, change.cells)\n\t\t})\n\t\t// the ground reshaped with its layers of cells as the patch has them (`World.reshapeGround`), which no change of\n\t\t// cells is said for: worked out again whole, as a world loaded from a save made after works them out\n\t\tconst stopGround = world.events.on(groundReshaped, ({ patch }) => {\n\t\t\tconst cells = patch.cells\n\t\t\tif (cells && (layer in cells || follows.some((id) => id in cells))) made.dirty = true\n\t\t})\n\t\tmade.stop = () => {\n\t\t\tstopCells()\n\t\t\tstopGround()\n\t\t}\n\t\tbyLayer.set(layer, (patches = made))\n\t}\n\tconst cells = world.terrain.cells[layer]\n\tif (patches.dirty || patches.cells !== cells) {\n\t\tlabel(world, patches, cells)\n\t\tpatches.cells = cells\n\t\tpatches.dirty = false\n\t}\n\treturn patches\n}\n\n/**\n * The patches of a layer of a world worked out again whole at the next ask: after what decides which cells hide\n * changed while no cell did (a style's `conceals` changed in play, `debug.cellStyles`), who has someone in which\n * counted again of them\n *\n * @internal\n */\nexport function markPatchesStale(world: World, layer: string): void {\n\tconst patches = known.get(world)?.get(layer)\n\tif (!patches) return\n\tpatches.dirty = true\n\t// who is in which patch counted again of the new patches, at the next ask\n\tpatches.counted = false\n}\n\n/**\n * The patches of a layer: each cell the number of the patch it is in, of the cells that hide and touch (corners too).\n * Into the patches' own arrays, where they are the size of the map\n */\nfunction label(world: World, patches: Patches, cells: Uint8Array | undefined): void {\n\tconst { width, depth } = world.terrain\n\t// a new one each time: as quick as clearing the last (zeroed as it is made), and nothing holds the last\n\tconst of = (patches.of = new Int32Array(width * depth))\n\tif (!cells) return\n\t// the cells that hide, each asked once: every cell not 0, or those of them the pack says\n\tlet hiding = cells\n\tconst { conceals } = patches\n\tif (conceals) {\n\t\tif (patches.hiding?.length !== cells.length) patches.hiding = new Uint8Array(cells.length)\n\t\thiding = patches.hiding!\n\t\tfor (let c = 0; c < cells.length; c++) hiding[c] = cells[c] && conceals(world, c) ? 1 : 0\n\t}\n\tlet next = 0\n\tconst stack: number[] = []\n\t// each patch the one flood fill a game's `patchCells` is too, numbered in the order its first cell comes\n\tfor (let start = 0; start < hiding.length; start++) if (hiding[start] && !of[start]) floodCells(width, depth, hiding, -1, start, of, ++next, stack)\n\tpatches.next = next\n}\n\n/** The eight cells about one, in order round it (a corner, a side, a corner…): what is asked of a cell that stops hiding */\nconst ROUND_X = [-1, 0, 1, 1, 1, 0, -1, -1] as const\nconst ROUND_Z = [-1, -1, -1, 0, 1, 1, 1, 0] as const\n\n/**\n * Cells of the layer, or of one it follows, changed: each that started or stopped hiding is followed into the\n * patches where that is sure (`leave`, `join`), so that a fire that changes cells every tick does not have the whole\n * map worked out again every tick. Where it is not, the patches are marked to be worked out again at the next ask\n */\nfunction follow(world: World, patches: Patches, layer: string, changed: readonly number[]): void {\n\tif (patches.dirty) return\n\tconst cells = world.terrain.cells[layer]\n\tif (!cells || patches.cells !== cells || patches.of.length !== cells.length) return void (patches.dirty = true)\n\tconst { of, conceals } = patches\n\tfor (let i = 0; i < changed.length; i++) {\n\t\tconst cell = changed[i]\n\t\tconst was = of[cell] !== 0\n\t\tconst now = cells[cell] !== 0 && (!conceals || conceals(world, cell))\n\t\tif (was === now) continue\n\t\tif (!(was ? leave(world, patches, cell) : join(world, patches, cell))) return void (patches.dirty = true)\n\t}\n}\n\n/**\n * A cell stops hiding: out of its patch. The patch stays one where the cells about it that hide touch each other\n * round it (one run of them round the cell, a corner between two sides counting as touching): any way through the\n * cell goes round it. Else the patch may have come apart there, and the parts are looked for (`part`)\n */\nfunction leave(world: World, patches: Patches, cell: number): boolean {\n\tconst { width, depth } = world.terrain\n\tconst { of } = patches\n\tof[cell] = 0\n\tconst x = cell % width\n\tconst z = (cell - x) / width\n\t// which of the eight hide, round the cell\n\tlet mask = 0\n\tfor (let i = 0; i < 8; i++) {\n\t\tconst nx = x + ROUND_X[i]\n\t\tconst nz = z + ROUND_Z[i]\n\t\tif (nx >= 0 && nz >= 0 && nx < width && nz < depth && of[nz * width + nx]) mask |= 1 << i\n\t}\n\t// a corner between two sides that hide is passed through (the sides touch across it)\n\tlet joined = mask\n\tfor (let i = 0; i < 8; i += 2) if (!(mask & (1 << i)) && mask & (1 << ((i + 7) & 7)) && mask & (1 << (i + 1))) joined |= 1 << i\n\t// the runs of them round the cell: where one starts after one that does not hide\n\tconst starts: number[] = []\n\tfor (let i = 0; i < 8; i++) if (joined & (1 << i) && !(joined & (1 << ((i + 7) & 7)))) starts.push(i)\n\tif (starts.length <= 1) return true\n\t// a cell of each run, of those that hide (a run starts at one, or at a corner joined between two that do)\n\tconst from = starts.map((i) => {\n\t\tconst at = mask & (1 << i) ? i : (i + 1) & 7\n\t\treturn (z + ROUND_Z[at]) * width + x + ROUND_X[at]\n\t})\n\tpart(world, patches, from)\n\treturn true\n}\n\n/**\n * A patch may have come apart: searches from a cell of each part, a step each in turn, through the cells of the\n * patch. Two that meet are one part; one that runs out has gone through a part of its own, given a patch number of\n * its own. It stops as soon as one search is left: what it goes through is about the smaller parts, not the patch\n */\nfunction part(world: World, patches: Patches, from: number[]): void {\n\tconst { width, depth } = world.terrain\n\tconst { of } = patches\n\tif (patches.searched.length !== of.length) {\n\t\tpatches.searched = new Int32Array(of.length)\n\t\tpatches.searcher = new Uint8Array(of.length)\n\t\tpatches.stamp = 0\n\t}\n\tconst stamp = ++patches.stamp\n\tconst { searched, searcher } = patches\n\tconst patch = of[from[0]]\n\tconst count = from.length\n\t// each search's cells to go on from, the cells it went through, and the search it is one with now\n\tconst queues = from.map((cell) => [cell])\n\tconst heads = from.map(() => 0)\n\tconst went = from.map((cell) => [cell])\n\tconst one = from.map((_, i) => i)\n\tconst done = from.map(() => false)\n\tconst find = (i: number) => {\n\t\twhile (one[i] !== i) i = one[i] = one[one[i]]\n\t\treturn i\n\t}\n\tfrom.forEach((cell, i) => {\n\t\tsearched[cell] = stamp\n\t\tsearcher[cell] = i\n\t})\n\tlet going = count\n\twhile (going > 1) {\n\t\tfor (let s = 0; s < count && going > 1; s++) {\n\t\t\tif (one[s] !== s || done[s]) continue\n\t\t\tif (heads[s] >= queues[s].length) {\n\t\t\t\tdone[s] = true\n\t\t\t\tgoing--\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst cell = queues[s][heads[s]++]\n\t\t\tconst x = cell % width\n\t\t\tconst z = (cell - x) / width\n\t\t\tfor (let i = 0; i < 8; i++) {\n\t\t\t\tconst nx = x + ROUND_X[i]\n\t\t\t\tconst nz = z + ROUND_Z[i]\n\t\t\t\tif (nx < 0 || nz < 0 || nx >= width || nz >= depth) continue\n\t\t\t\tconst n = nz * width + nx\n\t\t\t\tif (of[n] !== patch) continue\n\t\t\t\tif (searched[n] === stamp) {\n\t\t\t\t\t// met another search: one part, gone on as one\n\t\t\t\t\tconst other = find(searcher[n])\n\t\t\t\t\tif (other === s) continue\n\t\t\t\t\tone[other] = s\n\t\t\t\t\tfor (let k = heads[other]; k < queues[other].length; k++) queues[s].push(queues[other][k])\n\t\t\t\t\tfor (const each of went[other]) went[s].push(each)\n\t\t\t\t\tgoing--\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tsearched[n] = stamp\n\t\t\t\tsearcher[n] = s\n\t\t\t\tqueues[s].push(n)\n\t\t\t\twent[s].push(n)\n\t\t\t}\n\t\t}\n\t}\n\t// the parts that ran out, but one where none is left going: patches of their own\n\tlet kept = from.findIndex((_, s) => one[s] === s && !done[s])\n\tfor (let s = 0; s < count; s++) {\n\t\tif (one[s] !== s || s === kept) continue\n\t\tif (kept < 0) {\n\t\t\tkept = s\n\t\t\tcontinue\n\t\t}\n\t\tconst number = ++patches.next\n\t\tfor (const cell of went[s]) of[cell] = number\n\t}\n}\n\n/**\n * A cell starts hiding: into the patch about it, or a patch of its own where none is about. Where it joins two\n * patches into one it is not followed (false): the patches are worked out again\n */\nfunction join(world: World, patches: Patches, cell: number): boolean {\n\tconst { width, depth } = world.terrain\n\tconst { of } = patches\n\tconst x = cell % width\n\tconst z = (cell - x) / width\n\tlet found = 0\n\tfor (let i = 0; i < 8; i++) {\n\t\tconst nx = x + ROUND_X[i]\n\t\tconst nz = z + ROUND_Z[i]\n\t\tif (nx < 0 || nz < 0 || nx >= width || nz >= depth) continue\n\t\tconst patch = of[nz * width + nx]\n\t\tif (!patch || patch === found) continue\n\t\tif (found) return false\n\t\tfound = patch\n\t}\n\tof[cell] = found || ++patches.next\n\treturn true\n}\n\n/** Units on the ground, not structures: what hides when a game does not say */\nconst onTheGround = (_world: World, entity: Entity) => !entity.def.footprint && !entity.flying && entity.def.kind === 'unit'\n\n/**\n * The patch of a layer an entity stands in, 1 and up, or 0 where it stands in none (`ConcealmentOptions`). For a\n * game's rules and screen: who is in the grass\n *\n * @beta\n */\nexport function patchAt(world: World, layer: string, x: number, z: number): number {\n\tconst { terrain } = world\n\tif (x < 0 || z < 0 || x >= terrain.width || z >= terrain.depth) return 0\n\treturn patchesOf(world, layer).of[Math.floor(z) * terrain.width + Math.floor(x)]\n}\n\n/**\n * A game where what stands in a layer of cells is hidden from the teams that are not in it with them (see\n * `ConcealmentOptions`): a `visible` hook, and a system that works out who has someone in which patch at the start of\n * every tick (the same in every copy of the game, whoever asks what in between). On as many layers as it is given\n *\n * @beta\n */\nexport function concealmentPack(options: ConcealmentOptions): GamePack {\n\tconst { layer, hides = onTheGround, seenBy } = options\n\tconst reach = options.reach ?? 2\n\tconst id = options.id ?? `concealment:${layer}`\n\tconst { rustle } = options\n\tconst count: System = {\n\t\tname: id,\n\t\tphase: 'commands',\n\t\tupdate(world) {\n\t\t\tif (!world.terrain.cells[layer]) return\n\t\t\tconst patches = patchesOf(world, layer)\n\t\t\tconst { eachUnit } = options\n\t\t\tcountOccupied(world, patches, hides, eachUnit)\n\t\t\t// what the pass changed (grass trampled flat) counted again, of the patches as it left them\n\t\t\tif (eachUnit?.done(world)) countOccupied(world, patchesOf(world, layer), hides)\n\t\t\tif (rustle) tellRustles(world, layer, patches, hides, rustle, options.rustleEvery ?? 0.3)\n\t\t}\n\t}\n\tconst visible = defineHook({\n\t\thook: 'visible',\n\t\tid,\n\t\trun(world, event) {\n\t\t\tif (!event.visible) return\n\t\t\tconst { entity, team } = event\n\t\t\tif (!world.terrain.cells[layer]) return\n\t\t\tconst patches = patchesOf(world, layer)\n\t\t\tconst { width, depth } = world.terrain\n\t\t\tconst { x, z } = entity.pos\n\t\t\tif (x < 0 || z < 0 || x >= width || z >= depth) return\n\t\t\tconst patch = patches.of[Math.floor(z) * width + Math.floor(x)]\n\t\t\tif (!patch || !hides(world, entity)) return\n\t\t\t// seen for a moment by whom it hit, and by what sees the invisible\n\t\t\tif (entity.get(exposure)?.has(team) || entity.get(detection)?.has(team)) return\n\t\t\t// worked out at the start of the tick; once, where nothing ticked yet (a world just made or loaded: as it would be)\n\t\t\tif (!patches.counted) countOccupied(world, patches, hides)\n\t\t\tif (patches.occupied.get(team)?.has(patch)) return\n\t\t\t// someone of the team close by. Into a list of its own (asked for every entity, team and target search, and\n\t\t\t// nothing in the loop asks again): not the caller's, which may be going through a query of its own\n\t\t\tfor (const near of world.spatial.query(x, z, reach, nearby)) {\n\t\t\t\tif (near === entity || !near.alive || near.hidden) continue\n\t\t\t\tif (world.player(near.owner).team !== team || world.player(near.owner).neutral) continue\n\t\t\t\tconst dx = near.pos.x - x\n\t\t\t\tconst dz = near.pos.z - z\n\t\t\t\tif (dx * dx + dz * dz <= reach * reach) return\n\t\t\t}\n\t\t\tif (seenBy?.(world, entity, team)) return\n\t\t\tevent.visible = false\n\t\t}\n\t})\n\t// how it hides, for its patches wherever they are asked for: this hook, its system, `patchAt`\n\tconst hook: ConcealingHook = { ...visible, concealing: options }\n\treturn { id: 'concealment', options, hooks: [hook], systems: [count] }\n}\n\n/** What the `visible` hook finds near a hidden one, kept between asks so that asking allocates nothing */\nconst nearby: Entity[] = []\n\n/** Where each that hides stood the tick before, and in which patch: what a rustle is told from. Not the world's state */\nconst stood = new WeakMap<World, Map<number, { x: number; z: number; patch: number }>>()\n\n/** One hidden that moved in a patch, or stepped into one: told to the teams the game says (`ConcealmentOptions.rustle`) */\nfunction tellRustles(\n\tworld: World,\n\tlayer: string,\n\tpatches: Patches,\n\thides: NonNullable<ConcealmentOptions['hides']>,\n\trustle: NonNullable<ConcealmentOptions['rustle']>,\n\tseconds: number\n): void {\n\tlet was = stood.get(world)\n\tif (!was) stood.set(world, (was = new Map()))\n\tconst every = Math.max(1, Math.round(seconds / world.dt))\n\tconst { width, depth } = world.terrain\n\tconst teams = typeof rustle === 'function' ? [...new Set([...world.players.values()].filter((p) => !p.neutral).map((p) => p.team))] : undefined\n\t// the actors only: scenery stands still and is neutral, which neither rustles nor has a team in a patch\n\tfor (const entity of world.units.values()) {\n\t\tif (!entity.alive || entity.hidden || !hides(world, entity)) continue\n\t\tconst { x, z } = entity.pos\n\t\tconst patch = x < 0 || z < 0 || x >= width || z >= depth ? 0 : patches.of[Math.floor(z) * width + Math.floor(x)]\n\t\tconst before = was.get(entity.id)\n\t\tif (!before) {\n\t\t\twas.set(entity.id, { x, z, patch })\n\t\t\tcontinue\n\t\t}\n\t\tconst dx = before.x - x\n\t\tconst dz = before.z - z\n\t\tconst moved = dx * dx + dz * dz > 1e-4\n\t\tconst entered = !!patch && patch !== before.patch\n\t\tbefore.x = x\n\t\tbefore.z = z\n\t\tbefore.patch = patch\n\t\tif (!patch || !moved || (!entered && (world.tick + entity.id) % every !== 0)) continue\n\t\tconst told = teams && typeof rustle === 'function' ? teams.filter((team) => rustle(world, entity, team)) : undefined\n\t\tif (told && !told.length) continue\n\t\tworld.events.emit(rustled, { layer, entity, x, z, entered, ...(told && { teams: told }) })\n\t}\n\tif (was.size > world.entities.size * 2 + 64) for (const id of was.keys()) if (!world.entities.has(id)) was.delete(id)\n}\n\n/** The patches each team has someone in, worked out anew; each unit told to `each` on the way (`ConcealmentOptions.eachUnit`) */\nfunction countOccupied(\n\tworld: World,\n\tpatches: Patches,\n\thides: NonNullable<ConcealmentOptions['hides']>,\n\teach?: ConcealmentOptions['eachUnit']\n): void {\n\tpatches.counted = true\n\tconst { occupied, of } = patches\n\tfor (const set of occupied.values()) set.clear()\n\tconst { width, depth } = world.terrain\n\t// the actors only: scenery stands still and is neutral, which neither rustles nor has a team in a patch\n\tfor (const entity of world.units.values()) {\n\t\tif (!entity.alive || entity.hidden) continue\n\t\tconst { x, z } = entity.pos\n\t\tif (x < 0 || z < 0 || x >= width || z >= depth) continue\n\t\tconst cell = Math.floor(z) * width + Math.floor(x)\n\t\teach?.unit(world, entity, cell)\n\t\tif (!hides(world, entity)) continue\n\t\tconst patch = of[cell]\n\t\tif (!patch) continue\n\t\tconst owner = world.player(entity.owner)\n\t\tif (owner.neutral) continue\n\t\tlet set = occupied.get(owner.team)\n\t\tif (!set) occupied.set(owner.team, (set = new Set()))\n\t\tset.add(patch)\n\t}\n}\n\n/** One hidden moving in a layer: where the player sees the ground, to whom the rules tell it, a shake of the bushes */\nexport const toldRustle = replicateEvent(rustled, 'rustle', ({ layer, entity, x, z, entered, teams }, view) => {\n\tif (view.observer || view.knows(entity) || !view.sees(x, z)) return undefined\n\tif (teams && !teams.includes(view.team)) return undefined\n\treturn { type: 'rustle', layer, x: Math.round(x * 10) / 10, z: Math.round(z * 10) / 10, ...(entered && { entered }) }\n})\n"],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ import { inventorySlots } from "./inventory.js";
2
+ import { teamMemory } from "./session/memory.js";
3
+ import { constructionSite } from "./systems/construction.js";
4
+ import { deposit, detection, exposure, fighting, moving } from "./entity.js";
5
+ import { productionQueue } from "./systems/productionQueue.js";
6
+ import { form } from "./formState.js";
7
+ import { heroState, respawning } from "./hero.js";
8
+ import { summoned } from "./summoned.js";
9
+ import { dashing } from "./dashing.js";
10
+ import { added, inside } from "./areas.js";
11
+ import { mapInfo, names } from "./names.js";
12
+ import { triggerState } from "./abilities/triggers.js";
13
+ import { shownTimers, waiting } from "./timers.js";
14
+ import { running } from "./sequences.js";
15
+ import { regionCinematicsPlayed, waits } from "./cinematics.js";
16
+ import { seatCameras } from "./cameraOrders.js";
17
+ import { purchases, shopStock } from "./items.js";
18
+ import { gathering } from "./orders/harvest.js";
19
+ import { cargo } from "./transport.js";
20
+ import { sent } from "./talk.js";
21
+ import { pauses } from "./endings.js";
22
+ import { controlled } from "./abilities/control.js";
23
+ import { current } from "./dialog.js";
24
+ import { played } from "./effects.js";
25
+ import { corpses, illusion } from "./summons.js";
26
+ import { redefinitions } from "./gameData.js";
27
+ import { objectives } from "./objectives.js";
28
+ import { mapDrops } from "./randomGroups.js";
29
+ import { scoreData } from "./score.js";
30
+ import { gateStates } from "./gates.js";
31
+ import { tunings } from "./tunables.js";
32
+ import { campMember, camps } from "./camps.js";
33
+ import { sideKnowledge } from "./navigation/sidePaths.js";
34
+ import { control, relations, vision } from "./sides.js";
35
+ import { computerDefaults, computerSeats } from "./computers.js";
36
+ import { captures, ready } from "./capture.js";
37
+ import { counted } from "./denying.js";
38
+ import { heroStrike, laneMinion, lanesState } from "./lanes.js";
39
+ import { pileOf, remains } from "./remains.js";
40
+ import { stance } from "./stances.js";
41
+ import { veterancy } from "./veterancy.js";
42
+ //#region src/coreComponents.ts
43
+ /**
44
+ * The engine's own components that its computer player's kit defines (`@v12-engine/engine/ai`), listed as the kit loads
45
+ * (`listKitComponents`): the core loads nothing of the kit (E3), and a game that seats no computer has none of them
46
+ */
47
+ var kit = [];
48
+ /**
49
+ * Lists components of the computer player's kit with the engine's own, as the kit's module loads
50
+ *
51
+ * @internal
52
+ */
53
+ function listKitComponents(...components) {
54
+ for (const component of components) if (!kit.some((each) => each.id === component.id)) kit.push(component);
55
+ }
56
+ /**
57
+ * The engine's own components, in one order: asked for as a registry is made, when every module that defines one has
58
+ * been loaded (the kit's with them, where the game's brains loaded it)
59
+ *
60
+ * @internal
61
+ */
62
+ function coreComponents() {
63
+ return [
64
+ moving,
65
+ fighting,
66
+ deposit,
67
+ exposure,
68
+ detection,
69
+ inventorySlots,
70
+ shopStock,
71
+ purchases,
72
+ heroState,
73
+ respawning,
74
+ corpses,
75
+ summoned,
76
+ illusion,
77
+ form,
78
+ scoreData,
79
+ pauses,
80
+ sent,
81
+ waiting,
82
+ shownTimers,
83
+ dashing,
84
+ waits,
85
+ regionCinematicsPlayed,
86
+ seatCameras,
87
+ computerSeats,
88
+ computerDefaults,
89
+ mapDrops,
90
+ captures,
91
+ ready,
92
+ names,
93
+ mapInfo,
94
+ counted,
95
+ gateStates,
96
+ objectives,
97
+ stance,
98
+ tunings,
99
+ pileOf,
100
+ remains,
101
+ laneMinion,
102
+ lanesState,
103
+ heroStrike,
104
+ cargo,
105
+ veterancy,
106
+ current,
107
+ inside,
108
+ added,
109
+ played,
110
+ campMember,
111
+ camps,
112
+ running,
113
+ relations,
114
+ vision,
115
+ control,
116
+ sideKnowledge,
117
+ redefinitions,
118
+ constructionSite,
119
+ gathering,
120
+ productionQueue,
121
+ teamMemory,
122
+ triggerState,
123
+ controlled,
124
+ ...kit
125
+ ];
126
+ }
127
+ //#endregion
128
+ export { coreComponents, listKitComponents };
129
+
130
+ //# sourceMappingURL=coreComponents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coreComponents.js","names":["entity.moving","entity.fighting","entity.deposit","entity.exposure","entity.detection","inventory.inventorySlots","items.shopStock","items.purchases","hero.heroState","hero.respawning","summons.corpses","summons.summoned","summons.illusion","forms.form","score.scoreData","endings.pauses","talk.sent","timers.waiting","timers.shownTimers","dashing.dashing","cinematics.waits","cinematics.regionCinematicsPlayed","computers.computerSeats","computers.computerDefaults","randomGroups.mapDrops","capture.captures","capture.ready","names.names","names.mapInfo","denying.counted","gates.gateStates","objectives.objectives","stances.stance","tunables.tunings","remains.pileOf","remains.remains","lanes.laneMinion","lanes.lanesState","lanes.heroStrike","transport.cargo","veterancy.veterancy","dialog.current","areas.inside","areas.added","effects.played","camps.campMember","camps.camps","sequences.running","sides.relations","sides.vision","sides.control","sidePaths.sideKnowledge","gameData.redefinitions","construction.constructionSite","harvest.gathering","productionQueue.productionQueue","memory.teamMemory","triggers.triggerState","control.controlled"],"sources":["../src/coreComponents.ts"],"sourcesContent":["/**\n * The engine's own components, listed (design review E15): what every world's registry has besides its game's\n * (`Registry.component`), found by id there and not through the process. A component of the engine's is defined where\n * its rules live and added here; one that is not is a part no world finds (`Registry.component`, unlisted)\n */\nimport type { Component } from './components'\nimport * as areas from './areas'\nimport * as camps from './camps'\nimport * as capture from './capture'\nimport { seatCameras } from './cameraOrders'\nimport * as cinematics from './cinematics'\nimport * as computers from './computers'\nimport * as dashing from './dashing'\nimport * as denying from './denying'\nimport * as dialog from './dialog'\nimport * as effects from './effects'\nimport * as endings from './endings'\nimport * as entity from './entity'\nimport * as gameData from './gameData'\nimport * as forms from './formState'\nimport * as gates from './gates'\nimport * as hero from './hero'\nimport * as inventory from './inventory'\nimport * as items from './items'\nimport * as lanes from './lanes'\nimport * as names from './names'\nimport * as sidePaths from './navigation/sidePaths'\nimport * as objectives from './objectives'\nimport * as harvest from './orders/harvest'\nimport * as randomGroups from './randomGroups'\nimport * as remains from './remains'\nimport * as score from './score'\nimport * as sequences from './sequences'\nimport * as memory from './session/memory'\nimport * as sides from './sides'\nimport * as stances from './stances'\nimport * as summons from './summons'\nimport * as construction from './systems/construction'\nimport * as productionQueue from './systems/productionQueue'\nimport * as talk from './talk'\nimport * as timers from './timers'\nimport * as triggers from './abilities/triggers'\nimport * as control from './abilities/control'\nimport * as transport from './transport'\nimport * as tunables from './tunables'\nimport * as veterancy from './veterancy'\n\n/**\n * The engine's own components that its computer player's kit defines (`@v12-engine/engine/ai`), listed as the kit loads\n * (`listKitComponents`): the core loads nothing of the kit (E3), and a game that seats no computer has none of them\n */\nconst kit: Component<unknown, unknown>[] = []\n\n/**\n * Lists components of the computer player's kit with the engine's own, as the kit's module loads\n *\n * @internal\n */\nexport function listKitComponents(...components: Component<any, any>[]): void {\n\tfor (const component of components) if (!kit.some((each) => each.id === component.id)) kit.push(component)\n}\n\n/**\n * The engine's own components, in one order: asked for as a registry is made, when every module that defines one has\n * been loaded (the kit's with them, where the game's brains loaded it)\n *\n * @internal\n */\nexport function coreComponents(): readonly Component<unknown, unknown>[] {\n\treturn [\n\t\tentity.moving,\n\t\tentity.fighting,\n\t\tentity.deposit,\n\t\tentity.exposure,\n\t\tentity.detection,\n\t\tinventory.inventorySlots,\n\t\titems.shopStock,\n\t\titems.purchases,\n\t\thero.heroState,\n\t\thero.respawning,\n\t\tsummons.corpses,\n\t\tsummons.summoned,\n\t\tsummons.illusion,\n\t\tforms.form,\n\t\tscore.scoreData,\n\t\tendings.pauses,\n\t\ttalk.sent,\n\t\ttimers.waiting,\n\t\ttimers.shownTimers,\n\t\tdashing.dashing,\n\t\tcinematics.waits,\n\t\tcinematics.regionCinematicsPlayed,\n\t\tseatCameras,\n\t\tcomputers.computerSeats,\n\t\tcomputers.computerDefaults,\n\t\trandomGroups.mapDrops,\n\t\tcapture.captures,\n\t\tcapture.ready,\n\t\tnames.names,\n\t\tnames.mapInfo,\n\t\tdenying.counted,\n\t\tgates.gateStates,\n\t\tobjectives.objectives,\n\t\tstances.stance,\n\t\ttunables.tunings,\n\t\tremains.pileOf,\n\t\tremains.remains,\n\t\tlanes.laneMinion,\n\t\tlanes.lanesState,\n\t\tlanes.heroStrike,\n\t\ttransport.cargo,\n\t\tveterancy.veterancy,\n\t\tdialog.current,\n\t\tareas.inside,\n\t\tareas.added,\n\t\teffects.played,\n\t\tcamps.campMember,\n\t\tcamps.camps,\n\t\tsequences.running,\n\t\tsides.relations,\n\t\tsides.vision,\n\t\tsides.control,\n\t\tsidePaths.sideKnowledge,\n\t\tgameData.redefinitions,\n\t\tconstruction.constructionSite,\n\t\tharvest.gathering,\n\t\tproductionQueue.productionQueue,\n\t\tmemory.teamMemory,\n\t\ttriggers.triggerState,\n\t\tcontrol.controlled,\n\t\t...kit\n\t] as Component<unknown, unknown>[]\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDA,IAAM,MAAqC,CAAC;;;;;;AAO5C,SAAgB,kBAAkB,GAAG,YAAyC;CAC7E,KAAK,MAAM,aAAa,YAAY,IAAI,CAAC,IAAI,MAAM,SAAS,KAAK,OAAO,UAAU,EAAE,GAAG,IAAI,KAAK,SAAS;AAC1G;;;;;;;AAQA,SAAgB,iBAAyD;CACxE,OAAO;EACNA;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACA;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACA,GAAG;CACJ;AACD"}