@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
@@ -1,4 +1,4 @@
1
- import type { ResourceKind } from '#engine/defs';
1
+ import type { ResourceId } from '#engine/defs';
2
2
  import { type Entity, type EntityId, type HarvesterState } from '#engine/entity';
3
3
  import type { GatheringInfo } from '#engine/session/protocol';
4
4
  import { type Vec2 } from '#engine/math';
@@ -18,9 +18,9 @@ export declare const gathering: import("#engine/components").Component<Harvester
18
18
  */
19
19
  export declare const harvesterOf: (entity: Entity) => HarvesterState | undefined;
20
20
  /** Closest building of the player that takes the resource */
21
- export declare function findDropOff(world: World, entity: Entity, kind?: ResourceKind | null | undefined): Entity | undefined;
21
+ export declare function findDropOff(world: World, entity: Entity, kind?: ResourceId | null | undefined): Entity | undefined;
22
22
  /**
23
- * Whether a worker may gather from a resource: one of a kind it gathers (`harvester.kinds`), and then as the game's
23
+ * Whether a worker may gather from a resource: one of a kind it gathers (`harvester.ids`), and then as the game's
24
24
  * `canHarvest` hook says
25
25
  *
26
26
  * @beta
@@ -30,7 +30,7 @@ export declare function canHarvest(world: World, worker: Entity, source: Entity)
30
30
  * Closest resource with something left within `radius` of the point, of a kind when one is named.
31
31
  * `free` only takes what another worker can still get at. Among equally close ones, the oldest.
32
32
  */
33
- export declare function findResource(world: World, near: Vec2, radius: number, kind?: ResourceKind, free?: boolean, worker?: Entity, skip?: readonly EntityId[]): Entity | undefined;
33
+ export declare function findResource(world: World, near: Vec2, radius: number, kind?: ResourceId, free?: boolean, worker?: Entity, skip?: readonly EntityId[]): Entity | undefined;
34
34
  /**
35
35
  * What harvesting keeps through every step of it, and from one load to the next: the kind it gathers and where it last
36
36
  * did, the resource it holds a place at (`claimed`, a tree, a place round a building on a resource), the building it
@@ -40,16 +40,25 @@ export declare function findResource(world: World, near: Vec2, radius: number, k
40
40
  * @beta
41
41
  */
42
42
  export interface HarvestKept {
43
- kind?: ResourceKind;
43
+ /** The resource kind the worker gathers, set once it knows what it works */
44
+ kind?: ResourceId;
45
+ /** Where the resource it last gathered from stands, to look for the next of its kind near */
44
46
  at?: Vec2;
47
+ /** The resource whose place at it the worker holds (a tree, or a place round a building on a resource); 0 or unset when none */
45
48
  claimed?: EntityId;
49
+ /** The building of its owner's that stands on the resource it gathers, where it works round that building; 0 or unset otherwise */
46
50
  inPlace?: EntityId;
51
+ /** The place it walks to and works from, in front of its tree or round the building */
47
52
  spot?: Vec2;
53
+ /** The place it waits at, beside a mine or building with no room; cleared once it gets a place */
48
54
  waitSpot?: Vec2;
55
+ /** Whether it has already set off for its `spot`, so a spot someone stands on is told from one not yet walked to */
49
56
  walked?: boolean;
50
57
  /** The trees it walked to and could not get next to, the last few: not gone for again by this order */
51
58
  outOfReach?: EntityId[];
59
+ /** Seconds to its next swing at a tree; the rhythm goes on from one load to the next */
52
60
  chop?: number;
61
+ /** The building it last brought, or is bringing, its load to; reset to 0 after each hand-in so the closest is chosen again */
53
62
  dropOff?: EntityId;
54
63
  }
55
64
  /**
@@ -58,6 +67,7 @@ export interface HarvestKept {
58
67
  * @beta
59
68
  */
60
69
  export interface HarvestToResource extends HarvestKept {
70
+ /** The step this state is in, `'toResource'` */
61
71
  phase: 'toResource';
62
72
  }
63
73
  /**
@@ -66,9 +76,13 @@ export interface HarvestToResource extends HarvestKept {
66
76
  * @beta
67
77
  */
68
78
  export interface HarvestGathering extends HarvestKept {
79
+ /** The step this state is in, `'gathering'` */
69
80
  phase: 'gathering';
81
+ /** Seconds of work left before the load is taken */
70
82
  timer: number;
83
+ /** The resource it works from outside, like a tree */
71
84
  working?: EntityId;
85
+ /** The mine it is inside of, hidden, while it works there */
72
86
  inside?: EntityId;
73
87
  }
74
88
  /**
@@ -77,7 +91,9 @@ export interface HarvestGathering extends HarvestKept {
77
91
  * @beta
78
92
  */
79
93
  export interface HarvestToDropOff extends HarvestKept {
94
+ /** The step this state is in, `'toDropOff'` */
80
95
  phase: 'toDropOff';
96
+ /** Whether this is the last load, the resource used up: the order is done once it is handed in */
81
97
  last?: boolean;
82
98
  }
83
99
  /**
@@ -0,0 +1,540 @@
1
+ import { cos, hypot, sin } from "../exactMath.js";
2
+ import { closestPointOnRect, dist, distSq } from "../math.js";
3
+ import { defineComponent } from "../components.js";
4
+ import { chopped, resourcesDeposited } from "../engineEvents.js";
5
+ import { deposit, edgeDistance, moving } from "../entity.js";
6
+ import { earn } from "../player.js";
7
+ import { engineMessage, toMessage } from "../messages.js";
8
+ import { faceTowards, halt, moveTo, moveToEntity, setAnchored, setGhost } from "../systems/movement.js";
9
+ //#region src/orders/harvest.ts
10
+ /** Edge distance at which a worker can get to work on a resource or hand in what it carries */
11
+ var REACH = .7;
12
+ var RESOURCE_SEARCH_RADIUS = 30;
13
+ /** How close to its spot a worker has to be to start on a tree */
14
+ var SPOT_RANGE = .45;
15
+ /** How near a tree's spot a worker whose walk is over has to be to work it: next to it, where someone stands on the spot */
16
+ var NEXT_TO_SPOT = 1.3;
17
+ /** How many trees out of reach an order remembers, not to go for them again */
18
+ var OUT_OF_REACH_KEPT = 8;
19
+ /** Places to wait at a full mine, side by side: workers past that many share them */
20
+ var WAITING_PLACES = 5;
21
+ /** How close to its place a worker waits: on it, nearly, or it would stand in the next one's */
22
+ var WAIT_RANGE = .15;
23
+ /** Seconds between two blows of the axe */
24
+ var CHOP_INTERVAL = 1;
25
+ /**
26
+ * What a worker carries and where it gathers (`UnitTypeDef.harvester`): set as it is spawned (and as its type changes),
27
+ * for a type that gathers. Its owner and their allies are told what it carries (`GatheringInfo`)
28
+ *
29
+ * @beta
30
+ */
31
+ var gathering = defineComponent({
32
+ id: "core.harvester",
33
+ onSpawn: (entity) => {
34
+ if (entity.def.kind === "unit" && entity.def.harvester) entity.set(gathering, {
35
+ carrying: 0,
36
+ kind: null,
37
+ resource: 0
38
+ });
39
+ },
40
+ replicate: "allies",
41
+ snapshot: (state) => ({
42
+ carrying: state.carrying,
43
+ kind: state.kind
44
+ }),
45
+ same: (a, b) => a.carrying === b.carrying && a.kind === b.kind
46
+ });
47
+ /**
48
+ * What a worker carries and where it gathers: none for a type that does not gather (`gathering`)
49
+ *
50
+ * @beta
51
+ */
52
+ var harvesterOf = (entity) => entity.get(gathering);
53
+ /** Whether a building takes in a resource. Any drop-off will do for a worker that has not gathered anything yet */
54
+ var accepts = (building, kind) => {
55
+ const { dropOff } = building.def;
56
+ if (!kind) return !!dropOff;
57
+ return dropOff === true || Array.isArray(dropOff) && dropOff.includes(kind);
58
+ };
59
+ /** Closest building of the player that takes the resource */
60
+ function findDropOff(world, entity, kind = harvesterOf(entity)?.kind) {
61
+ let best;
62
+ let bestDistance = Infinity;
63
+ for (const other of world.index.ownedBy(entity.owner)) {
64
+ if (!other.operational || !accepts(other, kind)) continue;
65
+ const d = distSq(entity.pos, other.pos);
66
+ if (d < bestDistance) {
67
+ bestDistance = d;
68
+ best = other;
69
+ }
70
+ }
71
+ return best;
72
+ }
73
+ /**
74
+ * Whether a worker may gather from a resource: one of a kind it gathers (`harvester.ids`), and then as the game's
75
+ * `canHarvest` hook says
76
+ *
77
+ * @beta
78
+ */
79
+ function canHarvest(world, worker, source) {
80
+ return harvestRefusal(world, worker, source) === null;
81
+ }
82
+ /** Why a worker may not gather from a resource (`canHarvest`): null where it may, and undefined where nothing is said */
83
+ function harvestRefusal(world, worker, source) {
84
+ const kind = source.def.resource?.id;
85
+ const kinds = worker.def.harvester?.ids;
86
+ if (!kind || !worker.def.harvester) return void 0;
87
+ const above = world.get(source.get(deposit)?.under);
88
+ const allowed = (!kinds || kinds.includes(kind)) && (!above?.alive || above.owner === worker.owner);
89
+ if (!world.hooks.has("canHarvest")) return allowed ? null : engineMessage("cannotGather", { resource: kind });
90
+ const decided = world.hooks.run("canHarvest", {
91
+ worker,
92
+ source,
93
+ cancelled: !allowed,
94
+ ...!allowed && { reason: engineMessage("cannotGather", { resource: kind }) }
95
+ });
96
+ return decided.cancelled ? decided.reason ?? engineMessage("cannotGather", { resource: kind }) : null;
97
+ }
98
+ /** Whether another worker fits. Resources that are worked on from outside, like trees, are claimed by whoever is on their way */
99
+ var hasRoom = (source) => source.get(deposit).occupants < Math.max(source.def.resource.slots, 1);
100
+ /** Whether a worker can get next to it. Trees inside a forest have to wait for the ones around them to fall */
101
+ function reachable(world, source) {
102
+ const cell = source.cell;
103
+ const fp = source.def.footprint;
104
+ if (!cell || !fp) return true;
105
+ for (let i = 0; i < fp.w; i++) if (world.grid.occupantAt(cell.x + i, cell.z - 1) === 0 || world.grid.occupantAt(cell.x + i, cell.z + fp.d) === 0) return true;
106
+ for (let j = 0; j < fp.d; j++) if (world.grid.occupantAt(cell.x - 1, cell.z + j) === 0 || world.grid.occupantAt(cell.x + fp.w, cell.z + j) === 0) return true;
107
+ return false;
108
+ }
109
+ /** Where to stand to work on a source from outside: in front of its free side that is closest to the worker */
110
+ function workSpot(world, entity, source) {
111
+ const { cell, pos } = source;
112
+ const fp = source.def.footprint;
113
+ const reach = entity.def.radius + .2;
114
+ let best;
115
+ let bestDistance = Infinity;
116
+ if (cell && fp) {
117
+ const sides = [
118
+ {
119
+ x: -1,
120
+ z: 0,
121
+ free: world.grid.occupantAt(cell.x - 1, cell.z) === 0
122
+ },
123
+ {
124
+ x: 1,
125
+ z: 0,
126
+ free: world.grid.occupantAt(cell.x + fp.w, cell.z) === 0
127
+ },
128
+ {
129
+ x: 0,
130
+ z: -1,
131
+ free: world.grid.occupantAt(cell.x, cell.z - 1) === 0
132
+ },
133
+ {
134
+ x: 0,
135
+ z: 1,
136
+ free: world.grid.occupantAt(cell.x, cell.z + fp.d) === 0
137
+ }
138
+ ];
139
+ for (const side of sides) {
140
+ if (!side.free) continue;
141
+ const spot = {
142
+ x: pos.x + side.x * (fp.w / 2 + reach),
143
+ z: pos.z + side.z * (fp.d / 2 + reach)
144
+ };
145
+ const distance = distSq(entity.pos, spot);
146
+ if (distance < bestDistance) {
147
+ bestDistance = distance;
148
+ best = spot;
149
+ }
150
+ }
151
+ }
152
+ best ??= closestPointOnRect(entity.pos, source.rect, reach);
153
+ return world.nav.closestPoint(best, 3) ?? best;
154
+ }
155
+ /** How far `findResource` looks at first. Most of the time the next tree is right there */
156
+ var RESOURCE_SEARCH_STEPS = [6, 12];
157
+ var nearby = [];
158
+ /**
159
+ * Closest resource with something left within `radius` of the point, of a kind when one is named.
160
+ * `free` only takes what another worker can still get at. Among equally close ones, the oldest.
161
+ */
162
+ function findResource(world, near, radius, kind, free = false, worker, skip) {
163
+ for (const step of RESOURCE_SEARCH_STEPS) {
164
+ if (step >= radius) break;
165
+ const found = closestResource(world, near, step, kind, free, worker, skip);
166
+ if (found) return found;
167
+ }
168
+ return closestResource(world, near, radius, kind, free, worker, skip);
169
+ }
170
+ function closestResource(world, near, radius, kind, free, worker, skip) {
171
+ let best;
172
+ let bestDistance = radius * radius;
173
+ for (const other of world.spatial.query(near.x, near.z, radius, nearby)) {
174
+ if (!other.alive || !other.get(deposit) || other.get(deposit).amount <= 0) continue;
175
+ if (kind && other.def.resource.id !== kind) continue;
176
+ if (skip?.includes(other.id)) continue;
177
+ if (free && !other.def.resource.entered && (!hasRoom(other) || !reachable(world, other))) continue;
178
+ const d = distSq(near, other.pos);
179
+ if (d > bestDistance || d === bestDistance && best && other.id > best.id) continue;
180
+ if (worker && !canHarvest(world, worker, other)) continue;
181
+ if (d < bestDistance || d === bestDistance && best && other.id < best.id) {
182
+ bestDistance = d;
183
+ best = other;
184
+ }
185
+ }
186
+ return best;
187
+ }
188
+ /**
189
+ * What a worker hands in at where it gathers: the building of its owner's that stands on the resource and takes it
190
+ * (`UnitTypeDef.builtOn`, a cursed mine), finished. None for a resource gathered the ordinary way
191
+ */
192
+ function gatheringAt(world, worker, source) {
193
+ const above = world.get(source.get(deposit)?.under);
194
+ if (!above?.alive || !above.operational || above.owner !== worker.owner) return void 0;
195
+ return accepts(above, source.def.resource.id) ? above : void 0;
196
+ }
197
+ /** Where the `slot`th of `of` workers gathering at a building stands: round its edge, spread out evenly */
198
+ function spotAround(world, worker, building, slot, of) {
199
+ const angle = slot / Math.max(of, 1) * Math.PI * 2;
200
+ const far = {
201
+ x: building.pos.x + sin(angle) * 50,
202
+ z: building.pos.z + cos(angle) * 50
203
+ };
204
+ const spot = closestPointOnRect(far, building.rect, worker.def.radius + .2);
205
+ return world.nav.closestPoint(spot, 3) ?? spot;
206
+ }
207
+ /** Hands in what a worker carries: cut by upkeep for what has it, then as the game's `beforeDeposit` says */
208
+ function dropOff(world, entity) {
209
+ const harvester = harvesterOf(entity);
210
+ const kind = harvester.kind;
211
+ const income = world.registry.resource(kind)?.upkeep ? world.settings.economy.upkeep(world, entity.owner).income : 1;
212
+ let amount = Math.round(harvester.carrying * income);
213
+ const upkeep = income < 1 ? Math.round(harvester.carrying) - amount : 0;
214
+ if (world.hooks.has("beforeDeposit")) {
215
+ const before = world.hooks.run("beforeDeposit", {
216
+ worker: entity,
217
+ player: entity.owner,
218
+ kind,
219
+ amount,
220
+ cancelled: false
221
+ });
222
+ amount = before.cancelled ? 0 : before.amount;
223
+ }
224
+ earn(world.player(entity.owner).resources, kind, amount);
225
+ world.events.emit(resourcesDeposited, {
226
+ entity,
227
+ player: entity.owner,
228
+ kind,
229
+ amount,
230
+ ...upkeep > 0 && { upkeep }
231
+ });
232
+ harvester.carrying = 0;
233
+ }
234
+ /** On to the next step, with what it starts with: in the order, where its fields were */
235
+ function goOn(state, phase, own) {
236
+ Object.assign(state, own);
237
+ state.phase = phase;
238
+ }
239
+ /** Gives up the tree the worker had for itself */
240
+ function release(world, state) {
241
+ const claimed = world.entities.get(state.claimed ?? 0);
242
+ state.claimed = 0;
243
+ const resource = claimed?.get(deposit);
244
+ if (resource) resource.occupants = Math.max(resource.occupants - 1, 0);
245
+ }
246
+ /**
247
+ * Where a worker waits for a mine with no room: next to its edge on the side of the town hall, a place each (by the
248
+ * worker's id: the one in front of the hall, then one side, then the other), so that waiting workers stand side by side
249
+ */
250
+ function waitingSpot(world, entity, mine) {
251
+ const margin = entity.def.radius + .2;
252
+ const towards = findDropOff(world, entity)?.pos ?? entity.pos;
253
+ const front = closestPointOnRect(towards, mine.rect, margin);
254
+ const slot = entity.id % WAITING_PLACES;
255
+ const along = (slot % 2 ? 1 : -1) * Math.ceil(slot / 2) * (entity.def.radius * 2 + .15);
256
+ const outX = front.x - mine.pos.x;
257
+ const outZ = front.z - mine.pos.z;
258
+ const length = hypot(outX, outZ) || 1;
259
+ return closestPointOnRect({
260
+ x: front.x - outZ / length * along,
261
+ z: front.z + outX / length * along
262
+ }, mine.rect, margin);
263
+ }
264
+ /** Into a mine: out of sight, a place in it taken */
265
+ function enter(world, entity, state, resource) {
266
+ state.waitSpot = void 0;
267
+ resource.occupants++;
268
+ world.setHidden(entity, true);
269
+ }
270
+ function leave(world, entity, state) {
271
+ const mine = world.entities.get(state.inside ?? 0);
272
+ state.inside = 0;
273
+ const resource = mine?.get(deposit);
274
+ if (resource) resource.occupants = Math.max(resource.occupants - 1, 0);
275
+ const towards = findDropOff(world, entity)?.pos ?? entity.pos;
276
+ const exit = mine ? closestPointOnRect(towards, mine.rect, entity.def.radius + .2) : entity.pos;
277
+ world.setHidden(entity, false, exit);
278
+ }
279
+ /** Stops where it stands, if it was on its way */
280
+ function stop(world, entity) {
281
+ if (entity.get(moving).status === "moving") halt(world, entity);
282
+ }
283
+ /** Walks to a spot to wait at, and waits there: what a worker does for a place that has no room */
284
+ function wait(world, entity, spot) {
285
+ if (dist(entity.pos, spot) > WAIT_RANGE) {
286
+ if (entity.get(moving).status !== "moving") moveTo(world, entity, spot, { range: WAIT_RANGE * .5 });
287
+ } else stop(world, entity);
288
+ }
289
+ /**
290
+ * To the spot in front of a tree and nowhere else, or workers on neighbouring trees end up in each other: still on its
291
+ * way (`true`), or there, or next to it where someone stands on it (`false`)
292
+ */
293
+ function walkingToSpot(world, entity, state, spot) {
294
+ const away = dist(entity.pos, spot);
295
+ if (away <= SPOT_RANGE) return false;
296
+ if (entity.get(moving).status === "moving") return true;
297
+ if (state.walked && away < NEXT_TO_SPOT) return false;
298
+ state.walked = true;
299
+ moveTo(world, entity, spot, { range: SPOT_RANGE * .6 });
300
+ return true;
301
+ }
302
+ /** At work from here on: in the way like anyone else (it is on the road that workers pass through each other) */
303
+ function setToWork(world, entity) {
304
+ stop(world, entity);
305
+ setGhost(world, entity, false);
306
+ setAnchored(world, entity, true);
307
+ }
308
+ /**
309
+ * A worker at a resource its owner's building stands on (`UnitTypeDef.builtOn`): a place round the building, as many
310
+ * as it has room for (`gatherers`), waited for in line beside it when they are all taken; then to work
311
+ */
312
+ function gatherInPlace(world, entity, state, source, resource, at) {
313
+ const most = at.def.gatherers ?? 5;
314
+ if (state.claimed !== source.id) {
315
+ release(world, state);
316
+ if (resource.occupants >= most) {
317
+ wait(world, entity, state.waitSpot ??= waitingSpot(world, entity, at));
318
+ return "running";
319
+ }
320
+ state.waitSpot = void 0;
321
+ state.spot = spotAround(world, entity, at, resource.occupants, most);
322
+ resource.occupants++;
323
+ state.claimed = source.id;
324
+ state.walked = false;
325
+ }
326
+ state.inPlace = at.id;
327
+ if (walkingToSpot(world, entity, state, state.spot)) return "running";
328
+ setToWork(world, entity);
329
+ faceTowards(world, entity, at.pos, 1);
330
+ const working = source.id;
331
+ harvesterOf(entity).resource = source.id;
332
+ goOn(state, "gathering", {
333
+ working,
334
+ timer: source.def.resource.gatherTime ?? entity.def.harvester.gatherTime
335
+ });
336
+ return "running";
337
+ }
338
+ /** Walking to the resource and to its place at it, then to work; on to the next of its kind where it is used up */
339
+ function toResource(world, entity, order, state, harvester) {
340
+ const source = world.get(order.init.target);
341
+ const resource = source?.get(deposit);
342
+ if (!source || !resource || resource.amount <= 0) {
343
+ release(world, state);
344
+ const kind = state.kind ?? source?.def.resource?.id;
345
+ const near = state.at ?? source?.pos ?? entity.pos;
346
+ const next = findResource(world, near, RESOURCE_SEARCH_RADIUS, kind, true, entity) ?? findResource(world, near, RESOURCE_SEARCH_RADIUS, kind, false, entity);
347
+ if (next) {
348
+ order.init.target = next.id;
349
+ return "running";
350
+ }
351
+ if (harvester.carrying > 0) {
352
+ goOn(state, "toDropOff", { last: true });
353
+ return "running";
354
+ }
355
+ return "done";
356
+ }
357
+ const def = source.def.resource;
358
+ const gatherTime = def.gatherTime ?? entity.def.harvester.gatherTime;
359
+ state.kind = def.id;
360
+ const where = state.at ??= {
361
+ x: 0,
362
+ z: 0
363
+ };
364
+ where.x = source.pos.x;
365
+ where.z = source.pos.z;
366
+ const at = gatheringAt(world, entity, source);
367
+ if (at) return gatherInPlace(world, entity, state, source, resource, at);
368
+ state.inPlace = 0;
369
+ if (def.entered && state.claimed) release(world, state);
370
+ if (!def.entered) {
371
+ if (state.claimed !== source.id) {
372
+ release(world, state);
373
+ if (!hasRoom(source)) {
374
+ const next = findResource(world, source.pos, RESOURCE_SEARCH_RADIUS, def.id, true, entity);
375
+ if (next) {
376
+ order.init.target = next.id;
377
+ return "running";
378
+ }
379
+ }
380
+ resource.occupants++;
381
+ state.claimed = source.id;
382
+ state.spot = workSpot(world, entity, source);
383
+ state.walked = false;
384
+ }
385
+ const walk = entity.get(moving);
386
+ if (state.walked && resource.occupants <= 1 && walk.status !== "moving" && walk.goalEntity === 0 && dist(walk.goal, state.spot) < .01 && dist(entity.pos, state.spot) >= NEXT_TO_SPOT) {
387
+ release(world, state);
388
+ const skipped = state.outOfReach ??= [];
389
+ skipped.push(source.id);
390
+ if (skipped.length > OUT_OF_REACH_KEPT) skipped.shift();
391
+ const next = findResource(world, entity.pos, RESOURCE_SEARCH_RADIUS, def.id, true, entity, skipped);
392
+ if (next) {
393
+ order.init.target = next.id;
394
+ return "running";
395
+ }
396
+ if (harvester.carrying > 0) {
397
+ goOn(state, "toDropOff", { last: true });
398
+ return "running";
399
+ }
400
+ return "done";
401
+ }
402
+ if (walkingToSpot(world, entity, state, state.spot)) return "running";
403
+ setToWork(world, entity);
404
+ const working = source.id;
405
+ harvester.resource = source.id;
406
+ goOn(state, "gathering", {
407
+ working,
408
+ timer: gatherTime
409
+ });
410
+ return "running";
411
+ }
412
+ if (edgeDistance(entity, source) > REACH) {
413
+ moveToEntity(world, entity, source, .49999999999999994);
414
+ return "running";
415
+ }
416
+ if (resource.occupants >= def.slots) {
417
+ wait(world, entity, state.waitSpot ??= waitingSpot(world, entity, source));
418
+ return "running";
419
+ }
420
+ enter(world, entity, state, resource);
421
+ harvester.resource = source.id;
422
+ goOn(state, "gathering", {
423
+ inside: source.id,
424
+ timer: gatherTime
425
+ });
426
+ return "running";
427
+ }
428
+ /** At work: a swing now and then, a load once the time is up; then home with it, or back for more */
429
+ function gather(world, entity, state, harvester, dt) {
430
+ const source = world.get(state.inside || state.working);
431
+ if (source && !state.inside && !state.inPlace) {
432
+ faceTowards(world, entity, source.pos, dt);
433
+ state.chop = (state.chop ?? CHOP_INTERVAL * .5) - dt;
434
+ if (state.chop <= 0) {
435
+ state.chop += CHOP_INTERVAL;
436
+ world.events.emit(chopped, {
437
+ worker: entity,
438
+ source
439
+ });
440
+ }
441
+ }
442
+ state.timer -= dt;
443
+ const resource = source?.get(deposit);
444
+ if (resource && state.timer > 0) return "running";
445
+ if (source && resource) {
446
+ const kind = source.def.resource.id;
447
+ if (harvester.kind !== kind) harvester.carrying = 0;
448
+ const amount = Math.min(entity.def.harvester.capacity - harvester.carrying, resource.amount);
449
+ resource.amount -= amount;
450
+ harvester.carrying += amount;
451
+ harvester.kind = kind;
452
+ }
453
+ const at = state.inPlace && source ? gatheringAt(world, entity, source) : void 0;
454
+ if (at && harvester.carrying > 0) dropOff(world, entity);
455
+ if (state.inside) leave(world, entity, state);
456
+ else if (!at) {
457
+ setAnchored(world, entity, false);
458
+ setGhost(world, entity, true);
459
+ }
460
+ state.working = 0;
461
+ if (source && resource && resource.amount <= 0) world.kill(source, void 0, false, "depleted");
462
+ if (harvester.carrying > 0) goOn(state, "toDropOff", {});
463
+ else goOn(state, "toResource", {});
464
+ return "running";
465
+ }
466
+ /** Home with the load, to the nearest hall that takes it; then back for more, or done where it was the last */
467
+ function toDropOff(world, entity, state, harvester) {
468
+ let hall = world.get(state.dropOff);
469
+ if (!hall?.operational || !accepts(hall, harvester.kind)) {
470
+ hall = findDropOff(world, entity);
471
+ state.dropOff = hall?.id ?? 0;
472
+ }
473
+ if (!hall) {
474
+ world.message(entity.owner, engineMessage("nowhereToReturn", { resource: harvester.kind ?? "" }));
475
+ return "failed";
476
+ }
477
+ if (edgeDistance(entity, hall) > REACH) {
478
+ moveToEntity(world, entity, hall, .49999999999999994);
479
+ return "running";
480
+ }
481
+ dropOff(world, entity);
482
+ state.dropOff = 0;
483
+ if (state.last) return "done";
484
+ goOn(state, "toResource", {});
485
+ return "running";
486
+ }
487
+ function update(world, entity, order, dt) {
488
+ const { state } = order;
489
+ const harvester = harvesterOf(entity);
490
+ switch (state.phase) {
491
+ case "toResource": return toResource(world, entity, order, state, harvester);
492
+ case "gathering": return gather(world, entity, state, harvester, dt);
493
+ case "toDropOff": return toDropOff(world, entity, state, harvester);
494
+ }
495
+ }
496
+ function end(world, entity, order) {
497
+ const { state } = order;
498
+ release(world, state);
499
+ if (state.phase === "gathering" && state.inside) leave(world, entity, state);
500
+ setAnchored(world, entity, false);
501
+ setGhost(world, entity, false);
502
+ }
503
+ /** Gather from a resource, bring it home, repeat */
504
+ var harvestOrder = {
505
+ type: "harvest",
506
+ accepts(world, entity, init) {
507
+ const source = world.get(init.target);
508
+ if (!entity.has(gathering) || !source?.get(deposit)) return false;
509
+ const refusal = harvestRefusal(world, entity, source);
510
+ if (refusal === null) return true;
511
+ if (refusal) world.message(entity.owner, toMessage(refusal));
512
+ return false;
513
+ },
514
+ start(world, entity, order) {
515
+ const harvester = harvesterOf(entity);
516
+ const kind = world.get(order.init.target)?.def.resource?.id;
517
+ const full = harvester.carrying >= entity.def.harvester.capacity;
518
+ order.state.phase = full ? "toDropOff" : "toResource";
519
+ order.state.kind = kind;
520
+ setGhost(world, entity, true);
521
+ },
522
+ update,
523
+ end
524
+ };
525
+ /** Hand in what the worker carries, then go back to gathering */
526
+ var returnOrder = {
527
+ type: "return",
528
+ accepts: (_world, entity) => (harvesterOf(entity)?.carrying ?? 0) > 0,
529
+ start(world, entity, order) {
530
+ order.init.target ??= harvesterOf(entity).resource;
531
+ order.state.phase = "toDropOff";
532
+ setGhost(world, entity, true);
533
+ },
534
+ update,
535
+ end
536
+ };
537
+ //#endregion
538
+ export { canHarvest, findDropOff, findResource, gathering, harvestOrder, harvesterOf, returnOrder };
539
+
540
+ //# sourceMappingURL=harvest.js.map