@v12-engine/engine 0.1.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (951) hide show
  1. package/dist/abilities/amounts.d.ts +28 -0
  2. package/dist/abilities/amounts.js +74 -0
  3. package/dist/abilities/amounts.js.map +1 -0
  4. package/dist/abilities/buffs.d.ts +106 -6
  5. package/dist/abilities/buffs.js +443 -0
  6. package/dist/abilities/buffs.js.map +1 -0
  7. package/dist/abilities/castTold.d.ts +2 -0
  8. package/dist/abilities/castTold.js +66 -0
  9. package/dist/abilities/castTold.js.map +1 -0
  10. package/dist/abilities/chance.d.ts +38 -0
  11. package/dist/abilities/chance.js +77 -0
  12. package/dist/abilities/chance.js.map +1 -0
  13. package/dist/abilities/charges.d.ts +18 -0
  14. package/dist/abilities/charges.js +101 -0
  15. package/dist/abilities/charges.js.map +1 -0
  16. package/dist/abilities/control.d.ts +28 -0
  17. package/dist/abilities/control.js +113 -0
  18. package/dist/abilities/control.js.map +1 -0
  19. package/dist/abilities/dispel.js +51 -0
  20. package/dist/abilities/dispel.js.map +1 -0
  21. package/dist/abilities/effectFields.d.ts +1 -1
  22. package/dist/abilities/effectFields.js +676 -0
  23. package/dist/abilities/effectFields.js.map +1 -0
  24. package/dist/abilities/effectIndex.d.ts +27 -0
  25. package/dist/abilities/effectIndex.js +64 -0
  26. package/dist/abilities/effectIndex.js.map +1 -0
  27. package/dist/abilities/effects/buff.d.ts +9 -3
  28. package/dist/abilities/effects/buff.js +84 -0
  29. package/dist/abilities/effects/buff.js.map +1 -0
  30. package/dist/abilities/effects/conditions.d.ts +2 -0
  31. package/dist/abilities/effects/conditions.js +41 -0
  32. package/dist/abilities/effects/conditions.js.map +1 -0
  33. package/dist/abilities/effects/core.js +54 -0
  34. package/dist/abilities/effects/core.js.map +1 -0
  35. package/dist/abilities/effects/damage.d.ts +1 -1
  36. package/dist/abilities/effects/damage.js +43 -0
  37. package/dist/abilities/effects/damage.js.map +1 -0
  38. package/dist/abilities/effects/heal.d.ts +2 -2
  39. package/dist/abilities/effects/heal.js +51 -0
  40. package/dist/abilities/effects/heal.js.map +1 -0
  41. package/dist/abilities/effects/missile.d.ts +13 -1
  42. package/dist/abilities/effects/missile.js +104 -0
  43. package/dist/abilities/effects/missile.js.map +1 -0
  44. package/dist/abilities/effects/morph.d.ts +5 -0
  45. package/dist/abilities/effects/morph.js +43 -0
  46. package/dist/abilities/effects/morph.js.map +1 -0
  47. package/dist/abilities/effects/moves.d.ts +16 -4
  48. package/dist/abilities/effects/moves.js +212 -0
  49. package/dist/abilities/effects/moves.js.map +1 -0
  50. package/dist/abilities/effects/passives.d.ts +19 -9
  51. package/dist/abilities/effects/passives.js +131 -0
  52. package/dist/abilities/effects/passives.js.map +1 -0
  53. package/dist/abilities/effects/proxy.d.ts +5 -0
  54. package/dist/abilities/effects/proxy.js +60 -0
  55. package/dist/abilities/effects/proxy.js.map +1 -0
  56. package/dist/abilities/effects/sight.d.ts +2 -2
  57. package/dist/abilities/effects/sight.js +39 -0
  58. package/dist/abilities/effects/sight.js.map +1 -0
  59. package/dist/abilities/effects/spawn.d.ts +5 -2
  60. package/dist/abilities/effects/spawn.js +40 -0
  61. package/dist/abilities/effects/spawn.js.map +1 -0
  62. package/dist/abilities/effects/timed.d.ts +2 -2
  63. package/dist/abilities/effects/timed.js +96 -0
  64. package/dist/abilities/effects/timed.js.map +1 -0
  65. package/dist/abilities/effects/trade.d.ts +1 -1
  66. package/dist/abilities/effects/trade.js +25 -0
  67. package/dist/abilities/effects/trade.js.map +1 -0
  68. package/dist/abilities/effects.d.ts +97 -23
  69. package/dist/abilities/effects.js +860 -0
  70. package/dist/abilities/effects.js.map +1 -0
  71. package/dist/abilities/land.d.ts +38 -4
  72. package/dist/abilities/land.js +189 -0
  73. package/dist/abilities/land.js.map +1 -0
  74. package/dist/abilities/recast.d.ts +45 -0
  75. package/dist/abilities/recast.js +118 -0
  76. package/dist/abilities/recast.js.map +1 -0
  77. package/dist/abilities/scaled.js +40 -0
  78. package/dist/abilities/scaled.js.map +1 -0
  79. package/dist/abilities/screen.d.ts +6 -0
  80. package/dist/abilities/screen.js +83 -0
  81. package/dist/abilities/screen.js.map +1 -0
  82. package/dist/abilities/shapes.d.ts +66 -0
  83. package/dist/abilities/shapes.js +122 -0
  84. package/dist/abilities/shapes.js.map +1 -0
  85. package/dist/abilities/text.d.ts +14 -2
  86. package/dist/abilities/text.js +204 -0
  87. package/dist/abilities/text.js.map +1 -0
  88. package/dist/abilities/triggers.d.ts +98 -0
  89. package/dist/abilities/triggers.js +351 -0
  90. package/dist/abilities/triggers.js.map +1 -0
  91. package/dist/abilityChanges.d.ts +131 -0
  92. package/dist/abilityChanges.js +345 -0
  93. package/dist/abilityChanges.js.map +1 -0
  94. package/dist/ai/area.d.ts +4 -1
  95. package/dist/ai/brain.d.ts +4 -1
  96. package/dist/ai/brain.js +844 -0
  97. package/dist/ai/brain.js.map +1 -0
  98. package/dist/ai/budget.js +74 -0
  99. package/dist/ai/budget.js.map +1 -0
  100. package/dist/ai/checks.d.ts +9 -1
  101. package/dist/ai/checks.js +242 -0
  102. package/dist/ai/checks.js.map +1 -0
  103. package/dist/ai/computer.d.ts +11 -4
  104. package/dist/ai/computer.js +251 -0
  105. package/dist/ai/computer.js.map +1 -0
  106. package/dist/ai/defence.d.ts +4 -0
  107. package/dist/ai/defence.js +430 -0
  108. package/dist/ai/defence.js.map +1 -0
  109. package/dist/ai/define.d.ts +3 -2
  110. package/dist/ai/define.js +31 -0
  111. package/dist/ai/define.js.map +1 -0
  112. package/dist/ai/economy.d.ts +10 -7
  113. package/dist/ai/economy.js +780 -0
  114. package/dist/ai/economy.js.map +1 -0
  115. package/dist/ai/geometry.js +38 -0
  116. package/dist/ai/geometry.js.map +1 -0
  117. package/dist/ai/goals.d.ts +1 -0
  118. package/dist/ai/goals.js +560 -0
  119. package/dist/ai/goals.js.map +1 -0
  120. package/dist/ai/knowledge.d.ts +72 -7
  121. package/dist/ai/knowledge.js +804 -0
  122. package/dist/ai/knowledge.js.map +1 -0
  123. package/dist/ai/lanes.d.ts +10 -2
  124. package/dist/ai/lanes.js +715 -0
  125. package/dist/ai/lanes.js.map +1 -0
  126. package/dist/ai/melee/build.js +264 -0
  127. package/dist/ai/melee/build.js.map +1 -0
  128. package/dist/ai/melee/goals.d.ts +7 -0
  129. package/dist/ai/melee/goals.js +720 -0
  130. package/dist/ai/melee/goals.js.map +1 -0
  131. package/dist/ai/melee/heroes.js +68 -0
  132. package/dist/ai/melee/heroes.js.map +1 -0
  133. package/dist/ai/melee/index.d.ts +1 -1
  134. package/dist/ai/melee/index.js +51 -0
  135. package/dist/ai/melee/index.js.map +1 -0
  136. package/dist/ai/melee/production.js +29 -0
  137. package/dist/ai/melee/production.js.map +1 -0
  138. package/dist/ai/melee/surrender.js +64 -0
  139. package/dist/ai/melee/surrender.js.map +1 -0
  140. package/dist/ai/micro.d.ts +9 -0
  141. package/dist/ai/micro.js +1316 -0
  142. package/dist/ai/micro.js.map +1 -0
  143. package/dist/ai/mission.d.ts +9 -2
  144. package/dist/ai/mission.js +538 -0
  145. package/dist/ai/mission.js.map +1 -0
  146. package/dist/ai/missionRules.d.ts +1 -1
  147. package/dist/ai/missionRules.js +26 -0
  148. package/dist/ai/missionRules.js.map +1 -0
  149. package/dist/ai/module.d.ts +6 -2
  150. package/dist/ai/module.js +37 -0
  151. package/dist/ai/module.js.map +1 -0
  152. package/dist/ai/options.d.ts +3 -3
  153. package/dist/ai/plans/build.d.ts +20 -1
  154. package/dist/ai/plans/build.js +608 -0
  155. package/dist/ai/plans/build.js.map +1 -0
  156. package/dist/ai/plans/placement.d.ts +4 -1
  157. package/dist/ai/plans/placement.js +295 -0
  158. package/dist/ai/plans/placement.js.map +1 -0
  159. package/dist/ai/plans/plans.d.ts +9 -0
  160. package/dist/ai/plans/plans.js +110 -0
  161. package/dist/ai/plans/plans.js.map +1 -0
  162. package/dist/ai/plans/production.d.ts +14 -2
  163. package/dist/ai/plans/production.js +434 -0
  164. package/dist/ai/plans/production.js.map +1 -0
  165. package/dist/ai/plans/purse.d.ts +6 -3
  166. package/dist/ai/plans/purse.js +139 -0
  167. package/dist/ai/plans/purse.js.map +1 -0
  168. package/dist/ai/plans/tech.d.ts +6 -0
  169. package/dist/ai/plans/tech.js +122 -0
  170. package/dist/ai/plans/tech.js.map +1 -0
  171. package/dist/ai/profiles.d.ts +4 -4
  172. package/dist/{profiles-B3NS9jwk.js → ai/profiles.js} +3 -98
  173. package/dist/ai/profiles.js.map +1 -0
  174. package/dist/ai/reach.js +54 -0
  175. package/dist/ai/reach.js.map +1 -0
  176. package/dist/ai/report.d.ts +8 -0
  177. package/dist/ai/report.js +87 -0
  178. package/dist/ai/report.js.map +1 -0
  179. package/dist/ai/roles.d.ts +4 -0
  180. package/dist/ai/roles.js +207 -0
  181. package/dist/ai/roles.js.map +1 -0
  182. package/dist/ai/rules.d.ts +8 -2
  183. package/dist/ai/rules.js +416 -0
  184. package/dist/ai/rules.js.map +1 -0
  185. package/dist/ai/scouting.d.ts +6 -0
  186. package/dist/ai/scouting.js +324 -0
  187. package/dist/ai/scouting.js.map +1 -0
  188. package/dist/ai/settings.js +99 -0
  189. package/dist/ai/settings.js.map +1 -0
  190. package/dist/ai/squads.d.ts +21 -2
  191. package/dist/ai/squads.js +916 -0
  192. package/dist/ai/squads.js.map +1 -0
  193. package/dist/ai/strength.js +320 -0
  194. package/dist/ai/strength.js.map +1 -0
  195. package/dist/ai/task.d.ts +3 -1
  196. package/dist/ai/task.js +17 -0
  197. package/dist/ai/task.js.map +1 -0
  198. package/dist/ai/tasks/attack.js +24 -0
  199. package/dist/ai/tasks/attack.js.map +1 -0
  200. package/dist/ai/tasks/capture.d.ts +3 -3
  201. package/dist/ai/tasks/capture.js +37 -0
  202. package/dist/ai/tasks/capture.js.map +1 -0
  203. package/dist/ai/tasks/creep.js +29 -0
  204. package/dist/ai/tasks/creep.js.map +1 -0
  205. package/dist/ai/tasks/defend.js +61 -0
  206. package/dist/ai/tasks/defend.js.map +1 -0
  207. package/dist/ai/tasks/drop.js +81 -0
  208. package/dist/ai/tasks/drop.js.map +1 -0
  209. package/dist/ai/tasks/escort.js +59 -0
  210. package/dist/ai/tasks/escort.js.map +1 -0
  211. package/dist/ai/tasks/gather.js +48 -0
  212. package/dist/ai/tasks/gather.js.map +1 -0
  213. package/dist/ai/tasks/harass.js +39 -0
  214. package/dist/ai/tasks/harass.js.map +1 -0
  215. package/dist/ai/tasks/hold.js +32 -0
  216. package/dist/ai/tasks/hold.js.map +1 -0
  217. package/dist/ai/tasks/index.js +34 -0
  218. package/dist/ai/tasks/index.js.map +1 -0
  219. package/dist/ai/tasks/move.js +26 -0
  220. package/dist/ai/tasks/move.js.map +1 -0
  221. package/dist/ai/tasks/patrol.js +59 -0
  222. package/dist/ai/tasks/patrol.js.map +1 -0
  223. package/dist/ai/tasks/retreat.js +28 -0
  224. package/dist/ai/tasks/retreat.js.map +1 -0
  225. package/dist/ai/tasks/scout.js +73 -0
  226. package/dist/ai/tasks/scout.js.map +1 -0
  227. package/dist/ai/tasks/shared.d.ts +1 -1
  228. package/dist/ai/tasks/shared.js +137 -0
  229. package/dist/ai/tasks/shared.js.map +1 -0
  230. package/dist/ai/team.d.ts +18 -1
  231. package/dist/ai/team.js +492 -0
  232. package/dist/ai/team.js.map +1 -0
  233. package/dist/ai/threat.d.ts +6 -0
  234. package/dist/ai/threat.js +206 -0
  235. package/dist/ai/threat.js.map +1 -0
  236. package/dist/ai/view.d.ts +21 -7
  237. package/dist/ai/view.js +677 -0
  238. package/dist/ai/view.js.map +1 -0
  239. package/dist/ai/waves.d.ts +6 -0
  240. package/dist/ai/waves.js +410 -0
  241. package/dist/ai/waves.js.map +1 -0
  242. package/dist/ai.js +54 -6239
  243. package/dist/aiTesting.d.ts +6 -3
  244. package/dist/aiTesting.js +229 -0
  245. package/dist/aiTesting.js.map +1 -0
  246. package/dist/areas.d.ts +4 -1
  247. package/dist/areas.js +295 -0
  248. package/dist/areas.js.map +1 -0
  249. package/dist/attacks.d.ts +3 -3
  250. package/dist/attacks.js +127 -0
  251. package/dist/attacks.js.map +1 -0
  252. package/dist/burning.d.ts +267 -0
  253. package/dist/burning.js +795 -0
  254. package/dist/burning.js.map +1 -0
  255. package/dist/bytes.js +21 -0
  256. package/dist/bytes.js.map +1 -0
  257. package/dist/callings.d.ts +71 -0
  258. package/dist/callings.js +157 -0
  259. package/dist/callings.js.map +1 -0
  260. package/dist/cameraOrders.d.ts +78 -0
  261. package/dist/cameraOrders.js +114 -0
  262. package/dist/cameraOrders.js.map +1 -0
  263. package/dist/camps.d.ts +70 -4
  264. package/dist/camps.js +501 -0
  265. package/dist/camps.js.map +1 -0
  266. package/dist/capture.d.ts +15 -3
  267. package/dist/capture.js +304 -0
  268. package/dist/capture.js.map +1 -0
  269. package/dist/cellLayers.d.ts +78 -13
  270. package/dist/cellLayers.js +275 -0
  271. package/dist/cellLayers.js.map +1 -0
  272. package/dist/cellPatches.d.ts +24 -0
  273. package/dist/cellPatches.js +73 -0
  274. package/dist/cellPatches.js.map +1 -0
  275. package/dist/cinematics.d.ts +10 -5
  276. package/dist/cinematics.js +161 -0
  277. package/dist/cinematics.js.map +1 -0
  278. package/dist/clock.d.ts +2 -2
  279. package/dist/clock.js +78 -0
  280. package/dist/clock.js.map +1 -0
  281. package/dist/commands.d.ts +36 -4
  282. package/dist/commands.js +636 -0
  283. package/dist/commands.js.map +1 -0
  284. package/dist/components.d.ts +31 -10
  285. package/dist/components.js +74 -0
  286. package/dist/components.js.map +1 -0
  287. package/dist/computers.d.ts +4 -4
  288. package/dist/computers.js +194 -0
  289. package/dist/computers.js.map +1 -0
  290. package/dist/concealment.d.ts +25 -2
  291. package/dist/concealment.js +409 -0
  292. package/dist/concealment.js.map +1 -0
  293. package/dist/coreComponents.js +130 -0
  294. package/dist/coreComponents.js.map +1 -0
  295. package/dist/createGame.d.ts +306 -0
  296. package/dist/createGame.js +405 -0
  297. package/dist/createGame.js.map +1 -0
  298. package/dist/dashing.d.ts +18 -2
  299. package/dist/dashing.js +41 -0
  300. package/dist/dashing.js.map +1 -0
  301. package/dist/debug.d.ts +8 -0
  302. package/dist/debug.js +5 -3
  303. package/dist/debug2.js +76 -0
  304. package/dist/debug2.js.map +1 -0
  305. package/dist/debugCommands.d.ts +6 -6
  306. package/dist/debugCommands.js +537 -0
  307. package/dist/debugCommands.js.map +1 -0
  308. package/dist/debugging.d.ts +1 -0
  309. package/dist/defaultSets.d.ts +183 -0
  310. package/dist/defaultSets.js +216 -0
  311. package/dist/defaultSets.js.map +1 -0
  312. package/dist/definitions.d.ts +6 -0
  313. package/dist/definitions.js +78 -0
  314. package/dist/definitions.js.map +1 -0
  315. package/dist/defs.d.ts +1895 -165
  316. package/dist/defs.js +380 -0
  317. package/dist/defs.js.map +1 -0
  318. package/dist/denying.d.ts +4 -4
  319. package/dist/denying.js +106 -0
  320. package/dist/denying.js.map +1 -0
  321. package/dist/destructibles.d.ts +2 -2
  322. package/dist/destructibles.js +36 -0
  323. package/dist/destructibles.js.map +1 -0
  324. package/dist/determinism.d.ts +4 -4
  325. package/dist/determinism.js +247 -0
  326. package/dist/determinism.js.map +1 -0
  327. package/dist/dialog.d.ts +17 -2
  328. package/dist/dialog.js +108 -0
  329. package/dist/dialog.js.map +1 -0
  330. package/dist/effectRefs.js +28 -0
  331. package/dist/effectRefs.js.map +1 -0
  332. package/dist/effects.d.ts +27 -11
  333. package/dist/effects.js +110 -0
  334. package/dist/effects.js.map +1 -0
  335. package/dist/endings.d.ts +1 -1
  336. package/dist/endings.js +78 -0
  337. package/dist/endings.js.map +1 -0
  338. package/dist/engagement.d.ts +40 -6
  339. package/dist/engagement.js +530 -0
  340. package/dist/engagement.js.map +1 -0
  341. package/dist/engineEvents.d.ts +72 -9
  342. package/dist/engineEvents.js +520 -0
  343. package/dist/engineEvents.js.map +1 -0
  344. package/dist/entity.d.ts +275 -26
  345. package/dist/entity.js +441 -0
  346. package/dist/entity.js.map +1 -0
  347. package/dist/entityIndex.d.ts +10 -3
  348. package/dist/entityIndex.js +149 -0
  349. package/dist/entityIndex.js.map +1 -0
  350. package/dist/errors.d.ts +6 -2
  351. package/dist/errors.js +59 -0
  352. package/dist/errors.js.map +1 -0
  353. package/dist/events.d.ts +11 -5
  354. package/dist/events.js +158 -0
  355. package/dist/events.js.map +1 -0
  356. package/dist/exactMath.js +273 -0
  357. package/dist/exactMath.js.map +1 -0
  358. package/dist/features.d.ts +1 -1
  359. package/dist/features.js +127 -0
  360. package/dist/features.js.map +1 -0
  361. package/dist/fields.d.ts +25 -5
  362. package/dist/fields.js +140 -0
  363. package/dist/fields.js.map +1 -0
  364. package/dist/fixture.d.ts +3 -3
  365. package/dist/fixture.js +512 -0
  366. package/dist/fixture.js.map +1 -0
  367. package/dist/fog.d.ts +26 -3
  368. package/dist/fog.js +333 -0
  369. package/dist/fog.js.map +1 -0
  370. package/dist/foliage.d.ts +476 -0
  371. package/dist/foliage.js +1478 -0
  372. package/dist/foliage.js.map +1 -0
  373. package/dist/foliageDebug.d.ts +57 -0
  374. package/dist/foliageDebug.js +172 -0
  375. package/dist/foliageDebug.js.map +1 -0
  376. package/dist/foliageRegrowth.d.ts +20 -0
  377. package/dist/foliageRegrowth.js +332 -0
  378. package/dist/foliageRegrowth.js.map +1 -0
  379. package/dist/formState.d.ts +67 -0
  380. package/dist/formState.js +65 -0
  381. package/dist/formState.js.map +1 -0
  382. package/dist/formation.d.ts +46 -8
  383. package/dist/formation.js +297 -0
  384. package/dist/formation.js.map +1 -0
  385. package/dist/forms.d.ts +58 -0
  386. package/dist/forms.js +146 -0
  387. package/dist/forms.js.map +1 -0
  388. package/dist/friendlyFire.d.ts +2 -2
  389. package/dist/friendlyFire.js +37 -0
  390. package/dist/friendlyFire.js.map +1 -0
  391. package/dist/game.d.ts +141 -48
  392. package/dist/game.js +834 -0
  393. package/dist/game.js.map +1 -0
  394. package/dist/gameData.d.ts +96 -22
  395. package/dist/gameData.js +1690 -0
  396. package/dist/gameData.js.map +1 -0
  397. package/dist/gameFiles.d.ts +3 -3
  398. package/dist/gameFiles.js +14 -0
  399. package/dist/gameFiles.js.map +1 -0
  400. package/dist/gates.js +92 -0
  401. package/dist/gates.js.map +1 -0
  402. package/dist/generate.d.ts +28 -1
  403. package/dist/generate.js +1062 -0
  404. package/dist/generate.js.map +1 -0
  405. package/dist/generateWorker.d.ts +7 -3
  406. package/dist/generateWorker.js +86 -0
  407. package/dist/generateWorker.js.map +1 -0
  408. package/dist/grid.d.ts +9 -0
  409. package/dist/grid.js +102 -0
  410. package/dist/grid.js.map +1 -0
  411. package/dist/ground.d.ts +17 -1
  412. package/dist/ground.js +375 -0
  413. package/dist/ground.js.map +1 -0
  414. package/dist/groundObjects.d.ts +70 -0
  415. package/dist/groundObjects.js +371 -0
  416. package/dist/groundObjects.js.map +1 -0
  417. package/dist/groundSpeed.d.ts +20 -3
  418. package/dist/groundSpeed.js +117 -0
  419. package/dist/groundSpeed.js.map +1 -0
  420. package/dist/hero.d.ts +126 -10
  421. package/dist/hero.js +432 -0
  422. package/dist/hero.js.map +1 -0
  423. package/dist/holds.d.ts +94 -0
  424. package/dist/holds.js +305 -0
  425. package/dist/holds.js.map +1 -0
  426. package/dist/home.d.ts +1 -1
  427. package/dist/home.js +30 -0
  428. package/dist/home.js.map +1 -0
  429. package/dist/hooks.d.ts +339 -57
  430. package/dist/hooks.js +105 -0
  431. package/dist/hooks.js.map +1 -0
  432. package/dist/hotReload.d.ts +6 -5
  433. package/dist/hotReload.js +145 -0
  434. package/dist/hotReload.js.map +1 -0
  435. package/dist/ids.d.ts +3 -3
  436. package/dist/ids.js +30 -0
  437. package/dist/ids.js.map +1 -0
  438. package/dist/idsFile.d.ts +36 -0
  439. package/dist/idsFile.js +134 -0
  440. package/dist/idsFile.js.map +1 -0
  441. package/dist/index.d.ts +105 -68
  442. package/dist/index.js +194 -4701
  443. package/dist/inspect.d.ts +29 -2
  444. package/dist/{inspect-D9dWHmZ0.js → inspect.js} +21 -12
  445. package/dist/inspect.js.map +1 -0
  446. package/dist/inventory.d.ts +14 -1
  447. package/dist/inventory.js +84 -0
  448. package/dist/inventory.js.map +1 -0
  449. package/dist/items.d.ts +136 -8
  450. package/dist/items.js +585 -0
  451. package/dist/items.js.map +1 -0
  452. package/dist/lanes.d.ts +12 -3
  453. package/dist/lanes.js +496 -0
  454. package/dist/lanes.js.map +1 -0
  455. package/dist/life.d.ts +6 -2
  456. package/dist/life.js +287 -0
  457. package/dist/life.js.map +1 -0
  458. package/dist/log.d.ts +26 -3
  459. package/dist/log.js +192 -0
  460. package/dist/log.js.map +1 -0
  461. package/dist/manaBurn.d.ts +2 -2
  462. package/dist/manaBurn.js +75 -0
  463. package/dist/manaBurn.js.map +1 -0
  464. package/dist/map/file.d.ts +56 -3
  465. package/dist/map/file.js +264 -0
  466. package/dist/map/file.js.map +1 -0
  467. package/dist/map/images.js +61 -0
  468. package/dist/map/images.js.map +1 -0
  469. package/dist/map/look.d.ts +1 -1
  470. package/dist/map/look.js +30 -0
  471. package/dist/map/look.js.map +1 -0
  472. package/dist/map/pathProfile.js +183 -0
  473. package/dist/map/pathProfile.js.map +1 -0
  474. package/dist/map/resize.d.ts +4 -0
  475. package/dist/map/resize.js +136 -0
  476. package/dist/map/resize.js.map +1 -0
  477. package/dist/map/schema.js +257 -0
  478. package/dist/map/schema.js.map +1 -0
  479. package/dist/map/terrain.js +214 -0
  480. package/dist/map/terrain.js.map +1 -0
  481. package/dist/map/types.d.ts +92 -13
  482. package/dist/map/types.js +251 -0
  483. package/dist/map/types.js.map +1 -0
  484. package/dist/mapCheck/cells.js +94 -0
  485. package/dist/mapCheck/cells.js.map +1 -0
  486. package/dist/mapCheck/rules/foliage.d.ts +9 -0
  487. package/dist/mapCheck/rules/foliage.js +83 -0
  488. package/dist/mapCheck/rules/foliage.js.map +1 -0
  489. package/dist/mapCheck/rules/names.js +39 -0
  490. package/dist/mapCheck/rules/names.js.map +1 -0
  491. package/dist/mapCheck/rules/objects.d.ts +1 -1
  492. package/dist/mapCheck/rules/objects.js +56 -0
  493. package/dist/mapCheck/rules/objects.js.map +1 -0
  494. package/dist/mapCheck/rules/paths.js +32 -0
  495. package/dist/mapCheck/rules/paths.js.map +1 -0
  496. package/dist/mapCheck/rules/players.js +20 -0
  497. package/dist/mapCheck/rules/players.js.map +1 -0
  498. package/dist/mapCheck/rules/races.js +56 -0
  499. package/dist/mapCheck/rules/races.js.map +1 -0
  500. package/dist/mapCheck/rules/random.js +47 -0
  501. package/dist/mapCheck/rules/random.js.map +1 -0
  502. package/dist/mapCheck/rules/regions.js +30 -0
  503. package/dist/mapCheck/rules/regions.js.map +1 -0
  504. package/dist/mapCheck/rules/targets.js +31 -0
  505. package/dist/mapCheck/rules/targets.js.map +1 -0
  506. package/dist/mapCheck/rules/walking.js +45 -0
  507. package/dist/mapCheck/rules/walking.js.map +1 -0
  508. package/dist/mapCheck.d.ts +2 -2
  509. package/dist/mapCheck.js +63 -0
  510. package/dist/mapCheck.js.map +1 -0
  511. package/dist/mapFields.d.ts +25 -2
  512. package/dist/mapFields.js +134 -0
  513. package/dist/mapFields.js.map +1 -0
  514. package/dist/mapFile.js +176 -0
  515. package/dist/mapFile.js.map +1 -0
  516. package/dist/mapMeasure.d.ts +8 -0
  517. package/dist/mapMeasure.js +283 -0
  518. package/dist/mapMeasure.js.map +1 -0
  519. package/dist/mapMerge.d.ts +1 -0
  520. package/dist/mapMerge.js +172 -0
  521. package/dist/mapMerge.js.map +1 -0
  522. package/dist/mapObjectives.js +138 -0
  523. package/dist/mapObjectives.js.map +1 -0
  524. package/dist/mapObjects.js +80 -0
  525. package/dist/mapObjects.js.map +1 -0
  526. package/dist/math.d.ts +37 -7
  527. package/dist/math.js +155 -0
  528. package/dist/math.js.map +1 -0
  529. package/dist/messages.d.ts +71 -4
  530. package/dist/messages.js +29 -0
  531. package/dist/messages.js.map +1 -0
  532. package/dist/missionRules.d.ts +10 -2
  533. package/dist/{missionRules-C-bGxm0Q.js → missionRules.js} +30 -150
  534. package/dist/missionRules.js.map +1 -0
  535. package/dist/mods.d.ts +39 -20
  536. package/dist/mods.js +271 -0
  537. package/dist/mods.js.map +1 -0
  538. package/dist/moves.d.ts +87 -0
  539. package/dist/moves.js +539 -0
  540. package/dist/moves.js.map +1 -0
  541. package/dist/names.d.ts +7 -0
  542. package/dist/names.js +122 -0
  543. package/dist/names.js.map +1 -0
  544. package/dist/navigation/agentParams.js +14 -0
  545. package/dist/navigation/agentParams.js.map +1 -0
  546. package/dist/navigation/air.d.ts +7 -3
  547. package/dist/navigation/air.js +401 -0
  548. package/dist/navigation/air.js.map +1 -0
  549. package/dist/navigation/builds.d.ts +34 -2
  550. package/dist/navigation/builds.js +287 -0
  551. package/dist/navigation/builds.js.map +1 -0
  552. package/dist/navigation/groundAreas.d.ts +59 -1
  553. package/dist/navigation/groundAreas.js +407 -0
  554. package/dist/navigation/groundAreas.js.map +1 -0
  555. package/dist/navigation/navigation.d.ts +98 -9
  556. package/dist/navigation/recast.d.ts +194 -18
  557. package/dist/navigation/recast.js +1379 -0
  558. package/dist/navigation/recast.js.map +1 -0
  559. package/dist/navigation/sidePaths.d.ts +8 -3
  560. package/dist/navigation/sidePaths.js +241 -0
  561. package/dist/navigation/sidePaths.js.map +1 -0
  562. package/dist/navigation/sized.js +243 -0
  563. package/dist/navigation/sized.js.map +1 -0
  564. package/dist/nearest.js +32 -0
  565. package/dist/nearest.js.map +1 -0
  566. package/dist/noise.js +59 -0
  567. package/dist/noise.js.map +1 -0
  568. package/dist/objectives.d.ts +12 -3
  569. package/dist/objectives.js +144 -0
  570. package/dist/objectives.js.map +1 -0
  571. package/dist/orders/basic.d.ts +5 -5
  572. package/dist/orders/basic.js +417 -0
  573. package/dist/orders/basic.js.map +1 -0
  574. package/dist/orders/build.js +278 -0
  575. package/dist/orders/build.js.map +1 -0
  576. package/dist/orders/cast.d.ts +13 -3
  577. package/dist/orders/cast.js +558 -0
  578. package/dist/orders/cast.js.map +1 -0
  579. package/dist/orders/facts.js +16 -0
  580. package/dist/orders/facts.js.map +1 -0
  581. package/dist/orders/harvest.d.ts +21 -5
  582. package/dist/orders/harvest.js +540 -0
  583. package/dist/orders/harvest.js.map +1 -0
  584. package/dist/orders/idle.d.ts +3 -1
  585. package/dist/orders/idle.js +234 -0
  586. package/dist/orders/idle.js.map +1 -0
  587. package/dist/orders/items.js +92 -0
  588. package/dist/orders/items.js.map +1 -0
  589. package/dist/orders/queue.js +108 -0
  590. package/dist/orders/queue.js.map +1 -0
  591. package/dist/orders/waiting.d.ts +39 -0
  592. package/dist/orders/waiting.js +149 -0
  593. package/dist/orders/waiting.js.map +1 -0
  594. package/dist/pack.schema.js +13 -0
  595. package/dist/pack.schema.js.map +1 -0
  596. package/dist/pack.schema.json +7622 -841
  597. package/dist/packs/director/index.d.ts +13 -5
  598. package/dist/packs/director/index.js +204 -0
  599. package/dist/packs/director/index.js.map +1 -0
  600. package/dist/packs/heroes/campaign.d.ts +3 -2
  601. package/dist/packs/heroes/campaign.js +241 -0
  602. package/dist/packs/heroes/campaign.js.map +1 -0
  603. package/dist/packs/heroes/carry.d.ts +6 -0
  604. package/dist/packs/heroes/carry.js +112 -0
  605. package/dist/packs/heroes/carry.js.map +1 -0
  606. package/dist/packs/heroes/commands.js +115 -0
  607. package/dist/packs/heroes/commands.js.map +1 -0
  608. package/dist/packs/heroes/fallen.d.ts +43 -0
  609. package/dist/packs/heroes/fallen.js +61 -0
  610. package/dist/packs/heroes/fallen.js.map +1 -0
  611. package/dist/packs/heroes/hire.js +60 -0
  612. package/dist/packs/heroes/hire.js.map +1 -0
  613. package/dist/packs/heroes/index.d.ts +7 -6
  614. package/dist/packs/heroes/index.js +130 -0
  615. package/dist/packs/heroes/index.js.map +1 -0
  616. package/dist/packs/heroes/loop.d.ts +95 -0
  617. package/dist/packs/heroes/loop.js +250 -0
  618. package/dist/packs/heroes/loop.js.map +1 -0
  619. package/dist/packs/heroes/making.d.ts +6 -3
  620. package/dist/packs/heroes/making.js +55 -0
  621. package/dist/packs/heroes/making.js.map +1 -0
  622. package/dist/packs/heroes/respawn.d.ts +3 -3
  623. package/dist/packs/heroes/respawn.js +87 -0
  624. package/dist/packs/heroes/respawn.js.map +1 -0
  625. package/dist/packs/heroes/sets.d.ts +32 -0
  626. package/dist/packs/heroes/sets.js +51 -0
  627. package/dist/packs/heroes/sets.js.map +1 -0
  628. package/dist/packs/heroes/spells.d.ts +16 -0
  629. package/dist/packs/heroes/spells.js +269 -0
  630. package/dist/packs/heroes/spells.js.map +1 -0
  631. package/dist/packs/items/defaults.d.ts +43 -0
  632. package/dist/packs/items/defaults.js +1504 -0
  633. package/dist/packs/items/defaults.js.map +1 -0
  634. package/dist/packs/items/index.d.ts +27 -0
  635. package/dist/packs/items/index.js +214 -0
  636. package/dist/packs/items/index.js.map +1 -0
  637. package/dist/packs/moba/index.d.ts +3 -3
  638. package/dist/packs/moba/index.js +174 -0
  639. package/dist/packs/moba/index.js.map +1 -0
  640. package/dist/packs/pack.d.ts +15 -15
  641. package/dist/packs/pack.js +14 -0
  642. package/dist/packs/pack.js.map +1 -0
  643. package/dist/packs.d.ts +15 -7
  644. package/dist/packs.js +222 -0
  645. package/dist/packs.js.map +1 -0
  646. package/dist/paths.d.ts +2 -0
  647. package/dist/paths.js +109 -0
  648. package/dist/paths.js.map +1 -0
  649. package/dist/plain.js +57 -0
  650. package/dist/plain.js.map +1 -0
  651. package/dist/player.d.ts +33 -10
  652. package/dist/player.js +159 -0
  653. package/dist/player.js.map +1 -0
  654. package/dist/portals.d.ts +1 -1
  655. package/dist/portals.js +194 -0
  656. package/dist/portals.js.map +1 -0
  657. package/dist/prefabs.d.ts +25 -2
  658. package/dist/prefabs.js +239 -0
  659. package/dist/prefabs.js.map +1 -0
  660. package/dist/presetBuildings.js +58 -0
  661. package/dist/presetBuildings.js.map +1 -0
  662. package/dist/presetFoliage.d.ts +27 -0
  663. package/dist/presetFoliage.js +98 -0
  664. package/dist/presetFoliage.js.map +1 -0
  665. package/dist/presetGround.js +65 -0
  666. package/dist/presetGround.js.map +1 -0
  667. package/dist/proxies.d.ts +12 -0
  668. package/dist/proxies.js +79 -0
  669. package/dist/proxies.js.map +1 -0
  670. package/dist/query.d.ts +56 -0
  671. package/dist/query.js +88 -0
  672. package/dist/query.js.map +1 -0
  673. package/dist/races.d.ts +15 -14
  674. package/dist/races.js +172 -0
  675. package/dist/races.js.map +1 -0
  676. package/dist/randomGroups.js +91 -0
  677. package/dist/randomGroups.js.map +1 -0
  678. package/dist/registry.d.ts +117 -53
  679. package/dist/registry.js +323 -0
  680. package/dist/registry.js.map +1 -0
  681. package/dist/remains.d.ts +11 -9
  682. package/dist/remains.js +188 -0
  683. package/dist/remains.js.map +1 -0
  684. package/dist/replication.d.ts +12 -7
  685. package/dist/replication.js +100 -0
  686. package/dist/replication.js.map +1 -0
  687. package/dist/rng.d.ts +2 -0
  688. package/dist/rng.js +40 -0
  689. package/dist/rng.js.map +1 -0
  690. package/dist/rules.d.ts +186 -99
  691. package/dist/rules.js +179 -0
  692. package/dist/rules.js.map +1 -0
  693. package/dist/rulesCheck.d.ts +5 -4
  694. package/dist/rulesCheck.js +693 -0
  695. package/dist/rulesCheck.js.map +1 -0
  696. package/dist/runes.d.ts +2 -2
  697. package/dist/runes.js +80 -0
  698. package/dist/runes.js.map +1 -0
  699. package/dist/save.d.ts +37 -12
  700. package/dist/save.js +532 -0
  701. package/dist/save.js.map +1 -0
  702. package/dist/scenario.d.ts +2 -2
  703. package/dist/scenario.js +99 -0
  704. package/dist/scenario.js.map +1 -0
  705. package/dist/scheduler.d.ts +3 -0
  706. package/dist/scheduler.js +156 -0
  707. package/dist/scheduler.js.map +1 -0
  708. package/dist/score.d.ts +19 -19
  709. package/dist/score.js +709 -0
  710. package/dist/score.js.map +1 -0
  711. package/dist/sequences.d.ts +10 -6
  712. package/dist/sequences.js +206 -0
  713. package/dist/sequences.js.map +1 -0
  714. package/dist/server/doorman.js +154 -0
  715. package/dist/server/doorman.js.map +1 -0
  716. package/dist/server/gameServer.d.ts +16 -1
  717. package/dist/server/gameServer.js +643 -0
  718. package/dist/server/gameServer.js.map +1 -0
  719. package/dist/server/index.d.ts +1 -1
  720. package/dist/server/lobby.js +199 -0
  721. package/dist/server/lobby.js.map +1 -0
  722. package/dist/server/log.js +18 -0
  723. package/dist/server/log.js.map +1 -0
  724. package/dist/server/match.js +267 -0
  725. package/dist/server/match.js.map +1 -0
  726. package/dist/server/mode.d.ts +18 -9
  727. package/dist/server/mode.js +220 -0
  728. package/dist/server/mode.js.map +1 -0
  729. package/dist/{navigation-worker.js → server/navigation-worker.js} +1 -1
  730. package/dist/server/navigation-worker.js.map +1 -0
  731. package/dist/server/navigation.js +39 -0
  732. package/dist/server/navigation.js.map +1 -0
  733. package/dist/server/ops.d.ts +4 -0
  734. package/dist/server/ops.js +137 -0
  735. package/dist/server/ops.js.map +1 -0
  736. package/dist/server/packs.d.ts +3 -3
  737. package/dist/server/packs.js +32 -0
  738. package/dist/server/packs.js.map +1 -0
  739. package/dist/server/ratings.d.ts +5 -0
  740. package/dist/server/ratings.js +104 -0
  741. package/dist/server/ratings.js.map +1 -0
  742. package/dist/server/relay.d.ts +12 -2
  743. package/dist/server/relay.js +144 -0
  744. package/dist/server/relay.js.map +1 -0
  745. package/dist/server/rooms.d.ts +9 -2
  746. package/dist/server/rooms.js +442 -0
  747. package/dist/server/rooms.js.map +1 -0
  748. package/dist/server/seat.js +116 -0
  749. package/dist/server/seat.js.map +1 -0
  750. package/dist/server/seatSettings.d.ts +3 -3
  751. package/dist/server/seatSettings.js +63 -0
  752. package/dist/server/seatSettings.js.map +1 -0
  753. package/dist/server/secret.js +13 -0
  754. package/dist/server/secret.js.map +1 -0
  755. package/dist/server/start.d.ts +13 -6
  756. package/dist/server/start.js +76 -0
  757. package/dist/server/start.js.map +1 -0
  758. package/dist/server/websocket.d.ts +9 -1
  759. package/dist/server/websocket.js +306 -0
  760. package/dist/server/websocket.js.map +1 -0
  761. package/dist/server.js +15 -2861
  762. package/dist/session/can.js +26 -0
  763. package/dist/session/can.js.map +1 -0
  764. package/dist/session/commandReplay.d.ts +8 -2
  765. package/dist/session/commandReplay.js +293 -0
  766. package/dist/session/commandReplay.js.map +1 -0
  767. package/dist/session/debug.js +151 -0
  768. package/dist/session/debug.js.map +1 -0
  769. package/dist/session/delay.js +62 -0
  770. package/dist/session/delay.js.map +1 -0
  771. package/dist/session/delta.d.ts +14 -1
  772. package/dist/session/delta.js +407 -0
  773. package/dist/session/delta.js.map +1 -0
  774. package/dist/session/entityState.js +415 -0
  775. package/dist/session/entityState.js.map +1 -0
  776. package/dist/session/local.d.ts +47 -5
  777. package/dist/session/local.js +670 -0
  778. package/dist/session/local.js.map +1 -0
  779. package/dist/session/memory.d.ts +20 -2
  780. package/dist/session/memory.js +131 -0
  781. package/dist/session/memory.js.map +1 -0
  782. package/dist/session/protocol.d.ts +325 -31
  783. package/dist/session/protocol.js +55 -0
  784. package/dist/session/protocol.js.map +1 -0
  785. package/dist/session/remote.d.ts +74 -12
  786. package/dist/session/remote.js +1394 -0
  787. package/dist/session/remote.js.map +1 -0
  788. package/dist/session/replay.d.ts +11 -2
  789. package/dist/session/replay.js +160 -0
  790. package/dist/session/replay.js.map +1 -0
  791. package/dist/session/seed.js +12 -0
  792. package/dist/session/seed.js.map +1 -0
  793. package/dist/session/share.d.ts +5 -1
  794. package/dist/session/share.js +94 -0
  795. package/dist/session/share.js.map +1 -0
  796. package/dist/session/socket.d.ts +1 -1
  797. package/dist/session/socket.js +29 -0
  798. package/dist/session/socket.js.map +1 -0
  799. package/dist/session/wire.d.ts +5 -0
  800. package/dist/session/wire.js +84 -0
  801. package/dist/session/wire.js.map +1 -0
  802. package/dist/session/worker.d.ts +77 -12
  803. package/dist/session/worker.js +499 -0
  804. package/dist/session/worker.js.map +1 -0
  805. package/dist/shared.d.ts +31 -5
  806. package/dist/shared.js +166 -0
  807. package/dist/shared.js.map +1 -0
  808. package/dist/sides.d.ts +9 -3
  809. package/dist/sides.js +149 -0
  810. package/dist/sides.js.map +1 -0
  811. package/dist/sight.js +85 -0
  812. package/dist/sight.js.map +1 -0
  813. package/dist/simulate-worker.js +1 -1
  814. package/dist/simulate.d.ts +12 -8
  815. package/dist/{simulate-oXBiw1Ff.js → simulate.js} +10 -11
  816. package/dist/simulate.js.map +1 -0
  817. package/dist/smart.js +77 -0
  818. package/dist/smart.js.map +1 -0
  819. package/dist/spatial.d.ts +32 -16
  820. package/dist/spatial.js +234 -0
  821. package/dist/spatial.js.map +1 -0
  822. package/dist/spawning.d.ts +1 -0
  823. package/dist/spawning.js +224 -0
  824. package/dist/spawning.js.map +1 -0
  825. package/dist/stances.d.ts +6 -3
  826. package/dist/stances.js +169 -0
  827. package/dist/stances.js.map +1 -0
  828. package/dist/start.d.ts +10 -10
  829. package/dist/start.js +75 -0
  830. package/dist/start.js.map +1 -0
  831. package/dist/stats.d.ts +42 -16
  832. package/dist/stats.js +290 -0
  833. package/dist/stats.js.map +1 -0
  834. package/dist/summoned.d.ts +52 -0
  835. package/dist/summoned.js +38 -0
  836. package/dist/summoned.js.map +1 -0
  837. package/dist/summons.d.ts +10 -13
  838. package/dist/summons.js +271 -0
  839. package/dist/summons.js.map +1 -0
  840. package/dist/systems/abilities.js +224 -0
  841. package/dist/systems/abilities.js.map +1 -0
  842. package/dist/systems/combat.d.ts +35 -1
  843. package/dist/systems/combat.js +677 -0
  844. package/dist/systems/combat.js.map +1 -0
  845. package/dist/systems/combatTold.d.ts +3 -1
  846. package/dist/systems/combatTold.js +85 -0
  847. package/dist/systems/combatTold.js.map +1 -0
  848. package/dist/systems/construction.js +80 -0
  849. package/dist/systems/construction.js.map +1 -0
  850. package/dist/systems/economy.d.ts +0 -6
  851. package/dist/systems/economy.js +128 -0
  852. package/dist/systems/economy.js.map +1 -0
  853. package/dist/systems/fog.d.ts +1 -1
  854. package/dist/systems/fog.js +120 -0
  855. package/dist/systems/fog.js.map +1 -0
  856. package/dist/systems/life.js +32 -0
  857. package/dist/systems/life.js.map +1 -0
  858. package/dist/systems/movement.d.ts +24 -12
  859. package/dist/systems/movement.js +1247 -0
  860. package/dist/systems/movement.js.map +1 -0
  861. package/dist/systems/orders.js +64 -0
  862. package/dist/systems/orders.js.map +1 -0
  863. package/dist/systems/production.js +322 -0
  864. package/dist/systems/production.js.map +1 -0
  865. package/dist/systems/productionQueue.js +120 -0
  866. package/dist/systems/productionQueue.js.map +1 -0
  867. package/dist/systems/victory.d.ts +1 -1
  868. package/dist/systems/victory.js +56 -0
  869. package/dist/systems/victory.js.map +1 -0
  870. package/dist/talk.d.ts +6 -6
  871. package/dist/talk.js +153 -0
  872. package/dist/talk.js.map +1 -0
  873. package/dist/targeting.d.ts +142 -0
  874. package/dist/targeting.js +49 -0
  875. package/dist/targeting.js.map +1 -0
  876. package/dist/tech.d.ts +20 -3
  877. package/dist/tech.js +239 -0
  878. package/dist/tech.js.map +1 -0
  879. package/dist/techTree.d.ts +7 -0
  880. package/dist/techTree.js +90 -0
  881. package/dist/techTree.js.map +1 -0
  882. package/dist/terrain.d.ts +59 -7
  883. package/dist/terrain.js +389 -0
  884. package/dist/terrain.js.map +1 -0
  885. package/dist/terrainSave.d.ts +6 -0
  886. package/dist/terrainSave.js +74 -0
  887. package/dist/terrainSave.js.map +1 -0
  888. package/dist/testing.d.ts +8 -7
  889. package/dist/testing.js +13 -739
  890. package/dist/testing.js.map +1 -1
  891. package/dist/tiles.d.ts +1 -1
  892. package/dist/tiles.js +43 -0
  893. package/dist/tiles.js.map +1 -0
  894. package/dist/timers.d.ts +29 -4
  895. package/dist/timers.js +242 -0
  896. package/dist/timers.js.map +1 -0
  897. package/dist/tomes.d.ts +4 -4
  898. package/dist/tomes.js +94 -0
  899. package/dist/tomes.js.map +1 -0
  900. package/dist/trade.js +103 -0
  901. package/dist/trade.js.map +1 -0
  902. package/dist/transport.d.ts +6 -1
  903. package/dist/transport.js +281 -0
  904. package/dist/transport.js.map +1 -0
  905. package/dist/tunables.d.ts +10 -3
  906. package/dist/tunables.js +56 -0
  907. package/dist/tunables.js.map +1 -0
  908. package/dist/unitResources.d.ts +67 -0
  909. package/dist/unitResources.js +266 -0
  910. package/dist/unitResources.js.map +1 -0
  911. package/dist/upkeep.d.ts +6 -1
  912. package/dist/upkeep.js +26 -0
  913. package/dist/upkeep.js.map +1 -0
  914. package/dist/veterancy.d.ts +8 -3
  915. package/dist/veterancy.js +131 -0
  916. package/dist/veterancy.js.map +1 -0
  917. package/dist/vision.d.ts +36 -0
  918. package/dist/vision.js +133 -0
  919. package/dist/vision.js.map +1 -0
  920. package/dist/walls.d.ts +1 -1
  921. package/dist/walls.js +278 -0
  922. package/dist/walls.js.map +1 -0
  923. package/dist/world.d.ts +606 -88
  924. package/dist/world.js +1263 -0
  925. package/dist/world.js.map +1 -0
  926. package/package.json +2 -2
  927. package/dist/ai.js.map +0 -1
  928. package/dist/attributes.d.ts +0 -66
  929. package/dist/brain-BvVdUhX8.js +0 -7659
  930. package/dist/brain-BvVdUhX8.js.map +0 -1
  931. package/dist/builds-C6LfgvEU.js +0 -460
  932. package/dist/builds-C6LfgvEU.js.map +0 -1
  933. package/dist/coreComponents-syuh2fPG.js +0 -5149
  934. package/dist/coreComponents-syuh2fPG.js.map +0 -1
  935. package/dist/debugCommands-CzjrSm66.js +0 -14739
  936. package/dist/debugCommands-CzjrSm66.js.map +0 -1
  937. package/dist/determinism-BCymQwiE.js +0 -518
  938. package/dist/determinism-BCymQwiE.js.map +0 -1
  939. package/dist/game-DiJEN-Ks.js +0 -5800
  940. package/dist/game-DiJEN-Ks.js.map +0 -1
  941. package/dist/index.js.map +0 -1
  942. package/dist/inspect-D9dWHmZ0.js.map +0 -1
  943. package/dist/local-Dkovq42k.js +0 -1379
  944. package/dist/local-Dkovq42k.js.map +0 -1
  945. package/dist/missionRules-C-bGxm0Q.js.map +0 -1
  946. package/dist/navigation-worker.js.map +0 -1
  947. package/dist/packs-g5thvmGn.js +0 -3199
  948. package/dist/packs-g5thvmGn.js.map +0 -1
  949. package/dist/profiles-B3NS9jwk.js.map +0 -1
  950. package/dist/server.js.map +0 -1
  951. package/dist/simulate-oXBiw1Ff.js.map +0 -1
package/dist/camps.d.ts CHANGED
@@ -1,28 +1,59 @@
1
- import { type EntityId, type PlayerId } from './entity';
1
+ import { type Entity, type EntityId, type PlayerId } from './entity';
2
2
  import { type Vec2 } from './math';
3
3
  import type { World } from './world';
4
4
  import type { SessionView } from './replication';
5
5
  import type { CampInfo } from './session/protocol';
6
+ /**
7
+ * Someone a camp is fighting, on its list (`Camp.aggro`)
8
+ *
9
+ * @beta
10
+ */
11
+ export interface CampAggro {
12
+ /** Who it is */
13
+ id: EntityId;
14
+ /** The damage it has done the camp's creeps: the most is gone for first, then the nearest (`campTarget`) */
15
+ threat: number;
16
+ /** When it last hit one of the camp's creeps or was hit by one, in seconds of the game */
17
+ lastHitAt: number;
18
+ }
6
19
  /**
7
20
  * A group of creeps guarding a spot
8
21
  *
9
22
  * @beta
10
23
  */
11
24
  export interface Camp {
25
+ /** The camp's number: its place in the world's camps, plus one */
12
26
  id: number;
27
+ /** Where the middle of the camp is, east-west in cells */
13
28
  x: number;
29
+ /** Where the middle of the camp is, north-south in cells */
14
30
  z: number;
15
31
  /** Levels of its creeps added up, as it was set up */
16
32
  level: number;
17
- /** How far from the camp its creeps chase */
33
+ /** How far from the camp's centre its creeps fight: what goes past it is let go of (`CampSettings.leash`) */
18
34
  leash: number;
35
+ /** The entity ids of its creeps */
19
36
  members: EntityId[];
20
- /** Who the camp is fighting. One creep being attacked brings all of them */
37
+ /**
38
+ * Who the camp is fighting, as its creeps pick (`campTarget`): fed by every hit on one of them (the damage done, as
39
+ * threat) and by their own hits, rid of the dead and of what is past the leash, emptied as the camp goes home
40
+ */
41
+ aggro: CampAggro[];
42
+ /** The last it went for: what wakes one of them wakes the rest */
21
43
  alarm: EntityId;
44
+ /** When one of its creeps last hit or was hit, in seconds of the game: it goes home `resetAfter` after. None at peace */
45
+ foughtAt?: number;
46
+ /** Seconds a creep of it chases what it neither hits nor is hit by before it lets it go: the rules' `chaseTime` when left out */
47
+ chaseTime?: number;
48
+ /** Seconds without a blow before it goes home: the rules' `resetAfter` when left out */
49
+ resetAfter?: number;
50
+ /** Whether all of it answers a hit at once: the rules' `helpAtOnce` when left out */
51
+ helpAtOnce?: boolean;
22
52
  /** The name it was given on the map, for the rules to find it by (`campNamed`) */
23
53
  name?: string;
24
54
  /** Who its creeps are, and of what types, for it to come back the same (see `respawn`). None in saves of before */
25
55
  owner?: PlayerId;
56
+ /** The unit type ids of its creeps, kept for it to come back the same after `respawn` */
26
57
  types?: string[];
27
58
  /**
28
59
  * Seconds after it was cleared that it comes back, its creeps where they stood, as a hero arena game's jungle camps
@@ -38,13 +69,26 @@ export interface Camp {
38
69
  * @beta
39
70
  */
40
71
  export interface CampMember {
72
+ /** The number of the camp the creep guards */
41
73
  camp: number;
74
+ /** Where the creep returns to when the camp gives up the fight */
42
75
  home: Vec2;
43
- /** On its way back after chasing too far. Nothing distracts it until it is home */
76
+ /** On its way back after the camp gave up the fight. Deaf to everything but a hit, and to that for `RETURN_GRACE` */
44
77
  returning: boolean;
78
+ /** When it turned for home, in seconds of the game */
79
+ returningAt?: number;
45
80
  /** Where it was attacked from by something it could not see, and is going to look */
46
81
  searching: Vec2 | null;
82
+ /** When it last traded a blow with what it goes for, or took it up: a chase with none for `chaseTime` is given up */
83
+ blowAt?: number;
47
84
  }
85
+ /**
86
+ * Seconds a creep on its way home is deaf even to a hit: so that one led to the end of its leash does not turn on the
87
+ * first arrow in its back and come straight back out
88
+ *
89
+ * @beta
90
+ */
91
+ export declare const RETURN_GRACE = 1.5;
48
92
  /**
49
93
  * On a creep: the camp it belongs to
50
94
  *
@@ -85,6 +129,28 @@ export declare function spawnCamp(world: World, owner: PlayerId, point: Vec2, ty
85
129
  * @beta
86
130
  */
87
131
  export declare function respawnCamp(world: World, camp: Camp): void;
132
+ /**
133
+ * What a creep of the camp goes for of the camp's list (`Camp.aggro`): the most threat, then the nearest, the
134
+ * `targetScore` hook having the last word; nothing it leaves alone for now (`shun`: it could not get at it, or chased it
135
+ * too long), cannot see or attack, or that stands past the leash. None when the list has nothing for it
136
+ *
137
+ * @beta
138
+ */
139
+ export declare function campTarget(world: World, entity: Entity, camp: Camp): Entity | undefined;
140
+ /**
141
+ * Puts someone on a camp's list as if it had done the camp `threat` damage (`Camp.aggro`): a taunt, or a game's own
142
+ * reason for the creeps to come. The camp comes at once, as for a hit, where it helps at once (`CampSettings.helpAtOnce`)
143
+ *
144
+ * @beta
145
+ */
146
+ export declare function aggroCamp(world: World, camp: Camp, entity: Entity, threat?: number): void;
147
+ /**
148
+ * The camp gives up the fight now, as it does `resetAfter` after the last blow: its list emptied, every creep of it on
149
+ * the way home
150
+ *
151
+ * @beta
152
+ */
153
+ export declare function resetCamp(world: World, camp: Camp): void;
88
154
  /**
89
155
  * The camps as a seat's player knows them (`GameSession.camps`): where they are and how strong, and which their team
90
156
  * has seen empty. Worked out once a tick, as the minimap asks every frame: the same list and objects every time, kept
package/dist/camps.js ADDED
@@ -0,0 +1,501 @@
1
+ import { cos, sin } from "./exactMath.js";
2
+ import { dist } from "./math.js";
3
+ import { at, declaredAt, lowerChain } from "./defs.js";
4
+ import { defineComponent } from "./components.js";
5
+ import { defineListener } from "./events.js";
6
+ import { campCleared, campReturned, damaged } from "./engineEvents.js";
7
+ import { edgeDistance, fighting, moving } from "./entity.js";
8
+ import { defineHook } from "./hooks.js";
9
+ import { engageWith, engagedLike, isBlocked, isShunned, roomFor, shun } from "./engagement.js";
10
+ import { halt, moveTo } from "./systems/movement.js";
11
+ import { acquireTarget, canAttack, canSee, disengage, engage } from "./systems/combat.js";
12
+ import { createOrder, giveOrder } from "./orders/queue.js";
13
+ import { freeToHelp } from "./orders/idle.js";
14
+ //#region src/camps.ts
15
+ /**
16
+ * Creep camps: groups of neutral hostile creeps that guard a spot. They go for whoever comes close or attacks one of
17
+ * them, all of them at once, keep a list of who hurt them (`Camp.aggro`) and fight it out to the end of their leash,
18
+ * give up a chase that brings no blow (`CampSettings.chaseTime`), go home a while after the last blow (`resetAfter`), heal
19
+ * on the way back, and sleep at night. A feature a game turns on by taking `campHooks` and `campListeners` (the heroes
20
+ * pack has them); the engine itself knows only the player the creeps belong to. Without it, creeps are units like any
21
+ * other, that stand where they are put and fight back. See docs/creeps.md
22
+ */
23
+ /**
24
+ * Seconds a creep on its way home is deaf even to a hit: so that one led to the end of its leash does not turn on the
25
+ * first arrow in its back and come straight back out
26
+ *
27
+ * @beta
28
+ */
29
+ var RETURN_GRACE = 1.5;
30
+ /** How far past the leash a creep may itself stand, fighting what is just inside it */
31
+ var LEASH_SLACK = 2;
32
+ /**
33
+ * On a creep: the camp it belongs to
34
+ *
35
+ * @beta
36
+ */
37
+ var campMember = defineComponent({ id: "core.camp" });
38
+ /**
39
+ * The camps of a world, by id less one
40
+ *
41
+ * @beta
42
+ */
43
+ var camps = defineComponent({
44
+ id: "core.camps",
45
+ default: () => []
46
+ });
47
+ /**
48
+ * Gives the camps of a world, the list `camps` holds
49
+ *
50
+ * @internal
51
+ */
52
+ var campsOf = (world) => world.state(camps);
53
+ /**
54
+ * The camp of this name, as it was given one on the map. It is there for as long as the game, with or without its creeps
55
+ *
56
+ * @beta
57
+ */
58
+ var campNamed = (world, name) => campsOf(world).find((camp) => camp.name === name);
59
+ /**
60
+ * Where the creeps of a camp stand: the first one in the middle, the rest in a ring around it, facing out
61
+ *
62
+ * @beta
63
+ */
64
+ function campLayout(point, count) {
65
+ return Array.from({ length: count }, (_, i) => {
66
+ const angle = i / Math.max(count - 1, 1) * Math.PI * 2;
67
+ const spread = i === 0 ? 0 : 1.6;
68
+ return {
69
+ x: point.x + sin(angle) * spread,
70
+ z: point.z + cos(angle) * spread,
71
+ facing: angle
72
+ };
73
+ });
74
+ }
75
+ /**
76
+ * Puts a camp of creeps on the map. The creeps stand around the point and come back to it
77
+ *
78
+ * @beta
79
+ */
80
+ function spawnCamp(world, owner, point, types, leash = world.settings.camps.leash) {
81
+ const all = campsOf(world);
82
+ const level = types.reduce((sum, type) => sum + (world.registry.unit(type).level ?? 1), 0);
83
+ const camp = {
84
+ id: all.length + 1,
85
+ x: point.x,
86
+ z: point.z,
87
+ level,
88
+ leash,
89
+ members: [],
90
+ aggro: [],
91
+ alarm: 0,
92
+ owner,
93
+ types: [...types]
94
+ };
95
+ const { respawn } = world.settings.camps;
96
+ if (respawn !== void 0) camp.respawn = respawn;
97
+ all.push(camp);
98
+ populate(world, camp, owner, types);
99
+ return camp;
100
+ }
101
+ /** Puts a camp's creeps where they stand, as its members */
102
+ function populate(world, camp, owner, types) {
103
+ const layout = campLayout(camp, types.length);
104
+ camp.members = [];
105
+ types.forEach((type, i) => {
106
+ const { x, z, facing } = layout[i];
107
+ const creep = world.spawn(type, owner, {
108
+ x,
109
+ z
110
+ }, { facing });
111
+ creep.set(campMember, {
112
+ camp: camp.id,
113
+ home: {
114
+ x: creep.pos.x,
115
+ z: creep.pos.z
116
+ },
117
+ returning: false,
118
+ searching: null
119
+ });
120
+ camp.members.push(creep.id);
121
+ });
122
+ }
123
+ /**
124
+ * Brings a cleared camp back now, the same creeps where they stood (`campReturned`): from code, or when its time comes
125
+ *
126
+ * @beta
127
+ */
128
+ function respawnCamp(world, camp) {
129
+ if (!camp.types?.length || camp.owner === void 0) return;
130
+ populate(world, camp, camp.owner, camp.types);
131
+ camp.alarm = 0;
132
+ camp.aggro = [];
133
+ camp.foughtAt = void 0;
134
+ camp.clearedAt = void 0;
135
+ world.events.emit(campReturned, { camp });
136
+ }
137
+ /** Whether every creep of a camp is gone */
138
+ var emptied = (world, camp) => camp.members.every((id) => !world.get(id)?.alive);
139
+ /**
140
+ * Camps that come back (`Camp.respawn`): told when one is found empty (`campCleared`), and brought back once its time is
141
+ * up, when nobody but its own kind stands in it. Once a second, at the rate of 30 ticks
142
+ *
143
+ * @internal
144
+ */
145
+ var campRespawnSystem = {
146
+ name: "campRespawn",
147
+ phase: "cleanup",
148
+ every: 30,
149
+ update(world) {
150
+ for (const camp of campsOf(world)) {
151
+ if (!emptied(world, camp)) continue;
152
+ if (camp.clearedAt === void 0) {
153
+ camp.clearedAt = world.time;
154
+ world.events.emit(campCleared, { camp });
155
+ }
156
+ if (camp.respawn === void 0 || world.time - camp.clearedAt < camp.respawn) continue;
157
+ if (world.spatial.query(camp.x, camp.z, 3, found).some((entity) => entity.alive && entity.isUnit && entity.owner !== camp.owner)) continue;
158
+ respawnCamp(world, camp);
159
+ }
160
+ }
161
+ };
162
+ /** Part of their health creeps regain per second on the way home */
163
+ var RETREAT_HEALING = .1;
164
+ var found = [];
165
+ /** Uses an ability that hits what is around the creep, when that is worth it */
166
+ function lashOut(world, entity) {
167
+ for (const state of entity.abilities) {
168
+ if (state.level < 1 || state.cooldown > 0) continue;
169
+ const ability = world.registry.ability(state.id);
170
+ if (ability.target !== "none" || at(ability.manaCost, state.level) > entity.mana) continue;
171
+ const radius = lowerChain(ability.effects).reduce((max, effect) => Math.max(max, effect.type === "damage" ? declaredAt(effect.radius, state.level) : 0), 0);
172
+ if (!radius) continue;
173
+ let caught = 0;
174
+ for (const other of world.spatial.query(entity.pos.x, entity.pos.z, radius, found)) if (other.isUnit && canAttack(world, entity, other) && edgeDistance(entity, other) <= radius) caught++;
175
+ if (caught < 2) continue;
176
+ giveOrder(world, entity, createOrder(world, {
177
+ type: "cast",
178
+ ability: ability.id
179
+ }));
180
+ return true;
181
+ }
182
+ return false;
183
+ }
184
+ /** The camp's own `chaseTime`, or the rules' */
185
+ var chaseTimeOf = (world, camp) => camp.chaseTime ?? world.settings.camps.chaseTime;
186
+ /** The camp's own `resetAfter`, or the rules' */
187
+ var resetAfterOf = (world, camp) => camp.resetAfter ?? world.settings.camps.resetAfter;
188
+ /** The camp's own `helpAtOnce`, or the rules' */
189
+ var helpsAtOnce = (world, camp) => camp.helpAtOnce ?? world.settings.camps.helpAtOnce;
190
+ /** Whether the creep may go for it: an enemy it sees, inside the camp's leash, and not one it leaves alone for now (`shun`) */
191
+ function mayChase(world, entity, camp, other) {
192
+ return !!other && other.alive && canAttack(world, entity, other) && canSee(world, entity, other) && dist(other.pos, camp) <= camp.leash && !isShunned(world, entity, other);
193
+ }
194
+ /** The camp's list rid of the dead, the gone and what stands past the leash */
195
+ function prune(world, camp) {
196
+ let kept = 0;
197
+ for (const entry of camp.aggro) {
198
+ const other = world.get(entry.id);
199
+ if (other?.alive && dist(other.pos, camp) <= camp.leash) camp.aggro[kept++] = entry;
200
+ }
201
+ camp.aggro.length = kept;
202
+ }
203
+ /** What the `targetScore` hook is asked with for each on a camp's list: one, used again */
204
+ var scoring = {
205
+ attacker: void 0,
206
+ target: void 0,
207
+ distance: 0,
208
+ engaged: 0,
209
+ room: 0,
210
+ score: 0
211
+ };
212
+ /**
213
+ * What a creep of the camp goes for of the camp's list (`Camp.aggro`): the most threat, then the nearest, the
214
+ * `targetScore` hook having the last word; nothing it leaves alone for now (`shun`: it could not get at it, or chased it
215
+ * too long), cannot see or attack, or that stands past the leash. None when the list has nothing for it
216
+ *
217
+ * @beta
218
+ */
219
+ function campTarget(world, entity, camp) {
220
+ prune(world, camp);
221
+ const hooked = world.hooks.has("targetScore");
222
+ let best;
223
+ let bestScore = -Infinity;
224
+ for (const entry of camp.aggro) {
225
+ const other = world.get(entry.id);
226
+ if (!mayChase(world, entity, camp, other)) continue;
227
+ const distance = edgeDistance(entity, other);
228
+ let score = entry.threat * 1e3 - distance;
229
+ if (hooked) {
230
+ scoring.attacker = entity;
231
+ scoring.target = other;
232
+ scoring.distance = distance;
233
+ scoring.engaged = engagedLike(world, other, entity);
234
+ scoring.room = roomFor(world, other, entity);
235
+ scoring.score = score;
236
+ score = world.hooks.run("targetScore", scoring).score;
237
+ }
238
+ if (score > bestScore) {
239
+ bestScore = score;
240
+ best = other;
241
+ }
242
+ }
243
+ return best;
244
+ }
245
+ /** Its entry on the camp's list, put on it with no threat if it was not */
246
+ function entryOf(world, camp, other) {
247
+ let entry = camp.aggro.find((each) => each.id === other.id);
248
+ if (!entry) camp.aggro.push(entry = {
249
+ id: other.id,
250
+ threat: 0,
251
+ lastHitAt: world.time
252
+ });
253
+ return entry;
254
+ }
255
+ /** The creep goes for it now: put on the camp's list, the camp's alarm, the chase timed from now */
256
+ function take(world, entity, member, camp, target) {
257
+ engageWith(world, entity, target);
258
+ entity.get(fighting).autoTarget = target.id;
259
+ member.searching = null;
260
+ member.blowAt = world.time;
261
+ camp.alarm = target.id;
262
+ entryOf(world, camp, target);
263
+ }
264
+ /** Whether a creep of the camp on its way home takes a fight again: once it has been on the way `RETURN_GRACE` seconds */
265
+ var pastGrace = (world, member) => world.time - (member.returningAt ?? -Infinity) >= RETURN_GRACE;
266
+ /**
267
+ * Every creep of the camp free to fight goes for the best of the camp's list now, not at its next look round: those
268
+ * asleep woken, those fighting left to it, those on their way home only past `RETURN_GRACE`, those with an order of their
269
+ * player's (a hold) or standing down (`CombatState.passive`) not at all
270
+ */
271
+ function rally(world, camp) {
272
+ for (const id of camp.members) {
273
+ const creep = world.get(id);
274
+ const member = creep?.get(campMember);
275
+ if (!creep?.alive || !member || !freeToHelp(creep)) continue;
276
+ if (member.returning && !pastGrace(world, member)) continue;
277
+ const combat = creep.get(fighting);
278
+ if (combat.autoTarget && world.get(combat.autoTarget)?.alive) continue;
279
+ const next = campTarget(world, creep, camp);
280
+ if (!next) continue;
281
+ creep.asleep = false;
282
+ member.returning = false;
283
+ take(world, creep, member, camp, next);
284
+ }
285
+ }
286
+ /**
287
+ * Puts someone on a camp's list as if it had done the camp `threat` damage (`Camp.aggro`): a taunt, or a game's own
288
+ * reason for the creeps to come. The camp comes at once, as for a hit, where it helps at once (`CampSettings.helpAtOnce`)
289
+ *
290
+ * @beta
291
+ */
292
+ function aggroCamp(world, camp, entity, threat = 0) {
293
+ const entry = entryOf(world, camp, entity);
294
+ entry.threat += threat;
295
+ entry.lastHitAt = world.time;
296
+ camp.foughtAt = world.time;
297
+ if (!world.get(camp.alarm)) camp.alarm = entity.id;
298
+ if (helpsAtOnce(world, camp)) rally(world, camp);
299
+ }
300
+ /**
301
+ * The camp gives up the fight now, as it does `resetAfter` after the last blow: its list emptied, every creep of it on
302
+ * the way home
303
+ *
304
+ * @beta
305
+ */
306
+ function resetCamp(world, camp) {
307
+ camp.aggro.length = 0;
308
+ camp.foughtAt = void 0;
309
+ camp.alarm = 0;
310
+ for (const id of camp.members) {
311
+ const creep = world.get(id);
312
+ const member = creep?.get(campMember);
313
+ if (creep?.alive && member && !member.returning) goHome(world, creep, member);
314
+ }
315
+ }
316
+ /** A creep of the camp lets go of what it fought and walks home, healing as it goes */
317
+ function goHome(world, entity, member) {
318
+ const combat = entity.get(fighting);
319
+ if (combat) combat.autoTarget = 0;
320
+ disengage(world, entity);
321
+ member.searching = null;
322
+ if (entity.get(moving) && dist(entity.pos, member.home) > 1.5) {
323
+ member.returning = true;
324
+ member.returningAt = world.time;
325
+ moveTo(world, entity, member.home);
326
+ }
327
+ }
328
+ /**
329
+ * A hit on a creep of a camp, or by one: the camp's list fed (the damage done, as threat), its fight kept up, a chase of
330
+ * the one hit or hitting timed anew, and the camp brought at once (`helpAtOnce`). A creep on its way home turns when hit
331
+ * past `RETURN_GRACE`
332
+ */
333
+ function hit(world, target, source, amount) {
334
+ if (!source || !world.areEnemies(source.owner, target.owner)) return;
335
+ const struck = target.get(campMember);
336
+ const camp = struck && campsOf(world)[struck.camp - 1];
337
+ if (struck && camp) {
338
+ const entry = entryOf(world, camp, source);
339
+ entry.threat += amount;
340
+ entry.lastHitAt = world.time;
341
+ camp.foughtAt = world.time;
342
+ if (!world.get(camp.alarm)) camp.alarm = source.id;
343
+ if (target.get(fighting)?.autoTarget === source.id) struck.blowAt = world.time;
344
+ if (target.alive && struck.returning && pastGrace(world, struck)) struck.returning = false;
345
+ if (helpsAtOnce(world, camp)) rally(world, camp);
346
+ }
347
+ const striker = source.get(campMember);
348
+ const own = striker && campsOf(world)[striker.camp - 1];
349
+ if (striker && own) {
350
+ entryOf(world, own, target).lastHitAt = world.time;
351
+ own.foughtAt = world.time;
352
+ if (source.get(fighting)?.autoTarget === target.id) striker.blowAt = world.time;
353
+ }
354
+ }
355
+ /**
356
+ * What creeps do: guard their camp. They go for whoever comes close or attacks one of them, the most threat on the
357
+ * camp's list first; give up a chase that brings no blow for `chaseTime`, and what goes past the leash from the camp's
358
+ * centre; wait where they stand while the camp's fight is on, and go home `resetAfter` after its last blow, healing on
359
+ * the way. At night they sleep at home
360
+ */
361
+ function guardCamp(world, entity, dt) {
362
+ const member = entity.get(campMember);
363
+ const combat = entity.get(fighting);
364
+ const camp = campsOf(world)[member.camp - 1];
365
+ const m = entity.get(moving);
366
+ if (entity.asleep) {
367
+ if (world.night && !combat.lastAttacker && !world.get(camp.alarm)) return;
368
+ entity.asleep = false;
369
+ }
370
+ if (member.returning) {
371
+ entity.health = Math.min(entity.health + entity.maxHealth * RETREAT_HEALING * dt, entity.maxHealth);
372
+ if (m && m.status === "moving") return;
373
+ if (m && dist(entity.pos, member.home) > 1.5 && m.status !== "failed") {
374
+ moveTo(world, entity, member.home);
375
+ return;
376
+ }
377
+ member.returning = false;
378
+ member.returningAt = void 0;
379
+ combat.lastAttacker = 0;
380
+ if (camp.alarm && !world.get(camp.alarm)) camp.alarm = 0;
381
+ return;
382
+ }
383
+ let dropped = false;
384
+ if (combat.autoTarget) {
385
+ const target = world.get(combat.autoTarget);
386
+ const tooFar = !target || dist(target.pos, camp) > camp.leash || dist(entity.pos, camp) > camp.leash + LEASH_SLACK;
387
+ if (!tooFar && lashOut(world, entity)) return;
388
+ let result = tooFar ? "invalid" : engage(world, entity, target, dt, !!m);
389
+ const stale = world.time - (member.blowAt ?? world.time) > chaseTimeOf(world, camp);
390
+ if (result === "chasing" && target && (stale || isBlocked(world, entity, target))) {
391
+ shun(world, entity, target);
392
+ result = "invalid";
393
+ }
394
+ if (result === "attacking" || result === "chasing") return;
395
+ combat.autoTarget = 0;
396
+ disengage(world, entity);
397
+ dropped = true;
398
+ }
399
+ if (!dropped && (world.tick + entity.id) % 4 !== 0) return;
400
+ let next = campTarget(world, entity, camp);
401
+ if (!next) {
402
+ const seen = acquireTarget(world, entity);
403
+ if (mayChase(world, entity, camp, seen)) next = seen;
404
+ }
405
+ const hitter = world.get(combat.lastAttacker);
406
+ if (!next && mayChase(world, entity, camp, hitter)) next = hitter;
407
+ const alarm = world.get(camp.alarm);
408
+ if (!next && mayChase(world, entity, camp, alarm)) next = alarm;
409
+ if (!next && m && hitter && canAttack(world, entity, hitter) && !isShunned(world, entity, hitter) && dist(hitter.pos, camp) <= camp.leash) {
410
+ member.searching = {
411
+ x: hitter.pos.x,
412
+ z: hitter.pos.z
413
+ };
414
+ moveTo(world, entity, member.searching);
415
+ }
416
+ combat.lastAttacker = 0;
417
+ if (next) {
418
+ take(world, entity, member, camp, next);
419
+ return;
420
+ }
421
+ if (member.searching && m?.status === "moving" && dist(entity.pos, camp) <= camp.leash) return;
422
+ member.searching = null;
423
+ if (camp.foughtAt !== void 0 && world.time - camp.foughtAt < resetAfterOf(world, camp)) {
424
+ if (m?.status === "moving") halt(world, entity);
425
+ return;
426
+ }
427
+ if (camp.foughtAt !== void 0 || camp.aggro.length) {
428
+ camp.aggro.length = 0;
429
+ camp.foughtAt = void 0;
430
+ }
431
+ const intruder = world.get(camp.alarm);
432
+ if (camp.alarm && (!intruder || dist(intruder.pos, camp) > camp.leash)) camp.alarm = 0;
433
+ goHome(world, entity, member);
434
+ if (world.night && world.settings.camps.sleep && !member.returning && !camp.alarm) entity.asleep = true;
435
+ }
436
+ /**
437
+ * What turns camps on: creeps of a camp guard it instead of doing what idle units do
438
+ *
439
+ * @internal
440
+ */
441
+ var campHooks = [defineHook({
442
+ hook: "idle",
443
+ id: "guardCamp",
444
+ run(world, event) {
445
+ if (event.handled || !event.fights || !event.entity.has(campMember)) return;
446
+ guardCamp(world, event.entity, event.dt);
447
+ event.handled = true;
448
+ }
449
+ })];
450
+ /**
451
+ * What feeds the camps' lists (`Camp.aggro`): every hit on a creep of a camp, or by one, as it is told (`damaged`). The
452
+ * heroes pack's, with `campHooks`
453
+ *
454
+ * @internal
455
+ */
456
+ var campListeners = [defineListener({
457
+ event: damaged,
458
+ id: "campAggro",
459
+ run: (world, { target, source, amount }) => hit(world, target, source, amount)
460
+ })];
461
+ /** What a seat says of the camps, kept up to date once a tick (`campsFor`) */
462
+ var CAMPS = {};
463
+ /**
464
+ * The camps as a seat's player knows them (`GameSession.camps`): where they are and how strong, and which their team
465
+ * has seen empty. Worked out once a tick, as the minimap asks every frame: the same list and objects every time, kept
466
+ * up to date, so it is to read, not to keep
467
+ *
468
+ * @beta
469
+ */
470
+ function campsFor(view) {
471
+ const kept = view.keep(CAMPS, () => ({
472
+ at: -1,
473
+ infos: []
474
+ }));
475
+ const { world } = view;
476
+ if (kept.at === world.tick) return kept.infos;
477
+ kept.at = world.tick;
478
+ const all = campsOf(world);
479
+ const { cleared } = view.memory;
480
+ const occupied = (members) => members.some((id) => !!world.get(id));
481
+ for (let i = 0; i < all.length; i++) {
482
+ const camp = all[i];
483
+ const known = cleared.indexOf(camp.id);
484
+ if (known < 0 && view.sees(camp.x, camp.z) && !occupied(camp.members)) cleared.push(camp.id);
485
+ else if (known >= 0 && view.sees(camp.x, camp.z) && occupied(camp.members)) cleared.splice(known, 1);
486
+ const info = kept.infos[i] ??= {
487
+ id: camp.id,
488
+ x: camp.x,
489
+ z: camp.z,
490
+ level: camp.level,
491
+ cleared: false
492
+ };
493
+ info.cleared = cleared.includes(camp.id);
494
+ }
495
+ kept.infos.length = all.length;
496
+ return kept.infos;
497
+ }
498
+ //#endregion
499
+ export { RETURN_GRACE, aggroCamp, campHooks, campLayout, campListeners, campMember, campNamed, campRespawnSystem, campTarget, camps, campsFor, campsOf, resetCamp, respawnCamp, spawnCamp };
500
+
501
+ //# sourceMappingURL=camps.js.map