@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,13 @@
1
+ //#region src/pack.schema.json
2
+ var $schema = "http://json-schema.org/draft-07/schema#";
3
+ var $ref = "#/definitions/PackFile";
4
+ var definitions = /*#__PURE__*/ JSON.parse("{\"PackFile\":{\"type\":\"object\",\"properties\":{\"$schema\":{\"type\":\"string\"},\"id\":{\"type\":\"string\",\"description\":\"Letters, digits, dots and dashes: what the game composed of it is called by (`melee+<id>`)\"},\"version\":{\"type\":\"string\",\"description\":\"`major.minor.patch`\"},\"name\":{\"type\":\"string\",\"description\":\"A human-readable name for the pack, shown where the id is not enough\"},\"requires\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"The game and the packs or mods it is made for, as a mod's (`ModDef.requires`)\"},\"units\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/UnitTypeDef\"},\"description\":\"Unit type definitions the pack adds to the game's or puts in the place of those of the same id\"},\"abilities\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/AbilityDef\"},\"description\":\"Ability definitions the pack adds or replaces\"},\"buffs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/BuffDef\"},\"description\":\"Buff definitions the pack adds or replaces\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ItemDef\"},\"description\":\"Item definitions the pack adds or replaces\"},\"upgrades\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/UpgradeDef\"},\"description\":\"Upgrade definitions the pack adds or replaces\"},\"races\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/RaceDef\"},\"description\":\"Race definitions the pack adds or replaces\"},\"settings\":{\"$ref\":\"#/definitions/RuleSettingsInit\",\"description\":\"The rules it changes, as data (`GameBuilder.settings`)\"},\"data\":{\"$ref\":\"#/definitions/GameData\",\"description\":\"Values over the definitions, as a `data.json` has them (`GameData`): the editor's Data panel writes here for a pack\"},\"looks\":{\"type\":\"object\",\"additionalProperties\":{},\"description\":\"What its units look like, as a `looks.json` has them: the client's to lay over the game's view\"}},\"required\":[\"id\",\"version\"],\"additionalProperties\":false,\"description\":\"A pack of content as its file has it (`packs/<id>/pack.json`): plain data, checked against the pack's schema (`@v12-engine/engine/schemas/pack.schema.json`) as it is read. Its definitions are added to the game's, or put in the place of those of the same id; then its `data` is laid over the whole as a `data.json` is (`layData`), and its `settings` over the game's\"},\"UnitTypeDef\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"The type's id, shared by every game: give it a prefix of the game's\"},\"name\":{\"type\":\"string\",\"description\":\"What the player sees the type called\"},\"basedOn\":{\"type\":\"string\",\"description\":\"The definition this one is a copy of, made from the data (`copyOf` in a `data.json`, the editor's Copy as new): what it is drawn, heard and pictured as where the game gives it no look of its own\"},\"kind\":{\"$ref\":\"#/definitions/EntityKind\",\"description\":\"Whether the type is a unit, a building or a resource\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Words of the game's for what it is (`undead`, `mechanical`, `ward`): what an effect's `tags`, an ability's `targets.tags` and an `if`'s condition (`UnitCondition.tags`) go by\"},\"radius\":{\"type\":\"number\",\"description\":\"Collision radius\"},\"footprint\":{\"type\":\"object\",\"properties\":{\"w\":{\"type\":\"number\"},\"d\":{\"type\":\"number\"}},\"required\":[\"w\",\"d\"],\"additionalProperties\":false,\"description\":\"Size in grid cells. Required for buildings and resources\"},\"stats\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"health\":{\"type\":\"number\",\"description\":\"The most health a unit has; the entity's `maxHealth` follows it\"},\"attackDamage\":{\"type\":\"number\",\"description\":\"What a basic attack deals, before the armor of the target\"},\"attackSpeed\":{\"type\":\"number\",\"description\":\"Attacks per second\"},\"attackRange\":{\"type\":\"number\",\"description\":\"Measured between the edges of attacker and target\"},\"armor\":{\"type\":\"number\",\"description\":\"Against physical damage: 100 of it halve what arrives\"},\"magicResist\":{\"type\":\"number\",\"description\":\"The same against magic damage\"},\"incomingDamage\":{\"type\":\"number\",\"description\":\"Part by which the damage it takes is more or less, after armor or magic resist and before shields: -0.3 takes 30% less, 0.2 a fifth more. Added up with the part of the damage's own type (below), and never below none\"},\"incomingPhysicalDamage\":{\"type\":\"number\",\"description\":\"The same, of physical damage only, on top of `incomingDamage`\"},\"incomingMagicDamage\":{\"type\":\"number\",\"description\":\"The same, of magic damage only, on top of `incomingDamage`\"},\"incomingTrueDamage\":{\"type\":\"number\",\"description\":\"The same, of true damage only, on top of `incomingDamage`\"},\"outgoingDamage\":{\"type\":\"number\",\"description\":\"Part by which all the damage it deals, of attacks and abilities, is more or less: -0.35 deals 35% less. Never below none\"},\"incomingHealing\":{\"type\":\"number\",\"description\":\"Part by which the healing it gets is more or less: -0.4 heals 40% less (an anti-heal). Never below none\"},\"healthRegen\":{\"type\":\"number\",\"description\":\"Per second\"},\"mana\":{\"type\":\"number\",\"description\":\"The most mana a unit has\"},\"manaRegen\":{\"type\":\"number\",\"description\":\"Per second\"},\"moveSpeed\":{\"type\":\"number\",\"description\":\"Units per second. Who has none cannot move\"},\"sight\":{\"type\":\"number\",\"description\":\"How far it sees. At night the unit type says how far that is\"}},\"required\":[\"health\"],\"description\":\"What it starts with. What is left out is 0, a critical strike is worth 175%\"},\"initialMana\":{\"type\":\"number\",\"description\":\"Mana it comes into the world with. All of it when left out\"},\"sight\":{\"type\":\"number\",\"description\":\"Vision radius by day\"},\"sightNight\":{\"type\":\"number\",\"description\":\"Vision radius at night. A part of the one by day when left out\"},\"flying\":{\"type\":\"boolean\",\"description\":\"Flies: over cliffs, trees and buildings, out of reach of whatever cannot hit the air\"},\"naval\":{\"type\":\"boolean\",\"description\":\"Goes on deep water and nowhere else: a boat. Sent onto land, it goes to the water nearest where it was sent. On the ground, as far as what can hit it goes\"},\"waygate\":{\"type\":\"boolean\",\"description\":\"A waygate, in a game with the portals pack (`portalsPack`): a unit told to it walks in and is at once where it leads (its `waygate` field, a point of the map; `setWaygate` in code)\"},\"destructible\":{\"type\":\"boolean\",\"description\":\"Rocks, a barricade, a gate to break down, in a game with the destructibles pack (`destructiblesPack`): it stands in the way as any building does until it is brought down, and any unit whose attack reaches it attacks it when told to, never of its own accord\"},\"transport\":{\"type\":\"object\",\"properties\":{\"capacity\":{\"type\":\"number\"},\"armed\":{\"type\":\"number\",\"description\":\"Attack damage each one inside adds; or in code, all of what they add, by who is inside (none for nobody)\"}},\"required\":[\"capacity\"],\"additionalProperties\":false,\"description\":\"Carries others: a boat, or a building they go into (a garrison). `takes` says who may get in; `armed`, for a building with an attack, is the attack damage each one inside adds, and it attacks only while someone is inside, as an orc burrow does. What a building holds comes out when it falls; what a boat holds goes down with it\"},\"turnRate\":{\"type\":\"number\",\"description\":\"How fast it turns, in radians a second: the game's for every unit (`RuleSettings.movement.turnRate`, 12) when left out\"},\"attacks\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/AttackDef\"},\"description\":\"How it attacks, as the classic RTS two weapons: against each target the first that reaches it (its `targets`), or the one the game picks (`RuleSettings.combat.pickAttack`). It swings one at a time: a hit's cooldown is that attack's, whichever swings next. None for what does not attack\"},\"hero\":{\"$ref\":\"#/definitions/HeroDef\",\"description\":\"Makes the type a hero, with its levels and the rest of `HeroDef`; none for a unit that is not one\"},\"level\":{\"type\":\"number\",\"description\":\"How dangerous it is, for creeps. Shown to the player, and added up per camp\"},\"bounty\":{\"type\":\"array\",\"minItems\":2,\"items\":[{\"type\":\"number\",\"title\":\"min\"},{\"type\":\"number\",\"title\":\"max\"}],\"maxItems\":2,\"description\":\"Gold for whoever kills it, rolled between the two\"},\"corpse\":{\"type\":\"boolean\",\"description\":\"Whether it leaves a corpse when it dies, for spells to use (see `raiseDead`). Units do, unless this says no: machines, spirits. Decided for each death in code: false for none, true or seconds for one (how long it lies)\"},\"spellImmune\":{\"type\":\"boolean\",\"description\":\"Immune to spells: abilities do not touch it, of friends or enemies, unless they say they get through (`piercesImmunity`). Decided in code whenever it is asked: while it stands on holy ground. The player's screen only knows the plain `true` of it, to grey out a target; the simulation goes by the code\"},\"xp\":{\"type\":\"number\",\"description\":\"Experience heroes get for killing it. Follows from its cost when left out\"},\"requires\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Building types the player has to have before this can be built or trained\"},\"race\":{\"type\":\"string\",\"description\":\"The race it is of (`Rules.races`): only its players may build or train it. Everyone's when left out: creeps, what is shared. What a player may have is the game's to change (the `available` hook)\"},\"provides\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Building types this one counts as, for requirements. A keep is a town hall too\"},\"upgradesTo\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}}],\"description\":\"Type this building can be upgraded into, where it stands; or the types, for one that may become one of several (a keep that turns into a castle or a citadel, `upgradesOf`). The first is what an upgrade is into where none is named\"},\"inventory\":{\"type\":\"number\",\"description\":\"Slots for items. Heroes have six\"},\"sells\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Items this building sells\"},\"hires\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Units it hires out to whoever has one of theirs there, by type: a tavern's heroes, a dock's boats. Their cost, and a hero only once (see `hire`). Neutral, it hires to everyone\"},\"drops\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"item\":{\"type\":\"string\"},\"chance\":{\"type\":\"number\"}},\"required\":[\"item\",\"chance\"],\"additionalProperties\":false},\"description\":\"What it may leave behind when it dies, each with its chance from 0 to 1. Or code: the items it leaves, decided as it dies (one random level-3 item; more for a stronger killer)\"},\"revives\":{\"type\":\"boolean\",\"description\":\"Brings fallen heroes back\"},\"abilities\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Ids of the abilities the unit has\"},\"cost\":{\"$ref\":\"#/definitions/Cost\",\"description\":\"What it costs to build or train, in resources\"},\"supply\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"object\",\"additionalProperties\":{\"type\":\"number\"}}],\"description\":\"Supply (food) it takes up for as long as it lives, and while it is being trained: of the one pool there always is, or by pool (`{ supply: 2, command: 1 }`: `supply` that one, the rest the game's own, `RuleSettings.supply.pools`). Read with `supplyOf` and `supplyPoolsOf`\"},\"buildTime\":{\"type\":\"number\",\"description\":\"Seconds to build or train\"},\"supplyGiven\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"object\",\"additionalProperties\":{\"type\":\"number\"}}],\"description\":\"What it provides once it stands finished: of the one pool, or by pool, as `supply` is said. Read with `supplyGivenOf` and `supplyPoolsGivenOf`\"},\"harvester\":{\"type\":\"object\",\"properties\":{\"capacity\":{\"type\":\"number\"},\"gatherTime\":{\"type\":\"number\"},\"ids\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ResourceId\"},\"description\":\"The kinds of resource it gathers: all of them when left out. The undead's acolytes gold and nothing else, ghouls lumber. The `canHarvest` hook has the last word (`canHarvest`)\"}},\"required\":[\"capacity\",\"gatherTime\"],\"additionalProperties\":false,\"description\":\"Makes it a worker that gathers: how much it carries, seconds a load takes, and which resources it gathers\"},\"builds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Building types this unit can construct\"},\"trains\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Unit types this building can train\"},\"researches\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Upgrades that can be researched here\"},\"dropOff\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ResourceId\"}}],\"description\":\"Accepts harvested resources: all of them, or only the ones listed\"},\"builtOn\":{\"$ref\":\"#/definitions/ResourceId\",\"description\":\"Goes up on a resource of this kind, over it, of the same footprint: the undead's cursed gold mine. The resource is its owner's alone from then on (`canHarvest`); one that takes what is gathered there (`dropOff`) has its owner's workers gather at it from around it, handing in where they stand, as many at once as `gatherers` says. It goes down with the resource, which stands again where it is destroyed\"},\"gatherers\":{\"type\":\"number\",\"description\":\"Workers that gather at once at it, when it stands on a resource (`builtOn`): 5 when left out\"},\"buildsItself\":{\"type\":\"boolean\",\"description\":\"Goes up on its own once it is put down, as the undead summon theirs: the builder is free at once, and nobody helps (`RuleSettings.production.buildRate` of one builder, all the way). The same as `construction: 'self'`\"},\"construction\":{\"type\":\"string\",\"enum\":[\"builder\",\"self\",\"instant\"],\"description\":\"How it goes up once it is put down: with builders at it (`builder`, the more the faster, as `buildRate` says), on its own with the builder free at once (`self`, the undead's), or whole at once (`instant`: a wall piece, a ward). `builder` when left out (`self` with `buildsItself`)\"},\"resource\":{\"type\":\"object\",\"properties\":{\"id\":{\"$ref\":\"#/definitions/ResourceId\"},\"amount\":{\"type\":\"number\"},\"slots\":{\"type\":\"number\",\"description\":\"Workers that fit inside at once, for resources that are entered\"},\"entered\":{\"type\":\"boolean\",\"description\":\"Workers go inside to gather, like into a gold mine, instead of working on it from next to it\"},\"gatherTime\":{\"type\":\"number\",\"description\":\"Seconds a load takes, when that is not what the worker usually needs\"}},\"required\":[\"id\",\"amount\",\"slots\"],\"additionalProperties\":false,\"description\":\"Makes it a deposit that can be gathered from: which resource, how much, how many workers fit and how they gather\"},\"hotkey\":{\"type\":\"string\",\"description\":\"Key used in the command card when building or training this type\"},\"threat\":{\"type\":\"number\",\"description\":\"Higher values are picked first when acquiring targets\"},\"invulnerable\":{\"type\":\"boolean\",\"description\":\"Whether it cannot be hurt\"},\"targetableBy\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Ids of the abilities that alone may target it (a soul that only `possess` takes). Nothing else may: not an ability clicked on it or used on it by the AI, nor an attack, nor the area of one, nor a heal; the ones named get through the target rules as they say (`targets`). It is untouched as `invulnerable` is, but for them\"},\"undying\":{\"type\":\"boolean\",\"description\":\"Takes damage like anything else but never dies of it: it is left with a little health, like something to practise on\"},\"recovers\":{\"type\":\"number\",\"description\":\"Seconds after it was last hurt that it is whole again, all at once\"},\"ignored\":{\"type\":\"boolean\",\"description\":\"Nobody picks a fight with it on their own: it is only attacked when someone is told to\"},\"fellable\":{\"type\":\"boolean\",\"description\":\"Destroyed by attacks that fell, like a tree by a catapult, whatever else it withstands\"},\"burns\":{\"anyOf\":[{\"type\":\"boolean\"},{\"$ref\":\"#/definitions/BurnsDef\"}],\"description\":\"Whether it burns, in a game with the burning pack (`burningPack`), and how (`BurnsDef`: for how long, what it leaves, whether its wood is kept, what kind of burning it is): `true` as the pack says, `false` never. What can be felled (`fellable`: trees) burns when left out; anything else does not\"},\"wall\":{\"type\":\"object\",\"properties\":{\"family\":{\"type\":\"string\"},\"gate\":{\"type\":\"boolean\"}},\"required\":[\"family\"],\"additionalProperties\":false,\"description\":\"A piece of wall (`wallsPack`): it joins with the pieces of its family beside it, and its shape (`single`, `end`, `straight`, `corner`, `tee`, `cross`) is its look. A gate (`gate`) joins as a piece does, turned along its line, and its owner opens and shuts it for everyone (`wallGateCommand`): its look `open` or `shut`. Pieces join by their footprints, so a gate wider than a cell sits in a line of pieces of one: one of a cell lets nobody through, the ground about a wall being kept off by the radius of what walks (a gatehouse of 3 by 3 lets through what is 1 wide)\"},\"lifetime\":{\"type\":\"number\",\"description\":\"Seconds it lasts before it is gone by itself, like a ward\"},\"invisible\":{\"type\":\"object\",\"properties\":{\"after\":{\"type\":\"number\"}},\"additionalProperties\":false,\"description\":\"Enemies cannot see it, `after` seconds after it came into the world, unless something reveals it to them\"},\"trueSight\":{\"type\":\"number\",\"description\":\"Finds what of its enemies is invisible or camouflaged within this far of it, for its team, for as long as it stays that near, in a game with the vision pack (`visionPack`): a Sentry Ward's true sight, a Control Ward\"},\"uses\":{\"type\":\"number\",\"description\":\"Goes down after this many attacks and spells, whatever they deal: its health counts hits, and its most health is this whatever its `stats.health` or what changes its stats say\"},\"trigger\":{\"$ref\":\"#/definitions/GroundTrigger\",\"description\":\"A trap, a mine, a pickup, in a game with the ground objects pack (`groundObjectsPack`): an ability of the game's that goes off as one of those it is for comes within its `radius` (`GroundTrigger`)\"},\"use\":{\"$ref\":\"#/definitions/GroundUse\",\"description\":\"Something others click on, in a game with the ground objects pack (`groundObjectsPack`): a unit of those it is for told to it (right-clicked) walks up to it and uses it, an ability of the game's going off (`GroundUse`): Thresh's lantern, Bard's portals\"},\"blocksMissiles\":{\"type\":\"string\",\"enum\":[\"enemies\",\"all\"],\"description\":\"Stops the missiles of abilities that come at it, in a game with the ground objects pack (`groundObjectsPack`): those of its enemies (`enemies`), or of everyone (`all`); they are gone where they meet it, with nothing happening (Yasuo's Wind Wall, a line of them: `EffectFields.line`). A missile thrown (`arc`) flies over it\"},\"burst\":{\"type\":\"object\",\"properties\":{\"ability\":{\"type\":\"string\"},\"chain\":{\"type\":\"number\"}},\"required\":[\"ability\"],\"additionalProperties\":false,\"description\":\"What happens where it dies, in a game with the ground objects pack (`groundObjectsPack`): an ability of the game's goes off there in its maker's name (`ability`), and those of its type and owner within `chain` of it die too and go off in turn: Gangplank's barrels (`uses: 3` counts the hits that bring one down)\"},\"pools\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/PoolDef\"},\"description\":\"Resources of its own beside mana, in a game with the resources pack (`resourcesPack`), by id: energy, fury, heat, flow, ammo (`PoolDef`: how much at most, at the start, back each second, lost each second when nothing used it, gained by walking, refilled when empty, and buffs at thresholds). What its abilities cost of them (`AbilityDef.cost`) and give (`gain`), what its attacks cost (`attackCost`), the `gain` effect\"},\"attackCost\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"number\"},\"description\":\"What each of its attacks costs of its pools (`pools`), in a game with the resources pack: with less than that it does not attack (Jhin's four shots, then the reload)\"},\"ai\":{\"$ref\":\"#/definitions/AiHints\",\"description\":\"What the computer player takes it for (`AiHints`): its roles (`worker`, `hall`, `soldier`...), the game's words about it, what it answers. Declared where what the kit infers from the rest of the definition is wrong or cannot be known; inferred otherwise (`inferRoles` in `@v12-engine/engine/ai`)\"}},\"required\":[\"id\",\"name\",\"kind\",\"radius\",\"stats\",\"sight\"],\"additionalProperties\":false,\"description\":\"The definition of a unit type: a unit, building or resource, with its stats, abilities, costs and what it does\"},\"EntityKind\":{\"type\":\"string\",\"enum\":[\"unit\",\"building\",\"resource\"],\"description\":\"What an entity is: a unit, a building or a resource\"},\"AttackDef\":{\"type\":\"object\",\"properties\":{\"stats\":{\"$ref\":\"#/definitions/AttackStats\",\"description\":\"The stats its numbers are, by id: a stat of the game's (`Rules.stats`) for a weapon whose damage, speed or range is not the unit's first's. What changes those stats (research, items, buffs) changes this attack alone\"},\"damageType\":{\"$ref\":\"#/definitions/DamageType\",\"description\":\"Physical when left out\"},\"damagePoint\":{\"type\":\"number\",\"description\":\"Seconds from the start of the swing until damage lands (or the projectile leaves), at the attack speed the unit starts with\"},\"recovery\":{\"type\":\"number\",\"description\":\"Seconds after the blow during which the unit is held: an order it is given (a move, another attack) waits until they are over, unless the rules let it cut them (`RuleSettings.combat.recoveryCancels`). At the attack speed the unit starts with, shorter as it attacks faster, and never past its next swing. None when left out: it may walk away the moment the blow lands (kiting), as in LoL\"},\"acquisitionRange\":{\"type\":\"number\",\"description\":\"Enemies closer than this are attacked automatically\"},\"minRange\":{\"type\":\"number\",\"description\":\"How near is too near, edge to edge: what is closer than this the attack does not hit (a siege weapon's dead zone). Another of the unit's attacks takes over there where one reaches (`RuleSettings.combat.pickAttack`); with none, a unit told to attack steps back out of it first, and one left to itself does not pick what is that near. None when left out\"},\"onTheMove\":{\"type\":\"boolean\",\"description\":\"Fires as the unit walks (a horse archer, a tank's turret): told to move, it hits what it passes within the attack's range without stopping or turning to it, at the attack's speed. Every other order fights as any attack does (it stops to). Not when left out\"},\"projectileSpeed\":{\"type\":\"number\",\"description\":\"Set for ranged attacks\"},\"targets\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"$ref\":\"#/definitions/EntityKind\"},{\"$ref\":\"#/definitions/Layer\"}]},\"description\":\"What this attack can hit: kinds of things, and where they are. Everything on the ground when left out. What flies is only hit by attacks that name `air`, and an attack that names `air` alone does not hit the ground\"},\"splash\":{\"type\":\"number\",\"description\":\"Radius around the point of impact in which everyone is hit, friends too: in full in the inner half, by half further out. Shots of such an attack land where they were aimed, they do not follow their target\"},\"ground\":{\"type\":\"boolean\",\"description\":\"Can be told to attack a spot on the ground\"},\"fells\":{\"type\":\"boolean\",\"description\":\"Brings down what is `fellable` in the area it hits\"},\"cleave\":{\"$ref\":\"#/definitions/Cleave\",\"description\":\"A blow from up close (no missile) also strikes the target's other enemies near it, a part of its damage each: a cleave. With a buff's (`BuffDef.cleave`), the one of the larger part counts\"},\"how\":{\"type\":\"string\",\"description\":\"How what this attack kills dies, for the screen (`'shot'`, `'crushed'`, `'burnt'`): the death's `how`, which the view shows its way (`UnitLook.death`). A word, or one decided for each blow. The `death` hook has the last say\"}},\"required\":[\"damagePoint\",\"acquisitionRange\"],\"additionalProperties\":false,\"description\":\"One of the ways a unit attacks (`UnitTypeDef.attacks`): what it hits, how its blow lands. How hard, how fast and how far are stats: the unit's `attackDamage`, `attackSpeed` and `attackRange`, or stats of the game's own that the attack names (`stats`: a second weapon's)\"},\"AttackStats\":{\"type\":\"object\",\"properties\":{\"damage\":{\"$ref\":\"#/definitions/StatKey\",\"description\":\"What a hit deals, before the armour of the target. `attackDamage` when left out\"},\"speed\":{\"$ref\":\"#/definitions/StatKey\",\"description\":\"Hits a second. `attackSpeed` when left out\"},\"range\":{\"$ref\":\"#/definitions/StatKey\",\"description\":\"How far it reaches, between the edges. `attackRange` when left out\"}},\"additionalProperties\":false,\"description\":\"The stats an attack reads how hard, how fast and how far it hits from (`AttackDef.stats`): the unit's `attackDamage`, `attackSpeed` and `attackRange` for what is left out\"},\"StatKey\":{\"type\":\"string\",\"description\":\"A stat: one of the engine's (`CoreStatKey`), or one a game defined. Checked when the game is built\"},\"DamageType\":{\"type\":\"string\",\"enum\":[\"physical\",\"magic\",\"true\"],\"description\":\"Physical damage is held off by armor, magic damage by magic resist, true damage by nothing\"},\"Layer\":{\"type\":\"string\",\"enum\":[\"ground\",\"air\"],\"description\":\"Where something is: on the ground, or above it\"},\"Cleave\":{\"type\":\"object\",\"properties\":{\"part\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"The part of the blow's damage each other enemy takes, by level for a buff's: 0.5 is half\"},\"radius\":{\"type\":\"number\",\"description\":\"How far from the target's edge the enemies it reaches stand\"},\"angle\":{\"type\":\"number\",\"description\":\"How wide the cone is, in radians (1.57: a quarter turn). All the way round the target when left out\"}},\"required\":[\"part\",\"radius\"],\"additionalProperties\":false,\"description\":\"What a blow from up close does to the enemies around its target (`AttackDef.cleave`, `BuffDef.cleave`): a part of its damage, before their armor, for each of them within `radius` of the target and, where `angle` says, within a cone of that angle that opens from the attacker through the target (so ahead of the attacker, round and behind the target). Not the target itself, nor anyone the attack could not hit\"},\"Scaled\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"array\",\"items\":{\"type\":\"number\"}}],\"description\":\"A value that can grow with the level of an ability: one number, or one per level\"},\"HeroDef\":{\"type\":\"object\",\"properties\":{\"growth\":{\"$ref\":\"#/definitions/StatChange\",\"description\":\"What every level after the first adds\"},\"learns\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Abilities the hero can put points into\"},\"spells\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Abilities it has from the start and does not learn: the two spells every hero brings along. No mana, and nothing shortens their cooldown\"},\"innate\":{\"type\":\"string\",\"description\":\"Its innate: an ability it has from level 1, for no point, that grows with it: its level is the hero's (up to the ability's own `maxLevel` where it says one), or goes up at the hero levels of `innateLevels`. A passive most often (its buffs, its triggers), or one it casts\"},\"innateLevels\":{\"type\":\"array\",\"items\":{\"type\":\"number\"},\"description\":\"The hero levels its innate goes up a level at, from its first: `[1, 6, 11, 16]` has it at level 2 from the hero's sixth. The hero's own level, when left out\"},\"callings\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"number\",\"enum\":[1,2,3]},\"description\":\"What it is good at, by calling (`CallingDef`, the game's: `heroesPack({ callings })`), each with a strength from 1 to 3: `{ stalker: 3, roamer: 2 }`. They lock nothing: the shop's suggestions and filters, the tooltips and the computer players go by them\"},\"maxLevel\":{\"type\":\"number\",\"description\":\"The level it stops at. 10 when left out\"},\"meter\":{\"type\":\"string\",\"description\":\"A buff whose stacks are shown next to its health and mana, as so many points out of as many as it can have\"},\"forms\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/HeroForm\"},\"description\":\"The forms it takes (a `morph` effect's `into`), by unit type: what it learns in each (`HeroForm`). A form is a hero's type of its own (its stats, its growth, its look); this says what of the hero's it takes along\"}},\"required\":[\"growth\",\"learns\"],\"additionalProperties\":false,\"description\":\"What makes a unit a hero: it gains levels, grows with them and learns abilities\"},\"StatChange\":{\"type\":\"object\",\"properties\":{\"stats\":{\"type\":\"object\",\"properties\":{\"attackDamage\":{\"type\":\"number\",\"description\":\"What a basic attack deals, before the armor of the target\"},\"attackSpeed\":{\"type\":\"number\",\"description\":\"Attacks per second\"},\"attackRange\":{\"type\":\"number\",\"description\":\"Measured between the edges of attacker and target\"},\"health\":{\"type\":\"number\",\"description\":\"The most health a unit has; the entity's `maxHealth` follows it\"},\"armor\":{\"type\":\"number\",\"description\":\"Against physical damage: 100 of it halve what arrives\"},\"magicResist\":{\"type\":\"number\",\"description\":\"The same against magic damage\"},\"incomingDamage\":{\"type\":\"number\",\"description\":\"Part by which the damage it takes is more or less, after armor or magic resist and before shields: -0.3 takes 30% less, 0.2 a fifth more. Added up with the part of the damage's own type (below), and never below none\"},\"incomingPhysicalDamage\":{\"type\":\"number\",\"description\":\"The same, of physical damage only, on top of `incomingDamage`\"},\"incomingMagicDamage\":{\"type\":\"number\",\"description\":\"The same, of magic damage only, on top of `incomingDamage`\"},\"incomingTrueDamage\":{\"type\":\"number\",\"description\":\"The same, of true damage only, on top of `incomingDamage`\"},\"outgoingDamage\":{\"type\":\"number\",\"description\":\"Part by which all the damage it deals, of attacks and abilities, is more or less: -0.35 deals 35% less. Never below none\"},\"incomingHealing\":{\"type\":\"number\",\"description\":\"Part by which the healing it gets is more or less: -0.4 heals 40% less (an anti-heal). Never below none\"},\"healthRegen\":{\"type\":\"number\",\"description\":\"Per second\"},\"mana\":{\"type\":\"number\",\"description\":\"The most mana a unit has\"},\"manaRegen\":{\"type\":\"number\",\"description\":\"Per second\"},\"moveSpeed\":{\"type\":\"number\",\"description\":\"Units per second. Who has none cannot move\"},\"sight\":{\"type\":\"number\",\"description\":\"How far it sees. At night the unit type says how far that is\"}},\"additionalProperties\":false,\"description\":\"Amounts added to stats, by stat\"},\"percent\":{\"type\":\"object\",\"properties\":{\"attackDamage\":{\"type\":\"number\",\"description\":\"What a basic attack deals, before the armor of the target\"},\"attackSpeed\":{\"type\":\"number\",\"description\":\"Attacks per second\"},\"attackRange\":{\"type\":\"number\",\"description\":\"Measured between the edges of attacker and target\"},\"health\":{\"type\":\"number\",\"description\":\"The most health a unit has; the entity's `maxHealth` follows it\"},\"armor\":{\"type\":\"number\",\"description\":\"Against physical damage: 100 of it halve what arrives\"},\"magicResist\":{\"type\":\"number\",\"description\":\"The same against magic damage\"},\"incomingDamage\":{\"type\":\"number\",\"description\":\"Part by which the damage it takes is more or less, after armor or magic resist and before shields: -0.3 takes 30% less, 0.2 a fifth more. Added up with the part of the damage's own type (below), and never below none\"},\"incomingPhysicalDamage\":{\"type\":\"number\",\"description\":\"The same, of physical damage only, on top of `incomingDamage`\"},\"incomingMagicDamage\":{\"type\":\"number\",\"description\":\"The same, of magic damage only, on top of `incomingDamage`\"},\"incomingTrueDamage\":{\"type\":\"number\",\"description\":\"The same, of true damage only, on top of `incomingDamage`\"},\"outgoingDamage\":{\"type\":\"number\",\"description\":\"Part by which all the damage it deals, of attacks and abilities, is more or less: -0.35 deals 35% less. Never below none\"},\"incomingHealing\":{\"type\":\"number\",\"description\":\"Part by which the healing it gets is more or less: -0.4 heals 40% less (an anti-heal). Never below none\"},\"healthRegen\":{\"type\":\"number\",\"description\":\"Per second\"},\"mana\":{\"type\":\"number\",\"description\":\"The most mana a unit has\"},\"manaRegen\":{\"type\":\"number\",\"description\":\"Per second\"},\"moveSpeed\":{\"type\":\"number\",\"description\":\"Units per second. Who has none cannot move\"},\"sight\":{\"type\":\"number\",\"description\":\"How far it sees. At night the unit type says how far that is\"}},\"additionalProperties\":false,\"description\":\"Parts stats grow or shrink by, by stat: 0.1 is 10% more, and the parts add up before they are applied\"}},\"additionalProperties\":false,\"description\":\"Something that changes stats: `stats` is added, `percent` makes them bigger or smaller by a part of what they are with everything added. Parts from different places add up: two times +10% are +20%.\"},\"HeroForm\":{\"type\":\"object\",\"properties\":{\"learns\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"The abilities it learns in the form, by id: what the HUD's card and hero panel show there, and what its points go into, in this order (the hero's own it keeps after them). One of the hero's own named here is kept as it is. What the form's type learns (its `hero.learns`) when left out\"},\"levels\":{\"type\":\"object\",\"additionalProperties\":{\"type\":[\"string\",\"number\"]},\"description\":\"The level each of `learns` starts at in the form, by id: the id of one of the hero's own abilities, whose level it has (a point put into it in the form goes to that one too), or a number. 0 for what is not said: learned in the form\"},\"keeps\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"The hero's own abilities the form leaves in place, by id: castable in the form as they are, level and cooldown (an ultimate, a passive); learned there, those it learns as itself. The ability that made the form and the spells it brought along (`HeroDef.spells`) are kept unsaid\"},\"cooldowns\":{\"$ref\":\"#/definitions/FormCooldowns\",\"description\":\"What becomes of the cooldowns of what the form puts away and of what it brings, when the hero goes in and out of it within the time of a cooldown:\\n\\n- left out: what the hero puts away runs down by the time it is away, and comes back with what is left; what the form brings starts ready each time. The default\\n- `'keep'`: what is put away comes back exactly as it was left, the time away not counted: a form is not a way to wait out a cooldown\\n- `'reset'`: what is put away comes back ready, its cooldown 0: a form is a way to get them back\\n- `'shared'`: an ability of the form whose level is one of the hero's own (`levels` by id, or by slot in the shorter shape) has one cooldown with it: it starts with the cooldown of the one it takes the place of, and gives its own, what it has by then (cast in the form or run down), back as the hero turns back. The rest as when left out\\n\\nWhat the form keeps in place (`keeps`, the ability that made it, the spells) is one ability in both and is never touched by any of them\"}},\"additionalProperties\":false,\"description\":\"What a hero is in one of its forms (`HeroDef.forms`): the abilities it learns there by id (`learns`), the level each starts at (`levels`: that of one of the hero's own, or a number), and what of its own the form leaves in place (`keeps`). Everything else of its own is put away until it turns back\\n\\n```ts // Nidalee's cougar: Takedown at Rocket Grab's level and Pounce at Void Swarm's, Swipe learned in the form; the // aspect (it made the form) and the ultimate stay as they are forms: { cougar: { learns: ['takedown', 'pounce', 'swipe'], levels: { takedown: 'rocketGrab', pounce: 'voidSwarm' }, keeps: ['heartbreaker'] } } ```\\n\\nThe shorter shape, a list alone with neither `levels` nor `keeps`, is read by slot: the first at the level of the first the hero learns as itself, the second of the second, and so on (Q is Q), a point put into one in the form going to the hero's own at that slot too\"},\"FormCooldowns\":{\"type\":\"string\",\"enum\":[\"keep\",\"reset\",\"shared\"],\"description\":\"What becomes of a hero's cooldowns going in and out of a form (`HeroForm.cooldowns`)\"},\"Cost\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"number\"},\"propertyNames\":{\"description\":\"The id of a resource, as its game module defines it (`ResourceDef`)\"},\"description\":\"What something costs: an amount of each resource it takes, by resource id. What is left out costs nothing\"},\"ResourceId\":{\"type\":\"string\",\"description\":\"The id of a resource, as its game module defines it (`ResourceDef`)\"},\"BurnsDef\":{\"type\":\"object\",\"properties\":{\"seconds\":{\"type\":\"number\",\"description\":\"Seconds it burns before it is burnt down: 20 when left out\"},\"leaves\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"string\",\"enum\":[\"felled\",\"nothing\"]}],\"description\":\"What is left once it has burnt down: `felled` (it comes down, as a tree a blast brings down: the death's reason is `felled`), `nothing` (it burns away: the reason is `burnt`), or the id of a unit type put down where it stood (a charred stump, a heap of ash: the reason `burnt` too). `felled` when left out\"},\"wood\":{\"type\":\"boolean\",\"description\":\"Whether what it leaves keeps its wood: a resource left in its place (`leaves` a type with `resource`) holds what it had left of its own. No when left out, and what is left holds what its type says\"},\"how\":{\"type\":\"string\",\"description\":\"What kind of burning it is, for the screen (the look's `burning.how`) and its death (`death.how`): `burnt` when left out. Another word for another kind: a blight that withers it, frost that shatters it\"}},\"additionalProperties\":false,\"description\":\"How a thing burns (`UnitTypeDef.burns`, `BurningOptions`): for how long, what is left of it, whether its wood is kept, and what kind of burning it is. What a type does not say is the pack's, then what each field says it is when left out. Plain data: the editor writes it\"},\"GroundTrigger\":{\"type\":\"object\",\"properties\":{\"ability\":{\"type\":\"string\",\"description\":\"The ability whose `effects` go off: in the name of whoever put it down (its maker, a `spawn` of the pack's: the object's own where there is none or it is gone), the one who came its target, the object where they go off from (`EffectContext.origin`), at the level it was put down at\"},\"radius\":{\"type\":\"number\",\"description\":\"How near its edge one comes for it to go off: 1 when left out\"},\"by\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\",\"maker\"],\"description\":\"Who sets it off: `enemies` of its owner (when left out), `allies`, `all`, or its `maker` alone (a soul, a chime)\"},\"arm\":{\"type\":\"number\",\"description\":\"Seconds after it is put down before it works (a mine arming): at once when left out\"},\"times\":{\"type\":\"number\",\"description\":\"Times it goes off before it is gone: once when left out, for ever with 0\"}},\"required\":[\"ability\"],\"additionalProperties\":false,\"description\":\"A ground object's trap, mine or pickup (`UnitTypeDef.trigger`), in a game with the ground objects pack\"},\"GroundUse\":{\"type\":\"object\",\"properties\":{\"ability\":{\"type\":\"string\",\"description\":\"The ability whose `effects` go off as one uses it: in its maker's name (its own where there is none), the one who uses it the target, the object the `origin`, and the point the next of those put down with it (the other end of a portal) or the object itself\"},\"by\":{\"type\":\"string\",\"enum\":[\"allies\",\"enemies\",\"all\"],\"description\":\"Who may use it: `allies` of its owner (when left out), `enemies` or `all`\"},\"range\":{\"type\":\"number\",\"description\":\"How near its edge one comes to use it: 1 when left out\"},\"times\":{\"type\":\"number\",\"description\":\"Times it is used before it is gone: for ever when left out\"}},\"required\":[\"ability\"],\"additionalProperties\":false,\"description\":\"Something on the ground others use (`UnitTypeDef.use`), in a game with the ground objects pack\"},\"PoolDef\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"description\":\"What it is called on the screen: its id when left out\"},\"color\":{\"type\":\"string\",\"description\":\"The colour of its bar, a CSS colour: the client's own when left out\"},\"max\":{\"type\":\"number\",\"description\":\"How much it holds at most\"},\"start\":{\"type\":\"number\",\"description\":\"How much it holds as the unit comes into the world: full when left out\"},\"regen\":{\"type\":\"number\",\"description\":\"How much comes back each second, always (energy)\"},\"decay\":{\"type\":\"number\",\"description\":\"How much goes each second once nothing has spent or given any for `idle` seconds (fury, heat)\"},\"idle\":{\"type\":\"number\",\"description\":\"Seconds without its being spent or given before it decays: at once when left out\"},\"moving\":{\"type\":\"number\",\"description\":\"How much comes for each cell the unit walks (Yasuo's flow)\"},\"reload\":{\"type\":\"number\",\"description\":\"Seconds after it runs out until it is full again (a reload)\"},\"thresholds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/PoolThreshold\"},\"description\":\"Buffs its carrier gets as it fills (`PoolThreshold`): overheated, in the danger zone\"}},\"required\":[\"max\"],\"additionalProperties\":false,\"description\":\"A resource of a unit's own beside mana (`UnitTypeDef.pools`), in a game with the resources pack (`resourcesPack`): Akali's energy (`regen`), Tryndamere's fury (gained by attacks, `decay` after `idle`), Rumble's heat (gained by casts, overheating at a threshold), Yasuo's flow (`moving`), Jhin's ammo (`reload`)\"},\"PoolThreshold\":{\"type\":\"object\",\"properties\":{\"at\":{\"type\":\"number\",\"description\":\"How much the pool holds for it\"},\"buff\":{\"type\":\"string\",\"description\":\"The buff, in the carrier's own name\"},\"kept\":{\"type\":\"boolean\",\"description\":\"On while the pool holds `at` or more, off below: put on once as it gets there when left out\"},\"empties\":{\"type\":\"boolean\",\"description\":\"The pool stays as it is while the buff lasts, and is empty as it ends (not with `kept`)\"}},\"required\":[\"at\",\"buff\"],\"additionalProperties\":false,\"description\":\"A buff a unit gets as one of its pools reaches `at` (`PoolDef.thresholds`): kept on while it holds that much or more (`kept`: Rumble's danger zone), or put on once as it gets there; one that `empties` holds the pool still while it lasts, and empties it as it ends (Rumble's overheat)\"},\"AiHints\":{\"type\":\"object\",\"properties\":{\"role\":{\"anyOf\":[{\"$ref\":\"#/definitions/AiRole\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/AiRole\"}}],\"description\":\"What it is for (`AiRole`), one or several: in place of what the kit would infer\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Words of the game's own about it (`'ranged'`, `'cavalry'`), for a brain's queries (`UnitSet.withTag`). Beside the inferred ones\"},\"counters\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/CounterHint\"},\"description\":\"What it is good against: tags, roles or type ids (`['air', 'siege']`), each with a weight where a word is not enough (`{ target: 'air', weight: 1 }`). Read by the matchups (`Strength.matchup`, `odds`, `counterFor`)\"},\"strength\":{\"type\":\"number\",\"description\":\"How strong it is at full health, in place of the kit's formula (`defaultStrength`) and of any formula the brain was given: for a type whose numbers mislead (a unit that is all spells). Scaled by the health a unit has left\"},\"priority\":{\"type\":\"number\",\"description\":\"How much it is worth hitting first, in a fight: 1 when left out. Read by the micro of C2\"},\"placement\":{\"$ref\":\"#/definitions/PlacementName\",\"description\":\"Where the build plan puts it (`PlacementName`): `atEdge` for a tower, `behind` for supply, `cluster` beside its own kind. Over the brain's table; the role's default when left out\"}},\"additionalProperties\":false,\"description\":\"What a game declares of a unit type for the computer player (`UnitTypeDef.ai`), where what the kit infers from the definition is wrong or cannot be known: its roles, words of the game's own about it, what it answers, how much it is worth hitting. A declared role is in place of the inferred ones, not beside them\"},\"AiRole\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"string\",\"enum\":[\"worker\",\"gatherer\",\"topper\",\"hall\",\"supply\",\"barracks\",\"altar\",\"workshop\",\"tower\",\"shop\",\"soldier\",\"hero\",\"caster\",\"healer\",\"siege\",\"air\",\"scout\",\"detector\"]}],\"description\":\"What a unit type is for, to a computer player: the engine's roles, or a word of the game's own. A type can have several (a ghoul is a `gatherer` and a `soldier`)\\n\\n- `worker`: gathers and builds; `gatherer`: gathers (a worker is one too); `topper`: what is put up on a deposit of the money to gather it there (`builtOn`)\\n- `hall`: takes deposits and trains workers; `supply`: provides supply and trains nothing; `barracks`: trains soldiers; `altar`: trains or revives heroes; `workshop`: researches; `tower`: a building that attacks; `shop`: sells or hires\\n- `soldier`: a unit that fights and is no hero; `hero`; `caster`: fights with mana; `healer`: has an ability that heals; `siege`: attacks that splash, fell or are aimed at the ground; `air`: flies; `scout`: the fastest of the soldiers; `detector`: finds the invisible\"},\"CounterHint\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"object\",\"properties\":{\"target\":{\"type\":\"string\"},\"weight\":{\"type\":\"number\"}},\"required\":[\"target\"],\"additionalProperties\":false}],\"description\":\"What a game declares a type good against (`UnitTypeDef.ai.counters`): a tag (`'air'`), a role (`'siege'`) or a type id, as a word, or with how much it counts (`weight`, 0.5 when left out: a unit whose whole opponent it counters is worth half again)\"},\"PlacementName\":{\"type\":\"string\",\"description\":\"The kit's placement strategies, by name: `nearHome` (rings around the place, keeping the way to the mine clear), `byResource` (on the nearest deposit it is built on: a mine), `atEdge` (at the edge of the base towards the enemy, for a tower), `behind` (away from the enemy, for supply), `cluster` (beside another of its type, barracks by barracks; `cluster:<type>` beside another type), `onLayer:<layer>` (where the whole footprint is on a layer of cells the game paints: `onLayer:blight` for a race that builds on blight)\"},\"AbilityDef\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"The ability's id, shared by every game: give it a prefix of the game's\"},\"name\":{\"type\":\"string\",\"description\":\"What the player sees the ability called\"},\"how\":{\"type\":\"string\",\"description\":\"How what its damage kills dies, for the screen (`'burnt'`, `'frozen'`, `'blasted'`): the death's `how`, which the view shows its way. A word, or one decided for each blow: by its level, its caster, what it hit. An effect's own (`EffectDef.how`) goes over it; the `death` hook has the last say\"},\"basedOn\":{\"type\":\"string\",\"description\":\"The definition this one is a copy of, made from the data (`copyOf` in a `data.json`, the editor's Copy as new): what it is drawn, heard and pictured as where the game gives it no look of its own\"},\"description\":{\"type\":\"string\",\"description\":\"What it does, in words: a template with values in braces, worked out for the caster as it is now (\\\"Deals {damage} magic damage\\\" shows \\\"Deals 80 (50 + 60% ability power) magic damage\\\"). The values are its own (`values`), or found in its effects: `damage`, `heal`, `shield`, `amount`, `duration`, `radius`, `chance` (in percent), `range`, `cooldown`, `charges`, `refill`, `mana`, `count`, `distance` (see `abilityValues`)\"},\"values\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/AbilityValueDef\"},\"description\":\"Values of its own to put in its description, by name: an amount and what of the caster scales it, or worked out in code\"},\"hotkey\":{\"type\":\"string\",\"description\":\"The key that casts it from the command card\"},\"target\":{\"$ref\":\"#/definitions/AbilityTarget\",\"description\":\"none: happens at once. unit, point: needs a target, and the caster walks into range of it. direction: goes off from where the caster stands, towards where it was aimed. vector: two points, where it starts (walked into range of, its effects' `origin`) and the way it goes from there (their `point`): Death Ray, Seismic Shove. passive: always on, cannot be cast. Or a game's own (`defineTargeting`, `Rules.targetings`)\"},\"targets\":{\"type\":\"object\",\"properties\":{\"allies\":{\"type\":\"boolean\"},\"enemies\":{\"type\":\"boolean\"},\"self\":{\"type\":\"boolean\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"}},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"}},\"heroes\":{\"type\":\"boolean\",\"description\":\"True: heroes alone; false: anything but a hero (a creep, a minion, a building: Reap). Heroes or not when left out\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only what has one of these tags of its type (`UnitTypeDef.tags`): Death Coil on the undead\"}},\"additionalProperties\":false,\"description\":\"What may be targeted, for abilities cast on a unit\"},\"manaCost\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Mana it costs per cast, by level\"},\"healthCost\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Health it costs, as a part of all the caster can have. It cannot be cast with less than that left\"},\"cost\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/Scaled\"},\"description\":\"What it costs of the caster's pools (`UnitTypeDef.pools`), by pool, in a game with the resources pack (`resourcesPack`): it is not ready with less, and pays as it goes off (Akali's energy, a shot of ammo)\"},\"gain\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/Scaled\"},\"description\":\"What it gives the caster's pools as it goes off, by pool, in a game with the resources pack: Rumble's heat, a fury's spender's opposite\"},\"costGrowth\":{\"type\":\"object\",\"properties\":{\"buff\":{\"type\":\"string\"},\"per\":{\"type\":\"number\"}},\"required\":[\"buff\",\"per\"],\"additionalProperties\":false,\"description\":\"Its costs (its mana and `cost`) grow with the stacks of a buff of the caster's, in a game with the resources pack: times one and `per` for each stack (Kassadin's Riftwalk: `per: 1`, twice with one stack, three times with two)\"},\"cooldown\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Seconds before it can be used again\"},\"charges\":{\"type\":\"object\",\"properties\":{\"count\":{\"$ref\":\"#/definitions/Scaled\"},\"refill\":{\"$ref\":\"#/definitions/Scaled\"}},\"required\":[\"count\",\"refill\"],\"additionalProperties\":false,\"description\":\"Uses it holds, for one used so many times before it waits: `count` of them at the most, one more back every `refill` seconds while it holds fewer (shortened as the cooldown is). Each use spends one; with none left it is not ready. Its `cooldown`, where it has one, is then the time between two uses. Full when it is learned\"},\"recast\":{\"$ref\":\"#/definitions/AbilityRecast\",\"description\":\"It may be cast again for a while after it is cast (`AbilityRecast`): Ahri's Spirit Rush thrice, Lee Sin's second Sonic Wave to the one the first marked, Lux's Lucent Singularity set off\"},\"range\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"How far away the target may be\"},\"attackRange\":{\"type\":\"boolean\",\"description\":\"The target may be as far away as the caster's attacks reach, and `range` farther\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"What kind of thing it is, for those who can keep out of its way: a buff that `avoids` one of these lets nothing of the ability happen to who carries it. `ground` is for what comes out of the ground or along it\"},\"maxLevel\":{\"type\":\"number\",\"description\":\"Levels a hero can put into it. 3 when left out\"},\"requiresLevel\":{\"type\":\"number\",\"description\":\"Hero level needed for the first level of the ability. 1 when left out, 6 for an `ultimate`\"},\"ultimate\":{\"type\":\"boolean\",\"description\":\"A hero's ultimate: first learned at level 6 (unless `requiresLevel` says otherwise), what the AI uses on a crowd only (as it does what asks for a level), and what a game's own code can tell apart (what a possession of another hero leaves the hero's own: `keeps`)\"},\"levelStep\":{\"type\":\"number\",\"description\":\"Hero levels between two levels of the ability. 2 when left out\"},\"castTime\":{\"type\":\"number\",\"description\":\"Seconds between starting to cast and the effect. The caster stands still for as long and cannot be called away: what it is told to do in the meantime, it does right after. None when left out\"},\"piercesImmunity\":{\"type\":\"boolean\",\"description\":\"Gets through a unit's immunity to spells (see `UnitTypeDef.spellImmune`), as an ultimate may. Or for the targets its function says\"},\"aim\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"shape\":{\"type\":\"string\",\"const\":\"circle\"},\"radius\":{\"$ref\":\"#/definitions/Scaled\"}},\"required\":[\"shape\",\"radius\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"shape\":{\"type\":\"string\",\"const\":\"line\"},\"length\":{\"$ref\":\"#/definitions/Scaled\"},\"width\":{\"$ref\":\"#/definitions/Scaled\"}},\"required\":[\"shape\",\"length\",\"width\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"shape\":{\"type\":\"string\",\"const\":\"cone\"},\"length\":{\"$ref\":\"#/definitions/Scaled\"},\"angle\":{\"type\":\"number\"}},\"required\":[\"shape\",\"length\",\"angle\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"shape\":{\"type\":\"string\",\"const\":\"ring\"},\"radius\":{\"$ref\":\"#/definitions/Scaled\"},\"width\":{\"$ref\":\"#/definitions/Scaled\"}},\"required\":[\"shape\",\"radius\",\"width\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"shape\":{\"type\":\"string\",\"const\":\"arc\"},\"radius\":{\"$ref\":\"#/definitions/Scaled\"},\"angle\":{\"type\":\"number\"},\"width\":{\"$ref\":\"#/definitions/Scaled\"}},\"required\":[\"shape\",\"radius\",\"angle\",\"width\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"shape\":{\"type\":\"string\",\"const\":\"rect\"},\"length\":{\"$ref\":\"#/definitions/Scaled\"},\"width\":{\"$ref\":\"#/definitions/Scaled\"}},\"required\":[\"shape\",\"length\",\"width\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"shape\":{\"type\":\"string\",\"const\":\"cross\"},\"length\":{\"$ref\":\"#/definitions/Scaled\"},\"width\":{\"$ref\":\"#/definitions/Scaled\"}},\"required\":[\"shape\",\"length\",\"width\"],\"additionalProperties\":false}],\"description\":\"The ground it covers, when that is not what its effects say: see `aimOf`\"},\"autocast\":{\"type\":\"boolean\",\"description\":\"Units use it on their own when they have nothing else to do. The player can switch this off\"},\"charge\":{\"type\":\"string\",\"description\":\"A buff of the caster that charges the ability when it has as many stacks as it can: the ability shows it, its `charged` effects do their other thing, and casting it takes the buff away\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What it does, one effect after the other, when it is cast\"},\"passive\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What an ability that is cast does all the time besides, once it is learned: buffs, auras, `onHit`\"},\"channel\":{\"type\":\"object\",\"properties\":{\"duration\":{\"type\":\"number\"},\"every\":{\"type\":\"number\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"}},\"finished\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What it does once kept up to the end, and only then: a recall's teleport home\"},\"breaksOnDamage\":{\"type\":\"boolean\",\"description\":\"Broken off when the caster is hurt, as a recall is: any damage, from anyone\"},\"leash\":{\"type\":\"number\",\"description\":\"A tether: broken off (`interrupted`) as the unit it was cast on gets farther than this from the caster's edge, dies or hides: Siphon Mana, Life Drain, Morgana's Soul Shackles\"},\"aimed\":{\"type\":\"boolean\",\"description\":\"Aimed as it goes: where it goes off at (`point`) follows the player's `aim` commands, in a game with the holds pack (`holdsPack`): Vel'Koz's ray, Jhin's Curtain Call, Starfall's sweep. The caster turns to it\"},\"walks\":{\"type\":\"boolean\",\"description\":\"Kept up as the caster walks, in a game with the holds pack (`holdsPack`): not an order the caster stands in, so it may be told to go elsewhere while it lasts; broken off by a stun, a silence, its death\"}},\"required\":[\"duration\"],\"additionalProperties\":false,\"description\":\"Kept up once it went off: the caster stands, for `duration` seconds, doing it every `every` seconds (effects, or code), until it is done or interrupted (another order, a stun), when `interrupted` runs. An ice storm\"},\"upgrades\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"What it may be made into for good, chosen once (`upgradeAbility`, the `upgradeAbility` command), in a game with the ability changes pack (`abilityChangesPack`): Viktor's augments, Engineering Upgrade's better abilities. The new one takes its place at its level and cooldown\"},\"hold\":{\"$ref\":\"#/definitions/HoldDef\",\"description\":\"Held to charge and let go, in a game with the holds pack (`holdsPack`): the cast starts the hold where the caster stands, going on with what it was doing, and the `release` command (the key let go, or a click) sets it off, as full as it was held (`HoldDef`): farther, harder, or a tap's other effects. Paid as it is let go\"}},\"required\":[\"id\",\"name\",\"target\",\"effects\"],\"additionalProperties\":false,\"description\":\"The definition of an ability: how it is aimed, what it costs and the effects it has\"},\"AbilityValueDef\":{\"type\":\"object\",\"properties\":{\"amount\":{\"$ref\":\"#/definitions/Scaled\"},\"scaling\":{\"$ref\":\"#/definitions/Scaling\"},\"unit\":{\"type\":\"string\"},\"percent\":{\"type\":\"boolean\"}},\"additionalProperties\":false,\"description\":\"How a game gives a value of an ability: an amount and what scales it, or worked out in code\"},\"Scaling\":{\"type\":\"object\",\"properties\":{\"level\":{\"$ref\":\"#/definitions/Scaled\"},\"bonusAttackDamage\":{\"$ref\":\"#/definitions/Scaled\"}},\"additionalProperties\":{\"$ref\":\"#/definitions/Scaled\"},\"description\":\"What the stats of the caster add to an amount. `level` is for every level of a hero past the first, `bonusAttackDamage` for the attack damage it has on top of what its type and its levels give it\"},\"AbilityTarget\":{\"type\":\"string\",\"enum\":[\"none\",\"unit\",\"point\",\"direction\",\"vector\",\"passive\"],\"description\":\"How an ability is aimed: the engine's ways (`AimKind`: `none`, `unit`, `point`, `direction`, `vector`, `passive`), or a game's own (`AbilityTargetings`, `defineTargeting`)\"},\"AbilityRecast\":{\"type\":\"object\",\"properties\":{\"window\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Seconds it may be cast again for, from the cast\"},\"count\":{\"type\":\"number\",\"description\":\"How many times it may be cast again in the window: once when left out\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What a recast does: the ability's own `effects` when left out\"},\"target\":{\"$ref\":\"#/definitions/AbilityTarget\",\"description\":\"How a recast is aimed: as the ability is when left out; with a `mark`, at the marked unit, with no aim of its own\"},\"range\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"How far away a recast's target may be: the ability's `range` when left out\"},\"mark\":{\"type\":\"string\",\"description\":\"A buff the cast leaves on a unit (Sonic Wave's mark): a recast goes to the unit that carries it from the caster (the nearest, where there are more), its target and its point, and is refused while none does (`noMark`)\"},\"cooldown\":{\"type\":\"string\",\"enum\":[\"after\",\"first\"],\"description\":\"When the cooldown starts: `after` the last recast, or the window's end (when left out), with what it was as the ability was cast; or at the `first` cast, as usual, the recasts not waiting for it\"},\"manaCost\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Mana a recast costs: none when left out\"}},\"required\":[\"window\"],\"additionalProperties\":false,\"description\":\"How an ability is cast again after it is cast (`AbilityDef.recast`): for `window` seconds the same button casts the recast, `count` times, each doing its `effects` (no wind-up, no channel, `manaCost` its own: none when left out); the cooldown waits for the last recast or the window's end (`after`) or starts at the first cast (`first`). The window and its recasts are the ability's state (`AbilityState.recast`), saved and told to its owner's button (`AbilityInfo.recast`)\"},\"EffectDef\":{\"anyOf\":[{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"amount\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"How much: of damage, healing, mana, a shield (`buff`). A number, one per level, or code asked for each target (`EffectValue`); with what the caster's stats add (`scaling`) and the formulas of `damage`, `heal` and `buff` (`byMaxHealth`, `byCurrentHealth`, `byMissingHealth`, `byStacks`, `byDistance`, `targetScaling`) on top\"},\"scaling\":{\"$ref\":\"#/definitions/Scaling\",\"description\":\"What the stats of the caster add to the amount: `{ abilityPower: 0.6 }` adds 60% of its ability power. `level` is for every level of the hero past the first\"},\"damageType\":{\"$ref\":\"#/definitions/DamageType\",\"description\":\"For damage. Magic when left out\"},\"how\":{\"type\":\"string\",\"description\":\"For damage: how what it kills dies, for the screen, over the ability's own `how`\"},\"byMissingHealth\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For `damage`: a part of what the target has lost of its health, added to the amount for each it hits (0.1: a tenth of its missing health), worked out as it lands\"},\"byMaxHealth\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For `damage`, `heal` and a shield (`buff`): a part of the target's maximum health, added for each it reaches (0.08: 8% of its max health). Death and Decay, a % health nuke\"},\"byCurrentHealth\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For `damage`, `heal` and a shield (`buff`): a part of the health the target has now, added for each it reaches\"},\"byStacks\":{\"type\":\"object\",\"properties\":{\"buff\":{\"type\":\"string\"},\"of\":{\"type\":\"string\",\"enum\":[\"target\",\"caster\"]},\"amount\":{\"$ref\":\"#/definitions/Scaled\"}},\"required\":[\"buff\",\"amount\"],\"additionalProperties\":false,\"description\":\"For `damage`, `heal` and a shield (`buff`): `amount` more for each stack of `buff` on the target (`of: 'target'`, when left out) or the caster: Rend's spears, a passive's marks\"},\"byDistance\":{\"type\":\"object\",\"properties\":{\"per\":{\"type\":\"number\"},\"most\":{\"type\":\"number\"}},\"required\":[\"per\"],\"additionalProperties\":false,\"description\":\"For `damage`, `heal` and a shield (`buff`): the whole of it times 1 and `per` for every unit of distance from where it went off to the target (a missile's way, or from the caster or the `origin`), `most` times at the most: a javelin that hurts more the farther it flew\"},\"targetScaling\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/Scaled\"},\"description\":\"For `damage`, `heal` and a shield (`buff`): parts of the target's stats added (`{ armor: 1 }`: as much as its armor; `{ health: 0.05 }`: 5% of its max health), as `scaling` adds the caster's\"},\"byDamage\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For `damage`, `heal` and a shield (`buff`) a trigger sets off: a part of the damage that set it off (`EffectContext.damage`), added (0.2: a fifth of it): Spiked Carapace's returned damage, a heal by what was taken\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"damage\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"amount\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"How much: of damage, healing, mana, a shield (`buff`). A number, one per level, or code asked for each target (`EffectValue`); with what the caster's stats add (`scaling`) and the formulas of `damage`, `heal` and `buff` (`byMaxHealth`, `byCurrentHealth`, `byMissingHealth`, `byStacks`, `byDistance`, `targetScaling`) on top\"},\"scaling\":{\"$ref\":\"#/definitions/Scaling\",\"description\":\"What the stats of the caster add to the amount: `{ abilityPower: 0.6 }` adds 60% of its ability power. `level` is for every level of the hero past the first\"},\"byMissingHealth\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For `damage`: a part of what the target has lost of its health, added to the amount for each it hits (0.1: a tenth of its missing health), worked out as it lands\"},\"byMaxHealth\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For `damage`, `heal` and a shield (`buff`): a part of the target's maximum health, added for each it reaches (0.08: 8% of its max health). Death and Decay, a % health nuke\"},\"byCurrentHealth\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For `damage`, `heal` and a shield (`buff`): a part of the health the target has now, added for each it reaches\"},\"byStacks\":{\"type\":\"object\",\"properties\":{\"buff\":{\"type\":\"string\"},\"of\":{\"type\":\"string\",\"enum\":[\"target\",\"caster\"]},\"amount\":{\"$ref\":\"#/definitions/Scaled\"}},\"required\":[\"buff\",\"amount\"],\"additionalProperties\":false,\"description\":\"For `damage`, `heal` and a shield (`buff`): `amount` more for each stack of `buff` on the target (`of: 'target'`, when left out) or the caster: Rend's spears, a passive's marks\"},\"byDistance\":{\"type\":\"object\",\"properties\":{\"per\":{\"type\":\"number\"},\"most\":{\"type\":\"number\"}},\"required\":[\"per\"],\"additionalProperties\":false,\"description\":\"For `damage`, `heal` and a shield (`buff`): the whole of it times 1 and `per` for every unit of distance from where it went off to the target (a missile's way, or from the caster or the `origin`), `most` times at the most: a javelin that hurts more the farther it flew\"},\"targetScaling\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/Scaled\"},\"description\":\"For `damage`, `heal` and a shield (`buff`): parts of the target's stats added (`{ armor: 1 }`: as much as its armor; `{ health: 0.05 }`: 5% of its max health), as `scaling` adds the caster's\"},\"byDamage\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For `damage`, `heal` and a shield (`buff`) a trigger sets off: a part of the damage that set it off (`EffectContext.damage`), added (0.2: a fifth of it): Spiked Carapace's returned damage, a heal by what was taken\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"heal\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"amount\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"How much: of damage, healing, mana, a shield (`buff`). A number, one per level, or code asked for each target (`EffectValue`); with what the caster's stats add (`scaling`) and the formulas of `damage`, `heal` and `buff` (`byMaxHealth`, `byCurrentHealth`, `byMissingHealth`, `byStacks`, `byDistance`, `targetScaling`) on top\"},\"scaling\":{\"$ref\":\"#/definitions/Scaling\",\"description\":\"What the stats of the caster add to the amount: `{ abilityPower: 0.6 }` adds 60% of its ability power. `level` is for every level of the hero past the first\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"mana\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"amount\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"How much: of damage, healing, mana, a shield (`buff`). A number, one per level, or code asked for each target (`EffectValue`); with what the caster's stats add (`scaling`) and the formulas of `damage`, `heal` and `buff` (`byMaxHealth`, `byCurrentHealth`, `byMissingHealth`, `byStacks`, `byDistance`, `targetScaling`) on top\"},\"scaling\":{\"$ref\":\"#/definitions/Scaling\",\"description\":\"What the stats of the caster add to the amount: `{ abilityPower: 0.6 }` adds 60% of its ability power. `level` is for every level of the hero past the first\"},\"pool\":{\"type\":\"string\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"gain\"}},\"required\":[\"pool\",\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"act\":{\"type\":\"string\",\"enum\":[\"ignite\",\"extinguish\",\"ruin\",\"regrow\",\"clear\"]},\"layer\":{\"type\":\"string\"},\"how\":{\"type\":\"string\",\"enum\":[\"cut\",\"crush\",\"scorch\"]},\"over\":{\"type\":\"number\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"foliage\"}},\"required\":[\"act\",\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"act\":{\"type\":\"string\",\"enum\":[\"light\",\"putOut\"]},\"how\":{\"type\":\"string\"},\"seconds\":{\"type\":\"number\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"burn\"}},\"required\":[\"act\",\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"duration\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Seconds the buff lasts, when that is different from its usual duration. In code (`EffectValue`), asked for each target\"},\"stack\":{\"type\":\"boolean\",\"description\":\"For `buff`: adds one to how many of it the target carries instead of renewing it, up to what the buff allows\"},\"amount\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"How much: of damage, healing, mana, a shield (`buff`). A number, one per level, or code asked for each target (`EffectValue`); with what the caster's stats add (`scaling`) and the formulas of `damage`, `heal` and `buff` (`byMaxHealth`, `byCurrentHealth`, `byMissingHealth`, `byStacks`, `byDistance`, `targetScaling`) on top\"},\"scaling\":{\"$ref\":\"#/definitions/Scaling\",\"description\":\"What the stats of the caster add to the amount: `{ abilityPower: 0.6 }` adds 60% of its ability power. `level` is for every level of the hero past the first\"},\"byMissingHealth\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For `damage`: a part of what the target has lost of its health, added to the amount for each it hits (0.1: a tenth of its missing health), worked out as it lands\"},\"byMaxHealth\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For `damage`, `heal` and a shield (`buff`): a part of the target's maximum health, added for each it reaches (0.08: 8% of its max health). Death and Decay, a % health nuke\"},\"byCurrentHealth\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For `damage`, `heal` and a shield (`buff`): a part of the health the target has now, added for each it reaches\"},\"byStacks\":{\"type\":\"object\",\"properties\":{\"buff\":{\"type\":\"string\"},\"of\":{\"type\":\"string\",\"enum\":[\"target\",\"caster\"]},\"amount\":{\"$ref\":\"#/definitions/Scaled\"}},\"required\":[\"buff\",\"amount\"],\"additionalProperties\":false,\"description\":\"For `damage`, `heal` and a shield (`buff`): `amount` more for each stack of `buff` on the target (`of: 'target'`, when left out) or the caster: Rend's spears, a passive's marks\"},\"byDistance\":{\"type\":\"object\",\"properties\":{\"per\":{\"type\":\"number\"},\"most\":{\"type\":\"number\"}},\"required\":[\"per\"],\"additionalProperties\":false,\"description\":\"For `damage`, `heal` and a shield (`buff`): the whole of it times 1 and `per` for every unit of distance from where it went off to the target (a missile's way, or from the caster or the `origin`), `most` times at the most: a javelin that hurts more the farther it flew\"},\"targetScaling\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/Scaled\"},\"description\":\"For `damage`, `heal` and a shield (`buff`): parts of the target's stats added (`{ armor: 1 }`: as much as its armor; `{ health: 0.05 }`: 5% of its max health), as `scaling` adds the caster's\"},\"byDamage\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For `damage`, `heal` and a shield (`buff`) a trigger sets off: a part of the damage that set it off (`EffectContext.damage`), added (0.2: a fifth of it): Spiked Carapace's returned damage, a heal by what was taken\"},\"buff\":{\"type\":\"string\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"buff\"}},\"required\":[\"buff\",\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"speed\":{\"type\":\"number\",\"description\":\"For missiles: how fast they travel, in units per second, and how far\"},\"distance\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For missiles: how far they fly, in cells\"},\"count\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For missiles: how many are sent, spread over an angle in radians. What one of them hit the others pass by\"},\"spread\":{\"type\":\"number\",\"description\":\"For missiles: the angle, in radians, the missiles are spread over\"},\"homing\":{\"type\":\"boolean\",\"description\":\"For missiles: flies after the unit the ability was cast on, and only hits that one\"},\"toPoint\":{\"type\":\"boolean\",\"description\":\"For missiles: flies to the spot the ability was aimed at and stops there, `distance` away at the most. For `pull`: drags to where the effect landed (a zone's middle, the spot of an `after`) rather than to the caster\"},\"delay\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For missiles: seconds they take shape where they were cast before they set off. The caster is free to go\"},\"sight\":{\"type\":\"number\",\"description\":\"For missiles: how far the team of the caster sees around it\"},\"blocked\":{\"type\":\"boolean\",\"description\":\"For missiles: buildings and trees in its way stop it, without anything happening to them\"},\"pierce\":{\"type\":[\"boolean\",\"number\"],\"description\":\"For missiles: goes on after it hit something. False for the ones that are used up by the first thing in their way; a number for those that go through so many and are used up by the next (1: Lux's Light Binding, two at the most)\"},\"arc\":{\"type\":\"object\",\"properties\":{\"height\":{\"type\":\"number\"},\"time\":{\"type\":\"number\"}},\"required\":[\"height\"],\"additionalProperties\":false,\"description\":\"For missiles: thrown, not shot. It goes `height` up in the middle of its way and comes down at its end, `time` seconds after it set off however far that is (`speed` otherwise). It flies over everything, and what is within its `radius` where it comes down is what it hits\"},\"bounce\":{\"type\":\"object\",\"properties\":{\"count\":{\"$ref\":\"#/definitions/Scaled\"},\"range\":{\"type\":\"number\"},\"falloff\":{\"type\":\"number\"}},\"required\":[\"count\",\"range\"],\"additionalProperties\":false,\"description\":\"For missiles: where it would be done (it reached its target, was used up by what it hit, came down, or came to the end of its way) it springs on to the nearest thing it may hit within `range` that it has not hit yet, and flies after that one, `count` times. Every spring takes `falloff` of the amounts off what it does (0.25: a quarter less each time). Its `onEnd` is where it is done for good\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens to what is hit. For missiles: everything they pass through. For `onHit`: the target of an attack. For `dash`: what is around where it ends. For `pull`: what was pulled, as it arrives. For `after`: what is there when the time is up. For `zone`: what is inside, over and over\"},\"onEnd\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"For missiles that were not stopped, and for zones: what happens where and when they end\"},\"returns\":{\"type\":\"boolean\",\"description\":\"For missiles: once done (it hit what used it up or what it flew after, came to the end of its way, or came down) it flies back to the caster, after it wherever it goes, and touches nobody on the way; its `onEnd` happens where the caster is when it gets there, not where it turned. Gone, with nothing more, if the caster is\"},\"falloff\":{\"type\":\"number\",\"description\":\"For missiles that go through what they hit (`pierce`): what part of the amounts each one it went through takes off the next (0.3: a third less on the second, less again on the third). Read by `damage`, `heal` and `mana` (`share`)\"},\"hitsOnReturn\":{\"type\":\"boolean\",\"description\":\"For missiles that come back (`returns`): on the way back they hit what they pass through again, each once more (Ahri's Orb of Deception); the caster's place is still where it ends\"},\"seek\":{\"type\":\"number\",\"description\":\"For missiles: they find their own targets: while one flies with nobody to go after, it turns after the nearest it may hit within this far of it and flies after that one (Fox-Fire, Dance of Arrows); another, if that one is gone first\"},\"onWall\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"For missiles: what happens where it meets a wall (ground it cannot cross, a cliff above where it set off, the edge of the play area, a building or a tree): it stops there, and these go off there, to the last one it hit where there is one (Bard's Cosmic Binding). For `dash` and `knockback`, in a game with the moves pack (`movesPack`): the one moved stops at such a wall (what flies meets none), and these go off there in the caster's name, to the one moved (Vayne's Condemn, Poppy's Heroic Charge)\"},\"split\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"For missiles: what goes off from where it is, the way it flew, once it is done (it hit what used it up, reached whom it flew after, or came to the end of its way) or is split by the game (`splitMissile`): missiles in it fly on from there at their own `spread` (Vel'Koz's Plasma Fission: two at a half turn's spread, a quarter either side)\"},\"steer\":{\"type\":\"object\",\"properties\":{\"rate\":{\"type\":\"number\"}},\"additionalProperties\":false,\"description\":\"For missiles: turned by their owner as they fly, towards the point the `steer` command gives (`steerMissile`), at most `rate` radians a second (π when left out): Yuumi's Prowling Projectile, Viktor's storm\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"missile\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"buff\":{\"type\":\"string\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"aura\"}},\"required\":[\"buff\",\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"duration\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Seconds the buff lasts, when that is different from its usual duration. In code (`EffectValue`), asked for each target\"},\"owner\":{\"type\":\"string\",\"const\":\"neutral\",\"description\":\"For `spawn`: whose it is: the caster's when left out, or the neutral player's (a soul nobody owns)\"},\"looksLike\":{\"type\":\"string\",\"enum\":[\"target\",\"caster\"],\"description\":\"For `spawn`: drawn as the target or the caster is (its model, its owner's colour, its size), while it stays what its own type is\"},\"data\":{\"type\":\"object\",\"additionalProperties\":{},\"description\":\"For `spawn`: components it starts with, by id, in the form a save keeps them in\"},\"line\":{\"$ref\":\"#/definitions/SpawnLine\",\"description\":\"For `spawn`, in a game with the ground objects pack (`groundObjectsPack`): so many along a line (`SpawnLine`), buildings one to a cell: Anivia's Crystallize (`across`), Taliyah's Weaver's Wall, Yasuo's Wind Wall, Bard's portals (two: one where he stands, one where he aimed)\"},\"ring\":{\"type\":\"object\",\"properties\":{\"count\":{\"type\":\"number\"},\"radius\":{\"type\":\"number\"}},\"required\":[\"count\",\"radius\"],\"additionalProperties\":false,\"description\":\"For `spawn`, in a game with the ground objects pack: `count` round a circle of `radius` about where it landed, the first the way it was aimed: Jarvan's Cataclysm\"},\"unit\":{\"type\":\"string\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"spawn\"}},\"required\":[\"type\",\"unit\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"buff\":{\"type\":\"string\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"toggle\"}},\"required\":[\"buff\",\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"duration\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Seconds the buff lasts, when that is different from its usual duration. In code (`EffectValue`), asked for each target\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"reveal\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"whileBuff\":{\"type\":\"string\",\"description\":\"For `onHit` and `onKill`: only while the carrier carries this buff\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens to what is hit. For missiles: everything they pass through. For `onHit`: the target of an attack. For `dash`: what is around where it ends. For `pull`: what was pulled, as it arrives. For `after`: what is there when the time is up. For `zone`: what is inside, over and over\"},\"every\":{\"type\":\"number\",\"description\":\"For `onHit`: only every so many of the carrier's attacks that land (while it carries `whileBuff`, where it says), counted on the carrier and saved with it: Jhin's fourth shot, a third strike. Every attack when left out\"},\"consumes\":{\"type\":\"boolean\",\"description\":\"For `onHit`: the attack that sets it off uses up one of `whileBuff`'s stacks, the buff for its last (or one that does not count them): \\\"the next attack\\\" of Power Fist, Siphoning Strike, Nether Blade, Flurry's two. Used up by the attack that kills too, after what the kill sets off (`onKill` still sees it)\"},\"cooldown\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For the triggers of a passive (`onHit`, `onKill`, `onCast`, `onDamaged`, `onAbilityHit`, `onLowHealth`): seconds before it can go off again once it did, kept on the ability's own cooldown (`AbilityState.cooldown`, shown on its button) for an ability, on the carrier for an item's or a buff's. Every time when left out\"},\"slot\":{\"type\":\"string\",\"description\":\"For `onHit`: the slot it takes among what the carrier's attacks set off (its attack modifiers: an orb, a poison, a frost), from its abilities, items and buffs alike. Of those that share a slot only one goes off, the one of the highest `priority`; those of different slots, and those of none, all add up (`RuleSettings.combat.attackModifiers`)\"},\"priority\":{\"type\":\"number\",\"description\":\"For `onHit` with a `slot`: which of those sharing it goes off, the highest first (0 when left out); the first of the carrier's abilities, then items, then buffs among equals\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"onHit\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"properties\":{\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"resetAttack\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"distance\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For missiles: how far they fly, in cells\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"blink\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"to\":{\"type\":\"string\",\"enum\":[\"home\",\"point\",\"target\"],\"description\":\"For `teleport`: where to, however far: the caster's side's home (`homeOf`), where it was aimed, or by its target. For `dash`, in a game with the moves pack (`movesPack`): `target` rushes to the unit it was cast on, after it as it moves, to its edge (or `through` it); its `effects` happen to it there\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"teleport\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"distance\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For missiles: how far they fly, in cells\"},\"leap\":{\"type\":\"number\",\"description\":\"For `dash`: how high the caster rises on the way, which makes it a leap. For whoever draws it\"},\"climb\":{\"type\":\"number\",\"description\":\"For a leap: how much higher than where it takes off the ground on its way may stand. What stands higher is a wall to it: it comes down in front of it. Over anything when left out\"},\"speed\":{\"type\":\"number\",\"description\":\"For missiles: how fast they travel, in units per second, and how far\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens to what is hit. For missiles: everything they pass through. For `onHit`: the target of an attack. For `dash`: what is around where it ends. For `pull`: what was pulled, as it arrives. For `after`: what is there when the time is up. For `zone`: what is inside, over and over\"},\"buff\":{\"type\":\"string\",\"description\":\"Id of the buff to put on the targets\"},\"to\":{\"type\":\"string\",\"enum\":[\"home\",\"point\",\"target\"],\"description\":\"For `teleport`: where to, however far: the caster's side's home (`homeOf`), where it was aimed, or by its target. For `dash`, in a game with the moves pack (`movesPack`): `target` rushes to the unit it was cast on, after it as it moves, to its edge (or `through` it); its `effects` happen to it there\"},\"through\":{\"type\":\"number\",\"description\":\"For a `dash` to a unit (`to: 'target'`), in a game with the moves pack: it goes on through the unit, this far past its middle, along the way from where the caster set off (Yasuo's Sweeping Blade); the place is fixed as it sets off\"},\"collide\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"For `dash` and `knockback`, in a game with the moves pack (`movesPack`): what happens to each enemy of the caster the one moved meets on its way, once each, in the caster's name, the one met its target and the one moved where they go off from (`EffectContext.origin`): Lee Sin's Dragon's Rage (who the kicked one flies into is hurt and thrown up), Rammus's Powerball\"},\"stops\":{\"type\":\"boolean\",\"description\":\"For `dash` and `knockback` with `collide`: the one moved stops at the first one it meets\"},\"onWall\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"For missiles: what happens where it meets a wall (ground it cannot cross, a cliff above where it set off, the edge of the play area, a building or a tree): it stops there, and these go off there, to the last one it hit where there is one (Bard's Cosmic Binding). For `dash` and `knockback`, in a game with the moves pack (`movesPack`): the one moved stops at such a wall (what flies meets none), and these go off there in the caster's name, to the one moved (Vayne's Condemn, Poppy's Heroic Charge)\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"dash\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"distance\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For missiles: how far they fly, in cells\"},\"speed\":{\"type\":\"number\",\"description\":\"For missiles: how fast they travel, in units per second, and how far\"},\"leap\":{\"type\":\"number\",\"description\":\"For `dash`: how high the caster rises on the way, which makes it a leap. For whoever draws it\"},\"direction\":{\"$ref\":\"#/definitions/KnockbackDirection\",\"description\":\"For `knockback`, in a game with the moves pack (`movesPack`): which way it throws (`KnockbackDirection`): `away` from where the effects go off from (the caster, or the context's `origin`: what it always did), `aim` the way the ability was aimed (Thresh's Flay, Vayne's Condemn, Poppy's charge), `over` the caster to land `distance` beyond it on its other side (Singed's Fling: give it a `leap`), or `towards` it, to its edge at the most (a yank)\"},\"collide\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"For `dash` and `knockback`, in a game with the moves pack (`movesPack`): what happens to each enemy of the caster the one moved meets on its way, once each, in the caster's name, the one met its target and the one moved where they go off from (`EffectContext.origin`): Lee Sin's Dragon's Rage (who the kicked one flies into is hurt and thrown up), Rammus's Powerball\"},\"stops\":{\"type\":\"boolean\",\"description\":\"For `dash` and `knockback` with `collide`: the one moved stops at the first one it meets\"},\"onWall\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"For missiles: what happens where it meets a wall (ground it cannot cross, a cliff above where it set off, the edge of the play area, a building or a tree): it stops there, and these go off there, to the last one it hit where there is one (Bard's Cosmic Binding). For `dash` and `knockback`, in a game with the moves pack (`movesPack`): the one moved stops at such a wall (what flies meets none), and these go off there in the caster's name, to the one moved (Vayne's Condemn, Poppy's Heroic Charge)\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"knockback\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"properties\":{\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"swap\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"speed\":{\"type\":\"number\",\"description\":\"For missiles: how fast they travel, in units per second, and how far\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens to what is hit. For missiles: everything they pass through. For `onHit`: the target of an attack. For `dash`: what is around where it ends. For `pull`: what was pulled, as it arrives. For `after`: what is there when the time is up. For `zone`: what is inside, over and over\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"sendProxy\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"duration\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Seconds the buff lasts, when that is different from its usual duration. In code (`EffectValue`), asked for each target\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"revealUnit\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"rider\":{\"type\":\"string\",\"enum\":[\"caster\",\"target\"],\"description\":\"For `attach`, in a game with the moves pack: who is put on whom: the `caster` on the unit it was cast on (Yuumi's You and Me!, when left out) or that unit on the caster (Kalista's Fate's Call)\"},\"duration\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Seconds the buff lasts, when that is different from its usual duration. In code (`EffectValue`), asked for each target\"},\"onEnd\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"For missiles that were not stopped, and for zones: what happens where and when they end\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"attach\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"seconds\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For `pull`: how long the drag takes, from where the target is to where it ends. Its speed is set by it as it starts: a caster that walks off makes it take longer\"},\"toPoint\":{\"type\":\"boolean\",\"description\":\"For missiles: flies to the spot the ability was aimed at and stops there, `distance` away at the most. For `pull`: drags to where the effect landed (a zone's middle, the spot of an `after`) rather than to the caster\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens to what is hit. For missiles: everything they pass through. For `onHit`: the target of an attack. For `dash`: what is around where it ends. For `pull`: what was pulled, as it arrives. For `after`: what is there when the time is up. For `zone`: what is inside, over and over\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"pull\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"ability\":{\"type\":\"string\",\"description\":\"For `refresh`: the ability that is ready again, when it is not the one the effect belongs to. For `grantAbility` and `swapAbility`, in a game with the ability changes pack (`abilityChangesPack`): the ability given\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"refresh\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"attack\":{\"type\":\"boolean\",\"description\":\"For `onKill`: only when it was an attack of the carrier that killed. For `onDamaged`: only when an attack hurt it\"},\"whileBuff\":{\"type\":\"string\",\"description\":\"For `onHit` and `onKill`: only while the carrier carries this buff\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens to what is hit. For missiles: everything they pass through. For `onHit`: the target of an attack. For `dash`: what is around where it ends. For `pull`: what was pulled, as it arrives. For `after`: what is there when the time is up. For `zone`: what is inside, over and over\"},\"cooldown\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For the triggers of a passive (`onHit`, `onKill`, `onCast`, `onDamaged`, `onAbilityHit`, `onLowHealth`): seconds before it can go off again once it did, kept on the ability's own cooldown (`AbilityState.cooldown`, shown on its button) for an ability, on the carrier for an item's or a buff's. Every time when left out\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"onKill\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens to what is hit. For missiles: everything they pass through. For `onHit`: the target of an attack. For `dash`: what is around where it ends. For `pull`: what was pulled, as it arrives. For `after`: what is there when the time is up. For `zone`: what is inside, over and over\"},\"cooldown\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For the triggers of a passive (`onHit`, `onKill`, `onCast`, `onDamaged`, `onAbilityHit`, `onLowHealth`): seconds before it can go off again once it did, kept on the ability's own cooldown (`AbilityState.cooldown`, shown on its button) for an ability, on the carrier for an item's or a buff's. Every time when left out\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"onCast\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"atLevel\":{\"type\":\"number\",\"description\":\"For `grantAbility` and `swapAbility`, in a game with the ability changes pack: the level it is given at: the level of what it takes the place of, or the effect's own, when left out\"},\"duration\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Seconds the buff lasts, when that is different from its usual duration. In code (`EffectValue`), asked for each target\"},\"uses\":{\"type\":\"number\",\"description\":\"For `grantAbility`, `swapAbility` and `stealAbility`, in a game with the ability changes pack: casts of it before it is gone (and what it took the place of is back): one for a stolen one when left out, for ever otherwise\"},\"ability\":{\"type\":\"string\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"grantAbility\"}},\"required\":[\"ability\",\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"from\":{\"type\":\"string\",\"description\":\"For `swapAbility`, in a game with the ability changes pack: the caster's ability that gives way, the one the effect belongs to when left out\"},\"atLevel\":{\"type\":\"number\",\"description\":\"For `grantAbility` and `swapAbility`, in a game with the ability changes pack: the level it is given at: the level of what it takes the place of, or the effect's own, when left out\"},\"duration\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Seconds the buff lasts, when that is different from its usual duration. In code (`EffectValue`), asked for each target\"},\"uses\":{\"type\":\"number\",\"description\":\"For `grantAbility`, `swapAbility` and `stealAbility`, in a game with the ability changes pack: casts of it before it is gone (and what it took the place of is back): one for a stolen one when left out, for ever otherwise\"},\"ability\":{\"type\":\"string\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"swapAbility\"}},\"required\":[\"ability\",\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"pick\":{\"type\":\"string\",\"enum\":[\"ultimate\",\"first\",\"random\"],\"description\":\"For `stealAbility`, in a game with the ability changes pack: which of the target's abilities it takes: its `ultimate` (when left out), its `first`, or one at `random` (`world.rng`)\"},\"duration\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Seconds the buff lasts, when that is different from its usual duration. In code (`EffectValue`), asked for each target\"},\"uses\":{\"type\":\"number\",\"description\":\"For `grantAbility`, `swapAbility` and `stealAbility`, in a game with the ability changes pack: casts of it before it is gone (and what it took the place of is back): one for a stolen one when left out, for ever otherwise\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"stealAbility\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"duration\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Seconds the buff lasts, when that is different from its usual duration. In code (`EffectValue`), asked for each target\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"convert\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"attack\":{\"type\":\"boolean\",\"description\":\"For `onKill`: only when it was an attack of the carrier that killed. For `onDamaged`: only when an attack hurt it\"},\"melee\":{\"type\":\"boolean\",\"description\":\"For `onDamaged`: only for an attack that hits from up close (one with no missile: `AttackDef.projectileSpeed` left out): Thorns Aura, Spiked Carapace\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens to what is hit. For missiles: everything they pass through. For `onHit`: the target of an attack. For `dash`: what is around where it ends. For `pull`: what was pulled, as it arrives. For `after`: what is there when the time is up. For `zone`: what is inside, over and over\"},\"cooldown\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For the triggers of a passive (`onHit`, `onKill`, `onCast`, `onDamaged`, `onAbilityHit`, `onLowHealth`): seconds before it can go off again once it did, kept on the ability's own cooldown (`AbilityState.cooldown`, shown on its button) for an ability, on the carrier for an item's or a buff's. Every time when left out\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"onDamaged\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens to what is hit. For missiles: everything they pass through. For `onHit`: the target of an attack. For `dash`: what is around where it ends. For `pull`: what was pulled, as it arrives. For `after`: what is there when the time is up. For `zone`: what is inside, over and over\"},\"cooldown\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For the triggers of a passive (`onHit`, `onKill`, `onCast`, `onDamaged`, `onAbilityHit`, `onLowHealth`): seconds before it can go off again once it did, kept on the ability's own cooldown (`AbilityState.cooldown`, shown on its button) for an ability, on the carrier for an item's or a buff's. Every time when left out\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"onAbilityHit\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"below\":{\"type\":\"number\",\"description\":\"For `onLowHealth`: the part of its max health (0.3: 30%) the carrier's health falls below for it to go off: once as it falls past it, not again until it is back above\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens to what is hit. For missiles: everything they pass through. For `onHit`: the target of an attack. For `dash`: what is around where it ends. For `pull`: what was pulled, as it arrives. For `after`: what is there when the time is up. For `zone`: what is inside, over and over\"},\"cooldown\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For the triggers of a passive (`onHit`, `onKill`, `onCast`, `onDamaged`, `onAbilityHit`, `onLowHealth`): seconds before it can go off again once it did, kept on the ability's own cooldown (`AbilityState.cooldown`, shown on its button) for an ability, on the carrier for an item's or a buff's. Every time when left out\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"onLowHealth\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"health\":{\"type\":\"number\",\"description\":\"For `onFatal`: the share of its max health the carrier is left with, rather than dying: all of it when left out\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens to what is hit. For missiles: everything they pass through. For `onHit`: the target of an attack. For `dash`: what is around where it ends. For `pull`: what was pulled, as it arrives. For `after`: what is there when the time is up. For `zone`: what is inside, over and over\"},\"cooldown\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For the triggers of a passive (`onHit`, `onKill`, `onCast`, `onDamaged`, `onAbilityHit`, `onLowHealth`): seconds before it can go off again once it did, kept on the ability's own cooldown (`AbilityState.cooldown`, shown on its button) for an ability, on the carrier for an item's or a buff's. Every time when left out\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"onFatal\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"stacks\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For `removeBuff`: how many stacks of `buff` come off: all of it when left out, the buff itself once none is left\"},\"buff\":{\"type\":\"string\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"removeBuff\"}},\"required\":[\"buff\",\"type\"]},{\"type\":\"object\",\"properties\":{\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"cleanse\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens to what is hit. For missiles: everything they pass through. For `onHit`: the target of an attack. For `dash`: what is around where it ends. For `pull`: what was pulled, as it arrives. For `after`: what is there when the time is up. For `zone`: what is inside, over and over\"},\"otherwise\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"For `charged`: what happens when the ability is not charged. For `if`: what happens when its conditions do not hold\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"charged\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"caster\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"For `if`: what must hold of the caster (`UnitCondition`, or code), for `effects` to happen rather than `otherwise`\"},\"target\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"For `if`: what must hold of the target (`UnitCondition`, or code): the unit it was cast on, or each one within its `radius` or `shape`, where it has one. With no target there, it does not hold\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens to what is hit. For missiles: everything they pass through. For `onHit`: the target of an attack. For `dash`: what is around where it ends. For `pull`: what was pulled, as it arrives. For `after`: what is there when the time is up. For `zone`: what is inside, over and over\"},\"otherwise\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"For `charged`: what happens when the ability is not charged. For `if`: what happens when its conditions do not hold\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"if\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"delay\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For missiles: seconds they take shape where they were cast before they set off. The caster is free to go\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens to what is hit. For missiles: everything they pass through. For `onHit`: the target of an attack. For `dash`: what is around where it ends. For `pull`: what was pulled, as it arrives. For `after`: what is there when the time is up. For `zone`: what is inside, over and over\"},\"impact\":{\"type\":\"string\",\"description\":\"For `after`: the name its arrival goes by for whoever draws it and plays its sound, where one ability sets off several that do not look alike: the last of a barrage. The ability's own when left out\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"after\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"duration\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Seconds the buff lasts, when that is different from its usual duration. In code (`EffectValue`), asked for each target\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens to what is hit. For missiles: everything they pass through. For `onHit`: the target of an attack. For `dash`: what is around where it ends. For `pull`: what was pulled, as it arrives. For `after`: what is there when the time is up. For `zone`: what is inside, over and over\"},\"onEnd\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"For missiles that were not stopped, and for zones: what happens where and when they end\"},\"follow\":{\"type\":\"string\",\"enum\":[\"caster\",\"target\"],\"description\":\"For `zone`: goes with a unit, the `caster` or the `target`, and faces the way it does; it ends (with its `onEnd`) when that one dies or leaves the world\"},\"onEnter\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"For `zone`: what happens to each who comes into it (its own `radius` or `shape`, as `affects` says), those inside as it is laid included. Each in it is seen to every round of the world, not four times a second\"},\"onLeave\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"For `zone`: what happens to each who goes out of it, alive\"},\"edge\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"For `zone`: what happens to each who crosses its edge, in or out, once it is laid (Veigar's Event Horizon, Thresh's Box): those inside as it is laid have not crossed it\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"zone\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"duration\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Seconds the buff lasts, when that is different from its usual duration. In code (`EffectValue`), asked for each target\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"detect\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"duration\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Seconds the buff lasts, when that is different from its usual duration. In code (`EffectValue`), asked for each target\"},\"count\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For missiles: how many are sent, spread over an angle in radians. What one of them hit the others pass by\"},\"as\":{\"type\":\"string\",\"const\":\"themselves\",\"description\":\"For `raiseDead`: the corpses rise as what they were, the caster's (Animate Dead), rather than as its `unit`\"},\"unit\":{\"type\":\"string\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"raiseDead\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"count\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For missiles: how many are sent, spread over an angle in radians. What one of them hit the others pass by\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"revive\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"dealt\":{\"type\":\"number\"},\"taken\":{\"type\":\"number\"},\"count\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For missiles: how many are sent, spread over an angle in radians. What one of them hit the others pass by\"},\"duration\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Seconds the buff lasts, when that is different from its usual duration. In code (`EffectValue`), asked for each target\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"illusion\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"lifetime\":{\"$ref\":\"#/definitions/Scaled\"},\"spread\":{\"type\":\"number\"},\"follow\":{\"type\":\"boolean\"},\"aggro\":{\"type\":\"string\",\"enum\":[\"nearest\",\"mastersAttacker\",\"none\"]},\"diesWithMaster\":{\"type\":\"boolean\"},\"count\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For missiles: how many are sent, spread over an angle in radians. What one of them hit the others pass by\"},\"unit\":{\"type\":\"string\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"summon\"}},\"required\":[\"type\",\"unit\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"amount\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"How much: of damage, healing, mana, a shield (`buff`). A number, one per level, or code asked for each target (`EffectValue`); with what the caster's stats add (`scaling`) and the formulas of `damage`, `heal` and `buff` (`byMaxHealth`, `byCurrentHealth`, `byMissingHealth`, `byStacks`, `byDistance`, `targetScaling`) on top\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"dispel\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"duration\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Seconds the buff lasts, when that is different from its usual duration. In code (`EffectValue`), asked for each target\"},\"toggle\":{\"type\":\"boolean\",\"description\":\"For `morph`: the form lasts until the ability is cast again in it, which turns it back (a toggle); with a `duration` too, until whichever comes first\"},\"back\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/MorphBack\"},\"description\":\"For `morph`: what turns the form back (`MorphBack`): the ability cast again, its `duration` up, its death. All three when left out (the ability only with `toggle`); without `ability`, the ability cast again in the form starts its time over\"},\"into\":{\"type\":\"string\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"morph\"}},\"required\":[\"into\",\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"sell\":{\"type\":\"string\"},\"buy\":{\"type\":\"string\"},\"rate\":{\"type\":\"number\"},\"amount\":{\"$ref\":\"#/definitions/Scaled\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"exchange\"}},\"required\":[\"amount\",\"buy\",\"rate\",\"sell\",\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"gain\":{\"$ref\":\"#/definitions/StatChange\"},\"xp\":{\"type\":\"number\"},\"levels\":{\"type\":\"number\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"tome\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"ratio\":{\"type\":\"number\"},\"amount\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"How much: of damage, healing, mana, a shield (`buff`). A number, one per level, or code asked for each target (`EffectValue`); with what the caster's stats add (`scaling`) and the formulas of `damage`, `heal` and `buff` (`byMaxHealth`, `byCurrentHealth`, `byMissingHealth`, `byStacks`, `byDistance`, `targetScaling`) on top\"},\"scaling\":{\"$ref\":\"#/definitions/Scaling\",\"description\":\"What the stats of the caster add to the amount: `{ abilityPower: 0.6 }` adds 60% of its ability power. `level` is for every level of the hero past the first\"},\"damageType\":{\"$ref\":\"#/definitions/DamageType\",\"description\":\"For damage. Magic when left out\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"manaBurn\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"count\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"For missiles: how many are sent, spread over an angle in radians. What one of them hit the others pass by\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"townPortal\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"buff\":{\"type\":\"string\"},\"spent\":{\"type\":\"string\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"allyWard\"}},\"required\":[\"buff\",\"spent\",\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"duration\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Seconds the buff lasts, when that is different from its usual duration. In code (`EffectValue`), asked for each target\"},\"buff\":{\"type\":\"string\"},\"spent\":{\"type\":\"string\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"wardSpent\"}},\"required\":[\"buff\",\"spent\",\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"ultimate\":{\"type\":\"boolean\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"refreshAbilities\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"spell\":{\"type\":\"string\"},\"part\":{\"type\":\"number\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"quicken\"}},\"required\":[\"part\",\"spell\",\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"buff\":{\"type\":\"string\"},\"after\":{\"type\":\"number\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"outOfFights\"}},\"required\":[\"buff\",\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"amount\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"How much: of damage, healing, mana, a shield (`buff`). A number, one per level, or code asked for each target (`EffectValue`); with what the caster's stats add (`scaling`) and the formulas of `damage`, `heal` and `buff` (`byMaxHealth`, `byCurrentHealth`, `byMissingHealth`, `byStacks`, `byDistance`, `targetScaling`) on top\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"reward\"}},\"required\":[\"type\"]},{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"unit\":{\"type\":\"string\"},\"ifBuff\":{\"type\":\"string\",\"description\":\"Only hits what carries this buff\"},\"look\":{\"type\":\"string\",\"description\":\"Which look of its ability the screen draws it with (`AbilityLook.effects` in the client: by this name, else by its place in the ability or its type). Nothing to the rules: the same game with another look\"},\"only\":{\"type\":\"string\",\"const\":\"heroes\",\"description\":\"Only hits heroes\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only hits what has one of these tags of its type (`UnitTypeDef.tags`): `['undead']`. Everything when left out\"},\"chance\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"It happens by chance: this share of the times it would (0.25 one in four), drawn from the world's numbers (`world.rng`), so the same every run. Once each time its list runs, for all it reaches; for a trigger (`onHit`, `onDamaged`…), each time it would go off (Bash), its cooldown starting only when it does; for an `if`, a condition like its others, drawn for each it asks of (and `otherwise` when the draw fails). A number, one per level, or code (`EffectValue`) asked with the target\"},\"kinds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EntityKind\"},\"description\":\"Only hits these kinds of things. Everything but resources when left out\"},\"layers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Layer\"},\"description\":\"Where what it hits has to be: on the ground, in the air. Both when left out\"},\"radius\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Makes the effect hit everything around the point of impact. Required for auras, and the size of a missile. In code (`EffectValue`), asked as it lands with no target\"},\"shape\":{\"$ref\":\"#/definitions/EffectShape\",\"description\":\"What ground it covers (`EffectShape`), turned the way the ability was aimed: `circle` (its `radius`, what an effect with a radius alone covers), `cone` (`length`, `angle`), `line` (`length`, `width`), `rect` (`length`, `width`), `ring` (`radius`, `width`), `arc` (`radius`, `angle`, `width`), `cross` (`length`, `width`). A circle, a ring, a rectangle and a cross lie around where it landed; a cone, a line and an arc go off from the caster (or the context's `origin`) the way of where it landed. Everything in it, as `affects` says, is hit (`effectArea`, `inArea`). Of a zone: what is inside it, for `onEnter`, `onLeave` and `edge`\"},\"length\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone`, a `line`, a `rect` and a `cross`: how long it is, end to end. In code (`EffectValue`), asked as it lands\"},\"width\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `line`, a `rect` and a `cross`: how far it covers on either side of its middle; of a `ring` and an `arc`, how thick it is, inwards from its `radius`. 1 when left out\"},\"angle\":{\"$ref\":\"#/definitions/EffectValue\",\"description\":\"Of a `cone` and an `arc`: how wide it opens, in radians\"},\"affects\":{\"type\":\"string\",\"enum\":[\"enemies\",\"allies\",\"all\"],\"description\":\"Who an effect with a radius applies to. Follows from the kind of effect when left out\"},\"where\":{\"$ref\":\"#/definitions/UnitCondition\",\"description\":\"Only hits what this says of it (`UnitCondition`: a buff or none, health under or over a share, a hero, tags, enemy or ally of the caster), or code (`UnitConditionCheck`, asked with the target): `{ healthBelow: 0.5, notTags: ['mechanical'] }`. Of an effect with an area, asked of each in it; of one without, of its target\"},\"sort\":{\"$ref\":\"#/definitions/TargetOrder\",\"description\":\"Of what its area reaches, the order it goes to them in (`TargetOrder`), or a comparison: the first `limit` of it are hit. The nearest to the middle of its area (where it landed, or the caster for a cone, a line and an arc) when left out with a `limit`\"},\"limit\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Of what its area reaches, at most this many, the first by `sort`: a number, or one per level. `{ sort: 'lowestHealthShare', limit: 3 }` heals the three most hurt; `{ sort: 'random', limit: 1 }` strikes one of them. Chosen before the game has its say (`beforeEffect`): a spell shield on one chosen takes the blow\"},\"on\":{\"type\":\"string\",\"const\":\"caster\",\"description\":\"Applies to the caster, wherever the ability was aimed\"},\"when\":{\"$ref\":\"#/definitions/EffectMoment\",\"description\":\"When it happens, in a chain (`EffectMoment`): not now, but as the nearest effect before it in its list that comes to that moment gets there: `hit` a missile's every hit, `arrived` a pull's target arriving, `landed` a dash's end, `end` a missile's or zone's end. `[missile, { type: 'damage', when: 'hit' }]` is `[{ ...missile, effects: [damage] }]`: what waits goes into what it waits on (`lowerChain`), so one waiting on what waits itself happens later still. One with nothing before it to wait on never happens (`checkRules` says so)\"},\"origin\":{\"$ref\":\"#/definitions/ProxyOrigin\",\"description\":\"Goes off from units of the caster's of a type (`ProxyOrigin`), not from the caster: once from each it picks, that one the context's `origin` (a missile starts there, an area never takes it in, the strike says it came from there), the caster still who does it (whose the damage, the kills and the scaling are). Zed's shadows, Orianna's ball, Syndra's spheres, Azir's soldiers. Nothing where none is picked, unless `caster` says otherwise\"},\"type\":{\"type\":\"string\",\"const\":\"nightCompanion\"}},\"required\":[\"type\",\"unit\"]}],\"description\":\"One thing an ability does: its `type`, which picks the handler and says which fields it has (`EffectTypes`)\"},\"EffectValue\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"An amount, a time or a size of an effect: a number, one per level (`Scaled`), or worked out in code for each target as it lands (`(context, target) => number`: a share of what the target lacks, more for each mark on it, by how far it flew). Code is asked with no target where the effect is not for one (a zone's time, an area's size) and by the tooltip; what the screen draws before a cast (the aim) has no caster to ask, and takes `AbilityDef.aim`\"},\"EffectShape\":{\"type\":\"string\",\"enum\":[\"circle\",\"cone\",\"line\",\"rect\",\"ring\",\"arc\",\"cross\"],\"description\":\"The shapes of ground an effect may cover (`EffectCommon.shape`)\"},\"UnitCondition\":{\"type\":\"object\",\"properties\":{\"buff\":{\"type\":\"string\",\"description\":\"It carries this buff\"},\"noBuff\":{\"type\":\"string\",\"description\":\"It does not carry this buff\"},\"healthBelow\":{\"type\":\"number\",\"description\":\"Its health is under this share of its max (0.2: below 20%: an execute)\"},\"healthAbove\":{\"type\":\"number\",\"description\":\"Its health is at or over this share of its max (1: unhurt)\"},\"hero\":{\"type\":\"boolean\",\"description\":\"It is a hero (true) or not (false)\"},\"structure\":{\"type\":\"boolean\",\"description\":\"It is a structure, a building (true), or not (false). `{ hero: false, structure: false }` is a creep: any unit that is neither, a camp's, a lane's, a summon. What a passive that works in every kind of game names\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Its type has one of these tags (`UnitTypeDef.tags`)\"},\"notTags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Its type has none of these tags: `['undead']` for the living\"},\"is\":{\"type\":\"string\",\"enum\":[\"enemy\",\"ally\"],\"description\":\"What it is to the caster: an `enemy` or an `ally` (the caster itself is one)\"}},\"additionalProperties\":false,\"description\":\"What an `if` asks of a unit, its caster or its target (`EffectFields.caster`, `EffectFields.target`): each part it says must hold. Or code (`UnitConditionCheck`)\"},\"TargetOrder\":{\"type\":\"string\",\"enum\":[\"nearest\",\"farthest\",\"lowestHealth\",\"highestHealth\",\"lowestHealthShare\",\"highestHealthShare\",\"random\"],\"description\":\"The orders a query and an effect sort what they found in (`WorldQuery.sort`, `EffectCommon.sort`): `nearest` and `farthest` to its point (by the edge of each), the least or most `health`, the least or most of it as a share of its max (`lowestHealthShare`: the most hurt), or `random`, drawn from the world's numbers (`world.rng`), so the same every run. Ties go by who came into the world first\"},\"EffectMoment\":{\"type\":\"string\",\"enum\":[\"hit\",\"arrived\",\"landed\",\"end\"],\"description\":\"The moment an effect of a chain waits for (`EffectCommon.when`): a missile's hit (`hit`), a pull's arrival (`arrived`), a dash's landing (`landed`), a missile's or a zone's end (`end`)\"},\"ProxyOrigin\":{\"type\":\"object\",\"properties\":{\"proxy\":{\"type\":\"string\",\"description\":\"The unit type of the caster's it goes off from\"},\"pick\":{\"type\":\"string\",\"enum\":[\"nearest\",\"all\",\"newest\",\"oldest\"],\"description\":\"Which of them: the one `nearest` to where it was aimed (when left out), `all` of them (each in the order they came into the world), the `newest` or the `oldest`\"},\"caster\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"string\",\"const\":\"otherwise\"}],\"description\":\"From the caster as well (`true`: Zed and his shadows, each a Razor Shuriken), or from the caster where none is picked (`otherwise`: Orianna's ball, with her when it is nowhere). From the picked alone when left out\"},\"range\":{\"type\":\"number\",\"description\":\"Only those within this far of the caster: Azir's soldiers within his reach. Any distance when left out\"},\"near\":{\"type\":\"number\",\"description\":\"Only those within this far of where it was aimed: the soldiers near what Azir attacks. Any distance when left out\"},\"at\":{\"type\":\"string\",\"enum\":[\"aim\",\"proxy\"],\"description\":\"Where it lands: where it was aimed (`aim`, when left out), or where each it goes off from stands (`proxy`: Orianna's Dissonance around the ball, Zed's Shadow Slash around each shadow)\"},\"target\":{\"type\":\"boolean\",\"description\":\"The one it goes off from is its target too: a swap with it (Zed's Living Shadow cast again), a dash to it\"}},\"required\":[\"proxy\"],\"additionalProperties\":false,\"description\":\"Units of the caster's an effect goes off from (`EffectCommon.origin`): proxies, a shadow, a ball, a sphere, a soldier. The caster's are those it put down (`madeBy`, a `spawn` of the ground objects pack), or, of one nobody says put down, those of its owner. In code, a game's effect runs its effects from a unit of its own choice (`EffectContext.origin`, `runEffects`), or asks which a proxy origin picks (`proxiesOf`)\"},\"SpawnLine\":{\"type\":\"object\",\"properties\":{\"count\":{\"type\":\"number\",\"description\":\"How many, ends included\"},\"length\":{\"type\":\"number\",\"description\":\"How long it is, around where it landed: from where it went off from to there when left out\"},\"across\":{\"type\":\"boolean\",\"description\":\"It lies across the way it was aimed, a quarter turn round: a wall in front\"}},\"required\":[\"count\"],\"additionalProperties\":false,\"description\":\"The spots a `spawn` of the ground objects pack lays its units on (`EffectFields.line`): `count` of them, ends included, along the way it was aimed, `length` long around where it landed (or from where it went off from to there, when left out), or `across` it, a quarter turn round (a wall in front of the caster)\"},\"KnockbackDirection\":{\"type\":\"string\",\"enum\":[\"away\",\"aim\",\"over\",\"towards\"],\"description\":\"Which way a `knockback` throws, in a game with the moves pack (`EffectFields.direction`)\"},\"MorphBack\":{\"type\":\"string\",\"enum\":[\"ability\",\"time\",\"death\"],\"description\":\"What turns a form back into the hero it was (`EffectFields.back`): the ability that made it cast again (`ability`), its time up (`time`), or its death (`death`: it falls as itself, and is brought back as itself)\"},\"HoldDef\":{\"type\":\"object\",\"properties\":{\"max\":{\"type\":\"number\",\"description\":\"Seconds held for it to be full\"},\"upTo\":{\"type\":\"number\",\"description\":\"Seconds held after which it goes off by itself, where it was last aimed: as it is full when left out\"},\"range\":{\"type\":\"object\",\"properties\":{\"from\":{\"type\":\"number\"},\"to\":{\"type\":\"number\"}},\"required\":[\"from\",\"to\"],\"additionalProperties\":false,\"description\":\"How far it reaches let go at once (`from`) and full (`to`): where it is let go at is brought that near\"},\"scale\":{\"type\":\"number\",\"description\":\"What its amounts come to full, times what they are let go at once (1.5: half again); what comes between is between\"},\"tap\":{\"type\":\"object\",\"properties\":{\"under\":{\"type\":\"number\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"}}},\"required\":[\"under\",\"effects\"],\"additionalProperties\":false,\"description\":\"Let go before `under` seconds: these effects in place of its own (Pyke's stab, not his hook)\"},\"buff\":{\"type\":\"string\",\"description\":\"A buff on the caster while it holds: a slow\"}},\"required\":[\"max\"],\"additionalProperties\":false,\"description\":\"How an ability is held to charge and let go (`AbilityDef.hold`), in a game with the holds pack: Varus's Piercing Arrow, Xerath's Arcanopulse, Pyke's Bone Skewer, Viego's Spectral Maw\"},\"BuffDef\":{\"type\":\"object\",\"properties\":{\"stats\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/Scaled\"},\"description\":\"Amounts added to stats, by stat, each growing with the ability's level\"},\"percent\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/Scaled\"},\"description\":\"Parts stats grow or shrink by, by stat, each growing with the ability's level\"},\"id\":{\"type\":\"string\",\"description\":\"The buff's id, shared by every game: give it a prefix of the game's\"},\"name\":{\"type\":\"string\",\"description\":\"What the player sees the buff called\"},\"basedOn\":{\"type\":\"string\",\"description\":\"The definition this one is a copy of, made from the data (`copyOf` in a `data.json`, the editor's Copy as new): what it is drawn, heard and pictured as where the game gives it no look of its own\"},\"description\":{\"type\":\"string\",\"description\":\"What the buff does, in words, shown when the pointer is over it\"},\"duration\":{\"type\":\"number\",\"description\":\"Seconds. Lasts until removed when left out\"},\"harmful\":{\"type\":\"boolean\",\"description\":\"A debuff: by default it goes on enemies\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Free words to find it by and to sort it with (`fire`, `slow`, `anti-heal`), as abilities and units have: what a search matches, what a game's code asks (`buffsTagged`)\"},\"stun\":{\"type\":\"boolean\",\"description\":\"The unit cannot do anything. A function says so for one carrier, one moment\"},\"airborne\":{\"type\":\"boolean\",\"description\":\"Thrown into the air for as long as it lasts. Comes with a stun, the rest is for the eye\"},\"down\":{\"type\":\"boolean\",\"description\":\"Knocked down: it lies on the ground for as long as it lasts, and gets up at the end. For the eye, like `airborne`\"},\"grounds\":{\"type\":\"boolean\",\"description\":\"Brings what flies down: it counts as being on the ground, for whatever is aimed at it\"},\"invisible\":{\"type\":\"boolean\",\"description\":\"Its carrier is invisible to enemies for as long as it lasts, unless they find it (`detect`): a Wind Walk. A function says so for one carrier, one moment\"},\"root\":{\"type\":\"boolean\",\"description\":\"The unit cannot move from the spot. It can still fight and cast. A function says so for one carrier, one moment\"},\"silence\":{\"type\":\"boolean\",\"description\":\"The unit cannot use its abilities. What it carries and the spells every hero has still work. A function says which abilities it keeps it from (`(ability) => ability.tags?.includes('fire')`): the screen asks it too\"},\"shield\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"Damage it takes in place of the unit, for as long as the buff lasts and there is something left of it\"},\"shieldScaling\":{\"$ref\":\"#/definitions/Scaling\",\"description\":\"What the stats of whoever gave the shield add to it\"},\"recharge\":{\"type\":\"number\",\"description\":\"The shield is as good as new once the unit has not been hurt for this many seconds\"},\"avoids\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Tags of abilities that do nothing to who carries it, for as long as it does: `ground` for someone up in the air\"},\"disarm\":{\"type\":\"boolean\",\"description\":\"Who carries it does not attack while it lasts: burrowed, or disarmed. Or while its function says\"},\"spellImmune\":{\"type\":\"boolean\",\"description\":\"Who carries it is immune to spells while it lasts, as an avatar is (see `UnitTypeDef.spellImmune`). Or while its function says\"},\"invulnerable\":{\"type\":\"boolean\",\"description\":\"Who carries it takes no damage while it lasts, and no enemy's ability may be cast on it (Divine Shield, Kayle's Intervention, Zhonya's stasis with a `stun`). Effects other than damage still reach it. Or while its function says\"},\"untargetable\":{\"type\":\"boolean\",\"description\":\"Who carries it is out of reach while it lasts (Fizz's Playful, Zed's Death Mark dash, Vlad's pool): no ability may be cast on it but by itself, no attack is aimed at it nor lands, and no effect of anyone else's reaches it (an area, a missile, a chain), allies' too; it is still seen and still in the way. Or while its function says\"},\"minHealth\":{\"$ref\":\"#/definitions/Scaled\",\"description\":\"The least health damage leaves its carrier with while it lasts (Tryndamere's Undying Rage at 1, Kindred's Lamb's Respite at a tenth of its max): a number, one per level, or code with the carrier. It is hurt down to it, never past it. The highest of what it carries counts\"},\"dispellable\":{\"type\":\"boolean\",\"description\":\"Whether a dispel takes it off (see the effect `dispel`). Yes when left out: no for what nothing should end early. Decided in code for each dispel: by who dispels it (`by`), its level\"},\"maxStacks\":{\"type\":\"number\",\"description\":\"How many of it one unit can carry at most. What puts it on says whether it adds one (`stack`)\"},\"onEnd\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens around who carried it when its time is up, in the name of who put it there. Not when it is taken off\"},\"perStack\":{\"type\":\"boolean\",\"description\":\"Its stats count once for every stack it has (`stacks`), rather than once: \\\"each stack, -5% move speed\\\"\"},\"stacking\":{\"type\":\"string\",\"enum\":[\"strongest\",\"refresh\",\"perSource\",\"independent\"],\"description\":\"What happens when it is put on a unit that has it already. `strongest` (the default): the higher level wins, the longer among equals. `refresh`: the time starts over, the level the new one's. `perSource`: one of it for every unit that puts it on, each of its own (two poisons from two casters). `independent`: a new one every time. A function decides from the one there and the one coming: `replace` it, `renew` its time, `add` another, or `keep`\"},\"onApply\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens as it is put on: effects in the name of who put it there (while they live), or code\"},\"onTick\":{\"type\":\"object\",\"properties\":{\"every\":{\"type\":\"number\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"}}},\"required\":[\"every\"],\"additionalProperties\":false,\"description\":\"What happens every `every` seconds while it lasts: effects in the name of who put it there (while they live), or code, which runs whoever is left\"},\"control\":{\"$ref\":\"#/definitions/ControlKind\",\"description\":\"It takes its carrier's orders while it lasts: what it was told waits (a channel is broken off), the player's and anyone's new orders are refused, and it goes on with what it was told after, as from a stun. `fear`: it walks away from who put it on; `charm`: it walks to them; `taunt`: it attacks them (walks to them where it cannot). Code (`BuffControl`) steers it itself every tick. The last of them it carries is the one it does\"},\"suppress\":{\"type\":\"boolean\",\"description\":\"Held like a stun, and more: tenacity does not cut it short and a `cleanse` does not take it off (Malzahar's Nether Grasp, Skarner's Impale)\"},\"grounded\":{\"type\":\"boolean\",\"description\":\"Its carrier cannot rush or jump anywhere of its own: an ability of its with a `dash` or a `blink` is refused (\\\"Grounded\\\"), and such an effect of its does nothing (Singed's Mega Adhesive). Not `grounds`, which brings a flyer down\"},\"drain\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"number\"},\"description\":\"What it takes of its carrier each second while it lasts, by pool (`UnitTypeDef.pools`) or `mana`, in a game with the resources pack (`resourcesPack`): taken off when there is not enough for the next second's (Immolation, a Glacial Storm kept up)\"},\"unstoppable\":{\"type\":\"boolean\",\"description\":\"Nothing that holds a unit up does anything to its carrier while it lasts: harmful stuns, roots, silences, disarms, controls, suppressions and grounds on it hold nothing, new ones do not take, and it is neither thrown nor pulled (Olaf's Ragnarok, Malphite's Unstoppable Force). Slows still slow\"},\"revealed\":{\"type\":\"boolean\",\"description\":\"Its carrier is seen by the team of whoever put it on while it lasts, wherever it stands: in the fog, in a bush, invisible or camouflaged (the fog lit where it stands, as for what a `detect` found), in a game with the vision pack (`visionPack`): Kindred's mark, a hunter's quarry\"},\"camouflage\":{\"type\":\"number\",\"description\":\"Its carrier is camouflaged while it lasts, in a game with the vision pack (`visionPack`): its enemies see it only from within this far of it (a unit of theirs that near), unless something finds it (`trueSight`, `detect`, `revealUnit`) or it attacked them a moment ago: Pyke's Ghostwater Dive, Rengar's Thrill of the Hunt, Viego's mist. A function says how far for one carrier, one moment\"},\"trueSight\":{\"type\":\"number\",\"description\":\"Its carrier finds what of its enemies is invisible or camouflaged within this far of it, for its team, while it lasts, in a game with the vision pack (`visionPack`): an Oracle Lens, a Magic Sentry on a tower\"},\"phasing\":{\"type\":\"boolean\",\"description\":\"Its carrier walks through other units, and they through it, while it lasts: neither steers round nor pushes the other (a Ghost, a Phantom Stride). Walls, cliffs, buildings and trees still stop it. A function says so for one carrier, one moment\"},\"cleave\":{\"$ref\":\"#/definitions/Cleave\",\"description\":\"Its carrier's blows from up close strike the enemies around their target too, a part of their damage each, as an attack's own cleave (`AttackDef.cleave`): the larger part counts\"},\"overheal\":{\"type\":\"object\",\"properties\":{\"buff\":{\"type\":\"string\"},\"part\":{\"$ref\":\"#/definitions/Scaled\"},\"most\":{\"type\":\"number\"},\"of\":{\"type\":\"string\",\"enum\":[\"given\",\"taken\"]}},\"required\":[\"buff\"],\"additionalProperties\":false,\"description\":\"The healing past full health that its carrier gives (`given`, when left out) or gets (`taken`) becomes a shield on whoever was healed: the buff `buff` (its own time, and a shield of its own where it says), holding `part` of what spilled over (all of it when left out), up to `most` of the healed one's max health (a third when left out)\"},\"paysWithHealth\":{\"type\":[\"boolean\",\"number\"],\"description\":\"Its carrier pays for its abilities with health, not mana, while it carries it: this much health for each point of mana they cost (1 for `true`). It cannot cast with no more health than that; items still cost nothing\"},\"passive\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What its carrier's attacks, hurts, casts and kills set off while it carries it, as an ability's passive does (`onHit`, `onKill`, `onCast`, `onDamaged`, `onAbilityHit`, `onLowHealth`), in the carrier's name: Frost Armor's slow on who strikes it, a Thorns Aura's buff, the empowered next attack of a buff a cast put on\"},\"breaksOn\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/BuffBreak\"},\"description\":\"What takes it off before its time: `damage` (its carrier hurt: Sleep), `attack` (an attack of its carrier lands, after what the attack sets off: Wind Walk), `cast` (its carrier casts an ability other than the one that put it on)\"},\"onCarrierDeath\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens where its carrier dies carrying it, in the name of who put it on (while they live): Doom's demon, Black Arrow's skeleton, a mark that spreads\"},\"onMaxStacks\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/EffectDef\"},\"description\":\"What happens to its carrier as an effect (`stack`) brings it to `maxStacks`, in the name of who put it on: Gravity Field's stun on the third, Hemorrhage's might on the fifth. A `removeBuff` among them spends the stacks\"}},\"required\":[\"id\",\"name\"],\"additionalProperties\":false,\"description\":\"Something lasting on a unit that changes what it can do\"},\"ControlKind\":{\"type\":\"string\",\"enum\":[\"fear\",\"charm\",\"taunt\"],\"description\":\"The orders a buff gives its carrier (`BuffDef.control`): away from who put it on, to them, or at them\"},\"BuffBreak\":{\"type\":\"string\",\"enum\":[\"damage\",\"attack\",\"cast\"],\"description\":\"What takes a buff off before its time (`BuffDef.breaksOn`): its carrier hurt, an attack of its landing, a cast of its\"},\"ItemDef\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"The item's id, shared by every game: give it a prefix of the game's\"},\"name\":{\"type\":\"string\",\"description\":\"What the player sees the item called\"},\"level\":{\"type\":\"number\",\"description\":\"How good it is, 1 and up (campaign plan GP3): what an item table draws by (`{ level: 3 }`)\"},\"class\":{\"type\":\"string\",\"description\":\"Its kind of item, a word of the game's (`permanent`, `charged`, `powerup`): what an item table draws by too\"},\"basedOn\":{\"type\":\"string\",\"description\":\"The definition this one is a copy of, made from the data (`copyOf` in a `data.json`, the editor's Copy as new): what it is drawn, heard and pictured as where the game gives it no look of its own\"},\"description\":{\"type\":\"string\",\"description\":\"What the item does, in words, shown when the pointer is over it\"},\"cost\":{\"$ref\":\"#/definitions/Cost\",\"description\":\"What it costs in a shop, in resources\"},\"charges\":{\"type\":\"number\",\"description\":\"Uses before it is gone. Items without charges stay\"},\"ability\":{\"type\":\"string\",\"description\":\"Id of the ability the item gives: using the item casts it, without mana\"},\"passive\":{\"type\":\"string\",\"description\":\"Id of an ability whose passive part works for whoever carries the item\"},\"from\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Items it is made of. Those the buyer carries are used up and taken off the price, which is for all of it\"},\"tier\":{\"$ref\":\"#/definitions/ItemTier\",\"description\":\"Where it goes in a shop: consumable, starter, basic, intermediate, legendary, relic (`ItemTier`). `epic`, the old word, is read as intermediate\"},\"unique\":{\"type\":\"string\",\"description\":\"The name of its passive (or the passive of items that share it): two carried, of it or of items sharing the name, work once (the first carried). Its stats (`bonus`) always count. Every passive works when left out\"},\"group\":{\"type\":\"string\",\"description\":\"A group of items a hero carries only so many of (`boots`): `groupLimit`, or the game's limit of the group (`ItemSettings.groups`), 1 when neither says. Buying, picking up or being handed one more is refused, saying why\"},\"groupLimit\":{\"type\":\"number\",\"description\":\"How many of its `group` one carrier may have: the game's limit of the group, or 1, when left out\"},\"stack\":{\"type\":\"number\",\"description\":\"How many of it go in one slot: another bought, picked up or handed over goes into the slot of one carried, its charges added, up to so many of it (a stack of potions). One a slot when left out\"},\"refill\":{\"$ref\":\"#/definitions/ItemRefill\",\"description\":\"How its charges come back (`ItemRefill`): at a shop, over time. Used up for good when left out\"},\"sellRate\":{\"type\":\"number\",\"description\":\"The part of its price a shop gives back for it, over the game's (`EconomySettings.sellPrice`)\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Free words of the game's for what it is (`attack`, `lifesteal`, `anti-heal`, `early`): its categories, what a search finds it by (`#lifesteal`), what a shop filters by. A `TagDef` gives one a name and a look (`Rules.tags`)\"},\"suits\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"The callings of heroes it is meant for (`vanguard`, `ranger`…): what a shop suggests and filters by. Never a lock: any hero may buy it\"},\"bonus\":{\"$ref\":\"#/definitions/StatChange\",\"description\":\"Applies for as long as the item is carried\"},\"stock\":{\"type\":\"object\",\"properties\":{\"max\":{\"type\":\"number\"},\"restock\":{\"type\":\"number\"}},\"required\":[\"max\",\"restock\"],\"additionalProperties\":false,\"description\":\"How many a shop has at most, and the seconds it takes to get one back. As many as anyone wants when left out\"},\"hotkey\":{\"type\":\"string\",\"description\":\"The key that uses it from the command card\"},\"powerUp\":{\"type\":\"boolean\",\"description\":\"Used as it is picked up, by walking over it or by the order, and never carried: a rune, a tome. Its ability is cast by whoever picked it. In a game with the runes pack (`runesPack`, whose `powerUp` says it in code)\"}},\"required\":[\"id\",\"name\",\"cost\"],\"additionalProperties\":false,\"description\":\"The definition of an item: what it costs, what it gives its carrier and how it is used\"},\"ItemTier\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"string\",\"enum\":[\"consumable\",\"starter\",\"basic\",\"intermediate\",\"legendary\",\"relic\",\"epic\"]}],\"description\":\"Where an item is in a shop, and in its build tree: what is used up (`consumable`), what a hero starts with (`starter`), the parts (`basic`), what they build (`intermediate`), what it all leads to (`legendary`), and what is found, never sold (`relic`: loot of camps, bosses and quests). The client's tiers, or a game's own (`GameView.hud.shopTiers`). `epic` is the old word for `intermediate`, still read as it (`itemTier`)\"},\"ItemRefill\":{\"type\":\"object\",\"properties\":{\"shop\":{\"type\":\"boolean\",\"description\":\"Every charge back while its carrier stands at a shop it may trade with\"},\"every\":{\"type\":\"number\",\"description\":\"Seconds for one charge to come back, wherever it is carried. None when left out\"}},\"additionalProperties\":false,\"description\":\"How an item's charges come back (`ItemDef.refill`): all of them at a shop of the carrier's side or an ally's (`shop`), and one every `every` seconds. An item that refills is kept at no charges, waiting for them\"},\"UpgradeDef\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"The upgrade's id, shared by every game: give it a prefix of the game's\"},\"name\":{\"type\":\"string\",\"description\":\"What the player sees the upgrade called\"},\"basedOn\":{\"type\":\"string\",\"description\":\"The definition this one is a copy of, made from the data (`copyOf` in a `data.json`, the editor's Copy as new): what it is drawn, heard and pictured as where the game gives it no look of its own\"},\"description\":{\"type\":\"string\",\"description\":\"What the upgrade does, in words, shown when the pointer is over it\"},\"cost\":{\"$ref\":\"#/definitions/Cost\",\"description\":\"Paid for every level\"},\"researchTime\":{\"type\":\"number\",\"description\":\"Seconds per level\"},\"maxLevel\":{\"type\":\"number\",\"description\":\"The highest level that can be researched; 1 when left out\"},\"requires\":{\"type\":\"array\",\"items\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"description\":\"Building types needed, one list per level. Levels past the end of the list need nothing\"},\"race\":{\"type\":\"string\",\"description\":\"The race it is of (`Rules.races`): only its players may research it. Everyone's when left out\"},\"hotkey\":{\"type\":\"string\",\"description\":\"The key that researches it from the command card\"},\"effects\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/UpgradeEffect\"},\"description\":\"What each level changes in the stats of the units it applies to\"}},\"required\":[\"id\",\"name\",\"cost\",\"researchTime\",\"effects\"],\"additionalProperties\":false,\"description\":\"Research that improves a player's units for the rest of the game\"},\"UpgradeEffect\":{\"type\":\"object\",\"properties\":{\"stats\":{\"type\":\"object\",\"properties\":{\"attackDamage\":{\"type\":\"number\",\"description\":\"What a basic attack deals, before the armor of the target\"},\"attackSpeed\":{\"type\":\"number\",\"description\":\"Attacks per second\"},\"attackRange\":{\"type\":\"number\",\"description\":\"Measured between the edges of attacker and target\"},\"health\":{\"type\":\"number\",\"description\":\"The most health a unit has; the entity's `maxHealth` follows it\"},\"armor\":{\"type\":\"number\",\"description\":\"Against physical damage: 100 of it halve what arrives\"},\"magicResist\":{\"type\":\"number\",\"description\":\"The same against magic damage\"},\"incomingDamage\":{\"type\":\"number\",\"description\":\"Part by which the damage it takes is more or less, after armor or magic resist and before shields: -0.3 takes 30% less, 0.2 a fifth more. Added up with the part of the damage's own type (below), and never below none\"},\"incomingPhysicalDamage\":{\"type\":\"number\",\"description\":\"The same, of physical damage only, on top of `incomingDamage`\"},\"incomingMagicDamage\":{\"type\":\"number\",\"description\":\"The same, of magic damage only, on top of `incomingDamage`\"},\"incomingTrueDamage\":{\"type\":\"number\",\"description\":\"The same, of true damage only, on top of `incomingDamage`\"},\"outgoingDamage\":{\"type\":\"number\",\"description\":\"Part by which all the damage it deals, of attacks and abilities, is more or less: -0.35 deals 35% less. Never below none\"},\"incomingHealing\":{\"type\":\"number\",\"description\":\"Part by which the healing it gets is more or less: -0.4 heals 40% less (an anti-heal). Never below none\"},\"healthRegen\":{\"type\":\"number\",\"description\":\"Per second\"},\"mana\":{\"type\":\"number\",\"description\":\"The most mana a unit has\"},\"manaRegen\":{\"type\":\"number\",\"description\":\"Per second\"},\"moveSpeed\":{\"type\":\"number\",\"description\":\"Units per second. Who has none cannot move\"},\"sight\":{\"type\":\"number\",\"description\":\"How far it sees. At night the unit type says how far that is\"}},\"additionalProperties\":false,\"description\":\"Amounts added to stats, by stat\"},\"percent\":{\"type\":\"object\",\"properties\":{\"attackDamage\":{\"type\":\"number\",\"description\":\"What a basic attack deals, before the armor of the target\"},\"attackSpeed\":{\"type\":\"number\",\"description\":\"Attacks per second\"},\"attackRange\":{\"type\":\"number\",\"description\":\"Measured between the edges of attacker and target\"},\"health\":{\"type\":\"number\",\"description\":\"The most health a unit has; the entity's `maxHealth` follows it\"},\"armor\":{\"type\":\"number\",\"description\":\"Against physical damage: 100 of it halve what arrives\"},\"magicResist\":{\"type\":\"number\",\"description\":\"The same against magic damage\"},\"incomingDamage\":{\"type\":\"number\",\"description\":\"Part by which the damage it takes is more or less, after armor or magic resist and before shields: -0.3 takes 30% less, 0.2 a fifth more. Added up with the part of the damage's own type (below), and never below none\"},\"incomingPhysicalDamage\":{\"type\":\"number\",\"description\":\"The same, of physical damage only, on top of `incomingDamage`\"},\"incomingMagicDamage\":{\"type\":\"number\",\"description\":\"The same, of magic damage only, on top of `incomingDamage`\"},\"incomingTrueDamage\":{\"type\":\"number\",\"description\":\"The same, of true damage only, on top of `incomingDamage`\"},\"outgoingDamage\":{\"type\":\"number\",\"description\":\"Part by which all the damage it deals, of attacks and abilities, is more or less: -0.35 deals 35% less. Never below none\"},\"incomingHealing\":{\"type\":\"number\",\"description\":\"Part by which the healing it gets is more or less: -0.4 heals 40% less (an anti-heal). Never below none\"},\"healthRegen\":{\"type\":\"number\",\"description\":\"Per second\"},\"mana\":{\"type\":\"number\",\"description\":\"The most mana a unit has\"},\"manaRegen\":{\"type\":\"number\",\"description\":\"Per second\"},\"moveSpeed\":{\"type\":\"number\",\"description\":\"Units per second. Who has none cannot move\"},\"sight\":{\"type\":\"number\",\"description\":\"How far it sees. At night the unit type says how far that is\"}},\"additionalProperties\":false,\"description\":\"Parts stats grow or shrink by, by stat: 0.1 is 10% more, and the parts add up before they are applied\"},\"units\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Unit types that benefit, or a function of the type. Everything the player owns when left out\"}},\"additionalProperties\":false,\"description\":\"What a level of research changes\"},\"RaceDef\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"The race's id, shared by every game: referenced by `PlayerInit.race`, `UnitTypeDef.race` and `UpgradeDef.race`\"},\"name\":{\"type\":\"string\",\"description\":\"What players are shown: in the lobby, on the scores\"},\"basedOn\":{\"type\":\"string\",\"description\":\"The definition this one is a copy of, made from the data (`copyOf` in a `data.json`, the editor's Copy as new): what it is drawn, heard and pictured as where the game gives it no look of its own\"},\"description\":{\"type\":\"string\",\"description\":\"What it is like, for a tooltip\"},\"icon\":{\"type\":\"string\",\"description\":\"Its picture, by the id the game's view knows icons by\"},\"resources\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"number\"},\"description\":\"What its players start with of each resource, by resource id, over what the game starts everyone with (`ResourceDef.start`). Not for a player given resources of their own (`PlayerInit.resources`, a map's)\"},\"startingBase\":{\"$ref\":\"#/definitions/StartingBase\",\"description\":\"What its players get at the start of a game on a map, in place of the game's (`Rules.startingBase`): its own hall and workers, as data (`StartingBaseData`: what a race made in the Data panel has, `start.hall` and the rest editable there) or as code (`StartingBaseCode`)\"},\"hooks\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/RaceHookDef\"},\"description\":\"Hook handlers of its own, run only for what is of its players (`RaceHookDef`): how it gathers, where it may build. With these a race plays differently with no test of the race in the game's code\"},\"inherits\":{\"type\":\"object\",\"properties\":{\"hooks\":{\"type\":\"boolean\"},\"onStart\":{\"type\":\"boolean\"}},\"additionalProperties\":false,\"description\":\"What a race made as a copy of another (`basedOn`: `copyOf` in a `data.json`, the editor's Copy as new) keeps of the original's code: its `hooks` and its `onStart`, each kept unless said `false` here. A copy keeps both when this is left out, so a race copied from the undead gathers at a cursed mine and builds on blight as they do; one that says `hooks: false` plays by the game's rules alone. Its `start` is data, the copy's own to change; a `start` in code is kept whole. Two toggles in the Data panel, on a copy\"}},\"required\":[\"id\",\"name\"],\"additionalProperties\":false,\"description\":\"A side a player can play, with a roster of its own: melee's humans and undead. Optional: a game that lists none (`Rules.races`) has no race anywhere, no choice of one in the lobby and nothing kept from anyone. A unit type or an upgrade of a race (`UnitTypeDef.race`, `UpgradeDef.race`) is only its players' to make; one of none, everyone's. Each player has one (`raceOf`): chosen in the lobby (a seat setting the server offers by itself, `seatSettingsOf`), given to the world as it is made (`PlayerInit.race`, `MapWorldOptions.races`), or changed by the rules (`setRace`)\"},\"StartingBase\":{\"anyOf\":[{\"$ref\":\"#/definitions/StartingBaseCode\"},{\"$ref\":\"#/definitions/StartingBaseData\"}],\"description\":\"What each player gets at the beginning of a game on a map, for players the map places nothing for: as data (`StartingBaseData`: a hall, workers and what else by unit type, editable in the Data panel) or as code (`StartingBaseCode`). What they start with of each resource is in its `ResourceDef`\"},\"StartingBaseCode\":{\"type\":\"object\",\"additionalProperties\":false,\"description\":\"A start in code: puts down a base at the start location, whatever it likes\"},\"StartingBaseData\":{\"type\":\"object\",\"properties\":{\"hall\":{\"type\":\"string\",\"description\":\"The unit type put down at the start location: a town hall\"},\"workers\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"count\":{\"type\":\"number\"}},\"required\":[\"type\",\"count\"],\"additionalProperties\":false,\"description\":\"The workers put down beside it, facing the closest gold mine\"},\"units\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"count\":{\"type\":\"number\"}},\"required\":[\"type\",\"count\"],\"additionalProperties\":false},\"description\":\"What else is put down with the workers, in the same row after them: a race's first fighter\"},\"onMine\":{\"type\":\"string\",\"description\":\"What the race builds on the closest gold mine to gather it, put down there already standing (the undead's cursed mine). With it, the closest mine is found at any distance; without, the workers face a mine within 20 cells\"},\"distance\":{\"type\":\"number\",\"description\":\"How far from the hall the workers stand: 5 cells when left out\"},\"spread\":{\"type\":\"number\",\"description\":\"The angle between two workers in the row, in radians: 0.35 when left out\"}},\"required\":[\"hall\",\"workers\"],\"additionalProperties\":false,\"description\":\"A start as data: a hall at the start location and workers on the side of the closest gold mine, as in a classic melee game (`startingBase` puts it down). Every id is a unit type of the game's (`checkRaces` says where one is not)\"},\"RaceHookDef\":{\"type\":\"object\",\"properties\":{},\"description\":\"A hook handler of a race (`RaceDef.hooks`): run only where the event is of one of the race's players. Whose an event is, is `of(event)` where it is given, or else its `player`, or else the owner of the first there is of its `entity`, `caster`, `attacker`, `worker`, `buyer`, `hero`, `producer`, `source`, `target`: the one doing it before the one it is done to (a damage is its source's)\"},\"RuleSettingsInit\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"score\":{\"$ref\":\"#/definitions/ScoreSettings\"},\"hud\":{\"$ref\":\"#/definitions/HudSharing\"},\"supply\":{\"$ref\":\"#/definitions/SettingsPart%3Cdef-interface-src_rules.ts-2%3E\"},\"production\":{\"$ref\":\"#/definitions/SettingsPart%3Cdef-interface-src_rules.ts-3%3E\"},\"economy\":{\"$ref\":\"#/definitions/SettingsPart%3Cdef-interface-src_rules.ts-4%3E\"},\"items\":{\"$ref\":\"#/definitions/SettingsPart%3Cdef-interface-src_rules.ts-5%3E\"},\"shop\":{\"$ref\":\"#/definitions/SettingsPart%3Cdef-interface-src_rules.ts-6%3E\"},\"combat\":{\"$ref\":\"#/definitions/SettingsPart%3Cdef-interface-src_rules.ts-7%3E\"},\"movement\":{\"$ref\":\"#/definitions/SettingsPart%3Cdef-interface-src_rules.ts-8%3E\"},\"fog\":{\"$ref\":\"#/definitions/SettingsPart%3Cdef-interface-src_rules.ts-1%3E\"},\"talk\":{\"$ref\":\"#/definitions/SettingsPart%3Cdef-interface-src_rules.ts-9%3E\"},\"camps\":{\"$ref\":\"#/definitions/SettingsPart%3Cdef-interface-src_rules.ts-10%3E\"},\"heroes\":{\"$ref\":\"#/definitions/SettingsPart%3Cdef-interface-src_hero.ts-1%3E\"}},\"description\":\"What a game says of its rules (`Rules.settings`), or a pack (`GamePack.settings`): any of them, a group in part (`{ supply: { max: 200 } }`), the engine's for the rest. The score and the HUD's sharing are given whole\"},\"ScoreSettings\":{\"type\":\"object\",\"properties\":{\"stats\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ScoreStatDef\"},\"description\":\"The stats, or what makes them of the game (the engine's set makes one of each resource)\"},\"every\":{\"type\":\"number\",\"description\":\"Seconds between two points of the timeline: 10 when left out, 0 for no timeline\"},\"maxPoints\":{\"type\":\"number\",\"description\":\"Points the timeline keeps at most: past it, every other point goes and they are twice as far apart, so a long game keeps its whole story in as much room. 360 when left out\"},\"live\":{\"$ref\":\"#/definitions/ScoreAudience\",\"description\":\"Who is told a player's numbers while the game goes on: their side (`allies`) when left out. An observer is told everyone's\"},\"end\":{\"$ref\":\"#/definitions/ScoreAudience\",\"description\":\"Who is told them once the game is decided: `everyone` when left out\"},\"refresh\":{\"type\":\"number\",\"description\":\"Seconds between two tellings of the numbers to the screens while the game goes on: 1 when left out\"},\"categories\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"}},\"required\":[\"id\",\"label\"],\"additionalProperties\":false},\"description\":\"The tabs of the score screen, in order, with their names: those of the stats, in the order met, when left out\"}},\"required\":[\"stats\"],\"additionalProperties\":false,\"description\":\"What a game counts of its players (`RuleSettings.score`): the stats, how often the timeline is sampled, and who is told what while the game goes on and after it ended. `presetScore()` makes one of the engine's stats\"},\"ScoreStatDef\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Its own, among the game's stats: `world.score.add(player, id, …)` names it\"},\"label\":{\"type\":\"string\",\"description\":\"What it is called on a screen: its id when left out\"},\"description\":{\"type\":\"string\",\"description\":\"What the screen says it is, in a tip\"},\"category\":{\"type\":\"string\",\"description\":\"The tab of the score screen it is in: `units`, `heroes`, `resources`, `combat`, or the game's own. `other` when left out\"},\"kind\":{\"$ref\":\"#/definitions/ScoreKind\",\"description\":\"How it adds up: `sum` when left out, `last` for one that only samples\"},\"from\":{\"anyOf\":[{\"$ref\":\"#/definitions/ScoreSource\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ScoreSource\"}}],\"description\":\"The events it is counted from\"},\"byType\":{\"type\":\"boolean\",\"description\":\"Kept by what it was counted of too (`ScoreCount.type`): units killed by unit type, abilities cast by ability\"},\"timeline\":{\"type\":\"boolean\",\"description\":\"On the timeline: sampled every `ScoreSettings.every` seconds, for a screen's graph\"},\"format\":{\"$ref\":\"#/definitions/ScoreFormat\",\"description\":\"How its number is written: `number` (when left out), `decimal`, `percent` (0 to 1), `time` (seconds)\"},\"hidden\":{\"type\":\"boolean\",\"description\":\"Counted, and not on the score screen: for the game's own use (an achievement, a mission's goal)\"}},\"required\":[\"id\"],\"additionalProperties\":false,\"description\":\"A number the score keeps for each player (`RuleSettings.score`, `defineStat`): what it is called, how it adds up, where it comes from, and how it is shown. One with no source is counted by the game's code alone (`world.score.add`)\"},\"ScoreKind\":{\"type\":\"string\",\"enum\":[\"sum\",\"count\",\"max\",\"min\",\"last\"],\"description\":\"How a stat takes what it is told: `sum` adds it up (the default), `count` adds one each time whatever the amount, `max` keeps the most it was told, `min` the least, `last` what it was told last (a gauge: the army now)\"},\"ScoreSource\":{\"type\":\"object\",\"properties\":{\"event\":{\"$ref\":\"#/definitions/EventKey%3Cany%3E\",\"description\":\"The event: one of the engine's (`entityDied`) or of the game's own (`defineEvent`)\"}},\"required\":[\"event\"],\"additionalProperties\":false,\"description\":\"Where a stat's numbers come from: an event of the world's (`'entityDied'`) or of the game's own (`defineEvent`), and what it counts of each (`scoreOn`)\"},\"EventKey<any>\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"The event's id, unique among the game's events\"},\"replicate\":{\"$ref\":\"#/definitions/EventAudience%3Cany%3E\",\"description\":\"Sent to the screens of these players, in their snapshots. Only to whoever listens in the world when left out\"},\"payload\":{\"description\":\"Only there for the type of the payload\"}},\"required\":[\"id\"],\"additionalProperties\":false,\"description\":\"A typed key for an event of a game's own, made with `defineEvent`\"},\"EventAudience<any>\":{\"type\":\"string\",\"const\":\"everyone\",\"description\":\"Who of the players gets an event of a game's own on their screen (see `defineEvent`): everyone, or those a function picks, from what the event says and what the seat may know (`SessionView`: its player, `knows`, `sees`)\"},\"ScoreFormat\":{\"type\":\"string\",\"enum\":[\"number\",\"decimal\",\"percent\",\"time\"],\"description\":\"How a stat's number reads on a screen: a whole `number` (the default), a `decimal` one, a `percent` (0..1), or `time` (seconds, as 3:05). A screen's own (`GameView.hud.score.format`) goes over it\"},\"ScoreAudience\":{\"type\":\"string\",\"enum\":[\"own\",\"allies\",\"everyone\",\"none\"],\"description\":\"Who of the players is told a player's numbers: that player alone (`own`), their side (`allies`), `everyone`, or `none`; or a function of the world, who is told (`undefined` for an observer) and whose numbers they are\"},\"HudSharing\":{\"type\":\"object\",\"properties\":{\"shareBuffTimes\":{\"$ref\":\"#/definitions/HudShareRule%3C(boolean%7C%22allies%22)%3E\",\"description\":\"The seconds left of its buffs (`EntityState.buffTimes`): to everyone who sees it (`true`), to its owner and their allies (`'allies'`), or to no one (`false`, when left out)\"},\"shareAbilities\":{\"$ref\":\"#/definitions/HudShareRule%3C(%22none%22%7C%22icons%22%7C%22cooldowns%22)%3E\",\"description\":\"Its abilities (`EntityState.abilities`) to everyone who sees it, its side's or not: those it has learned and their levels (`'icons'`), with how much of their cooldowns is left too (`'cooldowns'`), or none (`'none'`, when left out: its side has them in `own` all the same)\"},\"shareXp\":{\"$ref\":\"#/definitions/HudShareRule%3Cboolean%3E\",\"description\":\"A hero's experience (`HeroSent.xp`) to everyone who sees it. Its side's alone when left out\"}},\"additionalProperties\":false,\"description\":\"What of a unit the players who see it are told beyond what they always are (`RuleSettings.hud`), each for the plates over it to show. What is not shared never reaches a player, so no screen can show it. A game's own data goes in a component with `replicate` (the client's `hudData` reads it)\"},\"HudShareRule<(boolean|\\\"allies\\\")>\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"string\",\"const\":\"allies\"}],\"description\":\"A rule of `HudSharing`: one value for every unit, or a function deciding it for each (only heroes', only a boss's)\"},\"HudShareRule<(\\\"none\\\"|\\\"icons\\\"|\\\"cooldowns\\\")>\":{\"type\":\"string\",\"enum\":[\"none\",\"icons\",\"cooldowns\"],\"description\":\"A rule of `HudSharing`: one value for every unit, or a function deciding it for each (only heroes', only a boss's)\"},\"HudShareRule<boolean>\":{\"type\":\"boolean\",\"description\":\"A rule of `HudSharing`: one value for every unit, or a function deciding it for each (only heroes', only a boss's)\"},\"SettingsPart<def-interface-src_rules.ts-2>\":{\"type\":\"object\",\"properties\":{\"max\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber1860156146%3E\"},\"pools\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/SettingsPart%3Cstructure-src_rules.ts-7849-7879-src_rules.ts-7834-7880-src_rules.ts-7558-7880-src_rules.ts-7380-8165-src_rules.ts-0-29690%3E\"}}},\"additionalProperties\":false,\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number1860156146>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<structure-src_rules.ts-7849-7879-src_rules.ts-7834-7880-src_rules.ts-7558-7880-src_rules.ts-7380-8165-src_rules.ts-0-29690>\":{\"type\":\"object\",\"properties\":{\"name\":{\"$ref\":\"#/definitions/SettingsPart%3Cstring%3E\"},\"max\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber%3E\"}},\"additionalProperties\":false,\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<string>\":{\"type\":\"string\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<def-interface-src_rules.ts-3>\":{\"type\":\"object\",\"properties\":{\"queue\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber2067800667%3E\"},\"cancelRefund\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber1635358800%3E\"},\"constructionHealth\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber1408574317%3E\"}},\"additionalProperties\":false,\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number2067800667>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number1635358800>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number1408574317>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<def-interface-src_rules.ts-4>\":{\"type\":\"object\",\"properties\":{\"sellPrice\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber236571108%3E\"},\"repairCost\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber385641258%3E\"},\"tradeTax\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber500452615%3E\"}},\"additionalProperties\":false,\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number236571108>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number385641258>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number500452615>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<def-interface-src_rules.ts-5>\":{\"type\":\"object\",\"properties\":{\"groups\":{\"$ref\":\"#/definitions/SettingsPart%3Cindexed-type-140537781-74242-74263-140537781-74138-74264-140537781-0-218439%3Cstring%2Cnumber%3E82409473%3E\"},\"unique\":{\"$ref\":\"#/definitions/SettingsPart%3Cboolean21630546%3E\"},\"mayCarry\":{\"not\":{}}},\"additionalProperties\":false,\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<indexed-type-140537781-74242-74263-140537781-74138-74264-140537781-0-218439<string,number>82409473>\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber%3E\"},\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<boolean21630546>\":{\"type\":\"boolean\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<def-interface-src_rules.ts-6>\":{\"type\":\"object\",\"properties\":{\"undo\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber1230600193%3E\"}},\"additionalProperties\":false,\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number1230600193>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<def-interface-src_rules.ts-7>\":{\"type\":\"object\",\"properties\":{\"attackSpeedLimits\":{\"$ref\":\"#/definitions/SettingsPart%3C%5Bnumber%2Cnumber%5D131060964%3E\"},\"corpseTime\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber202117478%3E\"}},\"additionalProperties\":false,\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<[number,number]131060964>\":{\"type\":\"array\",\"items\":{\"type\":\"number\"},\"minItems\":2,\"maxItems\":2,\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number202117478>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<def-interface-src_rules.ts-8>\":{\"type\":\"object\",\"properties\":{\"together\":{\"type\":\"boolean\"},\"turnRate\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber848754666%3E\"}},\"additionalProperties\":false,\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number848754666>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<def-interface-src_rules.ts-1>\":{\"type\":\"object\",\"properties\":{\"nightSight\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber1727028879%3E\"},\"explored\":{\"type\":\"string\",\"enum\":[\"remembered\",\"nothing\"]},\"startExplored\":{\"type\":\"boolean\"},\"mask\":{\"type\":\"string\",\"enum\":[\"black\",\"dim\"]}},\"additionalProperties\":false,\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number1727028879>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<def-interface-src_rules.ts-9>\":{\"type\":\"object\",\"properties\":{\"pings\":{\"$ref\":\"#/definitions/SettingsPart%3Cstructure-src_rules.ts-20922-21120-src_rules.ts-20235-21120-src_rules.ts-20134-21462-src_rules.ts-0-29690624849888%3E\"},\"lines\":{\"$ref\":\"#/definitions/SettingsPart%3Cstructure-src_rules.ts-21228-21277-src_rules.ts-21120-21277-src_rules.ts-20134-21462-src_rules.ts-0-29690381541611%3E\"},\"pauses\":{\"$ref\":\"#/definitions/SettingsPart%3Cstructure-src_rules.ts-21426-21460-src_rules.ts-21277-21460-src_rules.ts-20134-21462-src_rules.ts-0-296901718446262%3E\"}},\"additionalProperties\":false,\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<structure-src_rules.ts-20922-21120-src_rules.ts-20235-21120-src_rules.ts-20134-21462-src_rules.ts-0-29690624849888>\":{\"type\":\"object\",\"properties\":{\"most\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber%3E\"},\"within\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber%3E\"},\"kinds\":{\"$ref\":\"#/definitions/SettingsPart%3Cstring%5B%5D%3E\"},\"meanings\":{\"$ref\":\"#/definitions/SettingsPart%3Cindexed-type-140537781-73964-74003-140537781-73899-74004-140537781-0-218439%3Calias-140537781-74138-74264-140537781-0-218439%3Cstring%2C(%22help%22%7C%22attack%22%7C%22defend%22%7C%22rally%22%7C%22ignore%22)%3E%3E%3E\"}},\"additionalProperties\":false,\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<string[]>\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<indexed-type-140537781-73964-74003-140537781-73899-74004-140537781-0-218439<alias-140537781-74138-74264-140537781-0-218439<string,(\\\"help\\\"|\\\"attack\\\"|\\\"defend\\\"|\\\"rally\\\"|\\\"ignore\\\")>>>\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/SettingsPart%3C(%22help%22%7C%22attack%22%7C%22defend%22%7C%22rally%22%7C%22ignore%22)%3E\"},\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<(\\\"help\\\"|\\\"attack\\\"|\\\"defend\\\"|\\\"rally\\\"|\\\"ignore\\\")>\":{\"type\":\"string\",\"enum\":[\"help\",\"attack\",\"defend\",\"rally\",\"ignore\"],\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<structure-src_rules.ts-21228-21277-src_rules.ts-21120-21277-src_rules.ts-20134-21462-src_rules.ts-0-29690381541611>\":{\"type\":\"object\",\"properties\":{\"most\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber%3E\"},\"within\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber%3E\"},\"length\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber%3E\"}},\"additionalProperties\":false,\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<structure-src_rules.ts-21426-21460-src_rules.ts-21277-21460-src_rules.ts-20134-21462-src_rules.ts-0-296901718446262>\":{\"type\":\"object\",\"properties\":{\"each\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber%3E\"},\"seconds\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber%3E\"}},\"additionalProperties\":false,\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<def-interface-src_rules.ts-10>\":{\"type\":\"object\",\"properties\":{\"leash\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber862304617%3E\"},\"chaseTime\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber1837841008%3E\"},\"resetAfter\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber72694474%3E\"},\"helpAtOnce\":{\"$ref\":\"#/definitions/SettingsPart%3Cboolean120469164%3E\"},\"sleep\":{\"$ref\":\"#/definitions/SettingsPart%3Cboolean1244251315%3E\"},\"respawn\":{\"type\":\"number\"}},\"additionalProperties\":false,\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number862304617>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number1837841008>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number72694474>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<boolean120469164>\":{\"type\":\"boolean\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<boolean1244251315>\":{\"type\":\"boolean\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<def-interface-src_hero.ts-1>\":{\"type\":\"object\",\"properties\":{\"maxHeroes\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber1867899884%3E\"},\"maxHeroLevel\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber1322296163%3E\"},\"xpRange\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber1756145837%3E\"},\"fallenFor\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber999896261%3E\"},\"assistTime\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber366811711%3E\"},\"buybackCooldown\":{\"$ref\":\"#/definitions/SettingsPart%3Cnumber1301244093%3E\"},\"callings\":{\"$ref\":\"#/definitions/SettingsPart%3Cdef-interface-src_callings.ts-1%5B%5D740745651%3E\"}},\"additionalProperties\":false,\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number1867899884>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number1322296163>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number1756145837>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number999896261>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number366811711>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<number1301244093>\":{\"type\":\"number\",\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"SettingsPart<def-interface-src_callings.ts-1[]740745651>\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/CallingDef\"},\"description\":\"What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole\"},\"CallingDef\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Its id, what a hero's `callings` and an item's `suits` name it by: `vanguard`\"},\"name\":{\"type\":\"string\",\"description\":\"What the player sees it called: Vanguard\"},\"description\":{\"type\":\"string\",\"description\":\"What a hero of it does, in a few words, for a tooltip\"},\"icon\":{\"type\":\"string\",\"description\":\"Its picture: an address of an image, or the name of a glyph the HUD draws (`registerGlyph`). The HUD draws the engine's own callings by their ids; the first letter of the name for one with neither\"},\"color\":{\"type\":\"string\",\"description\":\"The colour it is shown in, a CSS colour: the HUD's accent when left out\"}},\"required\":[\"id\",\"name\"],\"additionalProperties\":false,\"description\":\"One calling a hero may have (`HeroDef.callings`): what it is called and what it plays as, with its picture and colour for the HUD\"},\"GameData\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"removed\":{\"type\":\"object\",\"properties\":{\"units\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"abilities\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"buffs\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"items\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"upgrades\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"races\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"additionalProperties\":false},\"ai\":{\"type\":\"object\",\"properties\":{\"races\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/AiProfile\"}}},\"additionalProperties\":false,\"description\":\"How the game's computers play each race (campaign plan AR4), by race id: each a whole profile, in the place of the code's (`Rules.ai.races`). What the editor's Data panel writes of a race's AI\"},\"rules\":{\"$ref\":\"#/definitions/DataRules\",\"description\":\"The rules as data (campaign plan RC7), laid over the game's (`DataRules`): what the Data panel's Rules writes\"},\"defaults\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/DataSetChoice\"},\"description\":\"What the game takes of the default sets it took in code (`useDefaults`), by set id, over what its code chose: all of a set, none, only some ids or all but some (`DataSetChoice`): `{ \\\"items\\\": { \\\"except\\\": [\\\"sightWard\\\"] } }`. Laid first, so the rest of the file changes what it took\"},\"tags\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/DataTag\"},\"description\":\"The tags named and given a look (`TagDef`), by tag (items-and-spells plan, phase 9): each over the code's `TagDef` of that tag, or one of its own. What the Data panel's Tags writes: `{ \\\"lifesteal\\\": { \\\"color\\\": \\\"#c04040\\\", \\\"filter\\\": true } }`\"},\"callings\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/DataCalling\"},\"description\":\"The callings heroes may have (`CallingDef`), by id: each over the game's calling of that id (its name, line, icon, colour), or one of its own. What the Data panel's Callings writes: `{ \\\"vanguard\\\": { \\\"name\\\": \\\"Bulwark\\\" } }`. A calling of the default set is left out with `defaults.callings`\"},\"cellLayers\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/DataCellLayer\"},\"description\":\"The values of the game's layers of cells (`CellLayerDef.values`), by layer: each over the code's value of the same number, or one of its own (`DataCellLayer`). What the editor writes of a style of grass made or changed there, its name and what it is to the rules (`FoliageStyleDef`): in the game's `data.json` for every map, in a map's definitions (`GameMap.definitions`) for that map alone\"},\"units\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/DataValues\"}},\"abilities\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/DataValues\"}},\"buffs\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/DataValues\"}},\"items\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/DataValues\"}},\"upgrades\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/DataValues\"}},\"races\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/DataValues\"}}},\"description\":\"The values of a game's definitions, by kind and id: what its `data.json` holds. `removed` takes definitions of the game's out, by kind (the Data panel's Delete): what still names one is the rules' check's to say (`checkRules`)\"},\"AiProfile\":{\"type\":\"object\",\"properties\":{\"economy\":{\"$ref\":\"#/definitions/EconomyOptions\",\"description\":\"The workers and the bases (`Economy`)\"},\"defence\":{\"$ref\":\"#/definitions/DefenceOptions\",\"description\":\"What it defends and how (`Defence`)\"},\"scouting\":{\"$ref\":\"#/definitions/ScoutingOptions\",\"description\":\"How often it looks and with whom (`Scouting`)\"},\"micro\":{\"$ref\":\"#/definitions/MicroOptions\",\"description\":\"How its units fight (`Micro`)\"},\"squads\":{\"$ref\":\"#/definitions/SquadsOptions\",\"description\":\"How its squads go, and the tasks they may be given (`Squads`)\"},\"team\":{\"$ref\":\"#/definitions/TeamOptions\",\"description\":\"How it plays with its team (`Team`)\"},\"waves\":{\"$ref\":\"#/definitions/WavesOptions\",\"description\":\"The waves it was given (`Waves`)\"},\"plans\":{\"$ref\":\"#/definitions/PlansOptions\",\"description\":\"What it builds, trains and researches, and in what order (`Plans`)\"},\"army\":{\"$ref\":\"#/definitions/MeleeArmyOptions\",\"description\":\"The melee army: when it attacks, how many go, how a wave goes (`melee.army`)\"},\"heroes\":{\"$ref\":\"#/definitions/MeleeHeroesOptions\",\"description\":\"The melee player's heroes: how many, and from when (`melee.heroes`)\"},\"lanes\":{\"$ref\":\"#/definitions/LanesPlayOptions\",\"description\":\"A lanes brain's play (`lanes`)\"},\"weights\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"number\"},\"description\":\"How much each goal weighs, by its id (1 when left out): the picker's (`Goals`)\"},\"flags\":{\"$ref\":\"#/definitions/AiFlags\",\"description\":\"The classic flags (see the file's comment)\"},\"brain\":{\"type\":\"string\",\"description\":\"The brain it plays with, by id (one the game lists in `Rules.brains`): what a race's profile says (`GameAi.races`, campaign plan AR3), for a seat that names none and a map that says none. The game's first brain where nothing says\"},\"difficulty\":{\"type\":\"string\",\"description\":\"The difficulty by name: `easy`, `normal`, `hard`, `insane`, or a game's own (`Rules.ai.difficulties`). `normal` when left out\"},\"personality\":{\"type\":\"string\",\"description\":\"The personality by name: `balanced`, `rusher`, `turtle`, `expander`, `harasser`, or a game's own. `balanced` when left out\"},\"every\":{\"type\":\"number\",\"description\":\"Seconds between thinks: its reactions\"},\"commandsPerThink\":{\"type\":\"number\",\"description\":\"Commands a think may send at the most, like a person's hands: no limit when left out\"},\"mistakes\":{\"type\":\"number\",\"description\":\"How often it slips, 0 to 1: a think's fights left alone, a wave sent early. Drawn with the brain's own numbers\"},\"vision\":{\"type\":\"string\",\"enum\":[\"fair\",\"all\"],\"description\":\"`fair`: it sees what its seat does. `all`: it sees through the fog (an observer's session), for insane only\"},\"budget\":{\"$ref\":\"#/definitions/ThinkBudgetOptions\",\"description\":\"How much of a think one tick may do (`ThinkBudgetOptions`): modules a tick, units looked at a tick, the milliseconds a module is warned over (4). Nothing sliced when left out: a game sets it where its numbers ask, at many computers\"},\"handicap\":{\"$ref\":\"#/definitions/AiHandicap\",\"description\":\"What it is given beyond the rules, each a factor (1 is none), through the game's hooks while it is seated: `income`, what its workers bring in (1.5: half again; `beforeDeposit`); `health`, the most health of everything it has (`stats`); `damage`, the damage it deals (`beforeDamage`, before armour); `buildTime`, how long what it trains, builds and researches takes (0.8: a fifth sooner; `beforeProduce`). The classic handicap is `health`\"}},\"additionalProperties\":false,\"description\":\"How a computer player plays, as plain data: the settings of its areas (`AiSettings`) and how well it plays, every field optional, layered (see the file's comment). What a difficulty, a personality and a game's defaults give\"},\"EconomyOptions\":{\"type\":\"object\",\"properties\":{\"workers\":{\"type\":\"number\",\"description\":\"Workers on the game's money at each base, where `workersPer` says nothing of it: 8 when left out\"},\"lumberjacks\":{\"type\":\"number\",\"description\":\"Workers on the other resource, at home only, where `workersPer` says nothing of it: 3 when left out\"},\"workersPer\":{\"$ref\":\"#/definitions/WorkersPer\",\"description\":\"Workers on each resource at each base (`WorkersPer`): `{ gold: 5, lumber: 3 }` at every base, or a function of the base for one that differs (home, an expansion). What it leaves out is `workers` and `lumberjacks`\"},\"saturate\":{\"type\":\"boolean\",\"description\":\"Whether a base wants no more workers on a deposit than it serves (see the file's comment): yes when left out\"},\"trainWorkers\":{\"type\":\"boolean\",\"description\":\"Whether its halls train workers up to what the bases want: yes when left out\"},\"builders\":{\"type\":\"number\",\"description\":\"Workers trained past what the bases want, to build with: a worker sent to build is off the mine meanwhile, and a mine with only as many as it serves would gather less. 1 when left out\"},\"expansions\":{\"type\":\"number\",\"description\":\"Halls to have past the first, each by a mine nobody has a hall at: the seat's `expansions`, else none\"},\"expandWhen\":{\"$ref\":\"#/definitions/AiCondition\",\"description\":\"When it may expand: a condition (`AiCondition`, as data or a function). Four minutes in and with a building that trains soldiers, when left out\"},\"workersFlee\":{\"type\":\"boolean\",\"description\":\"Whether workers a raid is on walk to a base no enemy is at, and back once theirs is clear: yes when left out\"}},\"additionalProperties\":false,\"description\":\"How a brain runs its economy (`BrainDef.economy`, the seat's `AiOptions.economy` over it, the `economy()` module's own under both). Every field has a data form a save keeps; the function forms are the brain's to give again\"},\"WorkersPer\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"number\"},\"description\":\"How many workers a base wants on each resource (`EconomyOptions.workersPer`): as numbers by resource id, or a function of the base (`index` 0 is home)\"},\"AiCondition\":{\"$ref\":\"#/definitions/AiConditionData\",\"description\":\"A condition: a question with a yes or no, as a function of the brain, or as plain data (`AiConditionData`)\"},\"AiConditionData\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"all\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/AiCondition\"}}},\"required\":[\"all\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"any\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/AiCondition\"}}},\"required\":[\"any\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"not\":{\"$ref\":\"#/definitions/AiCondition\"}},\"required\":[\"not\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"resource\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"min\":{\"type\":\"number\",\"description\":\"The lowest it may be; no lower bound when left out\"},\"max\":{\"type\":\"number\",\"description\":\"The highest it may be; no upper bound when left out\"},\"id\":{\"type\":\"string\"}},\"required\":[\"id\"]}},\"required\":[\"resource\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"units\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"min\":{\"type\":\"number\",\"description\":\"The lowest it may be; no lower bound when left out\"},\"max\":{\"type\":\"number\",\"description\":\"The highest it may be; no upper bound when left out\"},\"type\":{\"type\":\"string\"},\"role\":{\"$ref\":\"#/definitions/AiRole\"},\"tag\":{\"type\":\"string\"},\"of\":{\"$ref\":\"#/definitions/AiWhose\"},\"near\":{\"anyOf\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Vec2\"}]},\"within\":{\"type\":\"number\"},\"finished\":{\"type\":\"boolean\"},\"known\":{\"type\":\"boolean\"}}}},\"required\":[\"units\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"supply\":{\"type\":\"object\",\"properties\":{\"free\":{\"$ref\":\"#/definitions/AiRange\"},\"used\":{\"$ref\":\"#/definitions/AiRange\"},\"cap\":{\"$ref\":\"#/definitions/AiRange\"}},\"additionalProperties\":false}},\"required\":[\"supply\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"time\":{\"type\":\"object\",\"properties\":{\"after\":{\"type\":\"number\"},\"before\":{\"type\":\"number\"}},\"additionalProperties\":false}},\"required\":[\"time\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"underAttack\":{\"anyOf\":[{\"type\":\"boolean\",\"const\":true},{\"type\":\"object\",\"properties\":{\"seconds\":{\"type\":\"number\"},\"near\":{\"anyOf\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Vec2\"}]},\"reach\":{\"type\":\"number\"}},\"additionalProperties\":false}]}},\"required\":[\"underAttack\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"seen\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"role\":{\"$ref\":\"#/definitions/AiRole\"},\"within\":{\"type\":\"number\"}},\"additionalProperties\":false}},\"required\":[\"seen\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"difficulty\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}}]}},\"required\":[\"difficulty\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"told\":{\"type\":\"string\"}},\"required\":[\"told\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"chance\":{\"type\":\"number\"}},\"required\":[\"chance\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"hero\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"alive\":{\"type\":\"boolean\"},\"level\":{\"$ref\":\"#/definitions/AiRange\"}},\"additionalProperties\":false}},\"required\":[\"hero\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"wave\":{\"$ref\":\"#/definitions/AiRange\"}},\"required\":[\"wave\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"objective\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"status\":{\"anyOf\":[{\"$ref\":\"#/definitions/ObjectiveStatus\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ObjectiveStatus\"}}]}},\"required\":[\"id\",\"status\"],\"additionalProperties\":false}},\"required\":[\"objective\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"report\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"min\":{\"type\":\"number\",\"description\":\"The lowest it may be; no lower bound when left out\"},\"max\":{\"type\":\"number\",\"description\":\"The highest it may be; no upper bound when left out\"},\"path\":{\"type\":\"string\"},\"equals\":{}},\"required\":[\"path\"]}},\"required\":[\"report\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"component\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"min\":{\"type\":\"number\",\"description\":\"The lowest it may be; no lower bound when left out\"},\"max\":{\"type\":\"number\",\"description\":\"The highest it may be; no upper bound when left out\"},\"id\":{\"type\":\"string\"},\"entity\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"equals\":{}},\"required\":[\"id\"]}},\"required\":[\"component\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"region\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"min\":{\"type\":\"number\",\"description\":\"The lowest it may be; no lower bound when left out\"},\"max\":{\"type\":\"number\",\"description\":\"The highest it may be; no upper bound when left out\"},\"name\":{\"type\":\"string\"},\"of\":{\"$ref\":\"#/definitions/AiWhose\"},\"type\":{\"type\":\"string\"},\"role\":{\"$ref\":\"#/definitions/AiRole\"}},\"required\":[\"name\"]}},\"required\":[\"region\"],\"additionalProperties\":false},{\"type\":\"object\",\"properties\":{\"is\":{\"type\":\"string\"},\"args\":{\"type\":\"object\",\"additionalProperties\":{}}},\"required\":[\"is\"],\"additionalProperties\":false}],\"description\":\"A condition as plain data: what a map's file, a mission's JSON or the editor holds. Each form is one question; the table in `docs/ai/scripting.md` says what each asks\"},\"AiWhose\":{\"type\":\"string\",\"enum\":[\"mine\",\"enemy\",\"ally\"],\"description\":\"Whose units a condition counts: the player’s own (the default), its rivals’ in sight, its allies’\"},\"Vec2\":{\"type\":\"object\",\"properties\":{\"x\":{\"type\":\"number\",\"description\":\"The point's place on the ground plane's x axis\"},\"z\":{\"type\":\"number\",\"description\":\"The point's place on the ground plane's z axis\"}},\"required\":[\"x\",\"z\"],\"additionalProperties\":false,\"description\":\"A point on the ground plane. The simulation is 2D; height always comes from the terrain.\"},\"AiRange\":{\"type\":\"object\",\"properties\":{\"min\":{\"type\":\"number\",\"description\":\"The lowest it may be; no lower bound when left out\"},\"max\":{\"type\":\"number\",\"description\":\"The highest it may be; no upper bound when left out\"}},\"additionalProperties\":false,\"description\":\"At least `min` and at most `max`, each left out for no bound: a count, an amount, a level\"},\"ObjectiveStatus\":{\"type\":\"string\",\"enum\":[\"open\",\"done\",\"failed\"],\"description\":\"Where an objective stands: `open` while it can still be met, `done` once met, `failed` once it can no longer be\"},\"DefenceOptions\":{\"type\":\"object\",\"properties\":{\"radius\":{\"type\":\"number\",\"description\":\"How near one of its buildings a rival's unit is an intruder: the seat's `defendRadius`, else 16\"},\"odds\":{\"type\":\"number\",\"description\":\"The odds of the fight (`Strength.odds`) the defenders sent against a raid are to have: two in three when left out (about four tenths stronger than the raid)\"},\"recall\":{\"type\":\"boolean\",\"description\":\"Whether a raid more than what is at home can meet brings the army home (the goal is urgent: it takes squads out, whole, once it scores past what they are on): yes when left out\"},\"towers\":{\"type\":\"number\",\"description\":\"Towers a base wants once raided `towerAfter` times: 1 when left out. 0 for none\"},\"towerAfter\":{\"type\":\"number\",\"description\":\"Raids at one base before it wants towers: 2 when left out\"},\"tower\":{\"type\":\"string\",\"description\":\"The tower to build, by type id: the cheapest of the `tower` role its workers build when left out\"},\"quiet\":{\"type\":\"number\",\"description\":\"Seconds a base stands clear before a raid on it is over: 15 when left out\"}},\"additionalProperties\":false,\"description\":\"How a brain defends its bases (`BrainDef.defence`, the seat's `AiOptions.defence` over it, the `defence()` module's own under both). Data, kept in a save\"},\"ScoutingOptions\":{\"type\":\"object\",\"properties\":{\"lookEvery\":{\"type\":\"number\",\"description\":\"Seconds a place stays out of sight before it is worth a look again: 90 when left out\"},\"scout\":{\"type\":\"boolean\",\"const\":false,\"description\":\"Where to look: `false` nowhere (the goal is left out), a function for places of the game's own each think (in place of the kit's plan). The kit's plan when left out\"},\"expansions\":{\"type\":\"boolean\",\"description\":\"Whether the mines they would expand to are looked at: yes when left out\"},\"army\":{\"type\":\"boolean\",\"description\":\"Whether where their army was last seen is looked at again: yes when left out\"},\"flyers\":{\"type\":\"boolean\",\"description\":\"Whether a flying unit with nothing to do goes before the fastest on foot: yes when left out\"},\"from\":{\"type\":\"number\",\"description\":\"Seconds into the game before the first look: 15 when left out\"}},\"additionalProperties\":false,\"description\":\"How a brain scouts (`BrainDef.scouting`, the seat's `AiOptions.scouting` over it, the `scouting()` module's own under both). Data, but for the function form of `scout`\"},\"MicroOptions\":{\"type\":\"object\",\"properties\":{\"targets\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/TargetRule\"},\"description\":\"Who is worth hitting first, as ranked rules (`TargetRule`), or a function that picks (`TargetPicker`). The kit's when left out: casters 2, heroes 1.5 (with `targetHeroes`), siege 1, healers 2, over the type's declared `UnitTypeDef.ai.priority`; among those alike, the weakest, the nearest\"},\"targetHeroes\":{\"type\":\"boolean\",\"description\":\"Whether heroes are worth hitting first (the classic Target Heroes): yes when left out\"},\"focusEvery\":{\"type\":\"number\",\"description\":\"Seconds a squad keeps hitting the rival it was told to before another is chosen: 4\"},\"kite\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"string\",\"const\":\"ranged\"}],\"description\":\"Whether ranged units step back from the melee closing on them, when they are the faster: `'ranged'` (or `true`) when left out, `false` never\"},\"unitsFlee\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"boolean\",\"const\":false}],\"description\":\"The share of its health under which a unit leaves the fight for safety (the classic Units Flee): 0.25. `false` never\"},\"heroesFlee\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"boolean\",\"const\":false}],\"description\":\"The same for heroes (Heroes Flee): 0.35. `false` never\"},\"returnAt\":{\"type\":\"number\",\"description\":\"The share of its health at which a unit that fled is back: 0.8\"},\"removeInjuries\":{\"type\":\"boolean\",\"description\":\"Whether the hurt go home to heal between fights, not only out of one (Remove Injuries): no when left out\"},\"ignoreInjured\":{\"type\":\"boolean\",\"description\":\"Whether a unit that fled stays out until healed, however long (Ignore Injured): no when left out, so one nothing heals (or that heals too slowly to wait a minute for) comes back once safe\"},\"spells\":{\"anyOf\":[{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/SpellAim\"}},{\"type\":\"boolean\",\"const\":false}],\"description\":\"Where to use abilities, by ability id (`SpellAim`): before the ability's own `ai`, and before what the kit works out from its effects. `false` casts nothing: what is on autocast looks after itself\"},\"potions\":{\"type\":\"boolean\",\"description\":\"Whether a potion is drunk when it is needed: yes when left out\"},\"takeItems\":{\"type\":\"boolean\",\"description\":\"Whether what lies about is picked up (Take Items): yes when left out\"},\"buyItems\":{\"type\":\"boolean\",\"description\":\"Whether heroes buy from a shop in reach (Buy Items): yes when left out, where there is a shop and a list\"},\"shopping\":{\"anyOf\":[{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ShoppingItem\"}},{\"type\":\"boolean\",\"const\":false}],\"description\":\"What a hero shops for, in order (`ShoppingItem`), or a function that names the item a hero should buy next (none for nothing). The cheapest item whose ability heals, one of it, when left out; `false` nothing\"},\"hireUnits\":{\"type\":\"boolean\",\"description\":\"Whether it hires units at a place that hires in reach (a tavern, a mercenary camp: `UnitTypeDef.hires`): yes when left out, where there is one\"},\"hiring\":{\"anyOf\":[{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/HiringItem\"}},{\"type\":\"boolean\",\"const\":false}],\"description\":\"What it hires, in order (`HiringItem`), or a function that names the unit to hire next of those a place offers (none for nothing). When left out: no hero, the strongest soldier for its price, with money to spare (150 past it) and supply free, four at the most. `false` nothing\"},\"smartArtillery\":{\"type\":\"boolean\",\"description\":\"Whether siege units shoot buildings when they may and stay behind the squad (Smart Artillery): yes when left out\"},\"heroes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/HeroPlan\"},\"description\":\"The heroes to make, in order (`HeroPlan`: which, its skills, its items, a chance), or a function that picks the next of those that could be made. The first that can be made, and the ultimate first, when left out\"}},\"additionalProperties\":false,\"description\":\"How a brain fights (`BrainDef.micro`, the seat's `AiOptions.micro` over it, the `micro()` module's own under both): whom it hits first, whether its ranged units kite, when its units flee, how it casts, what it buys, how its siege is used, which heroes it makes. Every field has a data form a save keeps; the function forms are the brain's to give again\"},\"TargetRule\":{\"type\":\"object\",\"properties\":{\"match\":{\"type\":\"string\",\"description\":\"What it picks out: a role (`caster`, `hero`, `siege`, `worker`, `healer`), `building`, a tag (`ranged`, the game's own), or a unit type by id\"},\"weight\":{\"type\":\"number\",\"description\":\"What it adds to the worth of what it picks out: 1 when left out. Rules add up; a foe no rule names is worth 1\"},\"when\":{\"$ref\":\"#/definitions/AiCondition\",\"description\":\"When it counts: a condition (`AiCondition`, as data or a function). Always when left out\"}},\"required\":[\"match\"],\"additionalProperties\":false,\"description\":\"One rule of who is worth hitting first (`MicroOptions.targets`): what it picks out, how much it adds, when it counts. Plain data\"},\"SpellAim\":{\"not\":{},\"description\":\"Where to use an ability, in code (`MicroOptions.spells`, by ability id): where (`point`) and on whom (`target`), `null` for not now, `undefined` to leave it to what the kit works out from the effects. `foes` are the enemies within the ability's reach of the caster, `friends` its own and its allies' fighters near it\"},\"ShoppingItem\":{\"type\":\"object\",\"properties\":{\"item\":{\"type\":\"string\",\"description\":\"The item, by id\"},\"count\":{\"type\":\"number\",\"description\":\"How many of it to carry: 1 when left out\"},\"when\":{\"$ref\":\"#/definitions/AiCondition\",\"description\":\"When it is wanted: a condition. Always when left out\"}},\"required\":[\"item\"],\"additionalProperties\":false,\"description\":\"A line of a hero's shopping list (`MicroOptions.shopping`, `HeroPlan.items`): an item to carry, how many, when\"},\"HiringItem\":{\"type\":\"object\",\"properties\":{\"unit\":{\"type\":\"string\",\"description\":\"The unit type, by id: one a place that hires lists (`UnitTypeDef.hires`)\"},\"count\":{\"type\":\"number\",\"description\":\"How many of it to have: 1 when left out\"},\"when\":{\"$ref\":\"#/definitions/AiCondition\",\"description\":\"When it is wanted: a condition. Always when left out\"}},\"required\":[\"unit\"],\"additionalProperties\":false,\"description\":\"A line of what a brain hires (`MicroOptions.hiring`): a unit a place hires out, how many of it to have, when\"},\"HeroPlan\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\",\"description\":\"The hero's unit type\"},\"skills\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"The order its skills are learned in, each level a line (`['stomp', 'holyLight', 'stomp', …]`); past the end, or left out, the ultimate as soon as it can be had and then whatever is furthest behind. Or a function: the skill to learn next of those it may, by id\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ShoppingItem\"},\"description\":\"What it shops for, in place of the brain's `shopping`\"},\"chance\":{\"type\":\"number\",\"description\":\"The chance it is made at all, 0 to 1 (1 when left out): rolled once, with the brain's numbers, and remembered\"}},\"required\":[\"type\"],\"additionalProperties\":false,\"description\":\"A hero the brain means to have (`MicroOptions.heroes`): which, what it learns in what order, what it buys\"},\"SquadsOptions\":{\"type\":\"object\",\"properties\":{\"spread\":{\"type\":\"number\",\"description\":\"How far from its middle a unit may be before it counts as strayed: what a regroup brings in. Grows with the squad when left out (8, and three times the square root of its size above that: 12 for sixteen units)\"},\"regroupWhen\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"boolean\",\"const\":false}],\"description\":\"The share of its units strayed (`spread`) at which it stops to regroup, on its way and out of a fight: 0.4. `false` never\"},\"reinforce\":{\"type\":\"boolean\",\"description\":\"Whether it makes up what it lost since its task began from the pool (the idle fighters nothing holds): no when left out\"},\"retreatAt\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"boolean\",\"const\":false}],\"description\":\"Its odds in a fight (`Strength.odds`) under which it falls back home, away from home: 0.3. `false` fights on to the last (a mission's guards)\"},\"home\":{\"type\":\"number\",\"description\":\"How near home it fights on whatever the odds: there is nowhere to fall back to. 20 when left out\"},\"micro\":{\"type\":\"boolean\",\"description\":\"Whether the micro module (`micro()`, C2) fights for it once it is in a fight: focus fire, kiting, fleeing, siege. Yes when left out; `false` for a squad left to its units (a scout, a mission's guards on an order of the game's)\"},\"tasks\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/TaskDef\"},\"description\":\"Tasks of the game's own: registered with the brain, so that a squad on one is carried on after a load\"}},\"additionalProperties\":false,\"description\":\"How a brain's squads behave, where a squad says nothing for itself (`BrainDef.squads`, the seat's `AiOptions.squads` over it); and the tasks of the game's own (`defineTask`) a save of the brain may name\"},\"TaskDef\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Unique among the brain's tasks: what a save names it by. The kit's are words (`attack`); a game's prefixed (`ctf.capture`)\"},\"handles\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"enum\":[\"retreat\",\"regroup\",\"reinforce\"]},\"description\":\"What the squads module leaves to it: a task that regroups in its own way, or retreats never\"},\"standing\":{\"type\":\"boolean\",\"description\":\"Whether it is a standing duty, going on as long as its squad has it (a hero walking a lane with its waves): never stuck, whatever its phase, for the `ends` invariant (`checkBrain`). No when left out\"},\"fighting\":{\"type\":\"boolean\",\"description\":\"Whether a squad on it is in a fight it means to win, which the micro fights for (`ai.area(Micro)`): yes when left out. No for a task that goes somewhere, looks, stands, gathers or falls back (the kit's `move`, `scout`, `hold`, `gather`, `retreat`, and the micro's own `flee`)\"}},\"required\":[\"id\"],\"additionalProperties\":false,\"description\":\"A kind of task (`defineTask`): what it sends as it begins (`start`), what it looks at each think (`think`), and the place it is about (`where`, for the squads module's regroup and reinforcements and for the report). The squads module runs it with its own regroup, reinforce and retreat around it, but for what it `handles` itself\"},\"TeamOptions\":{\"type\":\"object\",\"properties\":{\"defendUsers\":{\"type\":\"boolean\",\"description\":\"Whether it helps its allies, people and computers, where asked (the classic Defend Users): yes when left out\"},\"answerPings\":{\"type\":\"boolean\",\"description\":\"Whether it does what an ally's ping asks besides help (`RuleSettings.talk.pings.meanings`): a squad sent to fight at an `attack` (a push), one to hold a place at a `defend` (a hold), its squads out brought home at a `rally` (a retreat). Yes when left out\"},\"helpOdds\":{\"type\":\"number\",\"description\":\"The odds of the fight (`Strength.odds`) what it sends to help is to have: one in two when left out\"},\"askForHelp\":{\"type\":\"boolean\",\"description\":\"Whether it asks its team for help with a raid more than it can meet: yes when left out\"},\"together\":{\"type\":\"boolean\",\"description\":\"Whether its waves wait for the team's plan and go together: no when left out\"},\"gatherFor\":{\"type\":\"number\",\"description\":\"Seconds ahead of the proposal the waves of a plan go: 20 when left out\"},\"requestFor\":{\"type\":\"number\",\"description\":\"Seconds a request stands: 30 when left out\"},\"say\":{\"type\":\"boolean\",\"description\":\"Whether it says a line to its side as it sends a wave, comes to help, falls back: no when left out\"},\"lines\":{\"type\":\"object\",\"properties\":{\"attacking\":{\"type\":\"string\"},\"helping\":{\"type\":\"string\"},\"retreating\":{\"type\":\"string\"}},\"additionalProperties\":false,\"description\":\"Its lines, the game's words: `{ attacking, helping, retreating }`. Nothing is said for a line not given\"}},\"additionalProperties\":false,\"description\":\"How a brain plays with its team (`BrainDef.team`, the seat's `AiOptions.team` over it, the `team()` module's own under both). Data\"},\"WavesOptions\":{\"type\":\"object\",\"properties\":{\"groups\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/AttackGroup\"},\"description\":\"The groups waves are made of, by name\"},\"waves\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/AttackWave\"},\"description\":\"The waves, in order, or a function giving the wave whose turn it is (by its index), none for no more\"},\"train\":{\"type\":\"boolean\",\"description\":\"Whether a wave's group is trained (wants of the production plan): yes when left out. No for units that are given (a lanes game)\"},\"priority\":{\"type\":\"number\",\"description\":\"How important a wave's units are to the purse, as wants: 30 when left out (under a hall, a barracks, a hero)\"}},\"additionalProperties\":false,\"description\":\"How a brain sends its waves (`BrainDef.waves`; the seat's `AiOptions.waves` and `groups`, the data of it, go over)\"},\"AttackGroup\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Its name: what a wave names it by\"},\"units\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"number\"},\"description\":\"So many of each unit type or role: `{ footman: 4, rifleman: 2 }`\"},\"when\":{\"$ref\":\"#/definitions/AiCondition\",\"description\":\"Only while this holds: a wave of a group whose condition fails is skipped as its own would be\"}},\"required\":[\"id\",\"units\"],\"additionalProperties\":false,\"description\":\"What a wave is made of: so many of each unit type (by id) or role (`caster`, a game's own), by name, under a condition\"},\"AttackWave\":{\"type\":\"object\",\"properties\":{\"group\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"object\",\"additionalProperties\":{\"type\":\"number\"}}],\"description\":\"Its group: a group's name (`WavesOptions.groups`), or the units in place (`{ footman: 4 }`)\"},\"after\":{\"type\":\"number\",\"description\":\"Seconds after the wave before it (after the start, for the first) before it may go: 0 when left out\"},\"minForces\":{\"type\":\"number\",\"description\":\"The share of its group that is enough to go with, 0 to 1: all of it when left out\"},\"gatherFor\":{\"type\":\"number\",\"description\":\"Seconds it gathers at the rally before it goes, whoever is late: 15 when left out\"},\"repeat\":{\"type\":[\"boolean\",\"number\"],\"description\":\"Whether it goes again once sent: `true` for ever, a number for so many times in all. Once when left out\"},\"when\":{\"$ref\":\"#/definitions/AiCondition\",\"description\":\"Only when this holds as its turn comes: a wave whose condition fails is skipped\"},\"together\":{\"type\":\"boolean\",\"description\":\"Whether it waits for its team's attack together (`TeamOptions.together`, C5)\"},\"target\":{\"$ref\":\"#/definitions/WaveTarget\",\"description\":\"Where it goes: their base nearest home when left out\"},\"rally\":{\"anyOf\":[{\"$ref\":\"#/definitions/Vec2\"},{\"type\":\"string\"}],\"description\":\"Where it gathers: a place, or a name the map or the rules gave. A little out of home towards the target when left out\"}},\"required\":[\"group\"],\"additionalProperties\":false,\"description\":\"One wave (the classic attack wave): its group, when it goes, how much of it is enough, how long it gathers, whether it goes again, together or not, and where to\"},\"WaveTarget\":{\"anyOf\":[{\"type\":\"string\",\"const\":\"nearestBase\"},{\"type\":\"string\",\"const\":\"weakestBase\"},{\"type\":\"string\",\"const\":\"expansion\"},{\"type\":\"string\",\"const\":\"army\"},{\"$ref\":\"#/definitions/Vec2\"}],\"description\":\"Where a wave goes: their base nearest home, their weakest (the fewest towers and army seen there), an expansion of theirs, their army as last seen, a place, or a function of the brain\"},\"PlansOptions\":{\"type\":\"object\",\"properties\":{\"build\":{\"$ref\":\"#/definitions/BuildPlanOptions\",\"description\":\"Options of the build plan\"},\"production\":{\"$ref\":\"#/definitions/ProductionPlanOptions\",\"description\":\"Options of the production plan\"},\"order\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/BuildOrderItem\"},\"description\":\"What to have first, in order (`BuildOrderItem`): each item waits for the one before, and nothing else the computer would make of itself is made meanwhile (`following`); what it works out for itself once done. The seat's `AiOptions.buildOrder`\"}},\"additionalProperties\":false,\"description\":\"How a brain plans (`BrainDef.plans`): the build plan's options, the production plan's, the build order\"},\"BuildPlanOptions\":{\"type\":\"object\",\"properties\":{\"wants\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Want\"},\"description\":\"Standing wants: what the brain always has, built anew when lost\"},\"placement\":{\"$ref\":\"#/definitions/PlacementTable\",\"description\":\"How each type's spot is chosen, by type id or by role: a name or a function. What a type declares (`UnitTypeDef.ai.placement`) goes over it\"},\"rebuild\":{\"type\":\"boolean\",\"description\":\"Whether a building lost is built again, for standing wants that do not say: yes when left out\"},\"repair\":{\"type\":\"boolean\",\"description\":\"Whether a worker is sent to mend a damaged building when no enemy reaches it: yes when left out\"},\"siteTimeout\":{\"type\":\"number\",\"description\":\"Seconds without a spot before a want that does not stand is given up: 60 when left out\"},\"within\":{\"type\":\"number\",\"description\":\"How far from home a building goes at the most, where a want does not say: 22 when left out\"}},\"additionalProperties\":false,\"description\":\"How the build plan goes about it (`BrainDef.plans.build`, the `build()` module; the data of it in `AiOptions`)\"},\"Want\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Its name: what the memory, the report and `drop` know it by. Made up when left out\"},\"type\":{\"type\":\"string\",\"description\":\"The unit type wanted: a building, or a unit (whose buildings the plan puts up; the production plan trains it)\"},\"within\":{\"type\":\"number\",\"description\":\"How far from there at the most: 22 when left out\"},\"priority\":{\"type\":\"number\",\"description\":\"Wants are taken most important first, and the most important one that cannot be paid for saves up: 0 when left out\"},\"spare\":{\"type\":\"number\",\"description\":\"Money to have left over after paying for it: a luxury that waits for gold to spare. 0 when left out\"},\"keep\":{\"type\":\"boolean\",\"description\":\"Whether the want stands: kept once met, and short again when what it made is lost, so that it is built anew. Wants of a brain's or a seat's options stand; one added as the game goes is dropped once met, unless it says so\"},\"rebuild\":{\"type\":\"boolean\",\"description\":\"For a standing want: whether a building lost is built again (the plan's `rebuild` when left out)\"},\"siteTimeout\":{\"type\":\"number\",\"description\":\"Seconds without a spot for it before a want that does not stand is given up: the plan's `siteTimeout` when left out\"},\"by\":{\"type\":\"string\",\"description\":\"Who wants it, for the report: `order`, `production`, `economy`, a goal's or a rule's id\"},\"count\":{\"type\":\"number\",\"description\":\"How many of the type the want asks for, or a function of the brain that gives it; 1 when left out\"},\"when\":{\"$ref\":\"#/definitions/AiCondition\",\"description\":\"A condition the want holds only while true; when it is false the want is not pursued\"},\"near\":{\"anyOf\":[{\"$ref\":\"#/definitions/Vec2\"},{\"type\":\"string\"}],\"description\":\"Where to build: a point, the name of an entity or region the map gave, or a function of the brain that finds one each think\"},\"placement\":{\"$ref\":\"#/definitions/PlacementName\",\"description\":\"How the spot is chosen: a strategy by name or a function; the build plan's table or the type's own when left out\"}},\"additionalProperties\":false,\"required\":[\"type\"],\"description\":\"A want with the function forms: how many as a function of the brain, a condition as code, a place found each think, a placement strategy of the game's own (`ai.plans.want`, `BuildPlanOptions.wants`)\"},\"PlacementTable\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/PlacementName\"},\"description\":\"Which strategy a type goes by (`AiOptions.placement`, `BuildPlanOptions.placement`): by type id or by role, a name or a function\"},\"ProductionPlanOptions\":{\"type\":\"object\",\"properties\":{\"composition\":{\"$ref\":\"#/definitions/Composition\",\"description\":\"The army it wants (`Composition`), or a function of the brain giving it. Even shares of every soldier type it can train when left out\"},\"counters\":{\"type\":\"number\",\"description\":\"How much what answers the enemy's army seen pulls the shares about: 0 not at all, 1 (left out) as much as a share; a type that cannot hit what they field is not trained while they field it\"},\"train\":{\"type\":\"boolean\",\"description\":\"Whether it trains soldiers at all: yes when left out. Workers and heroes are the economy's and the hero module's\"},\"queue\":{\"type\":\"number\",\"description\":\"How many may queue at one building: 2 when left out\"},\"supplyAhead\":{\"type\":\"boolean\",\"description\":\"Whether to want one more of what provides supply when what it would train next does not fit: yes when left out\"},\"supplyMargin\":{\"type\":\"number\",\"description\":\"Supply to keep free beyond the next unit's, so that the farm is up before it is needed: 4 when left out\"},\"research\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Upgrades to research, in order, by id (the first it can is next), or a function of the brain giving the next; what the army it has uses most when left out\"},\"researchSpare\":{\"type\":\"number\",\"description\":\"Money to have left over before researching: 200 when left out (research is a luxury)\"},\"priority\":{\"type\":\"number\",\"description\":\"How important training and research are to the purse (`Purse`): 0 when left out, under every want that saves\"},\"upkeepTier\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"boolean\",\"const\":false}],\"description\":\"The tier of the game's upkeep (`Rules.upkeep`: 0 none, 1 the first) the composition trains no further into: a soldier that would take the supply used past it waits, and no supply is wanted past it, unless the money would lie idle (`upkeepSpare`). What is wanted outright (a wave's, a build order's) is trained all the same. `UPKEEP_TIER` (1) when left out; `false` reads no upkeep\"},\"upkeepSpare\":{\"type\":\"number\",\"description\":\"Money free past which upkeep is not read (it would lie idle else): `UPKEEP_SPARE` (600) when left out\"}},\"additionalProperties\":false,\"description\":\"How the production plan goes about it (`BrainDef.plans.production`, the `production()` module; the data of it in `AiOptions.composition` and `research`)\"},\"Composition\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"number\"},\"description\":\"The army a computer player wants, as shares by unit type id or tag (the kit's `ranged`, `melee`, `hitsAir`, a game's own): `{ footman: 2, rifleman: 1 }` is two footmen to a rifleman. A tag's share is split among the types that have it; a type named gets its own beside. Types it cannot train yet are left out until it can\"},\"BuildOrderItem\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"count\":{\"type\":\"number\"}},\"required\":[\"type\"],\"additionalProperties\":false}],\"description\":\"One item of a build order: a type to have (one of it), or a type and how many. Counts of a type add up along the order\"},\"MeleeArmyOptions\":{\"type\":\"object\",\"properties\":{\"firstAttack\":{\"type\":\"number\",\"description\":\"Seconds before its first wave: 150 when left out\"},\"attackEvery\":{\"type\":\"number\",\"description\":\"Seconds between two waves: 45 when left out\"},\"waveSize\":{\"type\":\"number\",\"description\":\"Units in its first wave, each after bringing two more: 6 when left out\"},\"goOdds\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"boolean\",\"const\":false}],\"description\":\"The odds (`Strength.odds`) of what it has ready against their army as last seen (the last minute) under which a wave whose time has come waits and trains on rather than go: 0.4 when left out; `false` never waits\"},\"waitAtMost\":{\"type\":\"number\",\"description\":\"Seconds a wave waits past its time at the most, outmatched or short of its size: then it goes with what it has, half the wave at the least, where that would hold against what is remembered to reach the target. Twice `attackEvery` when left out. A wave that could never reach its size (the supply capped) still comes\"},\"pressOn\":{\"type\":\"boolean\",\"description\":\"Whether a wave that razed what it went for goes on to the next of their buildings it knows, while it is strong enough: yes when left out\"},\"target\":{\"type\":\"string\",\"enum\":[\"nearest\",\"weakest\"],\"description\":\"Where a wave of its own goes among their buildings it knows of: the `nearest`, or the `weakest` (the one the least of their strength is remembered to reach: an expansion before a main with towers; the nearest among those alike). `weakest` when left out\"},\"counter\":{\"type\":\"boolean\",\"description\":\"Whether a wave of theirs that died at its gate is answered at once with what is ready (half a wave at the least), their base being empty of it: yes when left out. `counterAfter` is how many of their fighters must have fallen near its bases in the last twenty seconds (3 when left out)\"},\"counterAfter\":{\"type\":\"number\",\"description\":\"How many of their fighters must have fallen near its bases in the last twenty seconds for the counter: 3 when left out\"},\"pressOdds\":{\"type\":\"number\",\"description\":\"The odds against their army as last seen a wave needs to go on: 0.5 when left out\"},\"reinforce\":{\"type\":\"boolean\",\"description\":\"Whether idle fighters at home join a wave that is out, making up what it lost: yes when left out\"},\"strike\":{\"anyOf\":[{\"type\":\"boolean\",\"const\":false},{\"type\":\"object\",\"properties\":{\"awayFor\":{\"type\":\"number\"},\"odds\":{\"type\":\"number\"}},\"additionalProperties\":false}],\"description\":\"A strike while their army is away (FJ1): every sighting of their army within `awayFor` seconds (60) stands far from what a wave would go for (their base, out raiding or creeping or at a base of mine), and what is ready (half a wave at the least) would hold against what is remembered to reach it at these odds (`odds`, 0.6): the wave goes before its time. `false` for none\"},\"waveGrowth\":{\"type\":\"number\",\"description\":\"Units more in each wave than the one before: 2 when left out\"},\"waveMax\":{\"type\":\"number\",\"description\":\"The most units a wave of its own asks for: 24 when left out\"},\"raid\":{\"anyOf\":[{\"type\":\"boolean\",\"const\":false},{\"type\":\"object\",\"properties\":{\"size\":{\"type\":\"number\"},\"odds\":{\"type\":\"number\"},\"every\":{\"type\":\"number\"},\"armyAwayFor\":{\"type\":\"number\"},\"workersSeenFor\":{\"type\":\"number\"},\"retreatAt\":{\"type\":\"number\"}},\"additionalProperties\":false}],\"description\":\"Raids on their workers where their army is not (the `raid` goal): how many go (`size`, 3, the fastest), the odds against what is remembered at the base they need (`odds`, 0.6), seconds between raids (`every`, 60), seconds their army must not have been seen near the base (`armyAwayFor`, 45), how long ago their workers were seen at the most (`workersSeenFor`, 120), the odds the raiders fall back at (`retreatAt`, 0.5). `false` for no raids\"},\"harass\":{\"anyOf\":[{\"type\":\"boolean\",\"const\":false},{\"type\":\"object\",\"properties\":{\"size\":{\"type\":\"number\"},\"odds\":{\"type\":\"number\"},\"every\":{\"type\":\"number\"},\"retreatAt\":{\"type\":\"number\"}},\"additionalProperties\":false}],\"description\":\"Harassing their main before the first wave (the `harass` goal): the party (`size`, 3: the hero and the fastest), the odds it needs at their base (`odds`, 0.6), seconds between (`every`, 90), the odds it falls back at (`retreatAt`, 0.5). `false` for none\"},\"expand\":{\"anyOf\":[{\"type\":\"boolean\",\"const\":false},{\"type\":\"object\",\"properties\":{\"guards\":{\"type\":\"number\"},\"spare\":{\"type\":\"number\"}},\"additionalProperties\":false}],\"description\":\"Guards at a base past home that has no tower yet (the `expand` goal): how many (`guards`, 2), and how many fighters past a wave must stand idle for any to go (`spare`, 0). `false` for none\"},\"creep\":{\"anyOf\":[{\"type\":\"boolean\",\"const\":false},{\"type\":\"object\",\"properties\":{\"every\":{\"type\":\"number\"},\"from\":{\"type\":\"number\"},\"reach\":{\"type\":\"number\"},\"party\":{\"type\":\"number\"}},\"additionalProperties\":false}],\"description\":\"Creeping (the `creep` goal): seconds between camps (`every`, 40), seconds into the game before the first (`from`, 30), how far from home a camp may be (`reach`, 70), the fewest in a party (`party`, 3). `false` for none\"},\"surrender\":{\"anyOf\":[{\"type\":\"boolean\",\"const\":false},{\"$ref\":\"#/definitions/MeleeSurrenderOptions\"}],\"description\":\"When it gives up (the `melee.surrender` module, `MeleeSurrenderOptions`): once it has no hall, no worker and no army that could win the game back, for half a minute, when left out; a condition of the game's own (`when`), and how long it holds first (`after`). `false` plays to the last\"}},\"additionalProperties\":false,\"description\":\"How the melee player's army goes about its own waves and the goals beside them (`AiSettings.army` over the melee brain's `army(options)`). Data: a save keeps the seat's\"},\"MeleeSurrenderOptions\":{\"type\":\"object\",\"properties\":{\"when\":{\"$ref\":\"#/definitions/AiCondition\",\"description\":\"When it cannot come back, as a condition (data or a function of the brain). By default: no hall and no worker of its own, and its fighters (none at all, or) outmatched by their army as last seen in the last two minutes, odds under 0.2\"},\"after\":{\"type\":\"number\",\"description\":\"Seconds the condition holds on end before it gives up: 30 when left out\"}},\"additionalProperties\":false,\"description\":\"When the melee player gives up (`MeleeArmyOptions.surrender`): the condition, and how long it holds first\"},\"MeleeHeroesOptions\":{\"type\":\"object\",\"properties\":{\"most\":{\"type\":\"number\",\"description\":\"Heroes it has once the game is under way (`secondFrom`): one before. 2 when left out\"},\"secondFrom\":{\"type\":\"number\",\"description\":\"Seconds into the game from which it wants every hero it may have: one before. 240 when left out\"},\"priority\":{\"type\":\"number\",\"description\":\"How important a hero's price is to the purse while it is short (`Purse.reserve`): the hall, supply, the barracks, the altar, the answer to their army and another hall go before it (their wants are more important); a workshop, the next tier, a second barracks and the soldiers wait for it. 35 when left out\"}},\"additionalProperties\":false,\"description\":\"How the melee brain makes its heroes (`heroes()` of the melee brain): how many once the game is under way (the profile's `heroes`), from when, and how important their price is to the purse\"},\"LanesPlayOptions\":{\"type\":\"object\",\"properties\":{\"home\":{\"$ref\":\"#/definitions/Vec2\",\"description\":\"Where its heroes go to rest: a point, or a function. Its side's building by its side's ends of the lanes when left out (a core)\"},\"lanes\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only these lanes, by their path's name: every lane of the map when left out\"},\"backAt\":{\"type\":\"number\",\"description\":\"The share of its health under which a hero goes home to rest: 0.35\"},\"returnAt\":{\"type\":\"number\",\"description\":\"The share at which a resting hero goes back out: 0.85\"},\"restFor\":{\"type\":\"number\",\"description\":\"Seconds a hero rests at home at most, healed or not: 40\"},\"recall\":{\"type\":\"boolean\",\"description\":\"Whether a hero going home uses an ability that takes it there (a recall), where nothing hostile is near: yes when left out\"},\"backOdds\":{\"type\":\"number\",\"description\":\"The odds where a hero stands on its lane under which it falls back along it: 0.3\"},\"behind\":{\"type\":\"number\",\"description\":\"How many cells behind its side's wave a hero walks: 3\"},\"help\":{\"anyOf\":[{\"type\":\"boolean\",\"const\":false},{\"type\":\"object\",\"properties\":{\"reach\":{\"type\":\"number\"},\"odds\":{\"type\":\"number\"}},\"additionalProperties\":false}],\"description\":\"An ally's hero in a fight it goes to: within `reach` cells of it (30), where the odds with it are at least `odds` (0.4). `false` never\"},\"camps\":{\"anyOf\":[{\"type\":\"boolean\",\"const\":false},{\"type\":\"object\",\"properties\":{\"reach\":{\"type\":\"number\"},\"odds\":{\"type\":\"number\"}},\"additionalProperties\":false}],\"description\":\"A camp it takes with no wave to walk with: within `reach` cells (50), where the odds against it are at least `odds` (0.6). `false` never\"},\"lastHits\":{\"type\":\"boolean\",\"description\":\"Whether a hero hits the minion its next hit kills before anything else (a last hit): yes when left out\"}},\"additionalProperties\":false,\"description\":\"How a lanes brain plays (`lanesPlay(options)`, the seat's `AiOptions.lanes` over it): its heroes' rest, how far it goes for an ally or a camp, how near its wave it walks. Data, but for `units` and `home` as functions\"},\"AiFlags\":{\"type\":\"object\",\"properties\":{\"defendUsers\":{\"$ref\":\"#/definitions/AiFlag%3Cboolean%3E\",\"description\":\"Helps its allies, people and computers, where asked (the team's `help` goal)\"},\"targetHeroes\":{\"$ref\":\"#/definitions/AiFlag%3Cboolean%3E\",\"description\":\"Hits heroes first among those alike (the micro's targets)\"},\"repairStructures\":{\"$ref\":\"#/definitions/AiFlag%3Cboolean%3E\",\"description\":\"Mends damaged buildings when no enemy reaches them (the build plan's `repair`)\"},\"heroesFlee\":{\"$ref\":\"#/definitions/AiFlag%3C(boolean%7Cnumber)%3E\",\"description\":\"A hero leaves a fight under this share of its health: `true` at the share under it, `false` never (`micro.heroesFlee`)\"},\"unitsFlee\":{\"$ref\":\"#/definitions/AiFlag%3C(boolean%7Cnumber)%3E\",\"description\":\"A unit leaves a fight under this share of its health: `true` at the share under it, `false` never (`micro.unitsFlee`)\"},\"groupsFlee\":{\"$ref\":\"#/definitions/AiFlag%3C(boolean%7Cnumber)%3E\",\"description\":\"A squad falls back from a fight away from home under these odds: `true` at the odds under it, `false` never (`squads.retreatAt`)\"},\"noMercy\":{\"$ref\":\"#/definitions/AiFlag%3C(boolean%7Cnumber)%3E\",\"description\":\"Attacks before its time when the enemy's army as last seen is weak against its own: at these odds (`true`: 0.75)\"},\"ignoreInjured\":{\"$ref\":\"#/definitions/AiFlag%3Cboolean%3E\",\"description\":\"A unit that fled stays out until healed\"},\"removeInjuries\":{\"$ref\":\"#/definitions/AiFlag%3Cboolean%3E\",\"description\":\"The hurt go home to heal between fights\"},\"takeItems\":{\"$ref\":\"#/definitions/AiFlag%3Cboolean%3E\",\"description\":\"Picks up what lies about\"},\"buyItems\":{\"$ref\":\"#/definitions/AiFlag%3Cboolean%3E\",\"description\":\"Its heroes buy from shops in reach\"},\"allowHomeChanges\":{\"$ref\":\"#/definitions/AiFlag%3Cboolean%3E\",\"description\":\"Builds its hall again where it can, once its home falls, rather than where it first stood: yes when left out\"},\"smartArtillery\":{\"$ref\":\"#/definitions/AiFlag%3Cboolean%3E\",\"description\":\"Siege units shoot buildings and stay behind their squad\"},\"randomPaths\":{\"$ref\":\"#/definitions/AiFlag%3Cboolean%3E\",\"description\":\"Each wave takes a way of its own to the target, by the brain's numbers: straight, or round one side or the other\"},\"rebuild\":{\"$ref\":\"#/definitions/AiFlag%3Cboolean%3E\",\"description\":\"Builds again what it lost\"},\"kite\":{\"$ref\":\"#/definitions/AiFlag%3Cboolean%3E\",\"description\":\"Ranged units step back from melee they outrun\"},\"workersFlee\":{\"$ref\":\"#/definitions/AiFlag%3Cboolean%3E\",\"description\":\"Workers a raid is on walk to a safe base\"},\"say\":{\"$ref\":\"#/definitions/AiFlag%3Cboolean%3E\",\"description\":\"Says its lines to its side (the team's `say`)\"},\"scout\":{\"$ref\":\"#/definitions/AiFlag%3Cboolean%3E\",\"description\":\"Sends a unit to look at the enemy (the scouting's goal)\"}},\"additionalProperties\":false,\"description\":\"The classic RTS behaviour flags, where the meaning holds, and the kit's own beside them: each a yes or no, a number where one says how much, or a function of the brain\"},\"AiFlag<boolean>\":{\"type\":\"boolean\",\"description\":\"A flag's value: as data, or worked out by the brain as it is asked (code, not kept in a save)\"},\"AiFlag<(boolean|number)>\":{\"type\":[\"boolean\",\"number\"],\"description\":\"A flag's value: as data, or worked out by the brain as it is asked (code, not kept in a save)\"},\"ThinkBudgetOptions\":{\"type\":\"object\",\"properties\":{\"modulesPerTick\":{\"type\":\"number\",\"description\":\"Modules of a brain a think may run in one tick: a think with more goes on at the next tick, over the same picture of the game. All of them in one tick when left out\"},\"unitsPerTick\":{\"type\":\"number\",\"description\":\"Units a tick's modules may look at, as the modules say (`ai.budget.spent(n)`): a module that walks the squads or the bases stops once the tick has looked at this many, and goes on at the next tick from where it was (`later`). No limit when left out. A module that says nothing of what it looks at is never stopped by it\"},\"warnAfterMs\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"boolean\",\"const\":false}],\"description\":\"Milliseconds a module may take before the log says so (once a module, a warning): what to measure first. A module is never cut short for it. 4 when left out; `false` for never\"}},\"additionalProperties\":false,\"description\":\"How much of a think one tick may do (`AiOptions.budget`, `AiProfile.budget`, `ComputerSeatOptions.budget`), counted in work and never in milliseconds: the same on every machine, so that a game with a sliced think is the same game everywhere. Nothing is limited where a field is left out\"},\"AiHandicap\":{\"type\":\"object\",\"properties\":{\"income\":{\"type\":\"number\",\"description\":\"What its workers bring in, through the game's `beforeDeposit` hook\"},\"health\":{\"type\":\"number\",\"description\":\"The most health of everything it has, through a `stats` hook: the classic handicap\"},\"damage\":{\"type\":\"number\",\"description\":\"The damage it deals, before armour, through a `beforeDamage` hook\"},\"buildTime\":{\"type\":\"number\",\"description\":\"How long what it trains, builds and researches takes, through a `beforeProduce` hook: under 1 is sooner\"}},\"additionalProperties\":false,\"description\":\"What a computer is given beyond the rules (`AiProfile.handicap`): each a factor, 1 (or left out) for none\"},\"DataRules\":{\"type\":\"object\",\"properties\":{\"supply\":{\"type\":\"object\",\"properties\":{\"max\":{\"type\":\"number\"},\"pools\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"max\":{\"type\":\"number\"}},\"required\":[\"name\",\"max\"],\"additionalProperties\":false}}},\"additionalProperties\":false,\"description\":\"The supply numbers: `max` is the most supply a player can have, `pools` names the extra supply pools by id with their own `max`\"},\"heroes\":{\"type\":\"object\",\"properties\":{\"maxHeroes\":{\"type\":\"number\"},\"maxHeroLevel\":{\"type\":\"number\"},\"xpRange\":{\"type\":\"number\"},\"assistTime\":{\"type\":\"number\"},\"buybackCooldown\":{\"type\":\"number\"}},\"additionalProperties\":false,\"description\":\"The hero rules: `maxHeroes` a player may have, `maxHeroLevel` a hero can reach, `xpRange` the distance within which units share experience, `assistTime` the seconds within which harm or help makes an assist (0 for none), and `buybackCooldown` the seconds a hero bought back waits to be again\"},\"resources\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ResourceDef\"},\"description\":\"The resource kinds of the game whole, in place of `Rules.resources`\"},\"upkeep\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/UpkeepTier\"},\"description\":\"The upkeep tiers whole, in place of `Rules.upkeep`\"}},\"additionalProperties\":false,\"description\":\"The rules a `data.json` may say (campaign plan RC7), each over the game's: the supply's and the heroes' numbers, the resources and the upkeep's tiers whole (in place of `Rules.resources`, `upkeep`)\"},\"ResourceDef\":{\"type\":\"object\",\"properties\":{\"id\":{\"$ref\":\"#/definitions/ResourceId\",\"description\":\"The resource's id, which prices, players' amounts and gatherers name it by\"},\"name\":{\"type\":\"string\",\"description\":\"What the player sees the resource called\"},\"start\":{\"type\":\"number\",\"description\":\"What every player starts a game with. Nothing when left out\"},\"upkeep\":{\"type\":\"boolean\",\"description\":\"What workers gather of it is cut by the upkeep of the army, see `UpkeepTier`\"}},\"required\":[\"id\",\"name\"],\"additionalProperties\":false,\"description\":\"Something players have amounts of and pay with, like gold, lumber or crystals. A game module lists its own\"},\"UpkeepTier\":{\"type\":\"object\",\"properties\":{\"above\":{\"type\":\"number\",\"description\":\"Applies when the player uses more supply than this\"},\"name\":{\"type\":\"string\",\"description\":\"What the player sees the tier called\"},\"income\":{\"type\":\"number\",\"description\":\"Part of what is gathered that still arrives, 0..1\"}},\"required\":[\"above\",\"name\",\"income\"],\"additionalProperties\":false,\"description\":\"A big army is paid for with income: past a certain supply, less arrives of what workers gather of the resources with `upkeep`\"},\"DataSetChoice\":{\"anyOf\":[{\"type\":\"string\",\"const\":\"all\"},{\"type\":\"string\",\"const\":\"none\"},{\"type\":\"object\",\"properties\":{\"only\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"except\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"additionalProperties\":false}],\"description\":\"What a `data.json` takes of a default set (`GameData.defaults`): all of it, none, only some ids, or all but some. Over what the code chose of it, whose own definitions (`with`) and changes stay; the data changes the set's definitions as any other (`items.<id>`)\"},\"DataTag\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"description\":\"What the player sees it called: its id when left out\"},\"description\":{\"type\":\"string\",\"description\":\"A line about it, shown when the pointer is over it\"},\"icon\":{\"type\":\"string\",\"description\":\"An icon of its own, by path or by a name of the game's icons\"},\"color\":{\"type\":\"string\",\"description\":\"The colour it is shown in, as CSS has it (`#e0a030`)\"},\"filter\":{\"type\":\"boolean\",\"description\":\"One of the shop's filters, a chip to pick: not when left out\"}},\"additionalProperties\":false,\"description\":\"What a `data.json` says of a tag (`GameData.tags`): a `TagDef` without its id, over the code's of the same tag\"},\"DataCalling\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"description\":\"What the player sees it called: Vanguard\"},\"description\":{\"type\":\"string\",\"description\":\"What a hero of it does, in a few words, for a tooltip\"},\"icon\":{\"type\":\"string\",\"description\":\"Its picture: an address of an image, or the name of a glyph the HUD draws (`registerGlyph`). The HUD draws the engine's own callings by their ids; the first letter of the name for one with neither\"},\"color\":{\"type\":\"string\",\"description\":\"The colour it is shown in, a CSS colour: the HUD's accent when left out\"}},\"additionalProperties\":false,\"description\":\"What a `data.json` says of a calling (`GameData.callings`): a `CallingDef` without its id, any of it, over the game's of the same id. One of its own is named by its id where it says no name\"},\"DataCellLayer\":{\"type\":\"object\",\"properties\":{\"values\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"$ref\":\"#/definitions/DataCellLayerValue\"},{\"type\":\"boolean\",\"const\":false}]},\"description\":\"The layer's values, by number (1 to 255): each over the game's of that number, a new one, or `false` for none\"}},\"additionalProperties\":false,\"description\":\"What a `data.json` (`GameData.cellLayers`, every map) or a map's definitions (`GameMap.definitions`, that map alone) says of one of the game's layers of cells: its values, by their number, each over the code's (`DataCellLayerValue`), or `false` to take one of the game's out. What the editor writes of a style made or changed there: `{ \\\"grass\\\": { \\\"values\\\": { \\\"3\\\": { \\\"name\\\": \\\"Dry field\\\", \\\"foliage\\\": { \\\"flammable\\\": 1 } } } } }`\"},\"DataCellLayerValue\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"description\":\"What the editor calls it\"},\"color\":{\"type\":\"array\",\"items\":{\"type\":\"number\"},\"minItems\":3,\"maxItems\":3,\"description\":\"The colour the editor shows it in, 0 to 1 each: the layer's when left out\"},\"foliage\":{\"$ref\":\"#/definitions/FoliageStyleDef\",\"description\":\"Of a layer of grass or bushes (`foliagePack`): what this style is to the rules (`FoliageStyleDef`), whether it hides, burns, slows. Over the layer's own (`FoliageLayerOptions.style`)\"}},\"additionalProperties\":false,\"description\":\"What a `data.json`, or a map's definitions, says of a value of a layer of cells (`DataCellLayer.values`): its name, colour and style, any of them, over the game's value of the same number; one the game has not is a value of its own\"},\"FoliageStyleDef\":{\"type\":\"object\",\"properties\":{\"conceals\":{\"type\":\"boolean\",\"description\":\"Whether it hides who stands in it from the teams that have nobody in the same patch (`ConcealmentOptions`): no when left out\"},\"concealsTaller\":{\"type\":\"boolean\",\"description\":\"Whether it hides what is taller than it stands (`height`): yes when left out. With `false`, a unit taller than the grass is seen over it (`FoliageConceal.heightOf`)\"},\"height\":{\"type\":\"number\",\"description\":\"How tall it stands to the rules, in cells: what `concealsTaller` is measured against, 1 when left out. How it is drawn is the look's own height\"},\"speed\":{\"type\":\"number\",\"description\":\"How fast one on foot goes through it, as a multiplier of its speed (as `CellLayerDef.speed`, for this value alone): the layer's `speed` when left out, and 1 where the layer says none either\"},\"walkable\":{\"type\":\"boolean\",\"description\":\"Whether one on foot may walk through it: yes when left out. A hedge nothing goes through with `false`: the ways go round it as round a wall, whatever its state (a burnt hedge still stops, until its style is changed). Painted or cleared in play, the navigation's tiles it reaches are cut again: a few milliseconds a call on a big map, so not a call a tick\"},\"flammable\":{\"type\":\"number\",\"description\":\"How easily it catches fire from a burning cell beside it, 0 (never: a firebreak) to 1 (as dry grass): 0 when left out, and nothing burns\"},\"burns\":{\"type\":\"number\",\"description\":\"How many seconds a cell of it burns before it is burnt: 6 when left out\"},\"fuel\":{\"type\":\"number\",\"description\":\"How hot it burns: how much likelier than 1 a burning cell of it is to light those beside it. 1 when left out\"},\"regrows\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"boolean\",\"const\":false}],\"description\":\"Seconds after it was burnt, cut or flattened that it starts to grow back by itself; `false` for never (until `regrow`). Never when left out\"},\"grows\":{\"type\":\"number\",\"description\":\"Seconds it takes to grow back once it starts by itself (`regrows`): hiding as it grows, whole at the end. 10 when left out\"},\"trample\":{\"type\":\"string\",\"enum\":[\"none\",\"crush\"],\"description\":\"What walking over it does to it, to the rules: `crush` lays it flat for good (`flattened`, which hides nobody) under those the layer says (`FoliageLayerOptions.tramples`); `none` when left out. How it bends on the screen and stands up again is the look's (`FoliageLook.walked`)\"}},\"additionalProperties\":false,\"description\":\"What a style of grass or bushes is to the rules: a value of a layer's cells (`CellLayerValue.foliage`), said in the game's code, in its `data.json` (`GameData.cellLayers`, every map) or in a map (`GameMap.definitions`, that map alone), each over the one before field by field. Plain data, every field: the editor writes it. What a value does not say is the layer's (`FoliageLayerOptions.style`), then what each field says it is when left out\"},\"DataValues\":{\"type\":\"object\",\"additionalProperties\":{\"anyOf\":[{\"$ref\":\"#/definitions/DataValue\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/DataValue\"}},{\"$ref\":\"#/definitions/DataValues\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/DataValues\"}}],\"description\":\"A field of the definition by name: a value, a list of values, or nested values (a `stats` group, a list of `effects`)\"},\"description\":\"Values of a definition, as its own fields nest them: `{ stats: { health: 420 }, cost: { gold: 135 } }`. What a `data.json` keeps of each definition, and what `world.redefine` is given. A list of things by place (a unit's attacks) is written as a list or as its places (`{ attacks: { 0: { damagePoint: 0.5 } } }`), each over the thing there. A list of things changed whole (an ability's effects, the units a race's start adds: a `rows` field) written as places goes over the things there, and written as a list is the list: those things, in that order, each in full\"},\"DataValue\":{\"type\":[\"number\",\"string\",\"boolean\"],\"description\":\"What a field of the data can hold: a number, words, yes or no\"}}");
5
+ var pack_schema_default = {
6
+ $schema,
7
+ $ref,
8
+ definitions
9
+ };
10
+ //#endregion
11
+ export { $ref, $schema, pack_schema_default as default, definitions };
12
+
13
+ //# sourceMappingURL=pack.schema.js.map