@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"missile.js","names":[],"sources":["../../../src/abilities/effects/missile.ts"],"sourcesContent":["/**\n * Missiles: the engine's effect that sends what flies (`EffectTypes.missile`), shot or thrown in an arc; what they do\n * on the way, and where they spring on to, is `updateMissiles`'\n */\nimport { missileSpawned } from '#engine/engineEvents'\nimport { at, type EffectOf } from '#engine/defs'\nimport { dist } from '#engine/math'\nimport { atan2, cos, hypot, sin } from '#engine/exactMath'\nimport type { Missile } from '#engine/world'\nimport { defineEffect, type EffectContext } from '../effects'\nimport { effectOrigin } from '../land'\nimport { valueOf } from '../amounts'\n\n/**\n * Sends the missiles of a missile effect (`EffectTypes.missile`) off, as the engine's `missile` effect does, and hands\n * them back: what a game's own effect does that wraps a missile (and keeps it, to steer it, or take it out with\n * `removeMissile`). They go off from the context's `origin` (a ball, a shadow) when it has one, the caster's place\n * otherwise, towards its `point` (its `target`, homing); they are the caster's, and what they hit is in its name\n *\n * @beta\n */\nexport function launchMissile(context: EffectContext, effect: EffectOf<'missile'>): Missile[] {\n\tconst { world, caster, ability, level, point, target } = context\n\tconst from = effectOrigin(context)\n\tconst aim = effect.homing && target ? target.pos : point\n\tconst dx = aim.x - from.x\n\tconst dz = aim.z - from.z\n\tconst length = hypot(dx, dz)\n\t// aimed at its own feet: the way it looks then\n\tconst heading = length > 0.01 ? atan2(dx, dz) : caster.facing\n\tconst count = Math.max(Math.round(at(effect.count, level, 1)), 1)\n\tconst range = at(effect.distance, level, effect.toPoint ? Infinity : 10)\n\tconst hit = new Set<number>()\n\tconst homing = effect.homing && target\n\tconst left = homing ? Infinity : effect.toPoint ? Math.min(length, range) : range\n\t// thrown in a time of its own: as fast as it takes to come down then, at its target or at the end of its way\n\tconst time = effect.arc?.time\n\tconst way = homing ? dist(from, target.pos) : left\n\tconst speed = time && time > 0 && Number.isFinite(way) ? way / time : (effect.speed ?? 10)\n\tconst sent: Missile[] = []\n\tfor (let i = 0; i < count; i++) {\n\t\tconst angle = heading + (count > 1 ? (effect.spread ?? 0) * (i / (count - 1) - 0.5) : 0)\n\t\tconst missile: Missile = {\n\t\t\tid: world.newId(),\n\t\t\towner: caster.owner,\n\t\t\tsource: caster.id,\n\t\t\tability: ability.id,\n\t\t\tlevel,\n\t\t\tx: from.x,\n\t\t\tz: from.z,\n\t\t\tprevX: from.x,\n\t\t\tprevZ: from.z,\n\t\t\tdx: sin(angle),\n\t\t\tdz: cos(angle),\n\t\t\tspeed,\n\t\t\tleft,\n\t\t\tdelay: at(effect.delay, level),\n\t\t\tforms: at(effect.delay, level),\n\t\t\tradius: valueOf(context, effect.radius, undefined, 1),\n\t\t\teffect,\n\t\t\thit,\n\t\t\ttarget: homing ? target.id : 0,\n\t\t\ttravelled: 0,\n\t\t\tleg: 0,\n\t\t\theight: 0,\n\t\t\tbounces: 0,\n\t\t\tstopped: false,\n\t\t\t// what a cliff is to one that stops at walls: higher than the ground it set off from\n\t\t\t...(effect.onWall && { floor: world.terrain.levelAt(from.x, from.z) }),\n\t\t\t// how full what sent it was held (AB15): what it lands is grown by it\n\t\t\t...(context.held !== undefined && { held: context.held })\n\t\t}\n\t\tworld.missiles.push(missile)\n\t\tworld.events.emit(missileSpawned, missile)\n\t\tsent.push(missile)\n\t}\n\treturn sent\n}\n\nexport const missileEffect = defineEffect({\n\ttype: 'missile',\n\trun: (context, effect) => void launchMissile(context, effect),\n\tfields: [\n\t\t'speed',\n\t\t'distance',\n\t\t'count',\n\t\t'spread',\n\t\t'homing',\n\t\t'toPoint',\n\t\t'delay',\n\t\t'sight',\n\t\t'blocked',\n\t\t'pierce',\n\t\t'falloff',\n\t\t'arc',\n\t\t'bounce',\n\t\t'returns',\n\t\t'hitsOnReturn',\n\t\t'seek',\n\t\t'steer',\n\t\t'effects',\n\t\t'onEnd',\n\t\t'onWall',\n\t\t'split'\n\t]\n})\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAqBA,SAAgB,cAAc,SAAwB,QAAwC;CAC7F,MAAM,EAAE,OAAO,QAAQ,SAAS,OAAO,OAAO,WAAW;CACzD,MAAM,OAAO,aAAa,OAAO;CACjC,MAAM,MAAM,OAAO,UAAU,SAAS,OAAO,MAAM;CACnD,MAAM,KAAK,IAAI,IAAI,KAAK;CACxB,MAAM,KAAK,IAAI,IAAI,KAAK;CACxB,MAAM,SAAS,MAAM,IAAI,EAAE;CAE3B,MAAM,UAAU,SAAS,MAAO,MAAM,IAAI,EAAE,IAAI,OAAO;CACvD,MAAM,QAAQ,KAAK,IAAI,KAAK,MAAM,GAAG,OAAO,OAAO,OAAO,CAAC,CAAC,GAAG,CAAC;CAChE,MAAM,QAAQ,GAAG,OAAO,UAAU,OAAO,OAAO,UAAU,WAAW,EAAE;CACvE,MAAM,sBAAM,IAAI,IAAY;CAC5B,MAAM,SAAS,OAAO,UAAU;CAChC,MAAM,OAAO,SAAS,WAAW,OAAO,UAAU,KAAK,IAAI,QAAQ,KAAK,IAAI;CAE5E,MAAM,OAAO,OAAO,KAAK;CACzB,MAAM,MAAM,SAAS,KAAK,MAAM,OAAO,GAAG,IAAI;CAC9C,MAAM,QAAQ,QAAQ,OAAO,KAAK,OAAO,SAAS,GAAG,IAAI,MAAM,OAAQ,OAAO,SAAS;CACvF,MAAM,OAAkB,CAAC;CACzB,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,KAAK;EAC/B,MAAM,QAAQ,WAAW,QAAQ,KAAK,OAAO,UAAU,MAAM,KAAK,QAAQ,KAAK,MAAO;EACtF,MAAM,UAAmB;GACxB,IAAI,MAAM,MAAM;GAChB,OAAO,OAAO;GACd,QAAQ,OAAO;GACf,SAAS,QAAQ;GACjB;GACA,GAAG,KAAK;GACR,GAAG,KAAK;GACR,OAAO,KAAK;GACZ,OAAO,KAAK;GACZ,IAAI,IAAI,KAAK;GACb,IAAI,IAAI,KAAK;GACb;GACA;GACA,OAAO,GAAG,OAAO,OAAO,KAAK;GAC7B,OAAO,GAAG,OAAO,OAAO,KAAK;GAC7B,QAAQ,QAAQ,SAAS,OAAO,QAAQ,KAAA,GAAW,CAAC;GACpD;GACA;GACA,QAAQ,SAAS,OAAO,KAAK;GAC7B,WAAW;GACX,KAAK;GACL,QAAQ;GACR,SAAS;GACT,SAAS;GAET,GAAI,OAAO,UAAU,EAAE,OAAO,MAAM,QAAQ,QAAQ,KAAK,GAAG,KAAK,CAAC,EAAE;GAEpE,GAAI,QAAQ,SAAS,KAAA,KAAa,EAAE,MAAM,QAAQ,KAAK;EACxD;EACA,MAAM,SAAS,KAAK,OAAO;EAC3B,MAAM,OAAO,KAAK,gBAAgB,OAAO;EACzC,KAAK,KAAK,OAAO;CAClB;CACA,OAAO;AACR;AAEA,IAAa,gBAAgB,aAAa;CACzC,MAAM;CACN,MAAM,SAAS,WAAW,KAAK,cAAc,SAAS,MAAM;CAC5D,QAAQ;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD;AACD,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Turns the caster into `into` where it stands (`takeForm`), for `duration` seconds or until cast again (`toggle`);
3
+ * cast again in the form, it turns it back where `back` has `ability`, and starts its time over where it has not
4
+ */
5
+ export declare const morphEffect: import("../effects").EffectType<"morph">;
@@ -0,0 +1,43 @@
1
+ import { form } from "../../formState.js";
2
+ import { valueOf } from "../amounts.js";
3
+ import { defineEffect } from "../effects.js";
4
+ import { leaveForm, takeForm } from "../../forms.js";
5
+ //#region src/abilities/effects/morph.ts
6
+ /**
7
+ * Turns the caster into `into` where it stands (`takeForm`), for `duration` seconds or until cast again (`toggle`);
8
+ * cast again in the form, it turns it back where `back` has `ability`, and starts its time over where it has not
9
+ */
10
+ var morphEffect = defineEffect({
11
+ type: "morph",
12
+ run: (context, effect) => {
13
+ const { world, caster, ability } = context;
14
+ if (!effect.into || caster.def.kind !== "unit" || !caster.alive) return;
15
+ const back = effect.back ?? (effect.toggle ? [
16
+ "ability",
17
+ "time",
18
+ "death"
19
+ ] : ["time", "death"]);
20
+ const duration = effect.duration === void 0 ? void 0 : valueOf(context, effect.duration);
21
+ const current = caster.get(form);
22
+ if (current?.by === ability.id) {
23
+ if (current.back.includes("ability")) leaveForm(world, caster, "ability");
24
+ else if (duration !== void 0 && back.includes("time")) current.until = world.time + duration;
25
+ return;
26
+ }
27
+ takeForm(world, caster, effect.into, {
28
+ duration,
29
+ back,
30
+ by: ability.id
31
+ });
32
+ },
33
+ fields: [
34
+ "into",
35
+ "duration",
36
+ "toggle",
37
+ "back"
38
+ ]
39
+ });
40
+ //#endregion
41
+ export { morphEffect };
42
+
43
+ //# sourceMappingURL=morph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"morph.js","names":[],"sources":["../../../src/abilities/effects/morph.ts"],"sourcesContent":["/**\n * The engine's effect that turns a hero into one of its forms and back (`EffectTypes.morph`, E2E-PLAN LB2)\n */\nimport type { MorphBack } from '#engine/defs'\nimport { leaveForm, takeForm } from '#engine/forms'\nimport { form } from '#engine/formState'\nimport { valueOf } from '../amounts'\nimport { defineEffect } from '../effects'\n\n/**\n * Turns the caster into `into` where it stands (`takeForm`), for `duration` seconds or until cast again (`toggle`);\n * cast again in the form, it turns it back where `back` has `ability`, and starts its time over where it has not\n */\nexport const morphEffect = defineEffect({ type: 'morph', run: (context, effect) => {\n\t\tconst { world, caster, ability } = context\n\t\tif (!effect.into || caster.def.kind !== 'unit' || !caster.alive) return\n\t\tconst back: MorphBack[] = effect.back ?? (effect.toggle ? ['ability', 'time', 'death'] : ['time', 'death'])\n\t\tconst duration = effect.duration === undefined ? undefined : valueOf(context, effect.duration)\n\t\tconst current = caster.get(form)\n\t\tif (current?.by === ability.id) {\n\t\t\tif (current.back.includes('ability')) leaveForm(world, caster, 'ability')\n\t\t\telse if (duration !== undefined && back.includes('time')) current.until = world.time + duration\n\t\t\treturn\n\t\t}\n\t\ttakeForm(world, caster, effect.into, { duration, back, by: ability.id })\n\t}, fields: ['into', 'duration', 'toggle', 'back'] })\n"],"mappings":";;;;;;;;;AAaA,IAAa,cAAc,aAAa;CAAE,MAAM;CAAS,MAAM,SAAS,WAAW;EACjF,MAAM,EAAE,OAAO,QAAQ,YAAY;EACnC,IAAI,CAAC,OAAO,QAAQ,OAAO,IAAI,SAAS,UAAU,CAAC,OAAO,OAAO;EACjE,MAAM,OAAoB,OAAO,SAAS,OAAO,SAAS;GAAC;GAAW;GAAQ;EAAO,IAAI,CAAC,QAAQ,OAAO;EACzG,MAAM,WAAW,OAAO,aAAa,KAAA,IAAY,KAAA,IAAY,QAAQ,SAAS,OAAO,QAAQ;EAC7F,MAAM,UAAU,OAAO,IAAI,IAAI;EAC/B,IAAI,SAAS,OAAO,QAAQ,IAAI;GAC/B,IAAI,QAAQ,KAAK,SAAS,SAAS,GAAG,UAAU,OAAO,QAAQ,SAAS;QACnE,IAAI,aAAa,KAAA,KAAa,KAAK,SAAS,MAAM,GAAG,QAAQ,QAAQ,MAAM,OAAO;GACvF;EACD;EACA,SAAS,OAAO,QAAQ,OAAO,MAAM;GAAE;GAAU;GAAM,IAAI,QAAQ;EAAG,CAAC;CACxE;CAAG,QAAQ;EAAC;EAAQ;EAAY;EAAU;CAAM;AAAE,CAAC"}
@@ -1,11 +1,23 @@
1
+ import type { AbilityDef, EffectDef } from '#engine/defs';
2
+ /** Which effect of its ability sends a rush, for the screen to draw it by (`Dash.effect`) */
3
+ export declare function screenOf(ability: AbilityDef, effect: EffectDef): {
4
+ effect?: number;
5
+ };
1
6
  /** The caster is somewhere else at once: towards where it was aimed, as far as `distance` lets it */
2
- export declare const blinkEffect: import("../effects").EffectKind<"blink">;
7
+ export declare const blinkEffect: import("../effects").EffectType<"blink">;
3
8
  /**
4
9
  * The caster is somewhere else at once, however far (`to`): its side's home (`homeOf`, a recall), where it was aimed
5
10
  * (`point`, when left out), or by its target. Nothing where there is no such place
6
11
  */
7
- export declare const teleportEffect: import("../effects").EffectKind<"teleport">;
12
+ export declare const teleportEffect: import("../effects").EffectType<"teleport">;
8
13
  /** The caster rushes to the spot, through whatever is in the way. `effects` happen around where it ends */
9
- export declare const dashEffect: import("../effects").EffectKind<"dash">;
14
+ export declare const dashEffect: import("../effects").EffectType<"dash">;
10
15
  /** Throws the targets `distance` away from the caster. Nothing stops them on the way, and who is rushing somewhere is not thrown */
11
- export declare const knockbackEffect: import("../effects").EffectKind<"knockback">;
16
+ export declare const knockbackEffect: import("../effects").EffectType<"knockback">;
17
+ /**
18
+ * Drags the targets to the caster's edge, after it as it moves, or to where the effect landed (`toPoint`), in `seconds`
19
+ * at the speed that takes from where they are; `effects` happen to each as it arrives, in the caster's name. Meanwhile
20
+ * it is on a rush (`dashing`, `pulled`): its orders wait and start over after, and it neither casts, nor blinks, nor
21
+ * dashes, nor is thrown. Who is rushing somewhere already, and structures, are not pulled
22
+ */
23
+ export declare const pullEffect: import("../effects").EffectType<"pull">;
@@ -0,0 +1,212 @@
1
+ import { atan2, hypot } from "../../exactMath.js";
2
+ import { dist } from "../../math.js";
3
+ import { at } from "../../defs.js";
4
+ import { moving } from "../../entity.js";
5
+ import { effectIndex } from "../effectIndex.js";
6
+ import { applyBuff, isGrounded, isUnstoppable } from "../buffs.js";
7
+ import { halt } from "../../systems/movement.js";
8
+ import { cancelSwing } from "../../systems/combat.js";
9
+ import { dashing } from "../../dashing.js";
10
+ import { defineEffect, effectTargets, startDash } from "../effects.js";
11
+ import { homeOf } from "../../home.js";
12
+ //#region src/abilities/effects/moves.ts
13
+ /**
14
+ * Moves: the engine's effects that put the caster elsewhere (`EffectTypes.blink`, `teleport`), rush it there (`dash`),
15
+ * throw what it hits (`knockback`) or drag it in (`pull`). Who is being dragged moves itself nowhere
16
+ */
17
+ /** Which effect of its ability sends a rush, for the screen to draw it by (`Dash.effect`) */
18
+ function screenOf(ability, effect) {
19
+ const index = effectIndex(ability, effect);
20
+ return index === void 0 ? {} : { effect: index };
21
+ }
22
+ /** How finely the way of a leap is looked over for ground that stands too high */
23
+ var LEAP_STEP = .5;
24
+ /** The last spot on the way from one place to another before the ground rises above `top` */
25
+ function beforeWall(world, from, to, top) {
26
+ const steps = Math.ceil(dist(from, to) / LEAP_STEP);
27
+ let last = {
28
+ x: from.x,
29
+ z: from.z
30
+ };
31
+ for (let i = 1; i <= steps; i++) {
32
+ const t = i / steps;
33
+ const point = {
34
+ x: from.x + (to.x - from.x) * t,
35
+ z: from.z + (to.z - from.z) * t
36
+ };
37
+ if (world.terrain.heightAt(point.x, point.z) > top) return last;
38
+ last = point;
39
+ }
40
+ return last;
41
+ }
42
+ /** Being dragged by a `pull`: it goes nowhere of its own, at once or on a rush */
43
+ var pulled = (entity) => !!entity.get(dashing)?.pulled;
44
+ /** Kept from rushing or jumping of its own (`BuffDef.grounded`), or dragged */
45
+ var held = (world, entity) => pulled(entity) || entity.buffs.length > 0 && isGrounded(world, entity);
46
+ /** Nothing moves it that it does not want to (`BuffDef.unstoppable`) */
47
+ var unmoved = (world, entity) => entity.buffs.length > 0 && isUnstoppable(world, entity);
48
+ /** The caster is somewhere else at once: towards where it was aimed, as far as `distance` lets it */
49
+ var blinkEffect = defineEffect({
50
+ type: "blink",
51
+ run: (context, effect) => {
52
+ const { world, caster, point, level } = context;
53
+ if (held(world, caster)) return;
54
+ const dx = point.x - caster.pos.x;
55
+ const dz = point.z - caster.pos.z;
56
+ const length = hypot(dx, dz);
57
+ if (length < .01) return;
58
+ const step = Math.min(length, at(effect.distance, level, 5));
59
+ const aim = {
60
+ x: caster.pos.x + dx / length * step,
61
+ z: caster.pos.z + dz / length * step
62
+ };
63
+ const spot = (caster.flying ? world.air : world.nav).closestPoint(aim, 3) ?? caster.pos;
64
+ world.place(caster, spot);
65
+ caster.prevPos.x = spot.x;
66
+ caster.prevPos.z = spot.z;
67
+ point.x = spot.x;
68
+ point.z = spot.z;
69
+ },
70
+ fields: ["distance"]
71
+ });
72
+ /**
73
+ * The caster is somewhere else at once, however far (`to`): its side's home (`homeOf`, a recall), where it was aimed
74
+ * (`point`, when left out), or by its target. Nothing where there is no such place
75
+ */
76
+ var teleportEffect = defineEffect({
77
+ type: "teleport",
78
+ run: (context, effect) => {
79
+ const { world, caster, point, target } = context;
80
+ if (pulled(caster)) return;
81
+ const to = effect.to ?? "point";
82
+ const aim = to === "home" ? homeOf(world, caster.owner, caster.pos) : to === "target" ? target?.pos : point;
83
+ if (!aim) return;
84
+ const spot = (caster.flying ? world.air : world.nav).closestPoint(aim, 6) ?? aim;
85
+ world.place(caster, spot);
86
+ caster.prevPos.x = spot.x;
87
+ caster.prevPos.z = spot.z;
88
+ point.x = spot.x;
89
+ point.z = spot.z;
90
+ },
91
+ fields: ["to"]
92
+ });
93
+ /** The caster rushes to the spot, through whatever is in the way. `effects` happen around where it ends */
94
+ var dashEffect = defineEffect({
95
+ type: "dash",
96
+ run: (context, effect) => {
97
+ const { world, caster, ability, level, point } = context;
98
+ if (held(world, caster)) return;
99
+ const gap = dist(caster.pos, point);
100
+ const far = Math.min(gap, at(effect.distance, level, Infinity));
101
+ let aim = gap > far ? {
102
+ x: caster.pos.x + (point.x - caster.pos.x) / gap * far,
103
+ z: caster.pos.z + (point.z - caster.pos.z) / gap * far
104
+ } : point;
105
+ const nav = caster.flying ? world.air : world.nav;
106
+ let spot = nav.closestPoint(aim, 4) ?? aim;
107
+ if (effect.leap && effect.climb !== void 0) {
108
+ const top = world.terrain.heightAt(caster.pos.x, caster.pos.z) + effect.climb;
109
+ aim = beforeWall(world, caster.pos, aim, top);
110
+ spot = nav.closestPoint(aim, 2) ?? aim;
111
+ if (world.terrain.heightAt(spot.x, spot.z) > top) spot = aim;
112
+ }
113
+ if (dist(caster.pos, spot) > .05) caster.facing = atan2(spot.x - caster.pos.x, spot.z - caster.pos.z);
114
+ startDash(world, caster, {
115
+ x: spot.x,
116
+ z: spot.z,
117
+ speed: effect.speed ?? 18,
118
+ ability: ability.id,
119
+ level,
120
+ ...screenOf(ability, effect),
121
+ effects: effect.effects ?? [],
122
+ height: effect.leap,
123
+ buff: effect.buff
124
+ });
125
+ if (effect.buff) applyBuff(world, caster, effect.buff, Infinity, caster, level);
126
+ },
127
+ fields: [
128
+ "distance",
129
+ "leap",
130
+ "climb",
131
+ "speed",
132
+ "effects",
133
+ "buff"
134
+ ]
135
+ });
136
+ /** Throws the targets `distance` away from the caster. Nothing stops them on the way, and who is rushing somewhere is not thrown */
137
+ var knockbackEffect = defineEffect({
138
+ type: "knockback",
139
+ run: (context, effect) => {
140
+ const { world, caster, ability, level } = context;
141
+ const far = at(effect.distance, level, 4);
142
+ for (const entity of effectTargets(context, effect, "enemies")) {
143
+ if (!entity.isUnit || !entity.get(moving) || entity.get(dashing) || unmoved(world, entity)) continue;
144
+ const dx = entity.pos.x - caster.pos.x;
145
+ const dz = entity.pos.z - caster.pos.z;
146
+ const gap = hypot(dx, dz) || 1;
147
+ const to = {
148
+ x: entity.pos.x + dx / gap * far,
149
+ z: entity.pos.z + dz / gap * far
150
+ };
151
+ const spot = (entity.flying ? world.air : world.nav).closestPoint(to, 4) ?? to;
152
+ startDash(world, entity, {
153
+ x: spot.x,
154
+ z: spot.z,
155
+ speed: effect.speed ?? 22,
156
+ ability: ability.id,
157
+ level,
158
+ ...screenOf(ability, effect),
159
+ effects: [],
160
+ height: effect.leap
161
+ });
162
+ }
163
+ },
164
+ fields: [
165
+ "distance",
166
+ "speed",
167
+ "leap"
168
+ ]
169
+ });
170
+ /**
171
+ * Drags the targets to the caster's edge, after it as it moves, or to where the effect landed (`toPoint`), in `seconds`
172
+ * at the speed that takes from where they are; `effects` happen to each as it arrives, in the caster's name. Meanwhile
173
+ * it is on a rush (`dashing`, `pulled`): its orders wait and start over after, and it neither casts, nor blinks, nor
174
+ * dashes, nor is thrown. Who is rushing somewhere already, and structures, are not pulled
175
+ */
176
+ var pullEffect = defineEffect({
177
+ type: "pull",
178
+ run: (context, effect) => {
179
+ const { world, caster, ability, level, point } = context;
180
+ const seconds = Math.max(at(effect.seconds, level, .5), .05);
181
+ const follows = !effect.toPoint;
182
+ for (const entity of effectTargets(context, effect, "enemies")) {
183
+ if (entity === caster || !entity.isUnit || !entity.get(moving) || entity.get(dashing) || unmoved(world, entity)) continue;
184
+ const to = follows ? caster.pos : point;
185
+ const way = Math.max(dist(entity.pos, to) - (follows ? caster.def.radius + entity.def.radius : 0), 0);
186
+ halt(world, entity);
187
+ cancelSwing(world, entity);
188
+ startDash(world, entity, {
189
+ x: to.x,
190
+ z: to.z,
191
+ speed: Math.max(way / seconds, .01),
192
+ ability: ability.id,
193
+ level,
194
+ ...screenOf(ability, effect),
195
+ effects: effect.effects ?? [],
196
+ pulled: {
197
+ by: caster.id,
198
+ follows
199
+ }
200
+ });
201
+ }
202
+ },
203
+ fields: [
204
+ "seconds",
205
+ "toPoint",
206
+ "effects"
207
+ ]
208
+ });
209
+ //#endregion
210
+ export { blinkEffect, dashEffect, knockbackEffect, pullEffect, screenOf, teleportEffect };
211
+
212
+ //# sourceMappingURL=moves.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moves.js","names":[],"sources":["../../../src/abilities/effects/moves.ts"],"sourcesContent":["/**\n * Moves: the engine's effects that put the caster elsewhere (`EffectTypes.blink`, `teleport`), rush it there (`dash`),\n * throw what it hits (`knockback`) or drag it in (`pull`). Who is being dragged moves itself nowhere\n */\nimport { at } from '#engine/defs'\nimport { dashing } from '#engine/dashing'\nimport { moving } from '#engine/entity'\nimport { atan2, hypot } from '#engine/exactMath'\nimport { homeOf } from '#engine/home'\nimport { dist, type Vec2 } from '#engine/math'\nimport { cancelSwing } from '#engine/systems/combat'\nimport { halt } from '#engine/systems/movement'\nimport type { Entity } from '#engine/entity'\nimport type { World } from '#engine/world'\nimport { applyBuff, isGrounded, isUnstoppable } from '../buffs'\nimport { defineEffect, effectTargets, startDash } from '../effects'\nimport { effectIndex } from '../effectIndex'\nimport type { AbilityDef, EffectDef } from '#engine/defs'\n\n/** Which effect of its ability sends a rush, for the screen to draw it by (`Dash.effect`) */\nexport function screenOf(ability: AbilityDef, effect: EffectDef): { effect?: number } {\n\tconst index = effectIndex(ability, effect)\n\treturn index === undefined ? {} : { effect: index }\n}\n\n/** How finely the way of a leap is looked over for ground that stands too high */\nconst LEAP_STEP = 0.5\n\n/** The last spot on the way from one place to another before the ground rises above `top` */\nfunction beforeWall(world: World, from: Vec2, to: Vec2, top: number): Vec2 {\n\tconst steps = Math.ceil(dist(from, to) / LEAP_STEP)\n\tlet last = { x: from.x, z: from.z }\n\tfor (let i = 1; i <= steps; i++) {\n\t\tconst t = i / steps\n\t\tconst point = { x: from.x + (to.x - from.x) * t, z: from.z + (to.z - from.z) * t }\n\t\tif (world.terrain.heightAt(point.x, point.z) > top) return last\n\t\tlast = point\n\t}\n\treturn last\n}\n\n/** Being dragged by a `pull`: it goes nowhere of its own, at once or on a rush */\nconst pulled = (entity: Entity): boolean => !!entity.get(dashing)?.pulled\n\n/** Kept from rushing or jumping of its own (`BuffDef.grounded`), or dragged */\nconst held = (world: World, entity: Entity): boolean => pulled(entity) || (entity.buffs.length > 0 && isGrounded(world, entity))\n\n/** Nothing moves it that it does not want to (`BuffDef.unstoppable`) */\nconst unmoved = (world: World, entity: Entity): boolean => entity.buffs.length > 0 && isUnstoppable(world, entity)\n\n/** The caster is somewhere else at once: towards where it was aimed, as far as `distance` lets it */\nexport const blinkEffect = defineEffect({ type: 'blink', run: (context, effect) => {\n\t\tconst { world, caster, point, level } = context\n\t\tif (held(world, caster)) return\n\t\tconst dx = point.x - caster.pos.x\n\t\tconst dz = point.z - caster.pos.z\n\t\tconst length = hypot(dx, dz)\n\t\tif (length < 0.01) return\n\t\tconst step = Math.min(length, at(effect.distance, level, 5))\n\t\tconst aim = { x: caster.pos.x + (dx / length) * step, z: caster.pos.z + (dz / length) * step }\n\t\tconst spot = (caster.flying ? world.air : world.nav).closestPoint(aim, 3) ?? caster.pos\n\t\tworld.place(caster, spot)\n\t\tcaster.prevPos.x = spot.x\n\t\tcaster.prevPos.z = spot.z\n\t\t// where it went is where the ability landed, for whoever draws it\n\t\tpoint.x = spot.x\n\t\tpoint.z = spot.z\n\t}, fields: ['distance'] })\n\n/**\n * The caster is somewhere else at once, however far (`to`): its side's home (`homeOf`, a recall), where it was aimed\n * (`point`, when left out), or by its target. Nothing where there is no such place\n */\nexport const teleportEffect = defineEffect({ type: 'teleport', run: (context, effect) => {\n\t\tconst { world, caster, point, target } = context\n\t\tif (pulled(caster)) return\n\t\tconst to = effect.to ?? 'point'\n\t\tconst aim = to === 'home' ? homeOf(world, caster.owner, caster.pos) : to === 'target' ? target?.pos : point\n\t\tif (!aim) return\n\t\tconst spot = (caster.flying ? world.air : world.nav).closestPoint(aim, 6) ?? aim\n\t\tworld.place(caster, spot)\n\t\tcaster.prevPos.x = spot.x\n\t\tcaster.prevPos.z = spot.z\n\t\tpoint.x = spot.x\n\t\tpoint.z = spot.z\n\t}, fields: ['to'] })\n\n/** The caster rushes to the spot, through whatever is in the way. `effects` happen around where it ends */\nexport const dashEffect = defineEffect({ type: 'dash', run: (context, effect) => {\n\t\tconst { world, caster, ability, level, point } = context\n\t\tif (held(world, caster)) return\n\t\t// no farther than `distance`, towards where it was aimed\n\t\tconst gap = dist(caster.pos, point)\n\t\tconst far = Math.min(gap, at(effect.distance, level, Infinity))\n\t\tlet aim =\n\t\t\tgap > far ? { x: caster.pos.x + ((point.x - caster.pos.x) / gap) * far, z: caster.pos.z + ((point.z - caster.pos.z) / gap) * far } : point\n\t\tconst nav = caster.flying ? world.air : world.nav\n\t\tlet spot = nav.closestPoint(aim, 4) ?? aim\n\t\tif (effect.leap && effect.climb !== undefined) {\n\t\t\t// a wall too high to get over: down in front of it, and not on top of it by way of the nearest place to stand\n\t\t\tconst top = world.terrain.heightAt(caster.pos.x, caster.pos.z) + effect.climb\n\t\t\taim = beforeWall(world, caster.pos, aim, top)\n\t\t\tspot = nav.closestPoint(aim, 2) ?? aim\n\t\t\tif (world.terrain.heightAt(spot.x, spot.z) > top) spot = aim\n\t\t}\n\t\tif (dist(caster.pos, spot) > 0.05) caster.facing = atan2(spot.x - caster.pos.x, spot.z - caster.pos.z)\n\t\tstartDash(world, caster, {\n\t\t\tx: spot.x,\n\t\t\tz: spot.z,\n\t\t\tspeed: effect.speed ?? 18,\n\t\t\tability: ability.id,\n\t\t\tlevel,\n\t\t\t...screenOf(ability, effect),\n\t\t\teffects: effect.effects ?? [],\n\t\t\theight: effect.leap,\n\t\t\tbuff: effect.buff\n\t\t})\n\t\t// what it is while it is on its way, like out of reach of the ground\n\t\tif (effect.buff) applyBuff(world, caster, effect.buff, Infinity, caster, level)\n\t}, fields: ['distance', 'leap', 'climb', 'speed', 'effects', 'buff'] })\n\n/** Throws the targets `distance` away from the caster. Nothing stops them on the way, and who is rushing somewhere is not thrown */\nexport const knockbackEffect = defineEffect({ type: 'knockback', run: (context, effect) => {\n\t\tconst { world, caster, ability, level } = context\n\t\tconst far = at(effect.distance, level, 4)\n\t\tfor (const entity of effectTargets(context, effect, 'enemies')) {\n\t\t\tif (!entity.isUnit || !entity.get(moving) || entity.get(dashing) || unmoved(world, entity)) continue\n\t\t\tconst dx = entity.pos.x - caster.pos.x\n\t\t\tconst dz = entity.pos.z - caster.pos.z\n\t\t\tconst gap = hypot(dx, dz) || 1\n\t\t\tconst to = { x: entity.pos.x + (dx / gap) * far, z: entity.pos.z + (dz / gap) * far }\n\t\t\tconst spot = (entity.flying ? world.air : world.nav).closestPoint(to, 4) ?? to\n\t\t\tstartDash(world, entity, {\n\t\t\t\tx: spot.x,\n\t\t\t\tz: spot.z,\n\t\t\t\tspeed: effect.speed ?? 22,\n\t\t\t\tability: ability.id,\n\t\t\t\tlevel,\n\t\t\t\t...screenOf(ability, effect),\n\t\t\t\teffects: [],\n\t\t\t\theight: effect.leap\n\t\t\t})\n\t\t}\n\t}, fields: ['distance', 'speed', 'leap'] })\n\n/**\n * Drags the targets to the caster's edge, after it as it moves, or to where the effect landed (`toPoint`), in `seconds`\n * at the speed that takes from where they are; `effects` happen to each as it arrives, in the caster's name. Meanwhile\n * it is on a rush (`dashing`, `pulled`): its orders wait and start over after, and it neither casts, nor blinks, nor\n * dashes, nor is thrown. Who is rushing somewhere already, and structures, are not pulled\n */\nexport const pullEffect = defineEffect({ type: 'pull', run: (context, effect) => {\n\t\tconst { world, caster, ability, level, point } = context\n\t\tconst seconds = Math.max(at(effect.seconds, level, 0.5), 0.05)\n\t\tconst follows = !effect.toPoint\n\t\tfor (const entity of effectTargets(context, effect, 'enemies')) {\n\t\t\tif (entity === caster || !entity.isUnit || !entity.get(moving) || entity.get(dashing) || unmoved(world, entity)) continue\n\t\t\tconst to = follows ? caster.pos : point\n\t\t\tconst way = Math.max(dist(entity.pos, to) - (follows ? caster.def.radius + entity.def.radius : 0), 0)\n\t\t\t// what it was doing waits for the end of the drag, its swing broken off\n\t\t\thalt(world, entity)\n\t\t\tcancelSwing(world, entity)\n\t\t\tstartDash(world, entity, {\n\t\t\t\tx: to.x,\n\t\t\t\tz: to.z,\n\t\t\t\tspeed: Math.max(way / seconds, 0.01),\n\t\t\t\tability: ability.id,\n\t\t\t\tlevel,\n\t\t\t\t...screenOf(ability, effect),\n\t\t\t\teffects: effect.effects ?? [],\n\t\t\t\tpulled: { by: caster.id, follows }\n\t\t\t})\n\t\t}\n\t}, fields: ['seconds', 'toPoint', 'effects'] })\n"],"mappings":"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"}
@@ -1,15 +1,25 @@
1
- /** `onHit` is about attacks, not about the moment of casting: see the function of that name */
2
- export declare const onHitEffect: import("../effects").EffectKind<"onHit">;
3
- /** For passives: `effects` happen around whoever the carrier kills. The killing sets it off, see `onKill` */
4
- export declare const onKillEffect: import("../effects").EffectKind<"onKill">;
5
- /** For passives: `effects` happen to the carrier whenever it casts. The casting sets it off, see `onCast` */
6
- export declare const onCastEffect: import("../effects").EffectKind<"onCast">;
1
+ /** `onHit` is about attacks, not about the moment of casting: an attack landing sets it off (`attackLanded`) */
2
+ export declare const onHitEffect: import("../effects").EffectType<"onHit">;
3
+ /** For passives: `effects` happen around whoever the carrier kills. The killing sets it off, see `killTriggers` */
4
+ export declare const onKillEffect: import("../effects").EffectType<"onKill">;
5
+ /** For passives: `effects` happen to the carrier whenever it casts. The casting sets it off, see `castTriggers` */
6
+ export declare const onCastEffect: import("../effects").EffectType<"onCast">;
7
+ /** For passives: `effects` happen to who hurt the carrier. Being hurt sets it off, see `damageTriggers` */
8
+ export declare const onDamagedEffect: import("../effects").EffectType<"onDamaged">;
9
+ /** For passives: `effects` happen to an enemy an ability of the carrier hurt. The hurt sets it off, see `damageTriggers` */
10
+ export declare const onAbilityHitEffect: import("../effects").EffectType<"onAbilityHit">;
11
+ /** For passives: `effects` happen to the carrier as its health falls below `below`. See `damageTriggers` */
12
+ export declare const onLowHealthEffect: import("../effects").EffectType<"onLowHealth">;
13
+ /** For passives: instead of dying the carrier is left with `health` of its max, and `effects` happen to it. See `cheatDeath` */
14
+ export declare const onFatalEffect: import("../effects").EffectType<"onFatal">;
15
+ /** Takes `buff` off what it reaches: `stacks` of it, all of it when left out (`removeStacks`) */
16
+ export declare const removeBuffEffect: import("../effects").EffectType<"removeBuff">;
7
17
  /** The caster is ready to strike again at once */
8
- export declare const resetAttackEffect: import("../effects").EffectKind<"resetAttack">;
18
+ export declare const resetAttackEffect: import("../effects").EffectType<"resetAttack">;
9
19
  /** An ability of the caster is ready again, with all the charges it holds: the one named, or the one the effect belongs to */
10
- export declare const refreshEffect: import("../effects").EffectKind<"refresh">;
20
+ export declare const refreshEffect: import("../effects").EffectType<"refresh">;
11
21
  /**
12
22
  * `effects` when the ability went off charged, `otherwise` when it did not. With `on: 'caster'` what it does
13
23
  * charged happens where the caster stands, wherever it was aimed
14
24
  */
15
- export declare const chargedEffect: import("../effects").EffectKind<"charged">;
25
+ export declare const chargedEffect: import("../effects").EffectType<"charged">;
@@ -0,0 +1,131 @@
1
+ import { fighting } from "../../entity.js";
2
+ import { readyAgain } from "../charges.js";
3
+ import { run } from "../land.js";
4
+ import { valueOf } from "../amounts.js";
5
+ import { defineEffect, effectTargets } from "../effects.js";
6
+ import { removeStacks } from "../triggers.js";
7
+ //#region src/abilities/effects/passives.ts
8
+ /**
9
+ * What an ability does around its casting: the passives set off by attacks, kills and casts (`EffectTypes.onHit`,
10
+ * `onKill`, `onCast`, run where those happen), an attack or an ability ready again (`resetAttack`, `refresh`), and what
11
+ * a charged cast does (`charged`)
12
+ */
13
+ /** `onHit` is about attacks, not about the moment of casting: an attack landing sets it off (`attackLanded`) */
14
+ var onHitEffect = defineEffect({
15
+ type: "onHit",
16
+ run: () => {},
17
+ fields: [
18
+ "whileBuff",
19
+ "every",
20
+ "consumes",
21
+ "cooldown",
22
+ "slot",
23
+ "priority",
24
+ "effects"
25
+ ]
26
+ });
27
+ /** For passives: `effects` happen around whoever the carrier kills. The killing sets it off, see `killTriggers` */
28
+ var onKillEffect = defineEffect({
29
+ type: "onKill",
30
+ run: () => {},
31
+ fields: [
32
+ "attack",
33
+ "whileBuff",
34
+ "cooldown",
35
+ "effects"
36
+ ]
37
+ });
38
+ /** For passives: `effects` happen to the carrier whenever it casts. The casting sets it off, see `castTriggers` */
39
+ var onCastEffect = defineEffect({
40
+ type: "onCast",
41
+ run: () => {},
42
+ fields: ["cooldown", "effects"]
43
+ });
44
+ /** For passives: `effects` happen to who hurt the carrier. Being hurt sets it off, see `damageTriggers` */
45
+ var onDamagedEffect = defineEffect({
46
+ type: "onDamaged",
47
+ run: () => {},
48
+ fields: [
49
+ "attack",
50
+ "melee",
51
+ "cooldown",
52
+ "effects"
53
+ ]
54
+ });
55
+ /** For passives: `effects` happen to an enemy an ability of the carrier hurt. The hurt sets it off, see `damageTriggers` */
56
+ var onAbilityHitEffect = defineEffect({
57
+ type: "onAbilityHit",
58
+ run: () => {},
59
+ fields: ["cooldown", "effects"]
60
+ });
61
+ /** For passives: `effects` happen to the carrier as its health falls below `below`. See `damageTriggers` */
62
+ var onLowHealthEffect = defineEffect({
63
+ type: "onLowHealth",
64
+ run: () => {},
65
+ fields: [
66
+ "below",
67
+ "cooldown",
68
+ "effects"
69
+ ]
70
+ });
71
+ /** For passives: instead of dying the carrier is left with `health` of its max, and `effects` happen to it. See `cheatDeath` */
72
+ var onFatalEffect = defineEffect({
73
+ type: "onFatal",
74
+ run: () => {},
75
+ fields: [
76
+ "health",
77
+ "cooldown",
78
+ "effects"
79
+ ]
80
+ });
81
+ /** Takes `buff` off what it reaches: `stacks` of it, all of it when left out (`removeStacks`) */
82
+ var removeBuffEffect = defineEffect({
83
+ type: "removeBuff",
84
+ run: (context, effect) => {
85
+ if (!effect.buff) return;
86
+ const count = effect.stacks === void 0 ? void 0 : Math.max(Math.round(valueOf(context, effect.stacks)), 1);
87
+ const fallback = context.world.registry.buff(effect.buff).harmful ? "allies" : "enemies";
88
+ for (const entity of effectTargets(context, effect, fallback)) removeStacks(context.world, entity, effect.buff, count);
89
+ },
90
+ fields: ["buff", "stacks"]
91
+ });
92
+ /** The caster is ready to strike again at once */
93
+ var resetAttackEffect = defineEffect({
94
+ type: "resetAttack",
95
+ run: ({ caster }) => {
96
+ if (caster.get(fighting)) caster.get(fighting).cooldown = 0;
97
+ },
98
+ fields: []
99
+ });
100
+ /** An ability of the caster is ready again, with all the charges it holds: the one named, or the one the effect belongs to */
101
+ var refreshEffect = defineEffect({
102
+ type: "refresh",
103
+ run: (context, effect) => {
104
+ const state = context.caster.abilities.find((known) => known.id === (effect.ability ?? context.ability.id));
105
+ if (state) readyAgain(state);
106
+ },
107
+ fields: ["ability"]
108
+ });
109
+ /**
110
+ * `effects` when the ability went off charged, `otherwise` when it did not. With `on: 'caster'` what it does
111
+ * charged happens where the caster stands, wherever it was aimed
112
+ */
113
+ var chargedEffect = defineEffect({
114
+ type: "charged",
115
+ run: (context, effect) => {
116
+ if (!context.charged) return run(context, effect.otherwise);
117
+ const { caster } = context;
118
+ run(effect.on === "caster" ? {
119
+ ...context,
120
+ point: {
121
+ x: caster.pos.x,
122
+ z: caster.pos.z
123
+ }
124
+ } : context, effect.effects);
125
+ },
126
+ fields: ["effects", "otherwise"]
127
+ });
128
+ //#endregion
129
+ export { chargedEffect, onAbilityHitEffect, onCastEffect, onDamagedEffect, onFatalEffect, onHitEffect, onKillEffect, onLowHealthEffect, refreshEffect, removeBuffEffect, resetAttackEffect };
130
+
131
+ //# sourceMappingURL=passives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passives.js","names":[],"sources":["../../../src/abilities/effects/passives.ts"],"sourcesContent":["/**\n * What an ability does around its casting: the passives set off by attacks, kills and casts (`EffectTypes.onHit`,\n * `onKill`, `onCast`, run where those happen), an attack or an ability ready again (`resetAttack`, `refresh`), and what\n * a charged cast does (`charged`)\n */\nimport { fighting } from '#engine/entity'\nimport { defineEffect, effectTargets } from '../effects'\nimport { valueOf } from '../amounts'\nimport { removeStacks } from '../triggers'\nimport { run } from '../land'\nimport { readyAgain } from '../charges'\n\n/** `onHit` is about attacks, not about the moment of casting: an attack landing sets it off (`attackLanded`) */\nexport const onHitEffect = defineEffect({ type: 'onHit', run: () => {}, fields: ['whileBuff', 'every', 'consumes', 'cooldown', 'slot', 'priority', 'effects'] })\n\n/** For passives: `effects` happen around whoever the carrier kills. The killing sets it off, see `killTriggers` */\nexport const onKillEffect = defineEffect({ type: 'onKill', run: () => {}, fields: ['attack', 'whileBuff', 'cooldown', 'effects'] })\n\n/** For passives: `effects` happen to the carrier whenever it casts. The casting sets it off, see `castTriggers` */\nexport const onCastEffect = defineEffect({ type: 'onCast', run: () => {}, fields: ['cooldown', 'effects'] })\n\n/** For passives: `effects` happen to who hurt the carrier. Being hurt sets it off, see `damageTriggers` */\nexport const onDamagedEffect = defineEffect({ type: 'onDamaged', run: () => {}, fields: ['attack', 'melee', 'cooldown', 'effects'] })\n\n/** For passives: `effects` happen to an enemy an ability of the carrier hurt. The hurt sets it off, see `damageTriggers` */\nexport const onAbilityHitEffect = defineEffect({ type: 'onAbilityHit', run: () => {}, fields: ['cooldown', 'effects'] })\n\n/** For passives: `effects` happen to the carrier as its health falls below `below`. See `damageTriggers` */\nexport const onLowHealthEffect = defineEffect({ type: 'onLowHealth', run: () => {}, fields: ['below', 'cooldown', 'effects'] })\n\n/** For passives: instead of dying the carrier is left with `health` of its max, and `effects` happen to it. See `cheatDeath` */\nexport const onFatalEffect = defineEffect({ type: 'onFatal', run: () => {}, fields: ['health', 'cooldown', 'effects'] })\n\n/** Takes `buff` off what it reaches: `stacks` of it, all of it when left out (`removeStacks`) */\nexport const removeBuffEffect = defineEffect({ type: 'removeBuff', run: (context, effect) => {\n\t\tif (!effect.buff) return\n\t\tconst count = effect.stacks === undefined ? undefined : Math.max(Math.round(valueOf(context, effect.stacks)), 1)\n\t\tconst fallback = context.world.registry.buff(effect.buff).harmful ? 'allies' : 'enemies'\n\t\tfor (const entity of effectTargets(context, effect, fallback)) removeStacks(context.world, entity, effect.buff, count)\n\t}, fields: ['buff', 'stacks'] })\n\n/** The caster is ready to strike again at once */\nexport const resetAttackEffect = defineEffect({ type: 'resetAttack', run: ({ caster }) => {\n\t\tif (caster.get(fighting)) caster.get(fighting)!.cooldown = 0\n\t}, fields: [] })\n\n/** An ability of the caster is ready again, with all the charges it holds: the one named, or the one the effect belongs to */\nexport const refreshEffect = defineEffect({ type: 'refresh', run: (context, effect) => {\n\t\tconst state = context.caster.abilities.find((known) => known.id === (effect.ability ?? context.ability.id))\n\t\tif (state) readyAgain(state)\n\t}, fields: ['ability'] })\n\n/**\n * `effects` when the ability went off charged, `otherwise` when it did not. With `on: 'caster'` what it does\n * charged happens where the caster stands, wherever it was aimed\n */\nexport const chargedEffect = defineEffect({ type: 'charged', run: (context, effect) => {\n\t\tif (!context.charged) return run(context, effect.otherwise)\n\t\tconst { caster } = context\n\t\trun(effect.on === 'caster' ? { ...context, point: { x: caster.pos.x, z: caster.pos.z } } : context, effect.effects)\n\t}, fields: ['effects', 'otherwise'] })\n"],"mappings":";;;;;;;;;;;;;AAaA,IAAa,cAAc,aAAa;CAAE,MAAM;CAAS,WAAW,CAAC;CAAG,QAAQ;EAAC;EAAa;EAAS;EAAY;EAAY;EAAQ;EAAY;CAAS;AAAE,CAAC;;AAG/J,IAAa,eAAe,aAAa;CAAE,MAAM;CAAU,WAAW,CAAC;CAAG,QAAQ;EAAC;EAAU;EAAa;EAAY;CAAS;AAAE,CAAC;;AAGlI,IAAa,eAAe,aAAa;CAAE,MAAM;CAAU,WAAW,CAAC;CAAG,QAAQ,CAAC,YAAY,SAAS;AAAE,CAAC;;AAG3G,IAAa,kBAAkB,aAAa;CAAE,MAAM;CAAa,WAAW,CAAC;CAAG,QAAQ;EAAC;EAAU;EAAS;EAAY;CAAS;AAAE,CAAC;;AAGpI,IAAa,qBAAqB,aAAa;CAAE,MAAM;CAAgB,WAAW,CAAC;CAAG,QAAQ,CAAC,YAAY,SAAS;AAAE,CAAC;;AAGvH,IAAa,oBAAoB,aAAa;CAAE,MAAM;CAAe,WAAW,CAAC;CAAG,QAAQ;EAAC;EAAS;EAAY;CAAS;AAAE,CAAC;;AAG9H,IAAa,gBAAgB,aAAa;CAAE,MAAM;CAAW,WAAW,CAAC;CAAG,QAAQ;EAAC;EAAU;EAAY;CAAS;AAAE,CAAC;;AAGvH,IAAa,mBAAmB,aAAa;CAAE,MAAM;CAAc,MAAM,SAAS,WAAW;EAC3F,IAAI,CAAC,OAAO,MAAM;EAClB,MAAM,QAAQ,OAAO,WAAW,KAAA,IAAY,KAAA,IAAY,KAAK,IAAI,KAAK,MAAM,QAAQ,SAAS,OAAO,MAAM,CAAC,GAAG,CAAC;EAC/G,MAAM,WAAW,QAAQ,MAAM,SAAS,KAAK,OAAO,IAAI,CAAC,CAAC,UAAU,WAAW;EAC/E,KAAK,MAAM,UAAU,cAAc,SAAS,QAAQ,QAAQ,GAAG,aAAa,QAAQ,OAAO,QAAQ,OAAO,MAAM,KAAK;CACtH;CAAG,QAAQ,CAAC,QAAQ,QAAQ;AAAE,CAAC;;AAGhC,IAAa,oBAAoB,aAAa;CAAE,MAAM;CAAe,MAAM,EAAE,aAAa;EACxF,IAAI,OAAO,IAAI,QAAQ,GAAG,OAAO,IAAI,QAAQ,CAAC,CAAE,WAAW;CAC5D;CAAG,QAAQ,CAAC;AAAE,CAAC;;AAGhB,IAAa,gBAAgB,aAAa;CAAE,MAAM;CAAW,MAAM,SAAS,WAAW;EACrF,MAAM,QAAQ,QAAQ,OAAO,UAAU,MAAM,UAAU,MAAM,QAAQ,OAAO,WAAW,QAAQ,QAAQ,GAAG;EAC1G,IAAI,OAAO,WAAW,KAAK;CAC5B;CAAG,QAAQ,CAAC,SAAS;AAAE,CAAC;;;;;AAMzB,IAAa,gBAAgB,aAAa;CAAE,MAAM;CAAW,MAAM,SAAS,WAAW;EACrF,IAAI,CAAC,QAAQ,SAAS,OAAO,IAAI,SAAS,OAAO,SAAS;EAC1D,MAAM,EAAE,WAAW;EACnB,IAAI,OAAO,OAAO,WAAW;GAAE,GAAG;GAAS,OAAO;IAAE,GAAG,OAAO,IAAI;IAAG,GAAG,OAAO,IAAI;GAAE;EAAE,IAAI,SAAS,OAAO,OAAO;CACnH;CAAG,QAAQ,CAAC,WAAW,WAAW;AAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Sends the proxy an effect goes off from to where it was aimed (`EffectTypes.sendProxy`): at once, its effects there
3
+ * from it; or at its `speed`, dragged there in the caster's name (a `pull` of the caster's), its effects as it arrives
4
+ */
5
+ export declare const sendProxyEffect: import("../effects").EffectType<"sendProxy">;
@@ -0,0 +1,60 @@
1
+ import { land } from "../land.js";
2
+ import { dashing } from "../../dashing.js";
3
+ import { defineEffect, startDash } from "../effects.js";
4
+ //#region src/abilities/effects/proxy.ts
5
+ /**
6
+ * The proxy's own effect (E2E-PLAN AB17): the unit an effect goes off from (`EffectCommon.origin`) sent to where it was aimed
7
+ */
8
+ /** The unit the effects go off from, where that is one of the caster's and not the caster */
9
+ var sent = (context) => {
10
+ const { origin, caster } = context;
11
+ return origin && "pos" in origin && origin !== caster ? origin : void 0;
12
+ };
13
+ /**
14
+ * Sends the proxy an effect goes off from to where it was aimed (`EffectTypes.sendProxy`): at once, its effects there
15
+ * from it; or at its `speed`, dragged there in the caster's name (a `pull` of the caster's), its effects as it arrives
16
+ */
17
+ var sendProxyEffect = defineEffect({
18
+ type: "sendProxy",
19
+ run: (context, effect) => {
20
+ const { world, caster, ability, level, point } = context;
21
+ const proxy = sent(context);
22
+ if (!proxy?.alive || proxy.isStructure || proxy.get(dashing)) return;
23
+ const to = {
24
+ x: point.x,
25
+ z: point.z
26
+ };
27
+ if (!effect.speed) {
28
+ world.place(proxy, to);
29
+ proxy.prevPos.x = to.x;
30
+ proxy.prevPos.z = to.z;
31
+ land({
32
+ world,
33
+ caster,
34
+ ability,
35
+ level,
36
+ target: proxy,
37
+ point: to,
38
+ origin: proxy
39
+ }, effect.effects);
40
+ return;
41
+ }
42
+ startDash(world, proxy, {
43
+ x: to.x,
44
+ z: to.z,
45
+ speed: effect.speed,
46
+ ability: ability.id,
47
+ level,
48
+ effects: effect.effects ?? [],
49
+ pulled: {
50
+ by: caster.id,
51
+ follows: false
52
+ }
53
+ });
54
+ },
55
+ fields: ["speed", "effects"]
56
+ });
57
+ //#endregion
58
+ export { sendProxyEffect };
59
+
60
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","names":[],"sources":["../../../src/abilities/effects/proxy.ts"],"sourcesContent":["/**\n * The proxy's own effect (E2E-PLAN AB17): the unit an effect goes off from (`EffectCommon.origin`) sent to where it was aimed\n */\nimport { dashing } from '#engine/dashing'\nimport type { Entity } from '#engine/entity'\nimport { defineEffect, type EffectContext, startDash } from '../effects'\nimport { land } from '../land'\n\n/** The unit the effects go off from, where that is one of the caster's and not the caster */\nconst sent = (context: EffectContext): Entity | undefined => {\n\tconst { origin, caster } = context\n\treturn origin && 'pos' in origin && origin !== caster ? (origin as Entity) : undefined\n}\n\n/**\n * Sends the proxy an effect goes off from to where it was aimed (`EffectTypes.sendProxy`): at once, its effects there\n * from it; or at its `speed`, dragged there in the caster's name (a `pull` of the caster's), its effects as it arrives\n */\nexport const sendProxyEffect = defineEffect({\n\ttype: 'sendProxy',\n\trun: (context, effect) => {\n\t\tconst { world, caster, ability, level, point } = context\n\t\tconst proxy = sent(context)\n\t\tif (!proxy?.alive || proxy.isStructure || proxy.get(dashing)) return\n\t\tconst to = { x: point.x, z: point.z }\n\t\tif (!effect.speed) {\n\t\t\tworld.place(proxy, to)\n\t\t\tproxy.prevPos.x = to.x\n\t\t\tproxy.prevPos.z = to.z\n\t\t\tland({ world, caster, ability, level, target: proxy, point: to, origin: proxy }, effect.effects)\n\t\t\treturn\n\t\t}\n\t\tstartDash(world, proxy, { x: to.x, z: to.z, speed: effect.speed, ability: ability.id, level, effects: effect.effects ?? [], pulled: { by: caster.id, follows: false } })\n\t},\n\tfields: ['speed', 'effects']\n})\n"],"mappings":";;;;;;;;AASA,IAAM,QAAQ,YAA+C;CAC5D,MAAM,EAAE,QAAQ,WAAW;CAC3B,OAAO,UAAU,SAAS,UAAU,WAAW,SAAU,SAAoB,KAAA;AAC9E;;;;;AAMA,IAAa,kBAAkB,aAAa;CAC3C,MAAM;CACN,MAAM,SAAS,WAAW;EACzB,MAAM,EAAE,OAAO,QAAQ,SAAS,OAAO,UAAU;EACjD,MAAM,QAAQ,KAAK,OAAO;EAC1B,IAAI,CAAC,OAAO,SAAS,MAAM,eAAe,MAAM,IAAI,OAAO,GAAG;EAC9D,MAAM,KAAK;GAAE,GAAG,MAAM;GAAG,GAAG,MAAM;EAAE;EACpC,IAAI,CAAC,OAAO,OAAO;GAClB,MAAM,MAAM,OAAO,EAAE;GACrB,MAAM,QAAQ,IAAI,GAAG;GACrB,MAAM,QAAQ,IAAI,GAAG;GACrB,KAAK;IAAE;IAAO;IAAQ;IAAS;IAAO,QAAQ;IAAO,OAAO;IAAI,QAAQ;GAAM,GAAG,OAAO,OAAO;GAC/F;EACD;EACA,UAAU,OAAO,OAAO;GAAE,GAAG,GAAG;GAAG,GAAG,GAAG;GAAG,OAAO,OAAO;GAAO,SAAS,QAAQ;GAAI;GAAO,SAAS,OAAO,WAAW,CAAC;GAAG,QAAQ;IAAE,IAAI,OAAO;IAAI,SAAS;GAAM;EAAE,CAAC;CACxK;CACA,QAAQ,CAAC,SAAS,SAAS;AAC5B,CAAC"}
@@ -1,4 +1,4 @@
1
1
  /** The caster's team sees the spot for a while, with nothing standing there */
2
- export declare const revealEffect: import("../effects").EffectKind<"reveal">;
2
+ export declare const revealEffect: import("../effects").EffectType<"reveal">;
3
3
  /** Finds what is invisible around the spot: the caster's team sees it for as long as `duration` says */
4
- export declare const detectEffect: import("../effects").EffectKind<"detect">;
4
+ export declare const detectEffect: import("../effects").EffectType<"detect">;