@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,608 @@
1
+ import { distSq } from "../../math.js";
2
+ import { baseStats } from "../../defs.js";
3
+ import { snapshotOf } from "../../components.js";
4
+ import { builtSoFar } from "../../systems/construction.js";
5
+ import { queueOf, upgradeOf } from "../../systems/productionQueue.js";
6
+ import { gathering } from "../../orders/harvest.js";
7
+ import { defineModule } from "../module.js";
8
+ import { evaluate } from "../rules.js";
9
+ import { DEFAULT_PLACEMENT, placementNamed } from "./placement.js";
10
+ import { makerOf, techPath, techTrouble } from "./tech.js";
11
+ import { an, where } from "../geometry.js";
12
+ //#region src/ai/plans/build.ts
13
+ /** How far from a mine, towards home, a settler is sent to see where the hall by it would go */
14
+ var SETTLE_FROM = 10;
15
+ var WITHIN = 22;
16
+ var SITE_TIMEOUT = 60;
17
+ /** Under this part of its health a building is mended */
18
+ var MEND_UNDER = .9;
19
+ /** A step in words, for the report: `build lumbermill`, `townhall → keep`, `train peasant` */
20
+ var stepWords = (step) => step.how === "morph" ? `${step.from} → ${step.type}` : `${step.how} ${step.type}`;
21
+ /** Whether a want is plain data all through: what a save can keep */
22
+ var isData = (def) => typeof def.count !== "function" && typeof def.when !== "function" && typeof def.near !== "function" && typeof def.placement !== "function";
23
+ /**
24
+ * The brain's build plan (`ai.plans.build`): its wants, the steps to each, the spots, the builders, the purse. Add a
25
+ * want with `want`, read where each stands with `report`, and let `think` act on them once a think
26
+ *
27
+ * @beta
28
+ */
29
+ var BuildPlan = class {
30
+ ai;
31
+ options = {};
32
+ wants = /* @__PURE__ */ new Map();
33
+ /** Memory of wants a save remembers that no module has asked for yet: given to them as they come */
34
+ pending = {};
35
+ added = 0;
36
+ thoughtAt = -1;
37
+ paths = /* @__PURE__ */ new Map();
38
+ /** What is on its way, by type, worked out once a think: asked for every want and every step */
39
+ onWay = /* @__PURE__ */ new Map();
40
+ /** The builders sent this think: not sent twice */
41
+ sent = /* @__PURE__ */ new Set();
42
+ /** The want saving up this think, if one is */
43
+ saving;
44
+ warned = /* @__PURE__ */ new Set();
45
+ constructor(ai, options = {}) {
46
+ this.ai = ai;
47
+ this.configure(options);
48
+ }
49
+ /** Takes options in, over what it had: the standing wants added, the table of placements merged, the flags replaced */
50
+ configure(options) {
51
+ this.options = {
52
+ ...this.options,
53
+ ...options,
54
+ placement: {
55
+ ...this.options.placement,
56
+ ...options.placement
57
+ }
58
+ };
59
+ for (const def of options.wants ?? []) this.want({
60
+ ...def,
61
+ keep: true
62
+ });
63
+ }
64
+ /** The plan's options as they stand */
65
+ get settings() {
66
+ return this.options;
67
+ }
68
+ /**
69
+ * Adds a want, or replaces one of the same id (its memory kept): what the plan works towards from now. Gives back
70
+ * its id. A want with no `keep` is dropped once met
71
+ */
72
+ want(def) {
73
+ if (!def.type) throw new Error("A want needs a type");
74
+ const id = def.id ?? `${def.type}#${++this.added}`;
75
+ const live = this.wants.get(id);
76
+ if (live) {
77
+ live.def = {
78
+ ...def,
79
+ id
80
+ };
81
+ return id;
82
+ }
83
+ const memory = this.pending[id] ?? {
84
+ since: this.ai.tick,
85
+ order: this.added,
86
+ made: 0
87
+ };
88
+ delete this.pending[id];
89
+ this.added = Math.max(this.added, memory.order + 1);
90
+ this.wants.set(id, {
91
+ id,
92
+ def: {
93
+ ...def,
94
+ id
95
+ },
96
+ memory,
97
+ count: 0,
98
+ have: 0,
99
+ onItsWay: 0,
100
+ status: "new",
101
+ steps: []
102
+ });
103
+ return id;
104
+ }
105
+ /** Takes a want out, and what a save remembered of it: whether there was one */
106
+ drop(id) {
107
+ const remembered = id in this.pending;
108
+ delete this.pending[id];
109
+ return this.wants.delete(id) || remembered;
110
+ }
111
+ /** A want by id */
112
+ get(id) {
113
+ return this.wants.get(id)?.def;
114
+ }
115
+ /** The wants, in the order added */
116
+ list() {
117
+ return this.ordered().map((live) => live.def);
118
+ }
119
+ /** Where a want stands, in words, as of the last think: `building a barracks at (40, 60)`, `saving for a town hall` */
120
+ status(id) {
121
+ return this.wants.get(id)?.status;
122
+ }
123
+ /** The want saving up, as of the last think: the most important one it could not pay for */
124
+ get savingFor() {
125
+ return this.saving;
126
+ }
127
+ /** How many of a type the player has, those under construction and those that count as it included */
128
+ have(type) {
129
+ return this.ai.view.mine.ofType(type).length;
130
+ }
131
+ /** How many of a type are on their way beyond those that stand: builders sent to build one, buildings turning into one, units queued */
132
+ onItsWay(type) {
133
+ const known = this.onWay.get(type);
134
+ if (known !== void 0) return known;
135
+ let count = 0;
136
+ for (const entity of this.ai.view.mine) {
137
+ const own = entity.own;
138
+ if (!own) continue;
139
+ if (own.order === "build" && own.build === type) count++;
140
+ else if (upgradeOf(entity)?.to === type) count++;
141
+ for (const item of queueOf(entity)) if ((item.kind === "morph" || item.kind === "unit") && item.id === type) count++;
142
+ }
143
+ this.onWay.set(type, count);
144
+ return count;
145
+ }
146
+ /** Whether a type is had or on its way: standing (finished or not), or a builder or a morph on the way to it */
147
+ had(type) {
148
+ return this.ai.view.me.tech.includes(type) || this.have(type) > 0 || this.onItsWay(type) > 0;
149
+ }
150
+ /** The steps to being able to make a type (`techPath`), worked out once a think */
151
+ path(type) {
152
+ let found = this.paths.get(type);
153
+ if (!found) this.paths.set(type, found = techPath(this.ai.view, type, (step) => this.onItsWay(step) > 0));
154
+ return found;
155
+ }
156
+ /** The first step towards a type not had yet, the type's own last: none when nothing is to be done, or the path is blocked */
157
+ next(type) {
158
+ const path = this.path(type);
159
+ if (techTrouble(path)) return void 0;
160
+ for (const step of path.steps) if (!this.had(step.type)) return step;
161
+ const maker = makerOf(this.ai.view, type);
162
+ return maker && {
163
+ type,
164
+ ...maker,
165
+ for: type
166
+ };
167
+ }
168
+ /**
169
+ * The think, once a think: every want measured against what stands and is on its way (met ones dropped, or kept
170
+ * standing), those whose condition holds taken most important first, each advanced by the first step it can take:
171
+ * built, turned into, or saved for. Then the mending, where the plan is to
172
+ */
173
+ think() {
174
+ const { ai } = this;
175
+ if (this.thoughtAt === ai.tick) return;
176
+ this.thoughtAt = ai.tick;
177
+ this.paths.clear();
178
+ this.onWay.clear();
179
+ this.sent.clear();
180
+ this.saving = void 0;
181
+ const following = ai.plans.follow() !== void 0;
182
+ const active = [];
183
+ for (const [id, live] of this.wants) {
184
+ const { def } = live;
185
+ live.steps = [];
186
+ live.holds = void 0;
187
+ live.count = typeof def.count === "function" ? def.count(ai) : def.count ?? 1;
188
+ live.have = this.have(def.type);
189
+ live.onItsWay = this.onItsWay(def.type);
190
+ if (live.have + live.onItsWay >= live.count) {
191
+ live.status = "met";
192
+ if (!def.keep) {
193
+ this.wants.delete(id);
194
+ continue;
195
+ }
196
+ if (!(def.rebuild ?? this.options.rebuild ?? true)) live.memory.satisfied = true;
197
+ continue;
198
+ }
199
+ if (live.memory.satisfied) {
200
+ live.status = "met once, not built anew";
201
+ continue;
202
+ }
203
+ if (def.when && !evaluate(def.when, ai)) {
204
+ live.status = "waits for its condition";
205
+ continue;
206
+ }
207
+ if (following && id !== "order") {
208
+ live.status = "waits for the build order";
209
+ continue;
210
+ }
211
+ active.push(live);
212
+ }
213
+ active.sort((a, b) => (b.def.priority ?? 0) - (a.def.priority ?? 0) || a.memory.order - b.memory.order);
214
+ for (const live of active) this.advance(live);
215
+ if (this.options.repair ?? true) this.mend();
216
+ }
217
+ /** One want, one think: the steps to it, and the first one it can take */
218
+ advance(live) {
219
+ const { ai } = this;
220
+ const { def } = live;
221
+ const path = this.path(def.type);
222
+ const trouble = techTrouble(path);
223
+ if (trouble) {
224
+ live.status = `blocked: ${trouble}`;
225
+ if (!this.warned.has(def.type)) {
226
+ this.warned.add(def.type);
227
+ ai.log.warn("ai", `the build plan cannot get to ${def.type}: ${trouble}`, { want: live.id });
228
+ }
229
+ return;
230
+ }
231
+ const own = makerOf(ai.view, def.type);
232
+ const steps = [...path.steps, ...own ? [{
233
+ type: def.type,
234
+ ...own,
235
+ for: def.type
236
+ }] : []];
237
+ live.steps = steps.map(stepWords);
238
+ let status;
239
+ for (const step of steps) {
240
+ const last = step.type === def.type;
241
+ if (!last && this.had(step.type)) {
242
+ if (!ai.view.me.tech.includes(step.type)) status ??= `waits for ${an(step.type)} to finish`;
243
+ continue;
244
+ }
245
+ const outcome = this.act(step, live, last);
246
+ status ??= outcome;
247
+ }
248
+ live.status = status ?? "nothing to do";
249
+ }
250
+ /** Takes a step for a want, where it can: what came of it, in words, for the status */
251
+ act(step, live, last) {
252
+ const { ai } = this;
253
+ const { view, registry } = ai;
254
+ const { def } = live;
255
+ const type = registry.unit(step.type);
256
+ switch (step.how) {
257
+ case "train": return last ? `to be trained` : `needs ${an(step.type)}`;
258
+ case "morph": {
259
+ const from = view.mine.where((entity) => entity.type === step.from && builtSoFar(entity) === void 0 && !upgradeOf(entity)?.to && !queueOf(entity).length).first();
260
+ if (!from) return `waits for ${an(step.from)} with nothing to do, to turn into ${an(step.type)}`;
261
+ if (!view.has(type.requires)) return `waits for what ${an(step.type)} requires`;
262
+ if (!this.pay(live, type.cost)) return this.short(live, step.type);
263
+ ai.send({
264
+ type: "upgradeBuilding",
265
+ building: from.id,
266
+ into: step.type
267
+ });
268
+ if (last) live.memory.made++;
269
+ ai.decide(`turns its ${step.from} into ${an(step.type)}${def.by ? `, for ${def.by}` : ""}`, { kind: "build" });
270
+ return `turning ${an(step.from)} into ${an(step.type)}`;
271
+ }
272
+ case "build": {
273
+ if (!view.has(type.requires)) return `waits for what ${an(step.type)} requires`;
274
+ const place = last ? this.placeOf(live) : void 0;
275
+ if (place && ai.def.knowledge !== false && !ai.knowledge.map.explored(this.settlePoint(place))) {
276
+ this.sendSettler(live, place);
277
+ this.canPay(live, type.cost);
278
+ return `no ground known at ${where(place)}, a worker sent to look`;
279
+ }
280
+ if (!this.canPay(live, type.cost)) return this.short(live, step.type);
281
+ const site = this.siteFor(type, last ? live : void 0);
282
+ if (!site) {
283
+ if (last && this.noSite(live)) return `gave up: no spot for ${an(step.type)}`;
284
+ return `no spot for ${an(step.type)}${last && live.memory.settler ? ", a worker sent to look" : ""}`;
285
+ }
286
+ live.memory.noSite = void 0;
287
+ const builder = this.builderFor(type, site);
288
+ if (!builder) return `no builder for ${an(step.type)}`;
289
+ this.ai.purse.spend(type.cost, def.priority ?? 0);
290
+ this.sent.add(builder.id);
291
+ ai.send({
292
+ type: "order",
293
+ entities: [builder.id],
294
+ order: {
295
+ type: "build",
296
+ unitType: step.type,
297
+ point: site
298
+ }
299
+ });
300
+ if (last) live.memory.made++;
301
+ ai.decide(`builds ${an(step.type)} at ${where(site)}${def.by ? `, for ${def.by}` : ""}${last ? "" : `, on the way to ${def.type}`}`, { kind: "build" });
302
+ return `building ${an(step.type)} at ${where(site)}`;
303
+ }
304
+ }
305
+ }
306
+ /**
307
+ * Pays for a step out of the purse, with the want's `spare` left over, as important as the want is (what less
308
+ * important wants and modules hold is its to spend); where it cannot, the most important want that could not pay
309
+ * holds the money (one at a time), and what is less important waits
310
+ */
311
+ pay(live, cost) {
312
+ if (!this.canPay(live, cost)) return false;
313
+ this.ai.purse.spend(cost, live.def.priority ?? 0);
314
+ return true;
315
+ }
316
+ /** Whether a want can pay for a step now (nothing spent); where it cannot, it may hold the money (`pay`) */
317
+ canPay(live, cost) {
318
+ const { purse } = this.ai;
319
+ const priority = live.def.priority ?? 0;
320
+ if (purse.affords(cost, live.def.spare ?? 0, priority)) return true;
321
+ if (this.saving === void 0 && cost && !live.def.spare) {
322
+ this.saving = live.id;
323
+ purse.reserve(live.id, cost, priority);
324
+ live.holds = { ...cost };
325
+ }
326
+ return false;
327
+ }
328
+ /** A step not paid for, in words: the want holds the money (saving), waits for money to spare (a luxury), or waits for the money */
329
+ short(live, type) {
330
+ if (live.holds) return `saving for ${an(type)}`;
331
+ if (live.def.spare) return `waits for ${live.def.spare} ${this.ai.purse.money} to spare for ${an(type)}`;
332
+ return `waits for the money for ${an(type)}`;
333
+ }
334
+ /** No spot found this think: for a want that does not stand, given up after `siteTimeout` seconds, and said */
335
+ noSite(live) {
336
+ const { ai } = this;
337
+ live.memory.noSite ??= ai.tick;
338
+ const to = this.placeOf(live);
339
+ if (to) this.sendSettler(live, to);
340
+ if (live.def.keep) return false;
341
+ const limit = (live.def.siteTimeout ?? this.options.siteTimeout ?? SITE_TIMEOUT) * ai.session.tickRate;
342
+ if (ai.tick - live.memory.noSite < limit) return false;
343
+ this.wants.delete(live.id);
344
+ ai.decide(`gives up on ${an(live.def.type)}: no spot for it in ${Math.round(limit / ai.session.tickRate)} s`, { kind: "build" });
345
+ return true;
346
+ }
347
+ /** Where a want says it goes, as a point: a point, a named entity it knows of, or what its function gives. Nothing for home */
348
+ placeOf(live) {
349
+ const { near } = live.def;
350
+ if (near === void 0) return void 0;
351
+ if (typeof near === "function") return near(this.ai);
352
+ if (typeof near === "string") {
353
+ const named = this.ai.view.named(near);
354
+ return named ? {
355
+ x: named.x,
356
+ z: named.z
357
+ } : void 0;
358
+ }
359
+ return near;
360
+ }
361
+ /** A spot for a type: where the want says, no further than it says, by its strategy; near home for a step on the way */
362
+ siteFor(type, live) {
363
+ const { view } = this.ai;
364
+ const near = (live && this.placeOf(live)) ?? view.home() ?? view.mine.where((_, def) => !!def.builds?.includes(type.id)).first();
365
+ if (!near) return void 0;
366
+ return this.site(type, {
367
+ near: {
368
+ x: near.x,
369
+ z: near.z
370
+ },
371
+ within: live?.def.within ?? this.options.within ?? WITHIN
372
+ }, live?.def.placement);
373
+ }
374
+ /**
375
+ * A spot for a type near a place, by a strategy: the one given, else what the type declares (`UnitTypeDef.ai.placement`),
376
+ * the plan's table by type then by role, the role's default, the rings around the place. What is built on a
377
+ * deposit goes on one whatever the name
378
+ */
379
+ site(type, request, placement) {
380
+ return this.strategyFor(type, placement)(this.ai, type, {
381
+ ...request,
382
+ ordinal: request.ordinal ?? this.have(type.id) + this.onItsWay(type.id)
383
+ });
384
+ }
385
+ strategyFor(type, placement) {
386
+ if (typeof placement === "function") return placement;
387
+ if (type.builtOn !== void 0) return placementNamed("byResource");
388
+ const table = this.options.placement ?? {};
389
+ const roles = this.ai.view.roles.of(type.id);
390
+ const chosen = placement ?? type.ai?.placement ?? table[type.id] ?? roles.map((role) => table[role]).find((each) => each !== void 0) ?? roles.map((role) => DEFAULT_PLACEMENT[role]).find((each) => each !== void 0);
391
+ if (typeof chosen === "function") return chosen;
392
+ return placementNamed(chosen ?? "nearHome");
393
+ }
394
+ /** The workers sent to look at the ground somewhere, by any want: not builders while they go */
395
+ settlers() {
396
+ const ids = /* @__PURE__ */ new Set();
397
+ for (const live of this.wants.values()) {
398
+ const settler = this.ai.view.byId(live.memory.settler);
399
+ if (settler?.own?.order === "move") ids.add(settler.id);
400
+ }
401
+ return ids;
402
+ }
403
+ /**
404
+ * Who builds a type at a spot: of the player's units that build it, those not hidden, not building, not sent this
405
+ * think, not off to look at ground and not in a squad or held by a rule; idle first, then whoever carries the least,
406
+ * then the nearest
407
+ */
408
+ builderFor(type, site) {
409
+ const settlers = this.settlers();
410
+ const builders = this.ai.view.mine.where((entity, def) => !!def.builds?.includes(type.id) && !!entity.own && !entity.own.hidden && entity.own.order !== "build" && entity.own.order !== "repair" && !this.sent.has(entity.id) && !settlers.has(entity.id) && !this.ai.goals.ruled(entity.id) && !this.ai.squads.squadOf(entity)).items.slice();
411
+ builders.sort((a, b) => Number(!!a.own?.order) - Number(!!b.own?.order) || (snapshotOf(a, gathering)?.carrying ?? 0) - (snapshotOf(b, gathering)?.carrying ?? 0) || distSq(a, site) - distSq(b, site) || a.id - b.id);
412
+ return builders[0];
413
+ }
414
+ /** Where a settler stands to see a place: on its near side, towards home, so that it sees where the building would stand and not the mine alone */
415
+ settlePoint(to) {
416
+ const home = this.ai.view.home();
417
+ const away = home ? Math.sqrt(distSq(home, to)) : 0;
418
+ return home && away > SETTLE_FROM ? {
419
+ x: to.x + (home.x - to.x) / away * SETTLE_FROM,
420
+ z: to.z + (home.z - to.z) / away * SETTLE_FROM
421
+ } : {
422
+ x: to.x,
423
+ z: to.z
424
+ };
425
+ }
426
+ /**
427
+ * A worker sent to where a want goes, to see the ground: one at a time for the want, sent again if it was taken off
428
+ * it. To the near side of the place, towards home (`settlePoint`)
429
+ */
430
+ sendSettler(live, to) {
431
+ const { ai } = this;
432
+ const { view } = ai;
433
+ const settling = view.byId(live.memory.settler);
434
+ if (settling?.owner === ai.playerId && settling.own?.order === "move") return;
435
+ const type = ai.registry.unit(live.def.type);
436
+ const settler = view.mine.where((entity, def) => !!def.builds?.includes(type.id) && !!entity.own && !entity.own.hidden && !snapshotOf(entity, gathering)?.carrying).nearest(to);
437
+ if (!settler) return;
438
+ live.memory.settler = settler.id;
439
+ ai.send({
440
+ type: "order",
441
+ entities: [settler.id],
442
+ order: {
443
+ type: "move",
444
+ point: this.settlePoint(to)
445
+ }
446
+ });
447
+ ai.decide(`sends a worker to see the ground at ${where(to)}, for ${an(live.def.type)}`, { kind: "build" });
448
+ }
449
+ /**
450
+ * Builds a type now, outside any want: a spot near a place (home when left out), a builder, the purse. What a
451
+ * module does for a one-off (the melee player's building on a mine). Whether it was sent
452
+ */
453
+ build(type, options = {}) {
454
+ const { ai } = this;
455
+ const { view, purse } = ai;
456
+ const def = typeof type === "string" ? ai.registry.unit(type) : type;
457
+ if (!view.has(def.requires) || !purse.affords(def.cost, options.spare ?? 0)) return false;
458
+ const near = options.near ?? view.home() ?? view.mine.where((_, each) => !!each.builds?.includes(def.id)).first();
459
+ if (!near) return false;
460
+ const site = this.site(def, {
461
+ near: {
462
+ x: near.x,
463
+ z: near.z
464
+ },
465
+ within: options.within ?? this.options.within ?? WITHIN
466
+ }, options.placement);
467
+ if (!site) return false;
468
+ const builder = this.builderFor(def, site);
469
+ if (!builder || !purse.spend(def.cost)) return false;
470
+ this.sent.add(builder.id);
471
+ ai.send({
472
+ type: "order",
473
+ entities: [builder.id],
474
+ order: {
475
+ type: "build",
476
+ unitType: def.id,
477
+ point: site
478
+ }
479
+ });
480
+ ai.decide(`builds ${an(def.id)} at ${where(site)}${options.by ? `, for ${options.by}` : ""}`, { kind: "build" });
481
+ return true;
482
+ }
483
+ /**
484
+ * Mends: a worker sent to a damaged building of the player's that no enemy strength reaches, one a think, when
485
+ * the purse has what the mending will cost (`RuleSettings.economy.repairCost` of what is missing). Not one being mended already
486
+ */
487
+ mend() {
488
+ const { ai } = this;
489
+ const { view, purse, registry } = ai;
490
+ const share = registry.settings.economy.repairCost;
491
+ for (const building of view.mine.buildings().finished()) {
492
+ const def = view.def(building);
493
+ const maxHp = building.maxHealth ?? baseStats(def, registry).health;
494
+ if (!(building.health < maxHp * MEND_UNDER) || !def.cost) continue;
495
+ if (ai.threat.at(building).enemy > 0) continue;
496
+ if (view.mine.where((entity, each) => !!each.builds?.length && entity.own?.order === "repair" && distSq(entity, building) < 36).length) continue;
497
+ const missing = 1 - building.health / maxHp;
498
+ const price = {};
499
+ for (const kind in def.cost) price[kind] = Math.ceil(def.cost[kind] * share * missing);
500
+ if (!purse.affords(price)) continue;
501
+ const worker = this.builderFor(def, building);
502
+ if (!worker || !worker.own || worker.own.order === "build") continue;
503
+ purse.spend(price);
504
+ this.sent.add(worker.id);
505
+ ai.send({
506
+ type: "order",
507
+ entities: [worker.id],
508
+ order: {
509
+ type: "repair",
510
+ target: building.id
511
+ }
512
+ });
513
+ ai.decide(`mends its ${def.id} at ${where(building)}: ${Math.round(missing * 100)}% gone, nobody near it`, { kind: "build" });
514
+ return;
515
+ }
516
+ }
517
+ /** The wants in the order they were added: what the report and a save list them in, the same in a loaded game */
518
+ ordered() {
519
+ return [...this.wants.values()].sort((a, b) => a.memory.order - b.memory.order);
520
+ }
521
+ /** Every want as the last think left it, in the order added, the one saving up named */
522
+ report() {
523
+ return {
524
+ wants: this.ordered().map((live) => ({
525
+ id: live.id,
526
+ type: live.def.type,
527
+ count: live.count,
528
+ have: live.have,
529
+ onItsWay: live.onItsWay,
530
+ priority: live.def.priority ?? 0,
531
+ ...live.def.by !== void 0 && { by: live.def.by },
532
+ ...live.def.keep && { keep: true },
533
+ status: live.status,
534
+ steps: [...live.steps],
535
+ ...live.holds && { holds: { ...live.holds } }
536
+ })),
537
+ ...this.saving !== void 0 && { saving: this.saving }
538
+ };
539
+ }
540
+ /**
541
+ * What it remembers, for a save: each standing want's memory (its code gives the want again), and the wants added
542
+ * as the game went that are plain data, whole. A want that does not stand and has code in it is not kept: the
543
+ * game loaded from the save would not know when the game saved from would have dropped it
544
+ */
545
+ save() {
546
+ const wants = [];
547
+ for (const live of this.ordered()) if (live.def.keep) wants.push({
548
+ id: live.id,
549
+ memory: { ...live.memory }
550
+ });
551
+ else if (isData(live.def)) wants.push({
552
+ id: live.id,
553
+ memory: { ...live.memory },
554
+ data: structuredClone(live.def)
555
+ });
556
+ for (const id in this.pending) wants.push({
557
+ id,
558
+ memory: { ...this.pending[id] }
559
+ });
560
+ wants.sort((a, b) => a.memory.order - b.memory.order);
561
+ return {
562
+ v: 1,
563
+ wants,
564
+ added: this.added,
565
+ ...this.saving !== void 0 && { saving: this.saving }
566
+ };
567
+ }
568
+ /** Takes back what `save` gave: whether it was read. The data wants are had again; memory waits for the wants code adds */
569
+ restore(memory) {
570
+ const given = memory;
571
+ if (!given || typeof given !== "object" || given.v !== 1 || !Array.isArray(given.wants)) return false;
572
+ this.pending = {};
573
+ if (typeof given.added === "number") this.added = Math.max(this.added, given.added);
574
+ this.saving = typeof given.saving === "string" ? given.saving : void 0;
575
+ for (const entry of given.wants) {
576
+ if (!entry || typeof entry.id !== "string") continue;
577
+ const live = this.wants.get(entry.id);
578
+ if (live) live.memory = { ...entry.memory };
579
+ else this.pending[entry.id] = { ...entry.memory };
580
+ if (entry.data && !live) this.want({
581
+ ...entry.data,
582
+ id: entry.id
583
+ });
584
+ }
585
+ return true;
586
+ }
587
+ };
588
+ /**
589
+ * The build module: runs the brain's build plan (`ai.plans.build.think()`) in its place among a brain's modules, after
590
+ * what adds wants (rules, goals) and before what gives idle workers something else to do. With options for the plan
591
+ *
592
+ * @beta
593
+ */
594
+ var build = (options = {}) => defineModule({
595
+ id: "build",
596
+ make: (ai) => {
597
+ ai.plans.build.configure(options);
598
+ return {
599
+ id: "build",
600
+ phase: "plan",
601
+ think: () => ai.plans.build.think()
602
+ };
603
+ }
604
+ });
605
+ //#endregion
606
+ export { BuildPlan, build };
607
+
608
+ //# sourceMappingURL=build.js.map