@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":"effectFields.js","names":[],"sources":["../../src/abilities/effectFields.ts"],"sourcesContent":["import type { EffectCommon, EffectFields } from '#engine/defs'\nimport type { EditableField } from '#engine/gameData'\n\n/*\n * What the fields of the engine's effects hold, for the editor's Data panel (campaign plan RC2): an effect's type says\n * which of them it reads (`defineEffect`'s `fields`), and the panel offers those of a row of that type\n */\n\n/** The fields every effect may have, whatever its type (`EffectCommon`): offered on every row of effects */\nexport const COMMON_EFFECT_FIELDS: Readonly<Record<keyof EffectCommon, EditableField | readonly EditableField[]>> = {\n\tradius: { path: 'radius', kind: 'number', min: 0, hint: 'Hits everything this far around where it lands, not only the target' },\n\tshape: {\n\t\tpath: 'shape',\n\t\toptions: ['circle', 'cone', 'line', 'rect', 'ring', 'arc', 'cross'],\n\t\thint: 'The ground it covers, turned the way it was aimed: a cone, a line and an arc go off from the caster, the rest lie around where it landed'\n\t},\n\tlength: { path: 'length', kind: 'number', min: 0, hint: 'Of a cone, a line, a rect and a cross: how long it is, end to end' },\n\twidth: {\n\t\tpath: 'width',\n\t\tkind: 'number',\n\t\tmin: 0,\n\t\thint: 'Of a line, a rect and a cross: how far it covers on either side; of a ring and an arc, how thick it is (1 when left out)'\n\t},\n\tangle: { path: 'angle', kind: 'number', min: 0, max: 6.2832, hint: 'Of a cone and an arc: how wide it opens, in radians' },\n\taffects: {\n\t\tpath: 'affects',\n\t\toptions: ['enemies', 'allies', 'all'],\n\t\thint: 'Who an effect with a radius applies to: as its type has it when left out'\n\t},\n\ton: { path: 'on', options: ['caster'], hint: 'Applies to the caster, wherever the ability was aimed' },\n\tifBuff: { path: 'ifBuff', kind: 'id', of: 'buffs', hint: 'Only hits what carries this buff' },\n\ttags: { path: 'tags', kind: 'list', hint: 'Only hits what has one of these tags of its type (undead, mechanical): everything when left out' },\n\tchance: {\n\t\tpath: 'chance',\n\t\tkind: 'number',\n\t\tmin: 0,\n\t\tmax: 1,\n\t\thint: 'It happens by chance: this share of the times (0.25: one in four). A trigger goes off by it; an if asks it with its conditions'\n\t},\n\tlook: {\n\t\tpath: 'look',\n\t\tkind: 'text',\n\t\thint: \"Which of its ability's looks draws it (the view's AbilityLook.effects): by this name; by its place in the ability or its type when left out\"\n\t},\n\tonly: { path: 'only', options: ['heroes'], hint: 'Only hits heroes' },\n\tkinds: { path: 'kinds', kind: 'list', hint: 'Only hits these kinds of things (unit, building, …): everything but resources when left out' },\n\tlayers: { path: 'layers', kind: 'list', hint: 'Only hits what is there (ground, air): both when left out' },\n\t// from units of the caster's (AB17)\n\torigin: [\n\t\t{ path: 'origin.proxy', kind: 'id', of: 'units', hint: \"Goes off from the caster's units of this type (a shadow, a ball, a soldier), not from the caster\" },\n\t\t{ path: 'origin.pick', options: ['nearest', 'all', 'newest', 'oldest'], hint: 'Which of them: the one nearest to where it was aimed when left out' },\n\t\t{\n\t\t\tpath: 'origin.caster',\n\t\t\tkind: 'either',\n\t\t\toptions: ['otherwise'],\n\t\t\thint: 'From the caster as well (true), or from the caster where none is picked (otherwise)'\n\t\t},\n\t\t{ path: 'origin.range', kind: 'number', min: 0, hint: 'Only those within this far of the caster' },\n\t\t{ path: 'origin.near', kind: 'number', min: 0, hint: 'Only those within this far of where it was aimed' },\n\t\t{ path: 'origin.at', options: ['aim', 'proxy'], hint: 'Lands where it was aimed (when left out), or where each it goes off from stands' },\n\t\t{ path: 'origin.target', kind: 'boolean', hint: 'The one it goes off from is its target too: a swap with it, a dash to it' }\n\t],\n\t// conditions on what it hits, and a few of them (world queries)\n\twhere: conditionFields('where', 'what it hits'),\n\tsort: {\n\t\tpath: 'sort',\n\t\toptions: ['nearest', 'farthest', 'lowestHealth', 'highestHealth', 'lowestHealthShare', 'highestHealthShare', 'random'],\n\t\thint: 'Of what its area reaches, which first: the nearest to where it landed when left out, the most hurt (lowestHealthShare), at random…'\n\t},\n\tlimit: { path: 'limit', kind: 'number', min: 0, hint: 'Of what its area reaches, only this many, the first by sort' },\n\twhen: {\n\t\tpath: 'when',\n\t\toptions: ['hit', 'arrived', 'landed', 'end'],\n\t\thint: \"Not now, but at the moment of the nearest row above that comes to it: a missile's hit or end, a pull's arrival, a dash's landing, a zone's end\"\n\t}\n}\n\n/** The fields of what an `if` asks of a unit (`UnitCondition`), at `path`: the caster or the target; or an effect's `where` */\nfunction conditionFields(path: 'caster' | 'target' | 'where', who: string): EditableField[] {\n\treturn [\n\t\t{ path: `${path}.buff`, kind: 'id', of: 'buffs', hint: `Only if ${who} carries this buff` },\n\t\t{ path: `${path}.noBuff`, kind: 'id', of: 'buffs', hint: `Only if ${who} does not carry this buff` },\n\t\t{ path: `${path}.healthBelow`, kind: 'number', min: 0, max: 1, hint: `Only if ${who} has less than this share of its health (0.2: an execute)` },\n\t\t{ path: `${path}.healthAbove`, kind: 'number', min: 0, max: 1, hint: `Only if ${who} has at least this share of its health` },\n\t\t{ path: `${path}.hero`, kind: 'boolean', hint: `Only if ${who} is a hero (on) or is not (off)` },\n\t\t{ path: `${path}.structure`, kind: 'boolean', hint: `Only if ${who} is a structure (on) or is not (off): with hero off, a creep` },\n\t\t{ path: `${path}.tags`, kind: 'list', hint: `Only if ${who} has one of these tags of its type` },\n\t\t{ path: `${path}.notTags`, kind: 'list', hint: `Only if ${who} has none of these tags of its type (undead: the living)` },\n\t\t{ path: `${path}.is`, options: ['enemy', 'ally'], hint: `Only if ${who} is an enemy or an ally of the caster` }\n\t]\n}\n\n/**\n * The engine's fields of an effect by name (`EffectFields`), as the Data panel shows them; `effects`, `onEnd` and\n * `otherwise` are lists of effects. Those of a few values (a missile's `arc`) are a field for each, null for one that\n * is no single value\n */\nexport const EFFECT_FIELDS: Readonly<Record<keyof EffectFields, EditableField | readonly EditableField[] | null>> = {\n\tto: { path: 'to', options: ['home', 'point', 'target'], hint: \"Where to: the side's home, where it was aimed, or by its target\" },\n\t// the moves pack's own (`movesPack`), said in full where its effects say what they read\n\tthrough: null,\n\tcollide: null,\n\tstops: null,\n\tdirection: null,\n\trider: null,\n\t// the ground objects pack's own (`groundObjectsPack`), likewise\n\tline: null,\n\tring: null,\n\t// the resources pack's own (`resourcesPack`), likewise\n\tpool: null,\n\t// the ability changes pack's own (`abilityChangesPack`), likewise\n\tfrom: null,\n\tuses: null,\n\tatLevel: null,\n\tpick: null,\n\t// what an `if` asks (AB6), a field for each part\n\tcaster: conditionFields('caster', 'the caster'),\n\ttarget: conditionFields('target', 'the target (each within its radius, where it has one)'),\n\tamount: { path: 'amount', kind: 'number', hint: 'How much: of damage, of health, of mana' },\n\tbuff: { path: 'buff', kind: 'id', of: 'buffs', hint: 'The buff put on' },\n\towner: { path: 'owner', options: ['neutral'], hint: \"Whose it is: the caster's when left out, or the neutral player's\" },\n\tlooksLike: { path: 'looksLike', options: ['target', 'caster'], hint: 'Drawn as the target or the caster is: its model, its owner\\'s colour, its size' },\n\tdata: null,\n\tunit: { path: 'unit', kind: 'id', of: 'units', hint: 'The unit type it brings into the world' },\n\twhileBuff: { path: 'whileBuff', kind: 'id', of: 'buffs', hint: 'Only while the carrier carries this buff' },\n\tevery: { path: 'every', kind: 'integer', min: 1, hint: 'Only every so many attacks that land: 4 for the fourth shot' },\n\tconsumes: { path: 'consumes', kind: 'boolean', hint: 'The attack uses up a stack of the buff it needs (whileBuff): the next attack' },\n\tslot: { path: 'slot', kind: 'text', hint: 'The slot it takes among what attacks set off (orb, poison): of one slot only the highest priority goes off' },\n\tpriority: { path: 'priority', kind: 'number', hint: 'Of those sharing its slot, the highest goes off (0 when left out)' },\n\tcooldown: { path: 'cooldown', kind: 'number', min: 0, hint: 'Seconds before it can go off again once it did' },\n\tas: { path: 'as', options: ['themselves'], hint: 'The corpses rise as what they were, rather than as its unit' },\n\thealth: { path: 'health', kind: 'number', min: 0, max: 1, hint: 'The share of its max health it is left with rather than dying: all of it when left out' },\n\tbelow: { path: 'below', kind: 'number', min: 0, max: 1, hint: 'The part of max health the carrier falls below for it to go off (0.3: 30%)' },\n\tmelee: { path: 'melee', kind: 'boolean', hint: 'Only for an attack from up close (one with no missile)' },\n\tstacks: { path: 'stacks', kind: 'integer', min: 1, hint: 'How many stacks come off: all of the buff when left out' },\n\totherwise: { path: 'otherwise', kind: 'rows', hint: 'What happens otherwise: the ability went off not charged (charged), what it asks does not hold (if)' },\n\tblocked: { path: 'blocked', kind: 'boolean', hint: 'Buildings and trees in its way stop it' },\n\tattack: { path: 'attack', kind: 'boolean', hint: 'Only for attacks: one of the carrier that killed (onKill), one that hurt it (onDamaged)' },\n\tability: { path: 'ability', kind: 'id', of: 'abilities', hint: 'The ability ready again: the one the effect belongs to when left out' },\n\tleap: { path: 'leap', kind: 'number', min: 0, hint: 'How high it rises on the way, which makes it a leap' },\n\tclimb: { path: 'climb', kind: 'number', min: 0, hint: 'How much higher than where it takes off the ground on its way may stand' },\n\tduration: { path: 'duration', kind: 'number', min: 0, hint: 'Seconds it lasts: its usual time when left out' },\n\t// what the caster's stats add, by stat: its numbers are fields where an effect has them, none offered where it has not\n\tscaling: null,\n\tdamageType: { path: 'damageType', options: ['physical', 'magic', 'true'], hint: 'Magic when left out' },\n\thow: { path: 'how', kind: 'text', hint: 'How what it kills dies, for the screen' },\n\tdelay: { path: 'delay', kind: 'number', min: 0, hint: 'Seconds before it goes' },\n\tspeed: { path: 'speed', kind: 'number', min: 0, hint: 'Units per second' },\n\tdistance: { path: 'distance', kind: 'number', min: 0, hint: 'How far' },\n\tcount: { path: 'count', kind: 'integer', min: 1, hint: 'How many' },\n\tspread: { path: 'spread', kind: 'number', min: 0, hint: 'The angle the missiles are spread over, in radians' },\n\thoming: { path: 'homing', kind: 'boolean', hint: 'Flies after the unit it was cast on, and only hits that one' },\n\ttoPoint: {\n\t\tpath: 'toPoint',\n\t\tkind: 'boolean',\n\t\thint: 'Flies to the spot it was aimed at and stops there; a pull drags to it rather than to the caster'\n\t},\n\tsight: { path: 'sight', kind: 'number', min: 0, hint: 'How far the caster’s team sees around it' },\n\teffects: { path: 'effects', kind: 'rows', hint: 'What happens to what it reaches' },\n\tonEnd: { path: 'onEnd', kind: 'rows', hint: 'What happens where and when it ends' },\n\timpact: { path: 'impact', kind: 'text', hint: 'The name its arrival goes by, for whoever draws it' },\n\t// true or false, or how many it goes through before the next uses it up\n\tpierce: {\n\t\tpath: 'pierce',\n\t\tkind: 'either',\n\t\torNumber: 'integer',\n\t\tmin: 0,\n\t\thint: 'Goes on after it hit something (true), is used up by the first (false), or goes through so many (a number)'\n\t},\n\tfalloff: { path: 'falloff', kind: 'number', min: 0, max: 1, hint: 'What part of its amounts each one it went through takes off the next (0.3: a third)' },\n\treturns: { path: 'returns', kind: 'boolean', hint: 'Flies back to the caster once done, and what happens at its end happens there' },\n\thitsOnReturn: { path: 'hitsOnReturn', kind: 'boolean', hint: 'On its way back it hits what it passes through again' },\n\tseek: { path: 'seek', kind: 'number', min: 0, hint: 'Finds its own: flies after the nearest it may hit within this far' },\n\tonWall: { path: 'onWall', kind: 'rows', hint: 'What happens where it meets a wall (a cliff, ground nothing walks, a building, a tree), to the last it hit: it stops there' },\n\tsplit: { path: 'split', kind: 'rows', hint: 'What goes off from where it is, the way it flew, once done: missiles fly on from there at their spread' },\n\tsteer: { path: 'steer.rate', kind: 'number', min: 0, hint: 'Its owner turns it as it flies: at most so many radians a second (π when left out)' },\n\tfollow: { path: 'follow', options: ['caster', 'target'], hint: 'Goes with the caster or the target, the way it faces; ends when that one dies' },\n\tonEnter: { path: 'onEnter', kind: 'rows', hint: 'What happens to each who comes into it (its radius or shape), those inside as it is laid included' },\n\tonLeave: { path: 'onLeave', kind: 'rows', hint: 'What happens to each who goes out of it' },\n\tedge: { path: 'edge', kind: 'rows', hint: 'What happens to each who crosses its edge, in or out, once it is laid' },\n\tseconds: { path: 'seconds', kind: 'number', min: 0, hint: 'Seconds the pull takes' },\n\tarc: [\n\t\t{\n\t\t\tpath: 'arc.height',\n\t\t\tkind: 'number',\n\t\t\tmin: 0,\n\t\t\thint: 'Thrown: how high it goes in the middle of its way. It flies over everything and hits where it comes down'\n\t\t},\n\t\t{ path: 'arc.time', kind: 'number', min: 0, hint: 'Seconds it is in the air, however far it goes: its speed when left out' }\n\t],\n\tbounce: [\n\t\t{ path: 'bounce.count', kind: 'integer', min: 0, hint: 'How many times it springs on to the nearest it has not hit yet' },\n\t\t{ path: 'bounce.range', kind: 'number', min: 0, hint: 'How far away the next one it springs on to may be' },\n\t\t{ path: 'bounce.falloff', kind: 'number', min: 0, max: 1, hint: 'What part of its amounts each spring takes off (0.25: a quarter)' }\n\t],\n\tstack: { path: 'stack', kind: 'boolean', hint: 'Adds one to how many of the buff the target carries, up to what the buff allows' },\n\tsell: { path: 'sell', kind: 'text', hint: 'The resource traded away, by id' },\n\tbuy: { path: 'buy', kind: 'text', hint: 'The resource traded for, by id' },\n\trate: { path: 'rate', kind: 'number', min: 0, hint: 'How much of what is bought comes for each one sold' },\n\tbyMissingHealth: { path: 'byMissingHealth', kind: 'number', min: 0, hint: 'A part of the health the target has lost, added to the amount' },\n\tbyMaxHealth: { path: 'byMaxHealth', kind: 'number', min: 0, hint: \"A part of the target's max health, added to the amount (0.08: 8%)\" },\n\tbyCurrentHealth: { path: 'byCurrentHealth', kind: 'number', min: 0, hint: 'A part of the health the target has now, added to the amount' },\n\tbyStacks: [\n\t\t{ path: 'byStacks.buff', kind: 'id', of: 'buffs', hint: 'The buff whose stacks add to the amount' },\n\t\t{ path: 'byStacks.of', options: ['target', 'caster'], hint: 'Whose stacks: the target’s when left out' },\n\t\t{ path: 'byStacks.amount', kind: 'number', hint: 'How much each stack adds' }\n\t],\n\tbyDistance: [\n\t\t{ path: 'byDistance.per', kind: 'number', hint: 'How much more for every unit of distance it came (0.1: a tenth more)' },\n\t\t{ path: 'byDistance.most', kind: 'number', min: 1, hint: 'Times as much at the most' }\n\t],\n\t// a part of each of the target's stats: the common ones as fields, any other in the game's data\n\ttargetScaling: [\n\t\t{ path: 'targetScaling.health', kind: 'number', hint: \"A part of the target's max health, added to the amount\" },\n\t\t{ path: 'targetScaling.armor', kind: 'number', hint: \"A part of the target's armor, added to the amount\" },\n\t\t{ path: 'targetScaling.magicResist', kind: 'number', hint: \"A part of the target's magic resist, added to the amount\" }\n\t],\n\tbyDamage: { path: 'byDamage', kind: 'number', min: 0, hint: 'A part of the damage that set the trigger off, added to the amount' },\n\tinto: { path: 'into', kind: 'id', of: 'units', hint: 'The unit type the caster turns into: a form of the hero' },\n\ttoggle: { path: 'toggle', kind: 'boolean', hint: 'Lasts until the ability is cast again in the form, which turns it back' },\n\tback: {\n\t\tpath: 'back',\n\t\tkind: 'list',\n\t\thint: 'What turns it back (ability, time, death): the time and death when left out, and the ability with a toggle'\n\t}\n}\n"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Which effect of an ability something is, for the screen (E2E-PLAN AB19): a missile, a strike, a zone, a rush, by
3
+ * its place in the ability (`effectIndex`, `effectAt`), for the look of that effect (`AbilityLook.effects`)
4
+ */
5
+ import { type AbilityDef, type EffectDef } from '#engine/defs';
6
+ /**
7
+ * Where an effect is in its ability, as the screen is told it (`MissileState.effect`, the strike's `effect`,
8
+ * `AreaState.effect`): its place counting every effect of the ability first to last, each before those it holds (the
9
+ * first of `effects` is 0, the first it holds 1…). One a chain made (`EffectCommon.when`) counts as the one written.
10
+ * Undefined for one that is not in the ability (made up in code)
11
+ *
12
+ * @beta
13
+ */
14
+ export declare function effectIndex(ability: AbilityDef, effect: EffectDef): number | undefined;
15
+ /**
16
+ * The effect at a place in its ability (`effectIndex`): what a screen reads its type and its `look` from
17
+ *
18
+ * @beta
19
+ */
20
+ export declare function effectAt(ability: AbilityDef, index: number): EffectDef | undefined;
21
+ /**
22
+ * The effect a list of effects is of in its ability (a missile's `effects`, a zone's `onEnd`, a delay's `effects`):
23
+ * what a strike of that list is told as. Undefined for the ability's own list, or one not in it
24
+ *
25
+ * @beta
26
+ */
27
+ export declare function effectOfList(ability: AbilityDef, list: readonly EffectDef[] | undefined): EffectDef | undefined;
@@ -0,0 +1,64 @@
1
+ import { loweredListOf, writtenEffect } from "../defs.js";
2
+ //#region src/abilities/effectIndex.ts
3
+ /**
4
+ * Which effect of an ability something is, for the screen (E2E-PLAN AB19): a missile, a strike, a zone, a rush, by
5
+ * its place in the ability (`effectIndex`, `effectAt`), for the look of that effect (`AbilityLook.effects`)
6
+ */
7
+ var walked = /* @__PURE__ */ new WeakMap();
8
+ /** Whether a value is a list of effects: objects with a `type` */
9
+ var isEffects = (value) => Array.isArray(value) && value.length > 0 && value.every((each) => typeof each === "object" && each !== null && typeof each.type === "string");
10
+ function walk(ability) {
11
+ let found = walked.get(ability);
12
+ if (found) return found;
13
+ found = {
14
+ effects: [],
15
+ index: /* @__PURE__ */ new Map(),
16
+ owners: /* @__PURE__ */ new Map()
17
+ };
18
+ const into = (list, owner) => {
19
+ if (owner) found.owners.set(list, owner);
20
+ for (const effect of list) {
21
+ if (!found.index.has(effect)) {
22
+ found.index.set(effect, found.effects.length);
23
+ found.effects.push(effect);
24
+ }
25
+ for (const value of Object.values(effect)) if (isEffects(value)) into(value, effect);
26
+ }
27
+ };
28
+ into(ability.effects ?? [], void 0);
29
+ walked.set(ability, found);
30
+ return found;
31
+ }
32
+ /**
33
+ * Where an effect is in its ability, as the screen is told it (`MissileState.effect`, the strike's `effect`,
34
+ * `AreaState.effect`): its place counting every effect of the ability first to last, each before those it holds (the
35
+ * first of `effects` is 0, the first it holds 1…). One a chain made (`EffectCommon.when`) counts as the one written.
36
+ * Undefined for one that is not in the ability (made up in code)
37
+ *
38
+ * @beta
39
+ */
40
+ function effectIndex(ability, effect) {
41
+ return walk(ability).index.get(writtenEffect(effect));
42
+ }
43
+ /**
44
+ * The effect at a place in its ability (`effectIndex`): what a screen reads its type and its `look` from
45
+ *
46
+ * @beta
47
+ */
48
+ function effectAt(ability, index) {
49
+ return walk(ability).effects[index];
50
+ }
51
+ /**
52
+ * The effect a list of effects is of in its ability (a missile's `effects`, a zone's `onEnd`, a delay's `effects`):
53
+ * what a strike of that list is told as. Undefined for the ability's own list, or one not in it
54
+ *
55
+ * @beta
56
+ */
57
+ function effectOfList(ability, list) {
58
+ if (!list) return void 0;
59
+ return loweredListOf(list) ?? walk(ability).owners.get(list);
60
+ }
61
+ //#endregion
62
+ export { effectAt, effectIndex, effectOfList };
63
+
64
+ //# sourceMappingURL=effectIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effectIndex.js","names":[],"sources":["../../src/abilities/effectIndex.ts"],"sourcesContent":["/**\n * Which effect of an ability something is, for the screen (E2E-PLAN AB19): a missile, a strike, a zone, a rush, by\n * its place in the ability (`effectIndex`, `effectAt`), for the look of that effect (`AbilityLook.effects`)\n */\nimport { type AbilityDef, type EffectDef, loweredListOf, writtenEffect } from '#engine/defs'\n\n/** An ability's effects as written, first to last and each before those it holds (depth first), and each list's owner */\ninterface Walked {\n\teffects: EffectDef[]\n\tindex: Map<EffectDef, number>\n\towners: Map<readonly EffectDef[], EffectDef>\n}\n\nconst walked = new WeakMap<AbilityDef, Walked>()\n\n/** Whether a value is a list of effects: objects with a `type` */\nconst isEffects = (value: unknown): value is EffectDef[] =>\n\tArray.isArray(value) &&\n\tvalue.length > 0 &&\n\tvalue.every((each) => typeof each === 'object' && each !== null && typeof (each as EffectDef).type === 'string')\n\nfunction walk(ability: AbilityDef): Walked {\n\tlet found = walked.get(ability)\n\tif (found) return found\n\tfound = { effects: [], index: new Map(), owners: new Map() }\n\tconst into = (list: readonly EffectDef[], owner: EffectDef | undefined) => {\n\t\tif (owner) found!.owners.set(list, owner)\n\t\tfor (const effect of list) {\n\t\t\tif (!found!.index.has(effect)) {\n\t\t\t\tfound!.index.set(effect, found!.effects.length)\n\t\t\t\tfound!.effects.push(effect)\n\t\t\t}\n\t\t\t// every list it holds, whatever its field: `effects`, `onEnd`, `onWall`, `split`, `otherwise`, a pack's own\n\t\t\tfor (const value of Object.values(effect)) if (isEffects(value)) into(value, effect)\n\t\t}\n\t}\n\tinto(ability.effects ?? [], undefined)\n\twalked.set(ability, found)\n\treturn found\n}\n\n/**\n * Where an effect is in its ability, as the screen is told it (`MissileState.effect`, the strike's `effect`,\n * `AreaState.effect`): its place counting every effect of the ability first to last, each before those it holds (the\n * first of `effects` is 0, the first it holds 1…). One a chain made (`EffectCommon.when`) counts as the one written.\n * Undefined for one that is not in the ability (made up in code)\n *\n * @beta\n */\nexport function effectIndex(ability: AbilityDef, effect: EffectDef): number | undefined {\n\treturn walk(ability).index.get(writtenEffect(effect))\n}\n\n/**\n * The effect at a place in its ability (`effectIndex`): what a screen reads its type and its `look` from\n *\n * @beta\n */\nexport function effectAt(ability: AbilityDef, index: number): EffectDef | undefined {\n\treturn walk(ability).effects[index]\n}\n\n/**\n * The effect a list of effects is of in its ability (a missile's `effects`, a zone's `onEnd`, a delay's `effects`):\n * what a strike of that list is told as. Undefined for the ability's own list, or one not in it\n *\n * @beta\n */\nexport function effectOfList(ability: AbilityDef, list: readonly EffectDef[] | undefined): EffectDef | undefined {\n\tif (!list) return undefined\n\treturn loweredListOf(list) ?? walk(ability).owners.get(list)\n}\n"],"mappings":";;;;;;AAaA,IAAM,yBAAS,IAAI,QAA4B;;AAG/C,IAAM,aAAa,UAClB,MAAM,QAAQ,KAAK,KACnB,MAAM,SAAS,KACf,MAAM,OAAO,SAAS,OAAO,SAAS,YAAY,SAAS,QAAQ,OAAQ,KAAmB,SAAS,QAAQ;AAEhH,SAAS,KAAK,SAA6B;CAC1C,IAAI,QAAQ,OAAO,IAAI,OAAO;CAC9B,IAAI,OAAO,OAAO;CAClB,QAAQ;EAAE,SAAS,CAAC;EAAG,uBAAO,IAAI,IAAI;EAAG,wBAAQ,IAAI,IAAI;CAAE;CAC3D,MAAM,QAAQ,MAA4B,UAAiC;EAC1E,IAAI,OAAO,MAAO,OAAO,IAAI,MAAM,KAAK;EACxC,KAAK,MAAM,UAAU,MAAM;GAC1B,IAAI,CAAC,MAAO,MAAM,IAAI,MAAM,GAAG;IAC9B,MAAO,MAAM,IAAI,QAAQ,MAAO,QAAQ,MAAM;IAC9C,MAAO,QAAQ,KAAK,MAAM;GAC3B;GAEA,KAAK,MAAM,SAAS,OAAO,OAAO,MAAM,GAAG,IAAI,UAAU,KAAK,GAAG,KAAK,OAAO,MAAM;EACpF;CACD;CACA,KAAK,QAAQ,WAAW,CAAC,GAAG,KAAA,CAAS;CACrC,OAAO,IAAI,SAAS,KAAK;CACzB,OAAO;AACR;;;;;;;;;AAUA,SAAgB,YAAY,SAAqB,QAAuC;CACvF,OAAO,KAAK,OAAO,CAAC,CAAC,MAAM,IAAI,cAAc,MAAM,CAAC;AACrD;;;;;;AAOA,SAAgB,SAAS,SAAqB,OAAsC;CACnF,OAAO,KAAK,OAAO,CAAC,CAAC,QAAQ;AAC9B;;;;;;;AAQA,SAAgB,aAAa,SAAqB,MAA+D;CAChH,IAAI,CAAC,MAAM,OAAO,KAAA;CAClB,OAAO,cAAc,IAAI,KAAK,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,IAAI;AAC5D"}
@@ -1,8 +1,14 @@
1
- export declare const buffEffect: import("../effects").EffectKind<"buff">;
1
+ export declare const buffEffect: import("../effects").EffectType<"buff">;
2
2
  /**
3
3
  * Puts `buff` on the caster for as long as it likes, or takes it off when it has it: a stance, burrowing. Cast again to
4
4
  * come back out
5
5
  */
6
- export declare const toggleEffect: import("../effects").EffectKind<"toggle">;
6
+ export declare const toggleEffect: import("../effects").EffectType<"toggle">;
7
+ /**
8
+ * Takes off what holds them up from what it reaches (allies, when it says nothing): every harmful buff that stuns,
9
+ * roots, silences, disarms, takes their orders, grounds or slows them (`isCleansable`), but not a suppression and not
10
+ * being thrown up. Remove Scurvy, Quicksilver
11
+ */
12
+ export declare const cleanseEffect: import("../effects").EffectType<"cleanse">;
7
13
  /** auras are kept up by the ability system, there is nothing to do at the moment of casting */
8
- export declare const auraEffect: import("../effects").EffectKind<"aura">;
14
+ export declare const auraEffect: import("../effects").EffectType<"aura">;
@@ -0,0 +1,84 @@
1
+ import { applyBuff, hasBuff, isCleansable, removeBuff } from "../buffs.js";
2
+ import { effectAmount, valueOf } from "../amounts.js";
3
+ import { defineEffect, effectTargets } from "../effects.js";
4
+ import { stacked } from "../triggers.js";
5
+ //#region src/abilities/effects/buff.ts
6
+ /**
7
+ * Buffs: the engine's effects that put one on (`EffectTypes.buff`), switch one on and off (`toggle`), and keep one up
8
+ * around the carrier (`aura`)
9
+ */
10
+ var buffEffect = defineEffect({
11
+ type: "buff",
12
+ run: (context, effect) => {
13
+ if (!effect.buff) return;
14
+ const fallback = context.world.registry.buff(effect.buff).harmful ? "enemies" : "allies";
15
+ const shielded = effect.amount !== void 0 || effect.scaling !== void 0;
16
+ const power = shielded ? context.world.settings.combat.healPower(context.world, context.caster) : 1;
17
+ for (const entity of effectTargets(context, effect, fallback)) {
18
+ if (!entity.isUnit) continue;
19
+ const duration = effect.duration === void 0 ? void 0 : valueOf(context, effect.duration, entity);
20
+ applyBuff(context.world, entity, effect.buff, duration, context.caster, context.level, context.ability.id);
21
+ const instance = shielded || effect.stack ? entity.buffs.find((carried) => carried.id === effect.buff) : void 0;
22
+ if (instance && shielded) instance.shield = Math.max(instance.shield ?? 0, effectAmount(context, effect, entity, power));
23
+ if (!effect.stack) continue;
24
+ if (!instance) continue;
25
+ const before = instance.stacks ?? 0;
26
+ instance.stacks = Math.min(before + 1, context.world.registry.buff(effect.buff).maxStacks ?? Infinity);
27
+ stacked(context.world, entity, instance, before);
28
+ }
29
+ },
30
+ fields: [
31
+ "buff",
32
+ "duration",
33
+ "stack",
34
+ "amount",
35
+ "scaling",
36
+ "byMaxHealth",
37
+ "byCurrentHealth",
38
+ "byMissingHealth",
39
+ "byStacks",
40
+ "byDistance",
41
+ "targetScaling",
42
+ "byDamage"
43
+ ]
44
+ });
45
+ /**
46
+ * Puts `buff` on the caster for as long as it likes, or takes it off when it has it: a stance, burrowing. Cast again to
47
+ * come back out
48
+ */
49
+ var toggleEffect = defineEffect({
50
+ type: "toggle",
51
+ run: (context, effect) => {
52
+ const { world, caster } = context;
53
+ if (!effect.buff) return;
54
+ if (hasBuff(caster, effect.buff)) removeBuff(world, caster, effect.buff);
55
+ else applyBuff(world, caster, effect.buff, Infinity, caster, context.level, context.ability.id);
56
+ },
57
+ fields: ["buff"]
58
+ });
59
+ /**
60
+ * Takes off what holds them up from what it reaches (allies, when it says nothing): every harmful buff that stuns,
61
+ * roots, silences, disarms, takes their orders, grounds or slows them (`isCleansable`), but not a suppression and not
62
+ * being thrown up. Remove Scurvy, Quicksilver
63
+ */
64
+ var cleanseEffect = defineEffect({
65
+ type: "cleanse",
66
+ run: (context, effect) => {
67
+ const { world } = context;
68
+ for (const entity of effectTargets(context, effect, "allies")) for (let i = entity.buffs.length - 1; i >= 0; i--) {
69
+ const instance = entity.buffs[i];
70
+ if (instance && isCleansable(world.registry.buff(instance.id))) removeBuff(world, entity, instance.id);
71
+ }
72
+ },
73
+ fields: []
74
+ });
75
+ /** auras are kept up by the ability system, there is nothing to do at the moment of casting */
76
+ var auraEffect = defineEffect({
77
+ type: "aura",
78
+ run: () => {},
79
+ fields: ["buff"]
80
+ });
81
+ //#endregion
82
+ export { auraEffect, buffEffect, cleanseEffect, toggleEffect };
83
+
84
+ //# sourceMappingURL=buff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buff.js","names":[],"sources":["../../../src/abilities/effects/buff.ts"],"sourcesContent":["/**\n * Buffs: the engine's effects that put one on (`EffectTypes.buff`), switch one on and off (`toggle`), and keep one up\n * around the carrier (`aura`)\n */\nimport { applyBuff, hasBuff, isCleansable, removeBuff } from '../buffs'\nimport { defineEffect, effectTargets } from '../effects'\nimport { effectAmount, valueOf } from '../amounts'\nimport { stacked } from '../triggers'\n\nexport const buffEffect = defineEffect({ type: 'buff', run: (context, effect) => {\n\t\tif (!effect.buff) return\n\t\tconst fallback = context.world.registry.buff(effect.buff).harmful ? 'enemies' : 'allies'\n\t\tconst shielded = effect.amount !== undefined || effect.scaling !== undefined\n\t\tconst power = shielded ? context.world.settings.combat.healPower(context.world, context.caster) : 1\n\t\tfor (const entity of effectTargets(context, effect, fallback)) {\n\t\t\tif (!entity.isUnit) continue\n\t\t\tconst duration = effect.duration === undefined ? undefined : valueOf(context, effect.duration, entity)\n\t\t\tapplyBuff(context.world, entity, effect.buff, duration, context.caster, context.level, context.ability.id)\n\t\t\tconst instance = shielded || effect.stack ? entity.buffs.find((carried) => carried.id === effect.buff) : undefined\n\t\t\t// the shield the effect says, over the buff's own: as much as it holds now or this, whichever is more\n\t\t\tif (instance && shielded) instance.shield = Math.max(instance.shield ?? 0, effectAmount(context, effect, entity, power))\n\t\t\tif (!effect.stack) continue\n\t\t\t// one more of it, as many as the buff allows, and what it does at its most as it gets there (`onMaxStacks`)\n\t\t\tif (!instance) continue\n\t\t\tconst before = instance.stacks ?? 0\n\t\t\tinstance.stacks = Math.min(before + 1, context.world.registry.buff(effect.buff).maxStacks ?? Infinity)\n\t\t\tstacked(context.world, entity, instance, before)\n\t\t}\n\t}, fields: ['buff', 'duration', 'stack', 'amount', 'scaling', 'byMaxHealth', 'byCurrentHealth', 'byMissingHealth', 'byStacks', 'byDistance', 'targetScaling', 'byDamage'] })\n\n/**\n * Puts `buff` on the caster for as long as it likes, or takes it off when it has it: a stance, burrowing. Cast again to\n * come back out\n */\nexport const toggleEffect = defineEffect({ type: 'toggle', run: (context, effect) => {\n\t\tconst { world, caster } = context\n\t\tif (!effect.buff) return\n\t\tif (hasBuff(caster, effect.buff)) removeBuff(world, caster, effect.buff)\n\t\telse applyBuff(world, caster, effect.buff, Infinity, caster, context.level, context.ability.id)\n\t}, fields: ['buff'] })\n\n/**\n * Takes off what holds them up from what it reaches (allies, when it says nothing): every harmful buff that stuns,\n * roots, silences, disarms, takes their orders, grounds or slows them (`isCleansable`), but not a suppression and not\n * being thrown up. Remove Scurvy, Quicksilver\n */\nexport const cleanseEffect = defineEffect({ type: 'cleanse', run: (context, effect) => {\n\t\tconst { world } = context\n\t\tfor (const entity of effectTargets(context, effect, 'allies'))\n\t\t\tfor (let i = entity.buffs.length - 1; i >= 0; i--) {\n\t\t\t\tconst instance = entity.buffs[i]\n\t\t\t\tif (instance && isCleansable(world.registry.buff(instance.id))) removeBuff(world, entity, instance.id)\n\t\t\t}\n\t}, fields: [] })\n\n/** auras are kept up by the ability system, there is nothing to do at the moment of casting */\nexport const auraEffect = defineEffect({ type: 'aura', run: () => {}, fields: ['buff'] })\n"],"mappings":";;;;;;;;;AASA,IAAa,aAAa,aAAa;CAAE,MAAM;CAAQ,MAAM,SAAS,WAAW;EAC/E,IAAI,CAAC,OAAO,MAAM;EAClB,MAAM,WAAW,QAAQ,MAAM,SAAS,KAAK,OAAO,IAAI,CAAC,CAAC,UAAU,YAAY;EAChF,MAAM,WAAW,OAAO,WAAW,KAAA,KAAa,OAAO,YAAY,KAAA;EACnE,MAAM,QAAQ,WAAW,QAAQ,MAAM,SAAS,OAAO,UAAU,QAAQ,OAAO,QAAQ,MAAM,IAAI;EAClG,KAAK,MAAM,UAAU,cAAc,SAAS,QAAQ,QAAQ,GAAG;GAC9D,IAAI,CAAC,OAAO,QAAQ;GACpB,MAAM,WAAW,OAAO,aAAa,KAAA,IAAY,KAAA,IAAY,QAAQ,SAAS,OAAO,UAAU,MAAM;GACrG,UAAU,QAAQ,OAAO,QAAQ,OAAO,MAAM,UAAU,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,QAAQ,EAAE;GACzG,MAAM,WAAW,YAAY,OAAO,QAAQ,OAAO,MAAM,MAAM,YAAY,QAAQ,OAAO,OAAO,IAAI,IAAI,KAAA;GAEzG,IAAI,YAAY,UAAU,SAAS,SAAS,KAAK,IAAI,SAAS,UAAU,GAAG,aAAa,SAAS,QAAQ,QAAQ,KAAK,CAAC;GACvH,IAAI,CAAC,OAAO,OAAO;GAEnB,IAAI,CAAC,UAAU;GACf,MAAM,SAAS,SAAS,UAAU;GAClC,SAAS,SAAS,KAAK,IAAI,SAAS,GAAG,QAAQ,MAAM,SAAS,KAAK,OAAO,IAAI,CAAC,CAAC,aAAa,QAAQ;GACrG,QAAQ,QAAQ,OAAO,QAAQ,UAAU,MAAM;EAChD;CACD;CAAG,QAAQ;EAAC;EAAQ;EAAY;EAAS;EAAU;EAAW;EAAe;EAAmB;EAAmB;EAAY;EAAc;EAAiB;CAAU;AAAE,CAAC;;;;;AAM5K,IAAa,eAAe,aAAa;CAAE,MAAM;CAAU,MAAM,SAAS,WAAW;EACnF,MAAM,EAAE,OAAO,WAAW;EAC1B,IAAI,CAAC,OAAO,MAAM;EAClB,IAAI,QAAQ,QAAQ,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,OAAO,IAAI;OAClE,UAAU,OAAO,QAAQ,OAAO,MAAM,UAAU,QAAQ,QAAQ,OAAO,QAAQ,QAAQ,EAAE;CAC/F;CAAG,QAAQ,CAAC,MAAM;AAAE,CAAC;;;;;;AAOtB,IAAa,gBAAgB,aAAa;CAAE,MAAM;CAAW,MAAM,SAAS,WAAW;EACrF,MAAM,EAAE,UAAU;EAClB,KAAK,MAAM,UAAU,cAAc,SAAS,QAAQ,QAAQ,GAC3D,KAAK,IAAI,IAAI,OAAO,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK;GAClD,MAAM,WAAW,OAAO,MAAM;GAC9B,IAAI,YAAY,aAAa,MAAM,SAAS,KAAK,SAAS,EAAE,CAAC,GAAG,WAAW,OAAO,QAAQ,SAAS,EAAE;EACtG;CACF;CAAG,QAAQ,CAAC;AAAE,CAAC;;AAGhB,IAAa,aAAa,aAAa;CAAE,MAAM;CAAQ,WAAW,CAAC;CAAG,QAAQ,CAAC,MAAM;AAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ /** `effects` when what it asks holds, `otherwise` when not; with an area, for each within it, that one the target */
2
+ export declare const ifEffect: import("../effects").EffectType<"if">;
@@ -0,0 +1,41 @@
1
+ import { byChance, conditionHolds } from "../chance.js";
2
+ import { run } from "../land.js";
3
+ import { defineEffect, effectTargets } from "../effects.js";
4
+ //#region src/abilities/effects/conditions.ts
5
+ /**
6
+ * The `if` effect (E2E-PLAN AB6): `effects` when what it asks of the caster and the target holds (and its `chance` draws
7
+ * yes), `otherwise` when not; on the unit it was cast on, or on each within its area
8
+ */
9
+ /** Whether what an `if` asks holds for one target (or none): the caster's, the target's, then the draw */
10
+ var holds = (context, effect, target) => conditionHolds(context, effect.caster, context.caster) && conditionHolds(context, effect.target, target) && byChance(context, effect.chance, target);
11
+ /** `effects` when what it asks holds, `otherwise` when not; with an area, for each within it, that one the target */
12
+ var ifEffect = defineEffect({
13
+ type: "if",
14
+ run: (context, effect) => {
15
+ if (effect.radius === void 0 && effect.shape === void 0) {
16
+ run(context, holds(context, effect, context.target) ? effect.effects : effect.otherwise);
17
+ return;
18
+ }
19
+ for (const target of effectTargets(context, effect, "enemies")) {
20
+ const each = {
21
+ ...context,
22
+ target,
23
+ point: {
24
+ x: target.pos.x,
25
+ z: target.pos.z
26
+ }
27
+ };
28
+ run(each, holds(each, effect, target) ? effect.effects : effect.otherwise);
29
+ }
30
+ },
31
+ fields: [
32
+ "caster",
33
+ "target",
34
+ "effects",
35
+ "otherwise"
36
+ ]
37
+ });
38
+ //#endregion
39
+ export { ifEffect };
40
+
41
+ //# sourceMappingURL=conditions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditions.js","names":[],"sources":["../../../src/abilities/effects/conditions.ts"],"sourcesContent":["/**\n * The `if` effect (E2E-PLAN AB6): `effects` when what it asks of the caster and the target holds (and its `chance` draws\n * yes), `otherwise` when not; on the unit it was cast on, or on each within its area\n */\nimport { byChance, conditionHolds } from '../chance'\nimport { defineEffect, type EffectContext, effectTargets } from '../effects'\nimport type { Entity } from '#engine/entity'\nimport type { EffectOf } from '#engine/defs'\nimport { run } from '../land'\n\n/** Whether what an `if` asks holds for one target (or none): the caster's, the target's, then the draw */\nconst holds = (context: EffectContext, effect: EffectOf<'if'>, target: Entity | undefined): boolean =>\n\tconditionHolds(context, effect.caster, context.caster) &&\n\tconditionHolds(context, effect.target, target) &&\n\tbyChance(context, effect.chance, target)\n\n/** `effects` when what it asks holds, `otherwise` when not; with an area, for each within it, that one the target */\nexport const ifEffect = defineEffect({\n\ttype: 'if',\n\trun: (context, effect) => {\n\t\tif (effect.radius === undefined && effect.shape === undefined) {\n\t\t\trun(context, holds(context, effect, context.target) ? effect.effects : effect.otherwise)\n\t\t\treturn\n\t\t}\n\t\tfor (const target of effectTargets(context, effect, 'enemies')) {\n\t\t\tconst each = { ...context, target, point: { x: target.pos.x, z: target.pos.z } }\n\t\t\trun(each, holds(each, effect, target) ? effect.effects : effect.otherwise)\n\t\t}\n\t},\n\tfields: ['caster', 'target', 'effects', 'otherwise']\n})\n"],"mappings":";;;;;;;;;AAWA,IAAM,SAAS,SAAwB,QAAwB,WAC9D,eAAe,SAAS,OAAO,QAAQ,QAAQ,MAAM,KACrD,eAAe,SAAS,OAAO,QAAQ,MAAM,KAC7C,SAAS,SAAS,OAAO,QAAQ,MAAM;;AAGxC,IAAa,WAAW,aAAa;CACpC,MAAM;CACN,MAAM,SAAS,WAAW;EACzB,IAAI,OAAO,WAAW,KAAA,KAAa,OAAO,UAAU,KAAA,GAAW;GAC9D,IAAI,SAAS,MAAM,SAAS,QAAQ,QAAQ,MAAM,IAAI,OAAO,UAAU,OAAO,SAAS;GACvF;EACD;EACA,KAAK,MAAM,UAAU,cAAc,SAAS,QAAQ,SAAS,GAAG;GAC/D,MAAM,OAAO;IAAE,GAAG;IAAS;IAAQ,OAAO;KAAE,GAAG,OAAO,IAAI;KAAG,GAAG,OAAO,IAAI;IAAE;GAAE;GAC/E,IAAI,MAAM,MAAM,MAAM,QAAQ,MAAM,IAAI,OAAO,UAAU,OAAO,SAAS;EAC1E;CACD;CACA,QAAQ;EAAC;EAAU;EAAU;EAAW;CAAW;AACpD,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { auraEffect, buffEffect, cleanseEffect, toggleEffect } from "./buff.js";
2
+ import { damageEffect } from "./damage.js";
3
+ import { ifEffect } from "./conditions.js";
4
+ import { healEffect, manaEffect } from "./heal.js";
5
+ import { missileEffect } from "./missile.js";
6
+ import { morphEffect } from "./morph.js";
7
+ import { blinkEffect, dashEffect, knockbackEffect, pullEffect, teleportEffect } from "./moves.js";
8
+ import { chargedEffect, onAbilityHitEffect, onCastEffect, onDamagedEffect, onFatalEffect, onHitEffect, onKillEffect, onLowHealthEffect, refreshEffect, removeBuffEffect, resetAttackEffect } from "./passives.js";
9
+ import { sendProxyEffect } from "./proxy.js";
10
+ import { detectEffect, revealEffect } from "./sight.js";
11
+ import { spawnEffect } from "./spawn.js";
12
+ import { afterEffect, zoneEffect } from "./timed.js";
13
+ import { exchangeEffect } from "./trade.js";
14
+ //#region src/abilities/effects/core.ts
15
+ /** @internal */
16
+ var coreEffects = [
17
+ damageEffect,
18
+ healEffect,
19
+ manaEffect,
20
+ buffEffect,
21
+ missileEffect,
22
+ auraEffect,
23
+ spawnEffect,
24
+ toggleEffect,
25
+ revealEffect,
26
+ onHitEffect,
27
+ resetAttackEffect,
28
+ blinkEffect,
29
+ teleportEffect,
30
+ dashEffect,
31
+ knockbackEffect,
32
+ pullEffect,
33
+ refreshEffect,
34
+ onKillEffect,
35
+ onCastEffect,
36
+ chargedEffect,
37
+ afterEffect,
38
+ zoneEffect,
39
+ detectEffect,
40
+ exchangeEffect,
41
+ morphEffect,
42
+ onDamagedEffect,
43
+ onAbilityHitEffect,
44
+ onLowHealthEffect,
45
+ onFatalEffect,
46
+ removeBuffEffect,
47
+ cleanseEffect,
48
+ sendProxyEffect,
49
+ ifEffect
50
+ ];
51
+ //#endregion
52
+ export { coreEffects };
53
+
54
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","names":[],"sources":["../../../src/abilities/effects/core.ts"],"sourcesContent":["/**\n * The engine's kinds of effect, as the game is put together with them (`assembleGame`): a game's own of the same type\n * comes after and takes the place of one\n */\nimport type { EffectType } from '../effects'\nimport { auraEffect, buffEffect, cleanseEffect, toggleEffect } from './buff'\nimport { damageEffect } from './damage'\nimport { ifEffect } from './conditions'\nimport { healEffect, manaEffect } from './heal'\nimport { missileEffect } from './missile'\nimport { morphEffect } from './morph'\nimport { blinkEffect, dashEffect, knockbackEffect, pullEffect, teleportEffect } from './moves'\nimport {\n\tchargedEffect,\n\tonAbilityHitEffect,\n\tonCastEffect,\n\tonDamagedEffect,\n\tonHitEffect,\n\tonKillEffect,\n\tonFatalEffect,\n\tonLowHealthEffect,\n\trefreshEffect,\n\tremoveBuffEffect,\n\tresetAttackEffect\n} from './passives'\nimport { sendProxyEffect } from './proxy'\nimport { detectEffect, revealEffect } from './sight'\nimport { spawnEffect } from './spawn'\nimport { afterEffect, zoneEffect } from './timed'\nimport { exchangeEffect } from './trade'\n\n/** @internal */\nexport const coreEffects: readonly EffectType[] = [\n\tdamageEffect,\n\thealEffect,\n\tmanaEffect,\n\tbuffEffect,\n\tmissileEffect,\n\tauraEffect,\n\tspawnEffect,\n\ttoggleEffect,\n\trevealEffect,\n\tonHitEffect,\n\tresetAttackEffect,\n\tblinkEffect,\n\tteleportEffect,\n\tdashEffect,\n\tknockbackEffect,\n\tpullEffect,\n\trefreshEffect,\n\tonKillEffect,\n\tonCastEffect,\n\tchargedEffect,\n\tafterEffect,\n\tzoneEffect,\n\tdetectEffect,\n\texchangeEffect,\n\tmorphEffect,\n\tonDamagedEffect,\n\tonAbilityHitEffect,\n\tonLowHealthEffect,\n\tonFatalEffect,\n\tremoveBuffEffect,\n\tcleanseEffect,\n\tsendProxyEffect,\n\tifEffect\n]\n"],"mappings":";;;;;;;;;;;;;;;AAgCA,IAAa,cAAqC;CACjD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD"}
@@ -1 +1 @@
1
- export declare const damageEffect: import("../effects").EffectKind<"damage">;
1
+ export declare const damageEffect: import("../effects").EffectType<"damage">;
@@ -0,0 +1,43 @@
1
+ import { effectAmount } from "../amounts.js";
2
+ import { defineEffect, effectTargets } from "../effects.js";
3
+ //#region src/abilities/effects/damage.ts
4
+ /**
5
+ * Damage: the engine's effect that hurts what it reaches (`EffectTypes.damage`)
6
+ */
7
+ var damageEffect = defineEffect({
8
+ type: "damage",
9
+ run: (context, effect) => {
10
+ const { world, caster, level } = context;
11
+ const { how } = context.ability;
12
+ for (const entity of effectTargets(context, effect, "enemies")) {
13
+ const dealt = effectAmount(context, effect, entity);
14
+ world.damage(entity, dealt, caster, {
15
+ damageType: effect.damageType ?? "magic",
16
+ ability: context.ability.id,
17
+ how: effect.how ?? (typeof how === "function" ? how({
18
+ caster,
19
+ target: entity,
20
+ level,
21
+ amount: dealt
22
+ }) : how)
23
+ });
24
+ }
25
+ },
26
+ fields: [
27
+ "amount",
28
+ "scaling",
29
+ "damageType",
30
+ "how",
31
+ "byMissingHealth",
32
+ "byMaxHealth",
33
+ "byCurrentHealth",
34
+ "byStacks",
35
+ "byDistance",
36
+ "targetScaling",
37
+ "byDamage"
38
+ ]
39
+ });
40
+ //#endregion
41
+ export { damageEffect };
42
+
43
+ //# sourceMappingURL=damage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"damage.js","names":[],"sources":["../../../src/abilities/effects/damage.ts"],"sourcesContent":["/**\n * Damage: the engine's effect that hurts what it reaches (`EffectTypes.damage`)\n */\nimport { defineEffect, effectTargets } from '../effects'\nimport { effectAmount } from '../amounts'\n\nexport const damageEffect = defineEffect({ type: 'damage', run: (context, effect) => {\n\t\tconst { world, caster, level } = context\n\t\t// spells are magic, unless they say otherwise\n\t\t// how what it kills dies, for the screen: the effect's word, or the ability's, decided for each it hits\n\t\tconst { how } = context.ability\n\t\tfor (const entity of effectTargets(context, effect, 'enemies')) {\n\t\t\t// its amount for this one: code, the caster's stats, and what the target is (`byMissingHealth`, `byMaxHealth`...)\n\t\t\tconst dealt = effectAmount(context, effect, entity)\n\t\t\tworld.damage(entity, dealt, caster, {\n\t\t\t\tdamageType: effect.damageType ?? 'magic',\n\t\t\t\tability: context.ability.id,\n\t\t\t\thow: effect.how ?? (typeof how === 'function' ? how({ caster, target: entity, level, amount: dealt }) : how)\n\t\t\t})\n\t\t}\n\t}, fields: ['amount', 'scaling', 'damageType', 'how', 'byMissingHealth', 'byMaxHealth', 'byCurrentHealth', 'byStacks', 'byDistance', 'targetScaling', 'byDamage'] })\n"],"mappings":";;;;;;AAMA,IAAa,eAAe,aAAa;CAAE,MAAM;CAAU,MAAM,SAAS,WAAW;EACnF,MAAM,EAAE,OAAO,QAAQ,UAAU;EAGjC,MAAM,EAAE,QAAQ,QAAQ;EACxB,KAAK,MAAM,UAAU,cAAc,SAAS,QAAQ,SAAS,GAAG;GAE/D,MAAM,QAAQ,aAAa,SAAS,QAAQ,MAAM;GAClD,MAAM,OAAO,QAAQ,OAAO,QAAQ;IACnC,YAAY,OAAO,cAAc;IACjC,SAAS,QAAQ,QAAQ;IACzB,KAAK,OAAO,QAAQ,OAAO,QAAQ,aAAa,IAAI;KAAE;KAAQ,QAAQ;KAAQ;KAAO,QAAQ;IAAM,CAAC,IAAI;GACzG,CAAC;EACF;CACD;CAAG,QAAQ;EAAC;EAAU;EAAW;EAAc;EAAO;EAAmB;EAAe;EAAmB;EAAY;EAAc;EAAiB;CAAU;AAAE,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const healEffect: import("../effects").EffectKind<"heal">;
2
- export declare const manaEffect: import("../effects").EffectKind<"mana">;
1
+ export declare const healEffect: import("../effects").EffectType<"heal">;
2
+ export declare const manaEffect: import("../effects").EffectType<"mana">;
@@ -0,0 +1,51 @@
1
+ import { manaChanged } from "../../engineEvents.js";
2
+ import { scaled } from "../scaled.js";
3
+ import { effectAmount, valueOf } from "../amounts.js";
4
+ import { defineEffect, effectTargets } from "../effects.js";
5
+ //#region src/abilities/effects/heal.ts
6
+ /**
7
+ * Healing and mana: the engine's effects that give back (`EffectTypes.heal`, `mana`)
8
+ */
9
+ var healEffect = defineEffect({
10
+ type: "heal",
11
+ run: (context, effect) => {
12
+ const { world, caster } = context;
13
+ const power = world.settings.combat.healPower(world, caster);
14
+ for (const entity of effectTargets(context, effect, "allies")) if (entity.isUnit && !entity.def.invulnerable && !entity.def.targetableBy) world.heal(entity, effectAmount(context, effect, entity, power), caster);
15
+ },
16
+ fields: [
17
+ "amount",
18
+ "scaling",
19
+ "byMissingHealth",
20
+ "byMaxHealth",
21
+ "byCurrentHealth",
22
+ "byStacks",
23
+ "byDistance",
24
+ "targetScaling",
25
+ "byDamage"
26
+ ]
27
+ });
28
+ var manaEffect = defineEffect({
29
+ type: "mana",
30
+ run: (context, effect) => {
31
+ const { world, caster, level } = context;
32
+ const coded = typeof effect.amount === "function";
33
+ const once = coded ? 0 : scaled(world, caster, valueOf(context, effect.amount), effect.scaling, level) * (context.share ?? 1);
34
+ for (const entity of effectTargets(context, effect, "allies")) {
35
+ const amount = coded ? scaled(world, caster, valueOf(context, effect.amount, entity), effect.scaling, level) * (context.share ?? 1) : once;
36
+ const given = Math.min(entity.mana + amount, entity.maxMana) - entity.mana;
37
+ entity.mana += given;
38
+ if (given !== 0) world.events.emit(manaChanged, {
39
+ entity,
40
+ amount: given,
41
+ ability: context.ability.id,
42
+ source: caster
43
+ });
44
+ }
45
+ },
46
+ fields: ["amount", "scaling"]
47
+ });
48
+ //#endregion
49
+ export { healEffect, manaEffect };
50
+
51
+ //# sourceMappingURL=heal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heal.js","names":[],"sources":["../../../src/abilities/effects/heal.ts"],"sourcesContent":["/**\n * Healing and mana: the engine's effects that give back (`EffectTypes.heal`, `mana`)\n */\nimport { manaChanged } from '#engine/engineEvents'\nimport { defineEffect, effectTargets } from '../effects'\nimport { scaled } from '../scaled'\nimport { effectAmount, valueOf } from '../amounts'\n\nexport const healEffect = defineEffect({ type: 'heal', run: (context, effect) => {\n\t\tconst { world, caster } = context\n\t\tconst power = world.settings.combat.healPower(world, caster)\n\t\tfor (const entity of effectTargets(context, effect, 'allies')) {\n\t\t\tif (entity.isUnit && !entity.def.invulnerable && !entity.def.targetableBy) world.heal(entity, effectAmount(context, effect, entity, power), caster)\n\t\t}\n\t}, fields: ['amount', 'scaling', 'byMissingHealth', 'byMaxHealth', 'byCurrentHealth', 'byStacks', 'byDistance', 'targetScaling', 'byDamage'] })\n\nexport const manaEffect = defineEffect({ type: 'mana', run: (context, effect) => {\n\t\tconst { world, caster, level } = context\n\t\tconst coded = typeof effect.amount === 'function'\n\t\tconst once = coded ? 0 : scaled(world, caster, valueOf(context, effect.amount), effect.scaling, level) * (context.share ?? 1)\n\t\tfor (const entity of effectTargets(context, effect, 'allies')) {\n\t\t\tconst amount = coded ? scaled(world, caster, valueOf(context, effect.amount, entity), effect.scaling, level) * (context.share ?? 1) : once\n\t\t\tconst given = Math.min(entity.mana + amount, entity.maxMana) - entity.mana\n\t\t\tentity.mana += given\n\t\t\tif (given !== 0) world.events.emit(manaChanged, { entity, amount: given, ability: context.ability.id, source: caster })\n\t\t}\n\t}, fields: ['amount', 'scaling'] })\n"],"mappings":";;;;;;;;AAQA,IAAa,aAAa,aAAa;CAAE,MAAM;CAAQ,MAAM,SAAS,WAAW;EAC/E,MAAM,EAAE,OAAO,WAAW;EAC1B,MAAM,QAAQ,MAAM,SAAS,OAAO,UAAU,OAAO,MAAM;EAC3D,KAAK,MAAM,UAAU,cAAc,SAAS,QAAQ,QAAQ,GAC3D,IAAI,OAAO,UAAU,CAAC,OAAO,IAAI,gBAAgB,CAAC,OAAO,IAAI,cAAc,MAAM,KAAK,QAAQ,aAAa,SAAS,QAAQ,QAAQ,KAAK,GAAG,MAAM;CAEpJ;CAAG,QAAQ;EAAC;EAAU;EAAW;EAAmB;EAAe;EAAmB;EAAY;EAAc;EAAiB;CAAU;AAAE,CAAC;AAE/I,IAAa,aAAa,aAAa;CAAE,MAAM;CAAQ,MAAM,SAAS,WAAW;EAC/E,MAAM,EAAE,OAAO,QAAQ,UAAU;EACjC,MAAM,QAAQ,OAAO,OAAO,WAAW;EACvC,MAAM,OAAO,QAAQ,IAAI,OAAO,OAAO,QAAQ,QAAQ,SAAS,OAAO,MAAM,GAAG,OAAO,SAAS,KAAK,KAAK,QAAQ,SAAS;EAC3H,KAAK,MAAM,UAAU,cAAc,SAAS,QAAQ,QAAQ,GAAG;GAC9D,MAAM,SAAS,QAAQ,OAAO,OAAO,QAAQ,QAAQ,SAAS,OAAO,QAAQ,MAAM,GAAG,OAAO,SAAS,KAAK,KAAK,QAAQ,SAAS,KAAK;GACtI,MAAM,QAAQ,KAAK,IAAI,OAAO,OAAO,QAAQ,OAAO,OAAO,IAAI,OAAO;GACtE,OAAO,QAAQ;GACf,IAAI,UAAU,GAAG,MAAM,OAAO,KAAK,aAAa;IAAE;IAAQ,QAAQ;IAAO,SAAS,QAAQ,QAAQ;IAAI,QAAQ;GAAO,CAAC;EACvH;CACD;CAAG,QAAQ,CAAC,UAAU,SAAS;AAAE,CAAC"}
@@ -1 +1,13 @@
1
- export declare const missileEffect: import("../effects").EffectKind<"missile">;
1
+ import { type EffectOf } from '#engine/defs';
2
+ import type { Missile } from '#engine/world';
3
+ import { type EffectContext } from '../effects';
4
+ /**
5
+ * Sends the missiles of a missile effect (`EffectTypes.missile`) off, as the engine's `missile` effect does, and hands
6
+ * them back: what a game's own effect does that wraps a missile (and keeps it, to steer it, or take it out with
7
+ * `removeMissile`). They go off from the context's `origin` (a ball, a shadow) when it has one, the caster's place
8
+ * otherwise, towards its `point` (its `target`, homing); they are the caster's, and what they hit is in its name
9
+ *
10
+ * @beta
11
+ */
12
+ export declare function launchMissile(context: EffectContext, effect: EffectOf<'missile'>): Missile[];
13
+ export declare const missileEffect: import("../effects").EffectType<"missile">;
@@ -0,0 +1,104 @@
1
+ import { atan2, cos, hypot, sin } from "../../exactMath.js";
2
+ import { dist } from "../../math.js";
3
+ import { at } from "../../defs.js";
4
+ import { missileSpawned } from "../../engineEvents.js";
5
+ import { effectOrigin } from "../land.js";
6
+ import { valueOf } from "../amounts.js";
7
+ import { defineEffect } from "../effects.js";
8
+ //#region src/abilities/effects/missile.ts
9
+ /**
10
+ * Missiles: the engine's effect that sends what flies (`EffectTypes.missile`), shot or thrown in an arc; what they do
11
+ * on the way, and where they spring on to, is `updateMissiles`'
12
+ */
13
+ /**
14
+ * Sends the missiles of a missile effect (`EffectTypes.missile`) off, as the engine's `missile` effect does, and hands
15
+ * them back: what a game's own effect does that wraps a missile (and keeps it, to steer it, or take it out with
16
+ * `removeMissile`). They go off from the context's `origin` (a ball, a shadow) when it has one, the caster's place
17
+ * otherwise, towards its `point` (its `target`, homing); they are the caster's, and what they hit is in its name
18
+ *
19
+ * @beta
20
+ */
21
+ function launchMissile(context, effect) {
22
+ const { world, caster, ability, level, point, target } = context;
23
+ const from = effectOrigin(context);
24
+ const aim = effect.homing && target ? target.pos : point;
25
+ const dx = aim.x - from.x;
26
+ const dz = aim.z - from.z;
27
+ const length = hypot(dx, dz);
28
+ const heading = length > .01 ? atan2(dx, dz) : caster.facing;
29
+ const count = Math.max(Math.round(at(effect.count, level, 1)), 1);
30
+ const range = at(effect.distance, level, effect.toPoint ? Infinity : 10);
31
+ const hit = /* @__PURE__ */ new Set();
32
+ const homing = effect.homing && target;
33
+ const left = homing ? Infinity : effect.toPoint ? Math.min(length, range) : range;
34
+ const time = effect.arc?.time;
35
+ const way = homing ? dist(from, target.pos) : left;
36
+ const speed = time && time > 0 && Number.isFinite(way) ? way / time : effect.speed ?? 10;
37
+ const sent = [];
38
+ for (let i = 0; i < count; i++) {
39
+ const angle = heading + (count > 1 ? (effect.spread ?? 0) * (i / (count - 1) - .5) : 0);
40
+ const missile = {
41
+ id: world.newId(),
42
+ owner: caster.owner,
43
+ source: caster.id,
44
+ ability: ability.id,
45
+ level,
46
+ x: from.x,
47
+ z: from.z,
48
+ prevX: from.x,
49
+ prevZ: from.z,
50
+ dx: sin(angle),
51
+ dz: cos(angle),
52
+ speed,
53
+ left,
54
+ delay: at(effect.delay, level),
55
+ forms: at(effect.delay, level),
56
+ radius: valueOf(context, effect.radius, void 0, 1),
57
+ effect,
58
+ hit,
59
+ target: homing ? target.id : 0,
60
+ travelled: 0,
61
+ leg: 0,
62
+ height: 0,
63
+ bounces: 0,
64
+ stopped: false,
65
+ ...effect.onWall && { floor: world.terrain.levelAt(from.x, from.z) },
66
+ ...context.held !== void 0 && { held: context.held }
67
+ };
68
+ world.missiles.push(missile);
69
+ world.events.emit(missileSpawned, missile);
70
+ sent.push(missile);
71
+ }
72
+ return sent;
73
+ }
74
+ var missileEffect = defineEffect({
75
+ type: "missile",
76
+ run: (context, effect) => void launchMissile(context, effect),
77
+ fields: [
78
+ "speed",
79
+ "distance",
80
+ "count",
81
+ "spread",
82
+ "homing",
83
+ "toPoint",
84
+ "delay",
85
+ "sight",
86
+ "blocked",
87
+ "pierce",
88
+ "falloff",
89
+ "arc",
90
+ "bounce",
91
+ "returns",
92
+ "hitsOnReturn",
93
+ "seek",
94
+ "steer",
95
+ "effects",
96
+ "onEnd",
97
+ "onWall",
98
+ "split"
99
+ ]
100
+ });
101
+ //#endregion
102
+ export { launchMissile, missileEffect };
103
+
104
+ //# sourceMappingURL=missile.js.map