@v12-engine/engine 0.1.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (951) hide show
  1. package/dist/abilities/amounts.d.ts +28 -0
  2. package/dist/abilities/amounts.js +74 -0
  3. package/dist/abilities/amounts.js.map +1 -0
  4. package/dist/abilities/buffs.d.ts +106 -6
  5. package/dist/abilities/buffs.js +443 -0
  6. package/dist/abilities/buffs.js.map +1 -0
  7. package/dist/abilities/castTold.d.ts +2 -0
  8. package/dist/abilities/castTold.js +66 -0
  9. package/dist/abilities/castTold.js.map +1 -0
  10. package/dist/abilities/chance.d.ts +38 -0
  11. package/dist/abilities/chance.js +77 -0
  12. package/dist/abilities/chance.js.map +1 -0
  13. package/dist/abilities/charges.d.ts +18 -0
  14. package/dist/abilities/charges.js +101 -0
  15. package/dist/abilities/charges.js.map +1 -0
  16. package/dist/abilities/control.d.ts +28 -0
  17. package/dist/abilities/control.js +113 -0
  18. package/dist/abilities/control.js.map +1 -0
  19. package/dist/abilities/dispel.js +51 -0
  20. package/dist/abilities/dispel.js.map +1 -0
  21. package/dist/abilities/effectFields.d.ts +1 -1
  22. package/dist/abilities/effectFields.js +676 -0
  23. package/dist/abilities/effectFields.js.map +1 -0
  24. package/dist/abilities/effectIndex.d.ts +27 -0
  25. package/dist/abilities/effectIndex.js +64 -0
  26. package/dist/abilities/effectIndex.js.map +1 -0
  27. package/dist/abilities/effects/buff.d.ts +9 -3
  28. package/dist/abilities/effects/buff.js +84 -0
  29. package/dist/abilities/effects/buff.js.map +1 -0
  30. package/dist/abilities/effects/conditions.d.ts +2 -0
  31. package/dist/abilities/effects/conditions.js +41 -0
  32. package/dist/abilities/effects/conditions.js.map +1 -0
  33. package/dist/abilities/effects/core.js +54 -0
  34. package/dist/abilities/effects/core.js.map +1 -0
  35. package/dist/abilities/effects/damage.d.ts +1 -1
  36. package/dist/abilities/effects/damage.js +43 -0
  37. package/dist/abilities/effects/damage.js.map +1 -0
  38. package/dist/abilities/effects/heal.d.ts +2 -2
  39. package/dist/abilities/effects/heal.js +51 -0
  40. package/dist/abilities/effects/heal.js.map +1 -0
  41. package/dist/abilities/effects/missile.d.ts +13 -1
  42. package/dist/abilities/effects/missile.js +104 -0
  43. package/dist/abilities/effects/missile.js.map +1 -0
  44. package/dist/abilities/effects/morph.d.ts +5 -0
  45. package/dist/abilities/effects/morph.js +43 -0
  46. package/dist/abilities/effects/morph.js.map +1 -0
  47. package/dist/abilities/effects/moves.d.ts +16 -4
  48. package/dist/abilities/effects/moves.js +212 -0
  49. package/dist/abilities/effects/moves.js.map +1 -0
  50. package/dist/abilities/effects/passives.d.ts +19 -9
  51. package/dist/abilities/effects/passives.js +131 -0
  52. package/dist/abilities/effects/passives.js.map +1 -0
  53. package/dist/abilities/effects/proxy.d.ts +5 -0
  54. package/dist/abilities/effects/proxy.js +60 -0
  55. package/dist/abilities/effects/proxy.js.map +1 -0
  56. package/dist/abilities/effects/sight.d.ts +2 -2
  57. package/dist/abilities/effects/sight.js +39 -0
  58. package/dist/abilities/effects/sight.js.map +1 -0
  59. package/dist/abilities/effects/spawn.d.ts +5 -2
  60. package/dist/abilities/effects/spawn.js +40 -0
  61. package/dist/abilities/effects/spawn.js.map +1 -0
  62. package/dist/abilities/effects/timed.d.ts +2 -2
  63. package/dist/abilities/effects/timed.js +96 -0
  64. package/dist/abilities/effects/timed.js.map +1 -0
  65. package/dist/abilities/effects/trade.d.ts +1 -1
  66. package/dist/abilities/effects/trade.js +25 -0
  67. package/dist/abilities/effects/trade.js.map +1 -0
  68. package/dist/abilities/effects.d.ts +97 -23
  69. package/dist/abilities/effects.js +860 -0
  70. package/dist/abilities/effects.js.map +1 -0
  71. package/dist/abilities/land.d.ts +38 -4
  72. package/dist/abilities/land.js +189 -0
  73. package/dist/abilities/land.js.map +1 -0
  74. package/dist/abilities/recast.d.ts +45 -0
  75. package/dist/abilities/recast.js +118 -0
  76. package/dist/abilities/recast.js.map +1 -0
  77. package/dist/abilities/scaled.js +40 -0
  78. package/dist/abilities/scaled.js.map +1 -0
  79. package/dist/abilities/screen.d.ts +6 -0
  80. package/dist/abilities/screen.js +83 -0
  81. package/dist/abilities/screen.js.map +1 -0
  82. package/dist/abilities/shapes.d.ts +66 -0
  83. package/dist/abilities/shapes.js +122 -0
  84. package/dist/abilities/shapes.js.map +1 -0
  85. package/dist/abilities/text.d.ts +14 -2
  86. package/dist/abilities/text.js +204 -0
  87. package/dist/abilities/text.js.map +1 -0
  88. package/dist/abilities/triggers.d.ts +98 -0
  89. package/dist/abilities/triggers.js +351 -0
  90. package/dist/abilities/triggers.js.map +1 -0
  91. package/dist/abilityChanges.d.ts +131 -0
  92. package/dist/abilityChanges.js +345 -0
  93. package/dist/abilityChanges.js.map +1 -0
  94. package/dist/ai/area.d.ts +4 -1
  95. package/dist/ai/brain.d.ts +4 -1
  96. package/dist/ai/brain.js +844 -0
  97. package/dist/ai/brain.js.map +1 -0
  98. package/dist/ai/budget.js +74 -0
  99. package/dist/ai/budget.js.map +1 -0
  100. package/dist/ai/checks.d.ts +9 -1
  101. package/dist/ai/checks.js +242 -0
  102. package/dist/ai/checks.js.map +1 -0
  103. package/dist/ai/computer.d.ts +11 -4
  104. package/dist/ai/computer.js +251 -0
  105. package/dist/ai/computer.js.map +1 -0
  106. package/dist/ai/defence.d.ts +4 -0
  107. package/dist/ai/defence.js +430 -0
  108. package/dist/ai/defence.js.map +1 -0
  109. package/dist/ai/define.d.ts +3 -2
  110. package/dist/ai/define.js +31 -0
  111. package/dist/ai/define.js.map +1 -0
  112. package/dist/ai/economy.d.ts +10 -7
  113. package/dist/ai/economy.js +780 -0
  114. package/dist/ai/economy.js.map +1 -0
  115. package/dist/ai/geometry.js +38 -0
  116. package/dist/ai/geometry.js.map +1 -0
  117. package/dist/ai/goals.d.ts +1 -0
  118. package/dist/ai/goals.js +560 -0
  119. package/dist/ai/goals.js.map +1 -0
  120. package/dist/ai/knowledge.d.ts +72 -7
  121. package/dist/ai/knowledge.js +804 -0
  122. package/dist/ai/knowledge.js.map +1 -0
  123. package/dist/ai/lanes.d.ts +10 -2
  124. package/dist/ai/lanes.js +715 -0
  125. package/dist/ai/lanes.js.map +1 -0
  126. package/dist/ai/melee/build.js +264 -0
  127. package/dist/ai/melee/build.js.map +1 -0
  128. package/dist/ai/melee/goals.d.ts +7 -0
  129. package/dist/ai/melee/goals.js +720 -0
  130. package/dist/ai/melee/goals.js.map +1 -0
  131. package/dist/ai/melee/heroes.js +68 -0
  132. package/dist/ai/melee/heroes.js.map +1 -0
  133. package/dist/ai/melee/index.d.ts +1 -1
  134. package/dist/ai/melee/index.js +51 -0
  135. package/dist/ai/melee/index.js.map +1 -0
  136. package/dist/ai/melee/production.js +29 -0
  137. package/dist/ai/melee/production.js.map +1 -0
  138. package/dist/ai/melee/surrender.js +64 -0
  139. package/dist/ai/melee/surrender.js.map +1 -0
  140. package/dist/ai/micro.d.ts +9 -0
  141. package/dist/ai/micro.js +1316 -0
  142. package/dist/ai/micro.js.map +1 -0
  143. package/dist/ai/mission.d.ts +9 -2
  144. package/dist/ai/mission.js +538 -0
  145. package/dist/ai/mission.js.map +1 -0
  146. package/dist/ai/missionRules.d.ts +1 -1
  147. package/dist/ai/missionRules.js +26 -0
  148. package/dist/ai/missionRules.js.map +1 -0
  149. package/dist/ai/module.d.ts +6 -2
  150. package/dist/ai/module.js +37 -0
  151. package/dist/ai/module.js.map +1 -0
  152. package/dist/ai/options.d.ts +3 -3
  153. package/dist/ai/plans/build.d.ts +20 -1
  154. package/dist/ai/plans/build.js +608 -0
  155. package/dist/ai/plans/build.js.map +1 -0
  156. package/dist/ai/plans/placement.d.ts +4 -1
  157. package/dist/ai/plans/placement.js +295 -0
  158. package/dist/ai/plans/placement.js.map +1 -0
  159. package/dist/ai/plans/plans.d.ts +9 -0
  160. package/dist/ai/plans/plans.js +110 -0
  161. package/dist/ai/plans/plans.js.map +1 -0
  162. package/dist/ai/plans/production.d.ts +14 -2
  163. package/dist/ai/plans/production.js +434 -0
  164. package/dist/ai/plans/production.js.map +1 -0
  165. package/dist/ai/plans/purse.d.ts +6 -3
  166. package/dist/ai/plans/purse.js +139 -0
  167. package/dist/ai/plans/purse.js.map +1 -0
  168. package/dist/ai/plans/tech.d.ts +6 -0
  169. package/dist/ai/plans/tech.js +122 -0
  170. package/dist/ai/plans/tech.js.map +1 -0
  171. package/dist/ai/profiles.d.ts +4 -4
  172. package/dist/{profiles-B3NS9jwk.js → ai/profiles.js} +3 -98
  173. package/dist/ai/profiles.js.map +1 -0
  174. package/dist/ai/reach.js +54 -0
  175. package/dist/ai/reach.js.map +1 -0
  176. package/dist/ai/report.d.ts +8 -0
  177. package/dist/ai/report.js +87 -0
  178. package/dist/ai/report.js.map +1 -0
  179. package/dist/ai/roles.d.ts +4 -0
  180. package/dist/ai/roles.js +207 -0
  181. package/dist/ai/roles.js.map +1 -0
  182. package/dist/ai/rules.d.ts +8 -2
  183. package/dist/ai/rules.js +416 -0
  184. package/dist/ai/rules.js.map +1 -0
  185. package/dist/ai/scouting.d.ts +6 -0
  186. package/dist/ai/scouting.js +324 -0
  187. package/dist/ai/scouting.js.map +1 -0
  188. package/dist/ai/settings.js +99 -0
  189. package/dist/ai/settings.js.map +1 -0
  190. package/dist/ai/squads.d.ts +21 -2
  191. package/dist/ai/squads.js +916 -0
  192. package/dist/ai/squads.js.map +1 -0
  193. package/dist/ai/strength.js +320 -0
  194. package/dist/ai/strength.js.map +1 -0
  195. package/dist/ai/task.d.ts +3 -1
  196. package/dist/ai/task.js +17 -0
  197. package/dist/ai/task.js.map +1 -0
  198. package/dist/ai/tasks/attack.js +24 -0
  199. package/dist/ai/tasks/attack.js.map +1 -0
  200. package/dist/ai/tasks/capture.d.ts +3 -3
  201. package/dist/ai/tasks/capture.js +37 -0
  202. package/dist/ai/tasks/capture.js.map +1 -0
  203. package/dist/ai/tasks/creep.js +29 -0
  204. package/dist/ai/tasks/creep.js.map +1 -0
  205. package/dist/ai/tasks/defend.js +61 -0
  206. package/dist/ai/tasks/defend.js.map +1 -0
  207. package/dist/ai/tasks/drop.js +81 -0
  208. package/dist/ai/tasks/drop.js.map +1 -0
  209. package/dist/ai/tasks/escort.js +59 -0
  210. package/dist/ai/tasks/escort.js.map +1 -0
  211. package/dist/ai/tasks/gather.js +48 -0
  212. package/dist/ai/tasks/gather.js.map +1 -0
  213. package/dist/ai/tasks/harass.js +39 -0
  214. package/dist/ai/tasks/harass.js.map +1 -0
  215. package/dist/ai/tasks/hold.js +32 -0
  216. package/dist/ai/tasks/hold.js.map +1 -0
  217. package/dist/ai/tasks/index.js +34 -0
  218. package/dist/ai/tasks/index.js.map +1 -0
  219. package/dist/ai/tasks/move.js +26 -0
  220. package/dist/ai/tasks/move.js.map +1 -0
  221. package/dist/ai/tasks/patrol.js +59 -0
  222. package/dist/ai/tasks/patrol.js.map +1 -0
  223. package/dist/ai/tasks/retreat.js +28 -0
  224. package/dist/ai/tasks/retreat.js.map +1 -0
  225. package/dist/ai/tasks/scout.js +73 -0
  226. package/dist/ai/tasks/scout.js.map +1 -0
  227. package/dist/ai/tasks/shared.d.ts +1 -1
  228. package/dist/ai/tasks/shared.js +137 -0
  229. package/dist/ai/tasks/shared.js.map +1 -0
  230. package/dist/ai/team.d.ts +18 -1
  231. package/dist/ai/team.js +492 -0
  232. package/dist/ai/team.js.map +1 -0
  233. package/dist/ai/threat.d.ts +6 -0
  234. package/dist/ai/threat.js +206 -0
  235. package/dist/ai/threat.js.map +1 -0
  236. package/dist/ai/view.d.ts +21 -7
  237. package/dist/ai/view.js +677 -0
  238. package/dist/ai/view.js.map +1 -0
  239. package/dist/ai/waves.d.ts +6 -0
  240. package/dist/ai/waves.js +410 -0
  241. package/dist/ai/waves.js.map +1 -0
  242. package/dist/ai.js +54 -6239
  243. package/dist/aiTesting.d.ts +6 -3
  244. package/dist/aiTesting.js +229 -0
  245. package/dist/aiTesting.js.map +1 -0
  246. package/dist/areas.d.ts +4 -1
  247. package/dist/areas.js +295 -0
  248. package/dist/areas.js.map +1 -0
  249. package/dist/attacks.d.ts +3 -3
  250. package/dist/attacks.js +127 -0
  251. package/dist/attacks.js.map +1 -0
  252. package/dist/burning.d.ts +267 -0
  253. package/dist/burning.js +795 -0
  254. package/dist/burning.js.map +1 -0
  255. package/dist/bytes.js +21 -0
  256. package/dist/bytes.js.map +1 -0
  257. package/dist/callings.d.ts +71 -0
  258. package/dist/callings.js +157 -0
  259. package/dist/callings.js.map +1 -0
  260. package/dist/cameraOrders.d.ts +78 -0
  261. package/dist/cameraOrders.js +114 -0
  262. package/dist/cameraOrders.js.map +1 -0
  263. package/dist/camps.d.ts +70 -4
  264. package/dist/camps.js +501 -0
  265. package/dist/camps.js.map +1 -0
  266. package/dist/capture.d.ts +15 -3
  267. package/dist/capture.js +304 -0
  268. package/dist/capture.js.map +1 -0
  269. package/dist/cellLayers.d.ts +78 -13
  270. package/dist/cellLayers.js +275 -0
  271. package/dist/cellLayers.js.map +1 -0
  272. package/dist/cellPatches.d.ts +24 -0
  273. package/dist/cellPatches.js +73 -0
  274. package/dist/cellPatches.js.map +1 -0
  275. package/dist/cinematics.d.ts +10 -5
  276. package/dist/cinematics.js +161 -0
  277. package/dist/cinematics.js.map +1 -0
  278. package/dist/clock.d.ts +2 -2
  279. package/dist/clock.js +78 -0
  280. package/dist/clock.js.map +1 -0
  281. package/dist/commands.d.ts +36 -4
  282. package/dist/commands.js +636 -0
  283. package/dist/commands.js.map +1 -0
  284. package/dist/components.d.ts +31 -10
  285. package/dist/components.js +74 -0
  286. package/dist/components.js.map +1 -0
  287. package/dist/computers.d.ts +4 -4
  288. package/dist/computers.js +194 -0
  289. package/dist/computers.js.map +1 -0
  290. package/dist/concealment.d.ts +25 -2
  291. package/dist/concealment.js +409 -0
  292. package/dist/concealment.js.map +1 -0
  293. package/dist/coreComponents.js +130 -0
  294. package/dist/coreComponents.js.map +1 -0
  295. package/dist/createGame.d.ts +306 -0
  296. package/dist/createGame.js +405 -0
  297. package/dist/createGame.js.map +1 -0
  298. package/dist/dashing.d.ts +18 -2
  299. package/dist/dashing.js +41 -0
  300. package/dist/dashing.js.map +1 -0
  301. package/dist/debug.d.ts +8 -0
  302. package/dist/debug.js +5 -3
  303. package/dist/debug2.js +76 -0
  304. package/dist/debug2.js.map +1 -0
  305. package/dist/debugCommands.d.ts +6 -6
  306. package/dist/debugCommands.js +537 -0
  307. package/dist/debugCommands.js.map +1 -0
  308. package/dist/debugging.d.ts +1 -0
  309. package/dist/defaultSets.d.ts +183 -0
  310. package/dist/defaultSets.js +216 -0
  311. package/dist/defaultSets.js.map +1 -0
  312. package/dist/definitions.d.ts +6 -0
  313. package/dist/definitions.js +78 -0
  314. package/dist/definitions.js.map +1 -0
  315. package/dist/defs.d.ts +1895 -165
  316. package/dist/defs.js +380 -0
  317. package/dist/defs.js.map +1 -0
  318. package/dist/denying.d.ts +4 -4
  319. package/dist/denying.js +106 -0
  320. package/dist/denying.js.map +1 -0
  321. package/dist/destructibles.d.ts +2 -2
  322. package/dist/destructibles.js +36 -0
  323. package/dist/destructibles.js.map +1 -0
  324. package/dist/determinism.d.ts +4 -4
  325. package/dist/determinism.js +247 -0
  326. package/dist/determinism.js.map +1 -0
  327. package/dist/dialog.d.ts +17 -2
  328. package/dist/dialog.js +108 -0
  329. package/dist/dialog.js.map +1 -0
  330. package/dist/effectRefs.js +28 -0
  331. package/dist/effectRefs.js.map +1 -0
  332. package/dist/effects.d.ts +27 -11
  333. package/dist/effects.js +110 -0
  334. package/dist/effects.js.map +1 -0
  335. package/dist/endings.d.ts +1 -1
  336. package/dist/endings.js +78 -0
  337. package/dist/endings.js.map +1 -0
  338. package/dist/engagement.d.ts +40 -6
  339. package/dist/engagement.js +530 -0
  340. package/dist/engagement.js.map +1 -0
  341. package/dist/engineEvents.d.ts +72 -9
  342. package/dist/engineEvents.js +520 -0
  343. package/dist/engineEvents.js.map +1 -0
  344. package/dist/entity.d.ts +275 -26
  345. package/dist/entity.js +441 -0
  346. package/dist/entity.js.map +1 -0
  347. package/dist/entityIndex.d.ts +10 -3
  348. package/dist/entityIndex.js +149 -0
  349. package/dist/entityIndex.js.map +1 -0
  350. package/dist/errors.d.ts +6 -2
  351. package/dist/errors.js +59 -0
  352. package/dist/errors.js.map +1 -0
  353. package/dist/events.d.ts +11 -5
  354. package/dist/events.js +158 -0
  355. package/dist/events.js.map +1 -0
  356. package/dist/exactMath.js +273 -0
  357. package/dist/exactMath.js.map +1 -0
  358. package/dist/features.d.ts +1 -1
  359. package/dist/features.js +127 -0
  360. package/dist/features.js.map +1 -0
  361. package/dist/fields.d.ts +25 -5
  362. package/dist/fields.js +140 -0
  363. package/dist/fields.js.map +1 -0
  364. package/dist/fixture.d.ts +3 -3
  365. package/dist/fixture.js +512 -0
  366. package/dist/fixture.js.map +1 -0
  367. package/dist/fog.d.ts +26 -3
  368. package/dist/fog.js +333 -0
  369. package/dist/fog.js.map +1 -0
  370. package/dist/foliage.d.ts +476 -0
  371. package/dist/foliage.js +1478 -0
  372. package/dist/foliage.js.map +1 -0
  373. package/dist/foliageDebug.d.ts +57 -0
  374. package/dist/foliageDebug.js +172 -0
  375. package/dist/foliageDebug.js.map +1 -0
  376. package/dist/foliageRegrowth.d.ts +20 -0
  377. package/dist/foliageRegrowth.js +332 -0
  378. package/dist/foliageRegrowth.js.map +1 -0
  379. package/dist/formState.d.ts +67 -0
  380. package/dist/formState.js +65 -0
  381. package/dist/formState.js.map +1 -0
  382. package/dist/formation.d.ts +46 -8
  383. package/dist/formation.js +297 -0
  384. package/dist/formation.js.map +1 -0
  385. package/dist/forms.d.ts +58 -0
  386. package/dist/forms.js +146 -0
  387. package/dist/forms.js.map +1 -0
  388. package/dist/friendlyFire.d.ts +2 -2
  389. package/dist/friendlyFire.js +37 -0
  390. package/dist/friendlyFire.js.map +1 -0
  391. package/dist/game.d.ts +141 -48
  392. package/dist/game.js +834 -0
  393. package/dist/game.js.map +1 -0
  394. package/dist/gameData.d.ts +96 -22
  395. package/dist/gameData.js +1690 -0
  396. package/dist/gameData.js.map +1 -0
  397. package/dist/gameFiles.d.ts +3 -3
  398. package/dist/gameFiles.js +14 -0
  399. package/dist/gameFiles.js.map +1 -0
  400. package/dist/gates.js +92 -0
  401. package/dist/gates.js.map +1 -0
  402. package/dist/generate.d.ts +28 -1
  403. package/dist/generate.js +1062 -0
  404. package/dist/generate.js.map +1 -0
  405. package/dist/generateWorker.d.ts +7 -3
  406. package/dist/generateWorker.js +86 -0
  407. package/dist/generateWorker.js.map +1 -0
  408. package/dist/grid.d.ts +9 -0
  409. package/dist/grid.js +102 -0
  410. package/dist/grid.js.map +1 -0
  411. package/dist/ground.d.ts +17 -1
  412. package/dist/ground.js +375 -0
  413. package/dist/ground.js.map +1 -0
  414. package/dist/groundObjects.d.ts +70 -0
  415. package/dist/groundObjects.js +371 -0
  416. package/dist/groundObjects.js.map +1 -0
  417. package/dist/groundSpeed.d.ts +20 -3
  418. package/dist/groundSpeed.js +117 -0
  419. package/dist/groundSpeed.js.map +1 -0
  420. package/dist/hero.d.ts +126 -10
  421. package/dist/hero.js +432 -0
  422. package/dist/hero.js.map +1 -0
  423. package/dist/holds.d.ts +94 -0
  424. package/dist/holds.js +305 -0
  425. package/dist/holds.js.map +1 -0
  426. package/dist/home.d.ts +1 -1
  427. package/dist/home.js +30 -0
  428. package/dist/home.js.map +1 -0
  429. package/dist/hooks.d.ts +339 -57
  430. package/dist/hooks.js +105 -0
  431. package/dist/hooks.js.map +1 -0
  432. package/dist/hotReload.d.ts +6 -5
  433. package/dist/hotReload.js +145 -0
  434. package/dist/hotReload.js.map +1 -0
  435. package/dist/ids.d.ts +3 -3
  436. package/dist/ids.js +30 -0
  437. package/dist/ids.js.map +1 -0
  438. package/dist/idsFile.d.ts +36 -0
  439. package/dist/idsFile.js +134 -0
  440. package/dist/idsFile.js.map +1 -0
  441. package/dist/index.d.ts +105 -68
  442. package/dist/index.js +194 -4701
  443. package/dist/inspect.d.ts +29 -2
  444. package/dist/{inspect-D9dWHmZ0.js → inspect.js} +21 -12
  445. package/dist/inspect.js.map +1 -0
  446. package/dist/inventory.d.ts +14 -1
  447. package/dist/inventory.js +84 -0
  448. package/dist/inventory.js.map +1 -0
  449. package/dist/items.d.ts +136 -8
  450. package/dist/items.js +585 -0
  451. package/dist/items.js.map +1 -0
  452. package/dist/lanes.d.ts +12 -3
  453. package/dist/lanes.js +496 -0
  454. package/dist/lanes.js.map +1 -0
  455. package/dist/life.d.ts +6 -2
  456. package/dist/life.js +287 -0
  457. package/dist/life.js.map +1 -0
  458. package/dist/log.d.ts +26 -3
  459. package/dist/log.js +192 -0
  460. package/dist/log.js.map +1 -0
  461. package/dist/manaBurn.d.ts +2 -2
  462. package/dist/manaBurn.js +75 -0
  463. package/dist/manaBurn.js.map +1 -0
  464. package/dist/map/file.d.ts +56 -3
  465. package/dist/map/file.js +264 -0
  466. package/dist/map/file.js.map +1 -0
  467. package/dist/map/images.js +61 -0
  468. package/dist/map/images.js.map +1 -0
  469. package/dist/map/look.d.ts +1 -1
  470. package/dist/map/look.js +30 -0
  471. package/dist/map/look.js.map +1 -0
  472. package/dist/map/pathProfile.js +183 -0
  473. package/dist/map/pathProfile.js.map +1 -0
  474. package/dist/map/resize.d.ts +4 -0
  475. package/dist/map/resize.js +136 -0
  476. package/dist/map/resize.js.map +1 -0
  477. package/dist/map/schema.js +257 -0
  478. package/dist/map/schema.js.map +1 -0
  479. package/dist/map/terrain.js +214 -0
  480. package/dist/map/terrain.js.map +1 -0
  481. package/dist/map/types.d.ts +92 -13
  482. package/dist/map/types.js +251 -0
  483. package/dist/map/types.js.map +1 -0
  484. package/dist/mapCheck/cells.js +94 -0
  485. package/dist/mapCheck/cells.js.map +1 -0
  486. package/dist/mapCheck/rules/foliage.d.ts +9 -0
  487. package/dist/mapCheck/rules/foliage.js +83 -0
  488. package/dist/mapCheck/rules/foliage.js.map +1 -0
  489. package/dist/mapCheck/rules/names.js +39 -0
  490. package/dist/mapCheck/rules/names.js.map +1 -0
  491. package/dist/mapCheck/rules/objects.d.ts +1 -1
  492. package/dist/mapCheck/rules/objects.js +56 -0
  493. package/dist/mapCheck/rules/objects.js.map +1 -0
  494. package/dist/mapCheck/rules/paths.js +32 -0
  495. package/dist/mapCheck/rules/paths.js.map +1 -0
  496. package/dist/mapCheck/rules/players.js +20 -0
  497. package/dist/mapCheck/rules/players.js.map +1 -0
  498. package/dist/mapCheck/rules/races.js +56 -0
  499. package/dist/mapCheck/rules/races.js.map +1 -0
  500. package/dist/mapCheck/rules/random.js +47 -0
  501. package/dist/mapCheck/rules/random.js.map +1 -0
  502. package/dist/mapCheck/rules/regions.js +30 -0
  503. package/dist/mapCheck/rules/regions.js.map +1 -0
  504. package/dist/mapCheck/rules/targets.js +31 -0
  505. package/dist/mapCheck/rules/targets.js.map +1 -0
  506. package/dist/mapCheck/rules/walking.js +45 -0
  507. package/dist/mapCheck/rules/walking.js.map +1 -0
  508. package/dist/mapCheck.d.ts +2 -2
  509. package/dist/mapCheck.js +63 -0
  510. package/dist/mapCheck.js.map +1 -0
  511. package/dist/mapFields.d.ts +25 -2
  512. package/dist/mapFields.js +134 -0
  513. package/dist/mapFields.js.map +1 -0
  514. package/dist/mapFile.js +176 -0
  515. package/dist/mapFile.js.map +1 -0
  516. package/dist/mapMeasure.d.ts +8 -0
  517. package/dist/mapMeasure.js +283 -0
  518. package/dist/mapMeasure.js.map +1 -0
  519. package/dist/mapMerge.d.ts +1 -0
  520. package/dist/mapMerge.js +172 -0
  521. package/dist/mapMerge.js.map +1 -0
  522. package/dist/mapObjectives.js +138 -0
  523. package/dist/mapObjectives.js.map +1 -0
  524. package/dist/mapObjects.js +80 -0
  525. package/dist/mapObjects.js.map +1 -0
  526. package/dist/math.d.ts +37 -7
  527. package/dist/math.js +155 -0
  528. package/dist/math.js.map +1 -0
  529. package/dist/messages.d.ts +71 -4
  530. package/dist/messages.js +29 -0
  531. package/dist/messages.js.map +1 -0
  532. package/dist/missionRules.d.ts +10 -2
  533. package/dist/{missionRules-C-bGxm0Q.js → missionRules.js} +30 -150
  534. package/dist/missionRules.js.map +1 -0
  535. package/dist/mods.d.ts +39 -20
  536. package/dist/mods.js +271 -0
  537. package/dist/mods.js.map +1 -0
  538. package/dist/moves.d.ts +87 -0
  539. package/dist/moves.js +539 -0
  540. package/dist/moves.js.map +1 -0
  541. package/dist/names.d.ts +7 -0
  542. package/dist/names.js +122 -0
  543. package/dist/names.js.map +1 -0
  544. package/dist/navigation/agentParams.js +14 -0
  545. package/dist/navigation/agentParams.js.map +1 -0
  546. package/dist/navigation/air.d.ts +7 -3
  547. package/dist/navigation/air.js +401 -0
  548. package/dist/navigation/air.js.map +1 -0
  549. package/dist/navigation/builds.d.ts +34 -2
  550. package/dist/navigation/builds.js +287 -0
  551. package/dist/navigation/builds.js.map +1 -0
  552. package/dist/navigation/groundAreas.d.ts +59 -1
  553. package/dist/navigation/groundAreas.js +407 -0
  554. package/dist/navigation/groundAreas.js.map +1 -0
  555. package/dist/navigation/navigation.d.ts +98 -9
  556. package/dist/navigation/recast.d.ts +194 -18
  557. package/dist/navigation/recast.js +1379 -0
  558. package/dist/navigation/recast.js.map +1 -0
  559. package/dist/navigation/sidePaths.d.ts +8 -3
  560. package/dist/navigation/sidePaths.js +241 -0
  561. package/dist/navigation/sidePaths.js.map +1 -0
  562. package/dist/navigation/sized.js +243 -0
  563. package/dist/navigation/sized.js.map +1 -0
  564. package/dist/nearest.js +32 -0
  565. package/dist/nearest.js.map +1 -0
  566. package/dist/noise.js +59 -0
  567. package/dist/noise.js.map +1 -0
  568. package/dist/objectives.d.ts +12 -3
  569. package/dist/objectives.js +144 -0
  570. package/dist/objectives.js.map +1 -0
  571. package/dist/orders/basic.d.ts +5 -5
  572. package/dist/orders/basic.js +417 -0
  573. package/dist/orders/basic.js.map +1 -0
  574. package/dist/orders/build.js +278 -0
  575. package/dist/orders/build.js.map +1 -0
  576. package/dist/orders/cast.d.ts +13 -3
  577. package/dist/orders/cast.js +558 -0
  578. package/dist/orders/cast.js.map +1 -0
  579. package/dist/orders/facts.js +16 -0
  580. package/dist/orders/facts.js.map +1 -0
  581. package/dist/orders/harvest.d.ts +21 -5
  582. package/dist/orders/harvest.js +540 -0
  583. package/dist/orders/harvest.js.map +1 -0
  584. package/dist/orders/idle.d.ts +3 -1
  585. package/dist/orders/idle.js +234 -0
  586. package/dist/orders/idle.js.map +1 -0
  587. package/dist/orders/items.js +92 -0
  588. package/dist/orders/items.js.map +1 -0
  589. package/dist/orders/queue.js +108 -0
  590. package/dist/orders/queue.js.map +1 -0
  591. package/dist/orders/waiting.d.ts +39 -0
  592. package/dist/orders/waiting.js +149 -0
  593. package/dist/orders/waiting.js.map +1 -0
  594. package/dist/pack.schema.js +13 -0
  595. package/dist/pack.schema.js.map +1 -0
  596. package/dist/pack.schema.json +7622 -841
  597. package/dist/packs/director/index.d.ts +13 -5
  598. package/dist/packs/director/index.js +204 -0
  599. package/dist/packs/director/index.js.map +1 -0
  600. package/dist/packs/heroes/campaign.d.ts +3 -2
  601. package/dist/packs/heroes/campaign.js +241 -0
  602. package/dist/packs/heroes/campaign.js.map +1 -0
  603. package/dist/packs/heroes/carry.d.ts +6 -0
  604. package/dist/packs/heroes/carry.js +112 -0
  605. package/dist/packs/heroes/carry.js.map +1 -0
  606. package/dist/packs/heroes/commands.js +115 -0
  607. package/dist/packs/heroes/commands.js.map +1 -0
  608. package/dist/packs/heroes/fallen.d.ts +43 -0
  609. package/dist/packs/heroes/fallen.js +61 -0
  610. package/dist/packs/heroes/fallen.js.map +1 -0
  611. package/dist/packs/heroes/hire.js +60 -0
  612. package/dist/packs/heroes/hire.js.map +1 -0
  613. package/dist/packs/heroes/index.d.ts +7 -6
  614. package/dist/packs/heroes/index.js +130 -0
  615. package/dist/packs/heroes/index.js.map +1 -0
  616. package/dist/packs/heroes/loop.d.ts +95 -0
  617. package/dist/packs/heroes/loop.js +250 -0
  618. package/dist/packs/heroes/loop.js.map +1 -0
  619. package/dist/packs/heroes/making.d.ts +6 -3
  620. package/dist/packs/heroes/making.js +55 -0
  621. package/dist/packs/heroes/making.js.map +1 -0
  622. package/dist/packs/heroes/respawn.d.ts +3 -3
  623. package/dist/packs/heroes/respawn.js +87 -0
  624. package/dist/packs/heroes/respawn.js.map +1 -0
  625. package/dist/packs/heroes/sets.d.ts +32 -0
  626. package/dist/packs/heroes/sets.js +51 -0
  627. package/dist/packs/heroes/sets.js.map +1 -0
  628. package/dist/packs/heroes/spells.d.ts +16 -0
  629. package/dist/packs/heroes/spells.js +269 -0
  630. package/dist/packs/heroes/spells.js.map +1 -0
  631. package/dist/packs/items/defaults.d.ts +43 -0
  632. package/dist/packs/items/defaults.js +1504 -0
  633. package/dist/packs/items/defaults.js.map +1 -0
  634. package/dist/packs/items/index.d.ts +27 -0
  635. package/dist/packs/items/index.js +214 -0
  636. package/dist/packs/items/index.js.map +1 -0
  637. package/dist/packs/moba/index.d.ts +3 -3
  638. package/dist/packs/moba/index.js +174 -0
  639. package/dist/packs/moba/index.js.map +1 -0
  640. package/dist/packs/pack.d.ts +15 -15
  641. package/dist/packs/pack.js +14 -0
  642. package/dist/packs/pack.js.map +1 -0
  643. package/dist/packs.d.ts +15 -7
  644. package/dist/packs.js +222 -0
  645. package/dist/packs.js.map +1 -0
  646. package/dist/paths.d.ts +2 -0
  647. package/dist/paths.js +109 -0
  648. package/dist/paths.js.map +1 -0
  649. package/dist/plain.js +57 -0
  650. package/dist/plain.js.map +1 -0
  651. package/dist/player.d.ts +33 -10
  652. package/dist/player.js +159 -0
  653. package/dist/player.js.map +1 -0
  654. package/dist/portals.d.ts +1 -1
  655. package/dist/portals.js +194 -0
  656. package/dist/portals.js.map +1 -0
  657. package/dist/prefabs.d.ts +25 -2
  658. package/dist/prefabs.js +239 -0
  659. package/dist/prefabs.js.map +1 -0
  660. package/dist/presetBuildings.js +58 -0
  661. package/dist/presetBuildings.js.map +1 -0
  662. package/dist/presetFoliage.d.ts +27 -0
  663. package/dist/presetFoliage.js +98 -0
  664. package/dist/presetFoliage.js.map +1 -0
  665. package/dist/presetGround.js +65 -0
  666. package/dist/presetGround.js.map +1 -0
  667. package/dist/proxies.d.ts +12 -0
  668. package/dist/proxies.js +79 -0
  669. package/dist/proxies.js.map +1 -0
  670. package/dist/query.d.ts +56 -0
  671. package/dist/query.js +88 -0
  672. package/dist/query.js.map +1 -0
  673. package/dist/races.d.ts +15 -14
  674. package/dist/races.js +172 -0
  675. package/dist/races.js.map +1 -0
  676. package/dist/randomGroups.js +91 -0
  677. package/dist/randomGroups.js.map +1 -0
  678. package/dist/registry.d.ts +117 -53
  679. package/dist/registry.js +323 -0
  680. package/dist/registry.js.map +1 -0
  681. package/dist/remains.d.ts +11 -9
  682. package/dist/remains.js +188 -0
  683. package/dist/remains.js.map +1 -0
  684. package/dist/replication.d.ts +12 -7
  685. package/dist/replication.js +100 -0
  686. package/dist/replication.js.map +1 -0
  687. package/dist/rng.d.ts +2 -0
  688. package/dist/rng.js +40 -0
  689. package/dist/rng.js.map +1 -0
  690. package/dist/rules.d.ts +186 -99
  691. package/dist/rules.js +179 -0
  692. package/dist/rules.js.map +1 -0
  693. package/dist/rulesCheck.d.ts +5 -4
  694. package/dist/rulesCheck.js +693 -0
  695. package/dist/rulesCheck.js.map +1 -0
  696. package/dist/runes.d.ts +2 -2
  697. package/dist/runes.js +80 -0
  698. package/dist/runes.js.map +1 -0
  699. package/dist/save.d.ts +37 -12
  700. package/dist/save.js +532 -0
  701. package/dist/save.js.map +1 -0
  702. package/dist/scenario.d.ts +2 -2
  703. package/dist/scenario.js +99 -0
  704. package/dist/scenario.js.map +1 -0
  705. package/dist/scheduler.d.ts +3 -0
  706. package/dist/scheduler.js +156 -0
  707. package/dist/scheduler.js.map +1 -0
  708. package/dist/score.d.ts +19 -19
  709. package/dist/score.js +709 -0
  710. package/dist/score.js.map +1 -0
  711. package/dist/sequences.d.ts +10 -6
  712. package/dist/sequences.js +206 -0
  713. package/dist/sequences.js.map +1 -0
  714. package/dist/server/doorman.js +154 -0
  715. package/dist/server/doorman.js.map +1 -0
  716. package/dist/server/gameServer.d.ts +16 -1
  717. package/dist/server/gameServer.js +643 -0
  718. package/dist/server/gameServer.js.map +1 -0
  719. package/dist/server/index.d.ts +1 -1
  720. package/dist/server/lobby.js +199 -0
  721. package/dist/server/lobby.js.map +1 -0
  722. package/dist/server/log.js +18 -0
  723. package/dist/server/log.js.map +1 -0
  724. package/dist/server/match.js +267 -0
  725. package/dist/server/match.js.map +1 -0
  726. package/dist/server/mode.d.ts +18 -9
  727. package/dist/server/mode.js +220 -0
  728. package/dist/server/mode.js.map +1 -0
  729. package/dist/{navigation-worker.js → server/navigation-worker.js} +1 -1
  730. package/dist/server/navigation-worker.js.map +1 -0
  731. package/dist/server/navigation.js +39 -0
  732. package/dist/server/navigation.js.map +1 -0
  733. package/dist/server/ops.d.ts +4 -0
  734. package/dist/server/ops.js +137 -0
  735. package/dist/server/ops.js.map +1 -0
  736. package/dist/server/packs.d.ts +3 -3
  737. package/dist/server/packs.js +32 -0
  738. package/dist/server/packs.js.map +1 -0
  739. package/dist/server/ratings.d.ts +5 -0
  740. package/dist/server/ratings.js +104 -0
  741. package/dist/server/ratings.js.map +1 -0
  742. package/dist/server/relay.d.ts +12 -2
  743. package/dist/server/relay.js +144 -0
  744. package/dist/server/relay.js.map +1 -0
  745. package/dist/server/rooms.d.ts +9 -2
  746. package/dist/server/rooms.js +442 -0
  747. package/dist/server/rooms.js.map +1 -0
  748. package/dist/server/seat.js +116 -0
  749. package/dist/server/seat.js.map +1 -0
  750. package/dist/server/seatSettings.d.ts +3 -3
  751. package/dist/server/seatSettings.js +63 -0
  752. package/dist/server/seatSettings.js.map +1 -0
  753. package/dist/server/secret.js +13 -0
  754. package/dist/server/secret.js.map +1 -0
  755. package/dist/server/start.d.ts +13 -6
  756. package/dist/server/start.js +76 -0
  757. package/dist/server/start.js.map +1 -0
  758. package/dist/server/websocket.d.ts +9 -1
  759. package/dist/server/websocket.js +306 -0
  760. package/dist/server/websocket.js.map +1 -0
  761. package/dist/server.js +15 -2861
  762. package/dist/session/can.js +26 -0
  763. package/dist/session/can.js.map +1 -0
  764. package/dist/session/commandReplay.d.ts +8 -2
  765. package/dist/session/commandReplay.js +293 -0
  766. package/dist/session/commandReplay.js.map +1 -0
  767. package/dist/session/debug.js +151 -0
  768. package/dist/session/debug.js.map +1 -0
  769. package/dist/session/delay.js +62 -0
  770. package/dist/session/delay.js.map +1 -0
  771. package/dist/session/delta.d.ts +14 -1
  772. package/dist/session/delta.js +407 -0
  773. package/dist/session/delta.js.map +1 -0
  774. package/dist/session/entityState.js +415 -0
  775. package/dist/session/entityState.js.map +1 -0
  776. package/dist/session/local.d.ts +47 -5
  777. package/dist/session/local.js +670 -0
  778. package/dist/session/local.js.map +1 -0
  779. package/dist/session/memory.d.ts +20 -2
  780. package/dist/session/memory.js +131 -0
  781. package/dist/session/memory.js.map +1 -0
  782. package/dist/session/protocol.d.ts +325 -31
  783. package/dist/session/protocol.js +55 -0
  784. package/dist/session/protocol.js.map +1 -0
  785. package/dist/session/remote.d.ts +74 -12
  786. package/dist/session/remote.js +1394 -0
  787. package/dist/session/remote.js.map +1 -0
  788. package/dist/session/replay.d.ts +11 -2
  789. package/dist/session/replay.js +160 -0
  790. package/dist/session/replay.js.map +1 -0
  791. package/dist/session/seed.js +12 -0
  792. package/dist/session/seed.js.map +1 -0
  793. package/dist/session/share.d.ts +5 -1
  794. package/dist/session/share.js +94 -0
  795. package/dist/session/share.js.map +1 -0
  796. package/dist/session/socket.d.ts +1 -1
  797. package/dist/session/socket.js +29 -0
  798. package/dist/session/socket.js.map +1 -0
  799. package/dist/session/wire.d.ts +5 -0
  800. package/dist/session/wire.js +84 -0
  801. package/dist/session/wire.js.map +1 -0
  802. package/dist/session/worker.d.ts +77 -12
  803. package/dist/session/worker.js +499 -0
  804. package/dist/session/worker.js.map +1 -0
  805. package/dist/shared.d.ts +31 -5
  806. package/dist/shared.js +166 -0
  807. package/dist/shared.js.map +1 -0
  808. package/dist/sides.d.ts +9 -3
  809. package/dist/sides.js +149 -0
  810. package/dist/sides.js.map +1 -0
  811. package/dist/sight.js +85 -0
  812. package/dist/sight.js.map +1 -0
  813. package/dist/simulate-worker.js +1 -1
  814. package/dist/simulate.d.ts +12 -8
  815. package/dist/{simulate-oXBiw1Ff.js → simulate.js} +10 -11
  816. package/dist/simulate.js.map +1 -0
  817. package/dist/smart.js +77 -0
  818. package/dist/smart.js.map +1 -0
  819. package/dist/spatial.d.ts +32 -16
  820. package/dist/spatial.js +234 -0
  821. package/dist/spatial.js.map +1 -0
  822. package/dist/spawning.d.ts +1 -0
  823. package/dist/spawning.js +224 -0
  824. package/dist/spawning.js.map +1 -0
  825. package/dist/stances.d.ts +6 -3
  826. package/dist/stances.js +169 -0
  827. package/dist/stances.js.map +1 -0
  828. package/dist/start.d.ts +10 -10
  829. package/dist/start.js +75 -0
  830. package/dist/start.js.map +1 -0
  831. package/dist/stats.d.ts +42 -16
  832. package/dist/stats.js +290 -0
  833. package/dist/stats.js.map +1 -0
  834. package/dist/summoned.d.ts +52 -0
  835. package/dist/summoned.js +38 -0
  836. package/dist/summoned.js.map +1 -0
  837. package/dist/summons.d.ts +10 -13
  838. package/dist/summons.js +271 -0
  839. package/dist/summons.js.map +1 -0
  840. package/dist/systems/abilities.js +224 -0
  841. package/dist/systems/abilities.js.map +1 -0
  842. package/dist/systems/combat.d.ts +35 -1
  843. package/dist/systems/combat.js +677 -0
  844. package/dist/systems/combat.js.map +1 -0
  845. package/dist/systems/combatTold.d.ts +3 -1
  846. package/dist/systems/combatTold.js +85 -0
  847. package/dist/systems/combatTold.js.map +1 -0
  848. package/dist/systems/construction.js +80 -0
  849. package/dist/systems/construction.js.map +1 -0
  850. package/dist/systems/economy.d.ts +0 -6
  851. package/dist/systems/economy.js +128 -0
  852. package/dist/systems/economy.js.map +1 -0
  853. package/dist/systems/fog.d.ts +1 -1
  854. package/dist/systems/fog.js +120 -0
  855. package/dist/systems/fog.js.map +1 -0
  856. package/dist/systems/life.js +32 -0
  857. package/dist/systems/life.js.map +1 -0
  858. package/dist/systems/movement.d.ts +24 -12
  859. package/dist/systems/movement.js +1247 -0
  860. package/dist/systems/movement.js.map +1 -0
  861. package/dist/systems/orders.js +64 -0
  862. package/dist/systems/orders.js.map +1 -0
  863. package/dist/systems/production.js +322 -0
  864. package/dist/systems/production.js.map +1 -0
  865. package/dist/systems/productionQueue.js +120 -0
  866. package/dist/systems/productionQueue.js.map +1 -0
  867. package/dist/systems/victory.d.ts +1 -1
  868. package/dist/systems/victory.js +56 -0
  869. package/dist/systems/victory.js.map +1 -0
  870. package/dist/talk.d.ts +6 -6
  871. package/dist/talk.js +153 -0
  872. package/dist/talk.js.map +1 -0
  873. package/dist/targeting.d.ts +142 -0
  874. package/dist/targeting.js +49 -0
  875. package/dist/targeting.js.map +1 -0
  876. package/dist/tech.d.ts +20 -3
  877. package/dist/tech.js +239 -0
  878. package/dist/tech.js.map +1 -0
  879. package/dist/techTree.d.ts +7 -0
  880. package/dist/techTree.js +90 -0
  881. package/dist/techTree.js.map +1 -0
  882. package/dist/terrain.d.ts +59 -7
  883. package/dist/terrain.js +389 -0
  884. package/dist/terrain.js.map +1 -0
  885. package/dist/terrainSave.d.ts +6 -0
  886. package/dist/terrainSave.js +74 -0
  887. package/dist/terrainSave.js.map +1 -0
  888. package/dist/testing.d.ts +8 -7
  889. package/dist/testing.js +13 -739
  890. package/dist/testing.js.map +1 -1
  891. package/dist/tiles.d.ts +1 -1
  892. package/dist/tiles.js +43 -0
  893. package/dist/tiles.js.map +1 -0
  894. package/dist/timers.d.ts +29 -4
  895. package/dist/timers.js +242 -0
  896. package/dist/timers.js.map +1 -0
  897. package/dist/tomes.d.ts +4 -4
  898. package/dist/tomes.js +94 -0
  899. package/dist/tomes.js.map +1 -0
  900. package/dist/trade.js +103 -0
  901. package/dist/trade.js.map +1 -0
  902. package/dist/transport.d.ts +6 -1
  903. package/dist/transport.js +281 -0
  904. package/dist/transport.js.map +1 -0
  905. package/dist/tunables.d.ts +10 -3
  906. package/dist/tunables.js +56 -0
  907. package/dist/tunables.js.map +1 -0
  908. package/dist/unitResources.d.ts +67 -0
  909. package/dist/unitResources.js +266 -0
  910. package/dist/unitResources.js.map +1 -0
  911. package/dist/upkeep.d.ts +6 -1
  912. package/dist/upkeep.js +26 -0
  913. package/dist/upkeep.js.map +1 -0
  914. package/dist/veterancy.d.ts +8 -3
  915. package/dist/veterancy.js +131 -0
  916. package/dist/veterancy.js.map +1 -0
  917. package/dist/vision.d.ts +36 -0
  918. package/dist/vision.js +133 -0
  919. package/dist/vision.js.map +1 -0
  920. package/dist/walls.d.ts +1 -1
  921. package/dist/walls.js +278 -0
  922. package/dist/walls.js.map +1 -0
  923. package/dist/world.d.ts +606 -88
  924. package/dist/world.js +1263 -0
  925. package/dist/world.js.map +1 -0
  926. package/package.json +2 -2
  927. package/dist/ai.js.map +0 -1
  928. package/dist/attributes.d.ts +0 -66
  929. package/dist/brain-BvVdUhX8.js +0 -7659
  930. package/dist/brain-BvVdUhX8.js.map +0 -1
  931. package/dist/builds-C6LfgvEU.js +0 -460
  932. package/dist/builds-C6LfgvEU.js.map +0 -1
  933. package/dist/coreComponents-syuh2fPG.js +0 -5149
  934. package/dist/coreComponents-syuh2fPG.js.map +0 -1
  935. package/dist/debugCommands-CzjrSm66.js +0 -14739
  936. package/dist/debugCommands-CzjrSm66.js.map +0 -1
  937. package/dist/determinism-BCymQwiE.js +0 -518
  938. package/dist/determinism-BCymQwiE.js.map +0 -1
  939. package/dist/game-DiJEN-Ks.js +0 -5800
  940. package/dist/game-DiJEN-Ks.js.map +0 -1
  941. package/dist/index.js.map +0 -1
  942. package/dist/inspect-D9dWHmZ0.js.map +0 -1
  943. package/dist/local-Dkovq42k.js +0 -1379
  944. package/dist/local-Dkovq42k.js.map +0 -1
  945. package/dist/missionRules-C-bGxm0Q.js.map +0 -1
  946. package/dist/navigation-worker.js.map +0 -1
  947. package/dist/packs-g5thvmGn.js +0 -3199
  948. package/dist/packs-g5thvmGn.js.map +0 -1
  949. package/dist/profiles-B3NS9jwk.js.map +0 -1
  950. package/dist/server.js.map +0 -1
  951. package/dist/simulate-oXBiw1Ff.js.map +0 -1
@@ -0,0 +1,860 @@
1
+ import { atan2, cos, hypot, sin } from "../exactMath.js";
2
+ import { dist } from "../math.js";
3
+ import { at } from "../defs.js";
4
+ import { manaChanged, missileHit, missileRemoved } from "../engineEvents.js";
5
+ import { replicateEvent, snapshotField } from "../replication.js";
6
+ import { distanceToEdge, moving } from "../entity.js";
7
+ import { agentParamsOf } from "../navigation/agentParams.js";
8
+ import { heroState } from "../hero.js";
9
+ import { conditionHolds, hasTag } from "./chance.js";
10
+ import { effectIndex } from "./effectIndex.js";
11
+ import { land, reached, run } from "./land.js";
12
+ import { avoids, hasBuff, isUntargetable, layerOf, removeBuff } from "./buffs.js";
13
+ import { halt, setGhost } from "../systems/movement.js";
14
+ import { dashing } from "../dashing.js";
15
+ import { EFFECT_FIELDS } from "./effectFields.js";
16
+ import { sortTargets } from "../query.js";
17
+ import { areaReach, edgeRadius, effectArea, inArea } from "./shapes.js";
18
+ //#region src/abilities/effects.ts
19
+ /** Where an effect is in an ability of the registry, for the screen (`effectIndex`) */
20
+ var effectIndexOf = (world, ability, effect) => world.registry.abilities.has(ability) ? effectIndex(world.registry.ability(ability), effect) : void 0;
21
+ /**
22
+ * A kind of effect, its type and what it does together: `defineEffect({ type: 'pull', run: (context, effect) => ... })`, listed in
23
+ * `Rules.effects`. Its fields are said by declaring the type in `EffectTypes`
24
+ * (`declare module '@v12-engine/engine' { interface EffectTypes { pull: { distance: number } } }`), so that a handler
25
+ * reads them typed, and an ability's effect of the type is checked for them
26
+ *
27
+ * @public
28
+ */
29
+ function defineEffect(def) {
30
+ const { type, run, ...options } = def;
31
+ const fields = options.fields?.flatMap((field) => typeof field === "string" ? EFFECT_FIELDS[field] ?? [] : [field]);
32
+ return {
33
+ type,
34
+ run,
35
+ of: (fields) => ({
36
+ ...fields,
37
+ type
38
+ }),
39
+ ...fields && { fields }
40
+ };
41
+ }
42
+ /** The unit effects go off from, where that is one and not the caster */
43
+ var originUnit = (context) => context.origin && "pos" in context.origin && context.origin !== context.caster ? context.origin : void 0;
44
+ var found = [];
45
+ /**
46
+ * Whether an effect may reach a target, as the game says (the `beforeEffect` hook): what a game's own effect asks of
47
+ * each unit it does something to without `effectTargets` (which asks it of every one it gives). True where no handler is
48
+ * there. `missile`: the missile that reached it, for a missile's hit
49
+ *
50
+ * @beta
51
+ */
52
+ function mayReach(context, effect, target, missile) {
53
+ const { world, caster, ability, level, origin, point } = context;
54
+ if (!world.hooks.has("beforeEffect")) return true;
55
+ const event = {
56
+ caster,
57
+ ability,
58
+ level,
59
+ effect,
60
+ target,
61
+ origin,
62
+ point,
63
+ missile,
64
+ cancelled: false
65
+ };
66
+ return !world.hooks.run("beforeEffect", event).cancelled;
67
+ }
68
+ /**
69
+ * Who an effect applies to: the caster (`on: 'caster'`), the target or the caster (no `radius`), or who is within its
70
+ * `radius` of where it landed, as `affects` (`fallback` when it says nothing), `layers`, `kinds`, `tags`, `ifBuff`, `only` and
71
+ * what keeps out of the ability's way (`avoids`) say, the unit it went off from aside (`EffectContext.origin`); and of
72
+ * those, who the game lets it reach (`beforeEffect`, `mayReach`). A handler of a game's own effect calls it as the
73
+ * engine's do: who it gives is told to `effectLanded` once the handler is done
74
+ *
75
+ * @beta
76
+ */
77
+ function effectTargets(context, effect, fallback) {
78
+ const given = chosen(context, effect, candidates(context, effect, fallback));
79
+ const result = context.world.hooks.has("beforeEffect") ? given.filter((target) => mayReach(context, effect, target)) : given;
80
+ reached(result);
81
+ return result;
82
+ }
83
+ /**
84
+ * Of who an effect's area reaches, those it goes to: in its `sort` (the nearest to the middle of its area, where it
85
+ * landed, or the caster for a cone, a line and an arc, where it has a `limit` alone), as many as its `limit`, before
86
+ * the game has its say
87
+ */
88
+ function chosen(context, effect, given) {
89
+ const { sort, limit } = effect;
90
+ if (sort === void 0 && limit === void 0 || effect.on === "caster" || given.length === 0) return given;
91
+ const area = effectArea(context, effect);
92
+ if (!area) return given;
93
+ sortTargets(context.world, given, sort ?? "nearest", {
94
+ x: area.x,
95
+ z: area.z
96
+ });
97
+ if (limit !== void 0) given.length = Math.min(given.length, Math.max(0, Math.floor(at(limit, context.level))));
98
+ return given;
99
+ }
100
+ /** Whether an entity is one an effect applies to by its `ifBuff`, `only`, `kinds`, `tags` and `where` */
101
+ var fitsCommon = (context, effect, entity) => (!effect.ifBuff || hasBuff(entity, effect.ifBuff)) && (effect.only !== "heroes" || entity.has(heroState)) && (!effect.kinds || effect.kinds.includes(entity.def.kind)) && (!effect.tags || hasTag(entity, effect.tags)) && (!effect.where || conditionHolds(context, effect.where, entity));
102
+ /**
103
+ * Of what an effect found to act on by itself (the `burn` effect: what burns where it lands, trees among it, which
104
+ * `effectTargets` leaves out as resources), those it applies to as its fields of whom say (`EffectCommon`): `layers`,
105
+ * `affects` (`fallback` when it says nothing), `ifBuff`, `only`, `kinds` (everything, resources too, when left out),
106
+ * `tags`, `where`, and what keeps out of the ability's way (`avoids`); in its `sort`, as many as its `limit`; and of
107
+ * those, who the game lets it reach (`beforeEffect`). Told to `effectLanded` as `effectTargets`'s are
108
+ *
109
+ * @internal
110
+ */
111
+ function effectFilter(context, effect, things, fallback) {
112
+ const { world, caster } = context;
113
+ const { layers } = effect;
114
+ const affects = effect.affects ?? fallback;
115
+ const picked = chosen(context, effect, things.filter((entity) => (!layers || layers.includes(layerOf(world, entity))) && (affects !== "enemies" || world.areEnemies(caster.owner, entity.owner)) && (affects !== "allies" || world.areAllies(caster.owner, entity.owner)) && (entity === caster || !avoids(world, entity, context.ability)) && (entity === caster || !entity.buffs.length || !isUntargetable(world, entity)) && fitsCommon(context, effect, entity)));
116
+ const result = world.hooks.has("beforeEffect") ? picked.filter((target) => mayReach(context, effect, target)) : picked;
117
+ reached(result);
118
+ return result;
119
+ }
120
+ /** Who an effect applies to, by what it says (`effectTargets`), before the game has its say */
121
+ function candidates(context, effect, fallback) {
122
+ const { world, caster, target, point } = context;
123
+ if (effect.on === "caster") return [caster];
124
+ const { layers } = effect;
125
+ const area = effectArea(context, effect);
126
+ const fits = (entity) => fitsCommon(context, effect, entity);
127
+ if (!area) {
128
+ const one = target ?? caster;
129
+ if (one !== caster && avoids(world, one, context.ability)) return [];
130
+ if (one !== caster && one.buffs.length && isUntargetable(world, one)) return [];
131
+ return (!layers || layers.includes(layerOf(world, one))) && fits(one) ? [one] : [];
132
+ }
133
+ const affects = effect.affects ?? fallback;
134
+ const result = [];
135
+ const origin = originUnit(context);
136
+ const circle = area.shape === "circle";
137
+ const radius = area.radius;
138
+ for (const entity of world.spatial.query(area.x, area.z, circle ? radius : areaReach(area), found)) {
139
+ if (!entity.alive || entity.hidden || entity.isResource || entity === origin) continue;
140
+ if (circle ? distanceToEdge(point, entity) > radius : !inArea(area, entity.pos, edgeRadius(entity))) continue;
141
+ if (layers && !layers.includes(layerOf(world, entity))) continue;
142
+ if (affects === "enemies" && !world.areEnemies(caster.owner, entity.owner)) continue;
143
+ if (affects === "allies" && !world.areAllies(caster.owner, entity.owner)) continue;
144
+ if (entity !== caster && avoids(world, entity, context.ability)) continue;
145
+ if (entity !== caster && entity.buffs.length && isUntargetable(world, entity)) continue;
146
+ if (fits(entity)) result.push(entity);
147
+ }
148
+ return result;
149
+ }
150
+ /** Whether an ability of the caster is charged: its `charge` buff is on it with as many stacks as it can have */
151
+ function isCharged(world, caster, ability) {
152
+ if (!ability.charge) return false;
153
+ const instance = caster.buffs.find((carried) => carried.id === ability.charge);
154
+ return !!instance && (instance.stacks ?? 0) >= (world.registry.buff(ability.charge).maxStacks ?? 1);
155
+ }
156
+ /**
157
+ * Takes someone off the ground for a leap or a throw. Up there it is nobody's obstacle: it pushes no one
158
+ * on its way over them, and goes straight over what cannot be walked
159
+ */
160
+ /**
161
+ * Sends an entity rushing to a spot (`dash.x`, `dash.z`): nothing stops it on the way, its orders wait, and what
162
+ * `dash.effects` do happens where it ends. A leap (`dash.height`) takes it off the ground until it comes down
163
+ *
164
+ * @beta
165
+ */
166
+ function startDash(world, entity, dash) {
167
+ if (entity.isStructure) throw new Error(`${entity.def.id}#${entity.id} is a structure: it cannot rush anywhere`);
168
+ world.wake(entity);
169
+ entity.set(dashing, {
170
+ ...dash,
171
+ from: {
172
+ x: entity.pos.x,
173
+ z: entity.pos.z
174
+ }
175
+ });
176
+ if (dash.height) takeOff(world, entity);
177
+ }
178
+ function takeOff(world, entity) {
179
+ if (!entity.get(moving)) return;
180
+ halt(world, entity);
181
+ world.nav.removeAgent(entity.id);
182
+ }
183
+ /** Back on the ground, where it came down */
184
+ function touchDown(world, entity) {
185
+ const m = entity.get(moving);
186
+ if (!m) return;
187
+ world.nav.addAgent(entity.id, entity.pos, agentParamsOf(entity, m.speed));
188
+ const { ghost } = m;
189
+ m.ghost = false;
190
+ delete m.phased;
191
+ m.anchored = false;
192
+ m.status = "idle";
193
+ setGhost(world, entity, ghost);
194
+ const order = entity.orders[0];
195
+ if (order) order.started = false;
196
+ }
197
+ var crossed = [];
198
+ /** Seconds between two rounds of a zone seeing to what is inside */
199
+ var ZONE_INTERVAL = .25;
200
+ /** Missiles taken out of the world while the missiles were being moved along: the round passes them by */
201
+ var gone = /* @__PURE__ */ new WeakSet();
202
+ /** Takes a missile out of the world, and tells it: false for one that was not in it */
203
+ function drop(world, missile) {
204
+ const index = world.missiles.indexOf(missile);
205
+ if (index < 0) return false;
206
+ world.missiles.splice(index, 1);
207
+ gone.add(missile);
208
+ world.events.emit(missileRemoved, missile);
209
+ return true;
210
+ }
211
+ /**
212
+ * Takes a missile of an ability out of the world before it is done: blocked by a wall of wind, caught, swallowed. It
213
+ * hits nothing more, and every screen is told (`missileRemoved`). With `end`, what happens where it ends
214
+ * (`EffectFields.onEnd`) happens where it is, as if it had come to the end of its way. False for one that is not in the
215
+ * world (`world.missiles`) any more
216
+ *
217
+ * @beta
218
+ */
219
+ function removeMissile(world, missile, options = {}) {
220
+ if (!drop(world, missile)) return false;
221
+ const caster = world.get(missile.source);
222
+ const ability = world.registry.abilities.has(missile.ability) ? world.registry.ability(missile.ability) : void 0;
223
+ if (options.end && caster && ability && missile.effect.onEnd) {
224
+ const point = {
225
+ x: missile.x,
226
+ z: missile.z
227
+ };
228
+ land({
229
+ world,
230
+ caster,
231
+ ability,
232
+ level: missile.level,
233
+ point,
234
+ distance: missile.travelled,
235
+ share: shareOf(missile),
236
+ held: missile.held
237
+ }, missile.effect.onEnd);
238
+ }
239
+ return true;
240
+ }
241
+ /**
242
+ * Ends a zone of an ability (`world.zones`) before its time: what happens at its end (`onEnd`) happens now, unless
243
+ * `onEnd` is false (a zone called off, not finished). False for one that is not in the world any more
244
+ *
245
+ * @beta
246
+ */
247
+ function endZone(world, zone, options = {}) {
248
+ const index = world.zones.indexOf(zone);
249
+ if (index < 0) return false;
250
+ world.zones.splice(index, 1);
251
+ if (options.onEnd !== false) land(zoneContext(world, zone), zone.effect.onEnd);
252
+ return true;
253
+ }
254
+ /**
255
+ * What a zone's effects run with: its caster, its place, the way it was cast (AB10)
256
+ *
257
+ * @internal
258
+ */
259
+ var zoneContext = (world, zone) => ({
260
+ world,
261
+ caster: zone.caster,
262
+ ability: zone.ability,
263
+ level: zone.level,
264
+ point: {
265
+ x: zone.x,
266
+ z: zone.z
267
+ },
268
+ ...zone.from && { origin: {
269
+ x: zone.from.x,
270
+ z: zone.from.z
271
+ } },
272
+ ...zone.heading !== void 0 && { heading: zone.heading }
273
+ });
274
+ /** Whether a missile may hit an entity, as its effect says: who it is for, of what kind, where, and once */
275
+ function mayHit(world, missile, caster, ability, entity) {
276
+ const { effect } = missile;
277
+ if (!entity.alive || entity.hidden || entity.isResource || entity === caster || missile.hit.has(entity.id)) return false;
278
+ if (effect.layers && !effect.layers.includes(layerOf(world, entity))) return false;
279
+ if (effect.kinds && !effect.kinds.includes(entity.def.kind)) return false;
280
+ if (effect.tags && !hasTag(entity, effect.tags)) return false;
281
+ if (avoids(world, entity, ability)) return false;
282
+ if (entity.buffs.length && isUntargetable(world, entity)) return false;
283
+ const affects = effect.affects ?? "enemies";
284
+ if (affects === "enemies" && !world.areEnemies(missile.owner, entity.owner)) return false;
285
+ if (affects === "allies" && !world.areAllies(missile.owner, entity.owner)) return false;
286
+ return true;
287
+ }
288
+ /**
289
+ * What a missile's effects come to after it sprang on as many times as it has (`bounce.falloff` less each time), and went
290
+ * through as many as it has (`falloff` less for each)
291
+ */
292
+ function shareOf(missile) {
293
+ const falloff = missile.effect.bounce?.falloff;
294
+ let share;
295
+ if (missile.bounces && falloff) {
296
+ share = 1;
297
+ for (let i = 0; i < missile.bounces; i++) share *= Math.max(1 - falloff, 0);
298
+ }
299
+ const through = missile.effect.falloff;
300
+ if (missile.struck && through) {
301
+ share ??= 1;
302
+ for (let i = 0; i < missile.struck; i++) share *= Math.max(1 - through, 0);
303
+ }
304
+ return share;
305
+ }
306
+ /** Whether a missile that goes through so many (`pierce`) is used up by what it hit last */
307
+ function usedUp(missile) {
308
+ const { pierce } = missile.effect;
309
+ return pierce === false || typeof pierce === "number" && (missile.struck ?? 0) > pierce;
310
+ }
311
+ /** Whether counting what a missile went through matters to it (`pierce` a number, `falloff`) */
312
+ var counts = (missile) => typeof missile.effect.pierce === "number" || !!missile.effect.falloff;
313
+ /**
314
+ * What a missile does to one it hits: its effects, as much of them as is left after its springs. False where the game
315
+ * would not let it reach that one (`beforeEffect`)
316
+ */
317
+ function strike(world, missile, caster, ability, target) {
318
+ missile.hit.add(target.id);
319
+ const point = {
320
+ x: target.pos.x,
321
+ z: target.pos.z
322
+ };
323
+ const context = {
324
+ world,
325
+ caster,
326
+ ability,
327
+ level: missile.level,
328
+ target,
329
+ point,
330
+ distance: missile.travelled,
331
+ share: shareOf(missile),
332
+ held: missile.held
333
+ };
334
+ if (!mayReach(context, missile.effect, target, missile)) return false;
335
+ if (counts(missile)) missile.struck = (missile.struck ?? 0) + 1;
336
+ if (missile.effect.onWall) missile.last = target.id;
337
+ land(context, missile.effect.effects);
338
+ world.events.emit(missileHit, {
339
+ missile,
340
+ target
341
+ });
342
+ return true;
343
+ }
344
+ /** The nearest a missile may hit within `range` of where it is, the lowest id among those as near */
345
+ function nearestFor(world, missile, caster, ability, range) {
346
+ let next;
347
+ let nearest = Infinity;
348
+ for (const entity of world.spatial.query(missile.x, missile.z, range, crossed)) {
349
+ if (!mayHit(world, missile, caster, ability, entity)) continue;
350
+ const gap = distanceToEdge(missile, entity);
351
+ if (gap > range || gap > nearest || gap === nearest && next && entity.id > next.id) continue;
352
+ nearest = gap;
353
+ next = entity;
354
+ }
355
+ return next;
356
+ }
357
+ /**
358
+ * What a missile passes through where it is now: each it may hit, once. True when one used it up (`pierce`) or it is
359
+ * gone; `back`: on its way back (`hitsOnReturn`), when nothing uses it up
360
+ */
361
+ function passThrough(world, missile, caster, ability, back = false) {
362
+ for (const entity of [...world.spatial.query(missile.x, missile.z, missile.radius, crossed)]) {
363
+ if (!mayHit(world, missile, caster, ability, entity) || distanceToEdge(missile, entity) > missile.radius) continue;
364
+ const struck = strike(world, missile, caster, ability, entity);
365
+ if (gone.has(missile)) return true;
366
+ if (!back && struck && usedUp(missile)) return true;
367
+ }
368
+ return false;
369
+ }
370
+ /** What a missile's split sends off from where it is, the way it flew (`split`) */
371
+ function splitOff(world, missile, caster, ability) {
372
+ const { split } = missile.effect;
373
+ if (!split) return;
374
+ const origin = {
375
+ x: missile.x,
376
+ z: missile.z
377
+ };
378
+ const point = {
379
+ x: missile.x + missile.dx,
380
+ z: missile.z + missile.dz
381
+ };
382
+ run({
383
+ world,
384
+ caster,
385
+ ability,
386
+ level: missile.level,
387
+ point,
388
+ origin,
389
+ heading: atan2(missile.dx, missile.dz),
390
+ distance: missile.travelled
391
+ }, split);
392
+ }
393
+ /**
394
+ * Splits a missile where it is now (`EffectFields.split`), as it would once done: what a game's own recast does (Vel'Koz's
395
+ * Plasma Fission). It is gone, its `onEnd` not happening; false for one not in the world, or with no caster or ability left
396
+ *
397
+ * @beta
398
+ */
399
+ function splitMissile(world, missile) {
400
+ const caster = world.get(missile.source);
401
+ const ability = world.registry.abilities.has(missile.ability) ? world.registry.ability(missile.ability) : void 0;
402
+ if (!caster || !ability || !drop(world, missile)) return false;
403
+ splitOff(world, missile, caster, ability);
404
+ return true;
405
+ }
406
+ /**
407
+ * Turns a missile that is steered (`EffectFields.steer`) towards a point, as its owner's `steer` command does: it turns
408
+ * that way as it flies, as fast as its `rate` lets it. False for one that is not steered, or not in the world
409
+ *
410
+ * @beta
411
+ */
412
+ function steerMissile(world, missile, point) {
413
+ if (!missile.effect.steer || !world.missiles.includes(missile)) return false;
414
+ missile.steerTo = {
415
+ x: point.x,
416
+ z: point.z
417
+ };
418
+ return true;
419
+ }
420
+ /** Turns a steered missile towards where it is steered, at most its rate this round */
421
+ function steer(missile, dt) {
422
+ const to = missile.steerTo;
423
+ if (!to) return;
424
+ const dx = to.x - missile.x;
425
+ const dz = to.z - missile.z;
426
+ if (hypot(dx, dz) < .05) return;
427
+ const now = atan2(missile.dx, missile.dz);
428
+ let turn = atan2(dx, dz) - now;
429
+ while (turn > Math.PI) turn -= Math.PI * 2;
430
+ while (turn < -Math.PI) turn += Math.PI * 2;
431
+ const most = (missile.effect.steer?.rate ?? Math.PI) * dt;
432
+ const heading = now + Math.max(-most, Math.min(most, turn));
433
+ missile.dx = sin(heading);
434
+ missile.dz = cos(heading);
435
+ }
436
+ /**
437
+ * Whether a missile is at a wall (`onWall`): off the play area, on ground nothing walks, on a cliff above where it set
438
+ * off, or at a building or a tree
439
+ */
440
+ function atWall(world, missile) {
441
+ const { terrain } = world;
442
+ const { x, z } = missile;
443
+ if (x < 0 || z < 0 || x >= terrain.width || z >= terrain.depth) return true;
444
+ const cx = Math.floor(x);
445
+ const cz = Math.floor(z);
446
+ if (!terrain.inPlay(cx, cz)) return true;
447
+ const cell = cz * terrain.width + cx;
448
+ if (terrain.blocked[cell] === 2 || terrain.levels[cell] > (missile.floor ?? 0)) return true;
449
+ for (const entity of world.spatial.query(x, z, missile.radius, crossed)) if (entity.alive && !entity.hidden && entity.def.kind !== "unit" && distanceToEdge(missile, entity) <= missile.radius) return true;
450
+ return false;
451
+ }
452
+ /**
453
+ * Where a missile that bounces would be done, it springs on (`EffectFields.bounce`): after the nearest one within its
454
+ * range of where it is that it may hit and has not, the lowest id among those as near. False when it has sprung as many
455
+ * times as it may, or there is nobody to spring on to
456
+ */
457
+ function springOn(world, missile, caster, ability) {
458
+ const { bounce, arc } = missile.effect;
459
+ if (!bounce || missile.bounces >= Math.round(at(bounce.count, missile.level))) return false;
460
+ const next = nearestFor(world, missile, caster, ability, bounce.range);
461
+ if (!next) return false;
462
+ missile.target = next.id;
463
+ missile.bounces++;
464
+ missile.leg = 0;
465
+ missile.left = Infinity;
466
+ missile.stopped = false;
467
+ if (arc?.time && arc.time > 0) missile.speed = dist(missile, next.pos) / arc.time;
468
+ return true;
469
+ }
470
+ /** A missile that comes back (`EffectFields.returns`) turns for the caster where it would be done */
471
+ function turnBack(missile) {
472
+ if (missile.effect.hitsOnReturn) missile.hit = /* @__PURE__ */ new Set();
473
+ missile.returning = true;
474
+ missile.target = 0;
475
+ missile.left = Infinity;
476
+ missile.leg = 0;
477
+ missile.height = 0;
478
+ }
479
+ /** How high a missile's arc carries it, `leg` along a way that has `left` to go: highest halfway */
480
+ var arcHeight = (arc, leg, left) => {
481
+ if (!arc || !(leg + left > 0) || !Number.isFinite(left)) return 0;
482
+ const way = leg / (leg + left);
483
+ return 4 * arc.height * way * (1 - way);
484
+ };
485
+ /** Moves the missiles of abilities along, and lets them do what they do to what they pass through and where they come down */
486
+ function updateMissiles(world, dt) {
487
+ if (!world.missiles.length) return;
488
+ const missiles = world.missiles.slice();
489
+ for (let i = missiles.length - 1; i >= 0; i--) {
490
+ const missile = missiles[i];
491
+ if (gone.has(missile)) continue;
492
+ if (missile.delay > 0) {
493
+ missile.delay -= dt;
494
+ missile.prevX = missile.x;
495
+ missile.prevZ = missile.z;
496
+ continue;
497
+ }
498
+ const caster = world.entities.get(missile.source);
499
+ const { effect } = missile;
500
+ const ability = world.registry.abilities.has(missile.ability) ? world.registry.ability(missile.ability) : void 0;
501
+ missile.prevX = missile.x;
502
+ missile.prevZ = missile.z;
503
+ if (missile.returning) {
504
+ if (!caster?.alive || caster.hidden || !ability) {
505
+ drop(world, missile);
506
+ continue;
507
+ }
508
+ const gap = dist(missile, caster.pos);
509
+ const step = missile.speed * dt;
510
+ if (gap > .01) {
511
+ missile.dx = (caster.pos.x - missile.x) / gap;
512
+ missile.dz = (caster.pos.z - missile.z) / gap;
513
+ }
514
+ if (gap > step + caster.def.radius * .5) {
515
+ missile.x += missile.dx * step;
516
+ missile.z += missile.dz * step;
517
+ missile.travelled += step;
518
+ if (effect.hitsOnReturn && effect.effects?.length) passThrough(world, missile, caster, ability, true);
519
+ continue;
520
+ }
521
+ missile.x = caster.pos.x;
522
+ missile.z = caster.pos.z;
523
+ missile.travelled += gap;
524
+ if (effect.onEnd) {
525
+ const point = {
526
+ x: caster.pos.x,
527
+ z: caster.pos.z
528
+ };
529
+ land({
530
+ world,
531
+ caster,
532
+ ability,
533
+ level: missile.level,
534
+ point,
535
+ distance: missile.travelled,
536
+ share: shareOf(missile),
537
+ held: missile.held
538
+ }, effect.onEnd);
539
+ }
540
+ drop(world, missile);
541
+ continue;
542
+ }
543
+ if (effect.seek && caster && ability) {
544
+ const sought = missile.target ? world.get(missile.target) : void 0;
545
+ if (missile.target && (!sought?.alive || sought.hidden || missile.hit.has(missile.target))) missile.target = 0;
546
+ if (!missile.target) missile.target = nearestFor(world, missile, caster, ability, effect.seek)?.id ?? 0;
547
+ }
548
+ if (missile.target) {
549
+ const target = world.get(missile.target);
550
+ if (!target || target.hidden || !caster || !ability) {
551
+ if (effect.returns && caster && ability) turnBack(missile);
552
+ else drop(world, missile);
553
+ continue;
554
+ }
555
+ const gap = dist(missile, target.pos);
556
+ const step = missile.speed * dt;
557
+ if (gap > .01) {
558
+ missile.dx = (target.pos.x - missile.x) / gap;
559
+ missile.dz = (target.pos.z - missile.z) / gap;
560
+ }
561
+ if (gap <= step + target.def.radius * .5) {
562
+ missile.x = target.pos.x;
563
+ missile.z = target.pos.z;
564
+ missile.travelled += gap;
565
+ missile.leg += gap;
566
+ missile.height = 0;
567
+ strike(world, missile, caster, ability, target);
568
+ if (gone.has(missile) || springOn(world, missile, caster, ability)) continue;
569
+ if (effect.returns) turnBack(missile);
570
+ else {
571
+ drop(world, missile);
572
+ splitOff(world, missile, caster, ability);
573
+ }
574
+ continue;
575
+ }
576
+ missile.x += missile.dx * step;
577
+ missile.z += missile.dz * step;
578
+ missile.travelled += step;
579
+ missile.leg += step;
580
+ missile.height = arcHeight(effect.arc, missile.leg, gap - step);
581
+ continue;
582
+ }
583
+ if (effect.steer) steer(missile, dt);
584
+ const step = Math.min(missile.speed * dt, missile.left);
585
+ missile.x += missile.dx * step;
586
+ missile.z += missile.dz * step;
587
+ missile.left -= step;
588
+ missile.travelled += step;
589
+ missile.leg += step;
590
+ missile.height = arcHeight(effect.arc, missile.leg, missile.left);
591
+ if (!effect.arc) {
592
+ if (caster && ability && effect.effects?.length && passThrough(world, missile, caster, ability) && !gone.has(missile)) {
593
+ if (!springOn(world, missile, caster, ability)) {
594
+ missile.left = 0;
595
+ missile.stopped = true;
596
+ splitOff(world, missile, caster, ability);
597
+ }
598
+ }
599
+ if (missile.target || gone.has(missile)) continue;
600
+ if (effect.onWall && !missile.stopped && caster && ability && atWall(world, missile)) {
601
+ missile.left = 0;
602
+ missile.stopped = true;
603
+ const last = missile.last ? world.get(missile.last) : void 0;
604
+ const point = {
605
+ x: missile.x,
606
+ z: missile.z
607
+ };
608
+ const target = last?.alive && !last.hidden ? last : void 0;
609
+ land({
610
+ world,
611
+ caster,
612
+ ability,
613
+ level: missile.level,
614
+ point,
615
+ target,
616
+ heading: atan2(missile.dx, missile.dz),
617
+ distance: missile.travelled
618
+ }, effect.onWall);
619
+ if (gone.has(missile)) continue;
620
+ }
621
+ if (effect.blocked && !missile.stopped) for (const entity of world.spatial.query(missile.x, missile.z, missile.radius, crossed)) {
622
+ if (!entity.alive || entity.hidden || entity.def.kind === "unit" || distanceToEdge(missile, entity) > missile.radius) continue;
623
+ missile.left = 0;
624
+ missile.stopped = true;
625
+ break;
626
+ }
627
+ }
628
+ if (missile.left <= 0) {
629
+ if (effect.arc && caster && ability && effect.effects?.length) {
630
+ for (const entity of [...world.spatial.query(missile.x, missile.z, missile.radius, crossed)]) {
631
+ if (mayHit(world, missile, caster, ability, entity) && distanceToEdge(missile, entity) <= missile.radius) strike(world, missile, caster, ability, entity);
632
+ if (gone.has(missile)) break;
633
+ }
634
+ if (gone.has(missile)) continue;
635
+ }
636
+ if (!missile.stopped && caster && ability && springOn(world, missile, caster, ability)) continue;
637
+ if (effect.returns && caster && ability) {
638
+ turnBack(missile);
639
+ continue;
640
+ }
641
+ if (caster && ability && !missile.stopped) splitOff(world, missile, caster, ability);
642
+ if (caster && ability && effect.onEnd && !missile.stopped) {
643
+ const point = {
644
+ x: missile.x,
645
+ z: missile.z
646
+ };
647
+ land({
648
+ world,
649
+ caster,
650
+ ability,
651
+ level: missile.level,
652
+ point,
653
+ distance: missile.travelled,
654
+ share: shareOf(missile),
655
+ held: missile.held
656
+ }, effect.onEnd);
657
+ }
658
+ drop(world, missile);
659
+ }
660
+ }
661
+ }
662
+ /** What abilities left behind to happen later, and the ground they go on working on */
663
+ function updateLingering(world, dt) {
664
+ const { delayed } = world;
665
+ for (let i = delayed.length - 1; i >= 0; i--) {
666
+ const entry = delayed[i];
667
+ entry.left -= dt;
668
+ if (entry.left > 0) continue;
669
+ delayed.splice(i, 1);
670
+ const { caster, ability, level, point, from, heading } = entry;
671
+ land({
672
+ world,
673
+ caster,
674
+ ability,
675
+ level,
676
+ point,
677
+ ...from && { origin: from },
678
+ ...heading !== void 0 && { heading }
679
+ }, entry.effects, entry.impact);
680
+ }
681
+ if (!world.zones.length) return;
682
+ const zones = world.zones.slice();
683
+ for (let i = zones.length - 1; i >= 0; i--) {
684
+ const zone = zones[i];
685
+ if (!world.zones.includes(zone)) continue;
686
+ if (zone.follows) {
687
+ const followed = world.get(zone.follows);
688
+ if (!followed?.alive || followed.hidden) {
689
+ endZone(world, zone);
690
+ continue;
691
+ }
692
+ zone.x = followed.pos.x;
693
+ zone.z = followed.pos.z;
694
+ zone.from = {
695
+ x: zone.x,
696
+ z: zone.z
697
+ };
698
+ zone.heading = followed.facing;
699
+ }
700
+ const { onEnter, onLeave, edge } = zone.effect;
701
+ if (onEnter || onLeave || edge) comesAndGoes(world, zone);
702
+ if (!world.zones.includes(zone)) continue;
703
+ const context = zoneContext(world, zone);
704
+ zone.left -= dt;
705
+ zone.next -= dt;
706
+ if (zone.left <= 0) {
707
+ world.zones.splice(world.zones.indexOf(zone), 1);
708
+ land(context, zone.effect.onEnd);
709
+ } else if (zone.next <= 0) {
710
+ zone.next = ZONE_INTERVAL;
711
+ run(context, zone.effect.effects);
712
+ }
713
+ }
714
+ }
715
+ /**
716
+ * Who comes into a zone and goes out of it (`onEnter`, `onLeave`, `edge`): its own area (`radius`, `shape`) as `affects`
717
+ * says, seen to every round. Those inside as it is laid come in, and have not crossed its edge
718
+ */
719
+ function comesAndGoes(world, zone) {
720
+ const context = zoneContext(world, zone);
721
+ const { effect } = zone;
722
+ const now = effectArea(context, effect) ? candidates(context, effect, "enemies").map((entity) => entity.id) : [];
723
+ now.sort((a, b) => a - b);
724
+ const before = zone.inside;
725
+ zone.inside = now;
726
+ const was = new Set(before ?? []);
727
+ const is = new Set(now);
728
+ const to = (id, effects) => {
729
+ const entity = world.get(id);
730
+ if (!effects || !entity?.alive || entity.hidden || !world.zones.includes(zone)) return;
731
+ run({
732
+ ...context,
733
+ target: entity,
734
+ point: {
735
+ x: entity.pos.x,
736
+ z: entity.pos.z
737
+ }
738
+ }, effects);
739
+ };
740
+ for (const id of now) {
741
+ if (was.has(id)) continue;
742
+ to(id, effect.onEnter);
743
+ if (before) to(id, effect.edge);
744
+ }
745
+ for (const id of before ?? []) {
746
+ if (is.has(id)) continue;
747
+ to(id, effect.onLeave);
748
+ to(id, effect.edge);
749
+ }
750
+ }
751
+ /** What was waiting for a pull to end (its order) starts over from where the unit was dragged to */
752
+ function letGo(entity) {
753
+ const order = entity.orders[0];
754
+ if (order) order.started = false;
755
+ }
756
+ /** Carries those who rush somewhere towards where they are going. Nothing holds them up, and what it does happens when they arrive */
757
+ function updateDashes(world, dt) {
758
+ for (const entity of world.index.with(dashing)) {
759
+ const dash = entity.get(dashing);
760
+ if (!dash || !entity.alive) continue;
761
+ const { pulled } = dash;
762
+ const by = pulled && world.get(pulled.by);
763
+ let edge = 0;
764
+ if (pulled?.follows) {
765
+ if (!by?.alive || by.hidden) {
766
+ entity.remove(dashing);
767
+ letGo(entity);
768
+ continue;
769
+ }
770
+ dash.x = by.pos.x;
771
+ dash.z = by.pos.z;
772
+ edge = by.def.radius + entity.def.radius;
773
+ }
774
+ const gap = dist(entity.pos, dash);
775
+ const step = dash.speed * dt;
776
+ if (gap - edge > step) {
777
+ world.place(entity, {
778
+ x: entity.pos.x + (dash.x - entity.pos.x) / gap * step,
779
+ z: entity.pos.z + (dash.z - entity.pos.z) / gap * step
780
+ });
781
+ continue;
782
+ }
783
+ if (!edge) world.place(entity, dash);
784
+ else if (gap > edge) world.place(entity, {
785
+ x: dash.x + (entity.pos.x - dash.x) / gap * edge,
786
+ z: dash.z + (entity.pos.z - dash.z) / gap * edge
787
+ });
788
+ entity.remove(dashing);
789
+ if (dash.buff) removeBuff(world, entity, dash.buff);
790
+ if (dash.height) touchDown(world, entity);
791
+ if (pulled) letGo(entity);
792
+ if (!world.registry.abilities.has(dash.ability)) continue;
793
+ const ability = world.registry.ability(dash.ability);
794
+ const point = {
795
+ x: entity.pos.x,
796
+ z: entity.pos.z
797
+ };
798
+ const to = dash.target ? world.get(dash.target) : void 0;
799
+ if (!pulled) land({
800
+ world,
801
+ caster: entity,
802
+ ability,
803
+ level: dash.level,
804
+ point,
805
+ target: to?.alive && !to.hidden ? to : void 0
806
+ }, dash.effects);
807
+ else if (by?.alive) land({
808
+ world,
809
+ caster: by,
810
+ ability,
811
+ level: dash.level,
812
+ target: entity,
813
+ point
814
+ }, dash.effects);
815
+ }
816
+ }
817
+ /** A missile reaching what it hits, to those who see what it hits */
818
+ var toldMissileHit = replicateEvent(missileHit, "missileHit", ({ missile, target }, view) => view.knows(target) ? {
819
+ type: "missileHit",
820
+ missile: missile.id,
821
+ target: target.id
822
+ } : void 0);
823
+ /** Mana given or taken: its side's alone */
824
+ var toldMana = replicateEvent(manaChanged, "mana", ({ entity, amount, ability }, view) => view.isAlly(entity.owner) ? {
825
+ type: "mana",
826
+ id: entity.id,
827
+ amount,
828
+ ability
829
+ } : void 0);
830
+ /** The missiles of abilities in flight the player is told of: their side's, and those where they see (`Snapshot.missiles`); none to a computer */
831
+ var missilesPart = snapshotField("missiles", (view) => {
832
+ const missiles = [];
833
+ if (view.forComputer) return missiles;
834
+ const { world } = view;
835
+ for (const m of world.missiles) {
836
+ if (!view.isAlly(m.owner) && !view.sees(m.x, m.z)) continue;
837
+ const source = world.get(m.source);
838
+ missiles.push({
839
+ id: m.id,
840
+ ability: m.ability,
841
+ level: m.level,
842
+ source: source && view.knows(source) ? source.id : void 0,
843
+ x: m.x,
844
+ z: m.z,
845
+ radius: m.radius,
846
+ heading: atan2(m.dx, m.dz),
847
+ forming: m.delay > 0 ? 1 - m.delay / m.forms : void 0,
848
+ progress: Number.isFinite(m.left) ? m.travelled / (m.travelled + m.left || 1) : void 0,
849
+ arc: m.height || void 0,
850
+ returning: m.returning || void 0,
851
+ effect: effectIndexOf(world, m.ability, m.effect),
852
+ steered: m.effect.steer && view.isAlly(m.owner) || void 0
853
+ });
854
+ }
855
+ return missiles;
856
+ });
857
+ //#endregion
858
+ export { defineEffect, effectFilter, effectTargets, endZone, isCharged, mayReach, missilesPart, removeMissile, splitMissile, startDash, steerMissile, toldMana, toldMissileHit, updateDashes, updateLingering, updateMissiles, zoneContext };
859
+
860
+ //# sourceMappingURL=effects.js.map