warscript 0.0.1-dev.9af2d1a → 0.0.1-dev.9bcb501

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 (452) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/config.d.ts +5 -0
  4. package/config.lua +10 -0
  5. package/core/dummy.lua +4 -2
  6. package/core/types/effect.d.ts +24 -6
  7. package/core/types/effect.lua +169 -107
  8. package/core/types/frame.d.ts +16 -2
  9. package/core/types/frame.lua +141 -77
  10. package/core/types/handle.lua +9 -9
  11. package/core/types/item.d.ts +1 -0
  12. package/core/types/item.lua +1 -0
  13. package/core/types/missile.lua +8 -7
  14. package/core/types/player.d.ts +18 -1
  15. package/core/types/player.lua +76 -26
  16. package/core/types/playerCamera.d.ts +2 -0
  17. package/core/types/playerCamera.lua +123 -5
  18. package/core/types/playerColor.lua +4 -3
  19. package/core/types/sound.d.ts +18 -25
  20. package/core/types/sound.lua +113 -33
  21. package/core/types/tileCell.d.ts +18 -3
  22. package/core/types/tileCell.lua +108 -0
  23. package/core/types/timer.d.ts +9 -8
  24. package/core/types/timer.lua +45 -23
  25. package/core/types/unit.d.ts +5 -0
  26. package/core/types/unit.lua +5 -0
  27. package/core/util.d.ts +3 -1
  28. package/core/util.lua +121 -4
  29. package/decl/native.d.ts +1719 -964
  30. package/destroyable.d.ts +1 -0
  31. package/destroyable.lua +9 -0
  32. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  33. package/engine/ability-type-extended-tooltip.lua +44 -0
  34. package/engine/behavior.d.ts +14 -1
  35. package/engine/behavior.lua +230 -70
  36. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  37. package/engine/behaviour/ability/always-enabled.lua +31 -0
  38. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  39. package/engine/behaviour/ability/apply-buff.lua +36 -4
  40. package/engine/behaviour/ability/apply-unit-behavior.lua +6 -0
  41. package/engine/behaviour/ability/damage.d.ts +13 -3
  42. package/engine/behaviour/ability/damage.lua +41 -49
  43. package/engine/behaviour/ability/emulate-impact.d.ts +20 -0
  44. package/engine/behaviour/ability/emulate-impact.lua +117 -0
  45. package/engine/behaviour/ability/instant-impact.d.ts +14 -3
  46. package/engine/behaviour/ability/instant-impact.lua +20 -20
  47. package/engine/behaviour/ability/on-command-impact.d.ts +9 -0
  48. package/engine/behaviour/ability/on-command-impact.lua +26 -0
  49. package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
  50. package/engine/behaviour/ability/remove-buffs.lua +49 -0
  51. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  52. package/engine/behaviour/ability/restore-mana.lua +6 -6
  53. package/engine/behaviour/ability.d.ts +36 -7
  54. package/engine/behaviour/ability.lua +218 -43
  55. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  56. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  57. package/engine/behaviour/unit.d.ts +41 -2
  58. package/engine/behaviour/unit.lua +270 -6
  59. package/engine/buff.d.ts +136 -60
  60. package/engine/buff.lua +651 -309
  61. package/engine/index.d.ts +2 -1
  62. package/engine/internal/ability.d.ts +27 -3
  63. package/engine/internal/ability.lua +174 -32
  64. package/engine/internal/item/ability.lua +162 -4
  65. package/engine/internal/item/fields.d.ts +12 -0
  66. package/engine/internal/item/fields.lua +33 -0
  67. package/engine/internal/item/owner-cache.d.ts +5 -0
  68. package/engine/internal/item/owner-cache.lua +4 -0
  69. package/engine/internal/item+owner.d.ts +2 -0
  70. package/engine/internal/item+owner.lua +37 -8
  71. package/engine/internal/item.d.ts +34 -18
  72. package/engine/internal/item.lua +308 -102
  73. package/engine/internal/mechanics/ability-duration.lua +1 -1
  74. package/engine/internal/mechanics/cast-ability.lua +6 -3
  75. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  76. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  77. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  78. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  79. package/engine/internal/misc/frame-coordinates.lua +21 -0
  80. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  81. package/engine/internal/misc/get-terrain-z.lua +11 -0
  82. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  83. package/engine/internal/misc/player-local-handle.lua +5 -0
  84. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  85. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  86. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  87. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  88. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  89. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  90. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  91. package/engine/internal/object-data/evasion-probability.lua +16 -0
  92. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  93. package/engine/internal/object-data/health-bonus.lua +16 -0
  94. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  95. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  96. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  97. package/engine/internal/object-data/mana-bonus.lua +16 -0
  98. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  99. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  100. package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
  101. package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
  102. package/engine/internal/unit/ability.d.ts +45 -1
  103. package/engine/internal/unit/ability.lua +144 -3
  104. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  105. package/engine/internal/unit/add-item-to-slot-init.lua +12 -0
  106. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  107. package/engine/internal/unit/add-item-to-slot.lua +93 -0
  108. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  109. package/engine/internal/unit/allowed-targets.lua +9 -1
  110. package/engine/internal/unit/appearance.d.ts +15 -0
  111. package/engine/internal/unit/appearance.lua +85 -0
  112. package/engine/internal/unit/attributes.d.ts +17 -0
  113. package/engine/internal/unit/attributes.lua +46 -0
  114. package/engine/internal/unit/bonus.d.ts +19 -0
  115. package/engine/internal/unit/bonus.lua +130 -8
  116. package/engine/internal/unit/buff.d.ts +2 -2
  117. package/engine/internal/unit/buff.lua +34 -19
  118. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  119. package/engine/internal/unit/equipment-inventory.lua +233 -0
  120. package/engine/internal/unit/expiration-timer.lua +1 -1
  121. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  122. package/engine/internal/unit/extended-inventory.lua +99 -0
  123. package/engine/internal/unit/fly-height.d.ts +7 -0
  124. package/engine/internal/unit/fly-height.lua +20 -0
  125. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  126. package/engine/internal/unit/ignore-events-items.lua +14 -0
  127. package/engine/internal/unit/interrupts.d.ts +12 -0
  128. package/engine/internal/unit/interrupts.lua +28 -0
  129. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  130. package/engine/internal/unit/inventory.lua +87 -0
  131. package/engine/internal/unit/item-container.d.ts +25 -0
  132. package/engine/internal/unit/item-container.lua +11 -0
  133. package/engine/internal/unit/item-order-events.d.ts +17 -0
  134. package/engine/internal/unit/item-order-events.lua +67 -0
  135. package/engine/internal/unit/item-slot.d.ts +27 -0
  136. package/engine/internal/unit/item-slot.lua +92 -0
  137. package/engine/internal/unit/main-selected.d.ts +6 -0
  138. package/engine/internal/unit/main-selected.lua +18 -22
  139. package/engine/internal/unit/order.d.ts +20 -0
  140. package/engine/internal/unit/order.lua +136 -0
  141. package/engine/internal/unit/range-event.d.ts +12 -0
  142. package/engine/internal/unit/range-event.lua +90 -0
  143. package/engine/internal/unit/scale.d.ts +7 -0
  144. package/engine/internal/unit/scale.lua +20 -0
  145. package/engine/internal/unit+ability.d.ts +2 -1
  146. package/engine/internal/unit+ability.lua +83 -3
  147. package/engine/internal/unit+bonus.lua +3 -3
  148. package/engine/internal/unit+damage.d.ts +11 -11
  149. package/engine/internal/unit+damage.lua +43 -14
  150. package/engine/internal/unit+rally.lua +9 -31
  151. package/engine/internal/unit+spellSteal.lua +1 -2
  152. package/engine/internal/unit-missile-data.lua +96 -68
  153. package/engine/internal/unit-missile-launch.lua +65 -27
  154. package/engine/internal/unit.d.ts +45 -33
  155. package/engine/internal/unit.lua +434 -307
  156. package/engine/internal/utility.lua +12 -0
  157. package/engine/lightning.d.ts +12 -5
  158. package/engine/lightning.lua +52 -18
  159. package/engine/local-client.d.ts +28 -0
  160. package/engine/local-client.lua +324 -54
  161. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  162. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  163. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  164. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  165. package/engine/object-data/auxiliary/attachment-preset.d.ts +14 -2
  166. package/engine/object-data/auxiliary/attachment-preset.lua +11 -3
  167. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  168. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  169. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  170. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  171. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  172. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  173. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  174. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  175. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  176. package/engine/object-data/auxiliary/item-class.lua +2 -0
  177. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  178. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  179. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  180. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  181. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  182. package/engine/object-data/auxiliary/order-type.lua +2 -0
  183. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  184. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  185. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  186. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  187. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  188. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  189. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  190. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  191. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  192. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  193. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  194. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  195. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  196. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  197. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  198. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  199. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  200. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  201. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  202. package/engine/object-data/entry/ability-type/barrage.d.ts +12 -0
  203. package/engine/object-data/entry/ability-type/barrage.lua +52 -0
  204. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  205. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  206. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  207. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  208. package/engine/object-data/entry/ability-type/blank-configurable.lua +14 -3
  209. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  210. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  211. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  212. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  213. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  214. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  215. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  216. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  217. package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
  218. package/engine/object-data/entry/ability-type/channel.lua +3 -3
  219. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  220. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  221. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  222. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  223. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  224. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  225. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  226. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  227. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  228. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  229. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  230. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  231. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  232. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  233. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  234. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  235. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  236. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  237. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  238. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  239. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  240. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  241. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  242. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  243. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  244. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  245. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  246. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  247. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  248. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  249. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  250. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  251. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  252. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  253. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  254. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  255. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  256. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  257. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  258. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  259. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  260. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  261. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  262. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  263. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  264. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  265. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  266. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  267. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  268. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  269. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  270. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  271. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  272. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  273. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  274. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  275. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  276. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  277. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  278. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  279. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  280. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  281. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  282. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  283. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  284. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  285. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  286. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  287. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  288. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  289. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  290. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  291. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  292. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  293. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  294. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  295. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  296. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  297. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  298. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  299. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  300. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  301. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  302. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  303. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  304. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  305. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  306. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  307. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  308. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  309. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  310. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  311. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  312. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  313. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  314. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  315. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  316. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  317. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  318. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  319. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  320. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  321. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  322. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  323. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  324. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  325. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  326. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  327. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  328. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  329. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  330. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  331. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  332. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  333. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  334. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  335. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  336. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  337. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  338. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  339. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  340. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  341. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  342. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  343. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  344. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  345. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  346. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  347. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  348. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  349. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  350. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  351. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  352. package/engine/object-data/entry/ability-type/web.lua +52 -0
  353. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  354. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  355. package/engine/object-data/entry/ability-type.d.ts +50 -21
  356. package/engine/object-data/entry/ability-type.lua +392 -47
  357. package/engine/object-data/entry/buff-type/applicable.lua +131 -139
  358. package/engine/object-data/entry/buff-type.d.ts +10 -12
  359. package/engine/object-data/entry/buff-type.lua +39 -29
  360. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  361. package/engine/object-data/entry/destructible-type.lua +181 -0
  362. package/engine/object-data/entry/item-type.d.ts +20 -3
  363. package/engine/object-data/entry/item-type.lua +99 -2
  364. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  365. package/engine/object-data/entry/lightning-type.lua +1 -1
  366. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  367. package/engine/object-data/entry/sound-preset.lua +140 -0
  368. package/engine/object-data/entry/unit-type.d.ts +81 -6
  369. package/engine/object-data/entry/unit-type.lua +606 -93
  370. package/engine/object-data/entry/upgrade.d.ts +2 -2
  371. package/engine/object-data/entry/upgrade.lua +4 -4
  372. package/engine/object-data/entry.d.ts +21 -14
  373. package/engine/object-data/entry.lua +68 -32
  374. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  375. package/engine/object-field/ability.d.ts +12 -6
  376. package/engine/object-field/ability.lua +10 -6
  377. package/engine/object-field/item.d.ts +22 -0
  378. package/engine/object-field/item.lua +118 -0
  379. package/engine/object-field/unit.d.ts +72 -3
  380. package/engine/object-field/unit.lua +268 -7
  381. package/engine/object-field.d.ts +26 -7
  382. package/engine/object-field.lua +362 -117
  383. package/engine/random.d.ts +10 -0
  384. package/engine/random.lua +21 -0
  385. package/engine/standard/entries/ability-type.d.ts +3102 -7
  386. package/engine/standard/entries/ability-type.lua +0 -6
  387. package/engine/standard/entries/buff-type.d.ts +48 -0
  388. package/engine/standard/entries/buff-type.lua +46 -0
  389. package/engine/standard/entries/item-type.d.ts +1299 -0
  390. package/engine/standard/entries/item-type.lua +2 -0
  391. package/engine/standard/entries/lightning-type.d.ts +42 -15
  392. package/engine/standard/entries/lightning-type.lua +0 -14
  393. package/engine/standard/entries/sound-preset.d.ts +10 -0
  394. package/engine/standard/entries/sound-preset.lua +10 -0
  395. package/engine/standard/entries/unit-type.d.ts +5 -0
  396. package/engine/standard/entries/unit-type.lua +5 -0
  397. package/engine/standard/fields/ability.d.ts +6 -4
  398. package/engine/standard/fields/ability.lua +6 -4
  399. package/engine/standard/fields/item.d.ts +4 -0
  400. package/engine/standard/fields/item.lua +6 -0
  401. package/engine/standard/fields/unit.d.ts +12 -0
  402. package/engine/standard/fields/unit.lua +20 -0
  403. package/engine/synchronization.d.ts +11 -0
  404. package/engine/synchronization.lua +77 -0
  405. package/engine/text-tag.d.ts +36 -2
  406. package/engine/text-tag.lua +250 -10
  407. package/engine/unit.d.ts +12 -1
  408. package/engine/unit.lua +12 -1
  409. package/event.d.ts +1 -1
  410. package/lualib_bundle.lua +1 -1
  411. package/math.d.ts +2 -0
  412. package/math.lua +14 -0
  413. package/net/socket.lua +1 -1
  414. package/network.lua +25 -1
  415. package/objutil/buff.lua +12 -11
  416. package/objutil/object.lua +1 -1
  417. package/objutil/unit.lua +8 -0
  418. package/operation.d.ts +8 -1
  419. package/operation.lua +38 -18
  420. package/package.json +3 -23
  421. package/patch-lua.lua +15 -0
  422. package/patch-lualib.lua +1 -1
  423. package/utility/arrays.d.ts +17 -2
  424. package/utility/arrays.lua +62 -3
  425. package/utility/callback-array.d.ts +17 -0
  426. package/utility/callback-array.lua +61 -0
  427. package/utility/functions.d.ts +8 -0
  428. package/utility/functions.lua +13 -0
  429. package/utility/lazy.d.ts +2 -0
  430. package/utility/lazy.lua +14 -0
  431. package/utility/linked-map.d.ts +35 -0
  432. package/utility/linked-map.lua +107 -0
  433. package/utility/linked-set.d.ts +5 -1
  434. package/utility/linked-set.lua +49 -1
  435. package/utility/lua-maps.d.ts +15 -2
  436. package/utility/lua-maps.lua +53 -2
  437. package/utility/lua-sets.d.ts +2 -0
  438. package/utility/lua-sets.lua +7 -0
  439. package/utility/random.d.ts +102 -0
  440. package/utility/random.lua +273 -0
  441. package/utility/records.lua +20 -1
  442. package/utility/reflection.lua +11 -7
  443. package/utility/types.d.ts +3 -0
  444. package/utility/unordered-map.d.ts +27 -0
  445. package/utility/unordered-map.lua +99 -0
  446. package/core/types/order.d.ts +0 -25
  447. package/core/types/order.lua +0 -55
  448. package/engine/internal/unit/item.lua +0 -84
  449. /package/engine/internal/{object-data/armor-increase.d.ts → misc/ability-disable-counter.d.ts} +0 -0
  450. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  451. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  452. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -4,23 +4,33 @@ import { Ability } from "../../internal/ability";
4
4
  import { Unit } from "../../internal/unit";
5
5
  import { AbilityDependentValue } from "../../object-field/ability";
6
6
  import { Widget } from "../../../core/types/widget";
7
- import { AttackType, DamageType, WeaponType } from "../../internal/unit+damage";
7
+ import { DamageType, WeaponType } from "../../internal/unit+damage";
8
+ import "../../internal/unit+damage";
9
+ import { CombatClassifications } from "../../object-data/auxiliary/combat-classification";
10
+ import { AttackType } from "../../object-data/auxiliary/attack-type";
8
11
  export type DamageAbilityBehaviorParameters = {
9
12
  damagePerStrength?: AbilityDependentValue<number>;
10
13
  damagePerAgility?: AbilityDependentValue<number>;
11
14
  damagePerIntelligence?: AbilityDependentValue<number>;
12
- attackType?: AttackType;
15
+ attackType?: AbilityDependentValue<AttackType>;
13
16
  damageType?: DamageType;
14
17
  weaponType?: WeaponType;
18
+ metadata?: AbilityDependentValue<string | number | boolean>;
15
19
  };
16
20
  export type DamageAreaAbilityBehaviorParameters = DamageAbilityBehaviorParameters & {
17
21
  maximumDamage?: AbilityDependentValue<number>;
22
+ areaOfEffect?: AbilityDependentValue<number>;
23
+ allowedTargetCombatClassifications?: AbilityDependentValue<CombatClassifications>;
18
24
  };
19
- declare abstract class DamageAbilityBehavior<T extends DamageAbilityBehaviorParameters = DamageAbilityBehaviorParameters> extends AbilityBehavior {
25
+ export declare abstract class DamageAbilityBehavior<T extends DamageAbilityBehaviorParameters = DamageAbilityBehaviorParameters> extends AbilityBehavior {
20
26
  protected readonly damage: AbilityDependentValue<number>;
21
27
  protected readonly parameters?: T | undefined;
22
28
  protected constructor(ability: Ability, damage: AbilityDependentValue<number>, parameters?: T | undefined);
29
+ protected precalculatedDamage?: number;
23
30
  protected calculateDamage(caster: Unit): number;
31
+ protected damageTarget(caster: Unit, target: Widget, damage?: number): void;
32
+ onChannelingStart(caster: Unit): void;
33
+ onStop(): void;
24
34
  }
25
35
  export declare class DamageSelfAbilityBehavior extends DamageAbilityBehavior {
26
36
  constructor(ability: Ability, damage: AbilityDependentValue<number>, parameters?: DamageAbilityBehaviorParameters);
@@ -4,12 +4,12 @@ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
4
  local ____exports = {}
5
5
  local ____ability = require("engine.behaviour.ability")
6
6
  local AbilityBehavior = ____ability.AbilityBehavior
7
- local ____unit = require("engine.internal.unit")
8
- local Unit = ____unit.Unit
9
7
  local ____ability = require("engine.standard.fields.ability")
10
8
  local ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD = ____ability.ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD
11
9
  local AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD = ____ability.AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD
12
- local DamageAbilityBehavior = __TS__Class()
10
+ require("engine.internal.unit+damage")
11
+ ____exports.DamageAbilityBehavior = __TS__Class()
12
+ local DamageAbilityBehavior = ____exports.DamageAbilityBehavior
13
13
  DamageAbilityBehavior.name = "DamageAbilityBehavior"
14
14
  __TS__ClassExtends(DamageAbilityBehavior, AbilityBehavior)
15
15
  function DamageAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
@@ -34,75 +34,67 @@ function DamageAbilityBehavior.prototype.calculateDamage(self, caster)
34
34
  end
35
35
  return damage
36
36
  end
37
- ____exports.DamageSelfAbilityBehavior = __TS__Class()
38
- local DamageSelfAbilityBehavior = ____exports.DamageSelfAbilityBehavior
39
- DamageSelfAbilityBehavior.name = "DamageSelfAbilityBehavior"
40
- __TS__ClassExtends(DamageSelfAbilityBehavior, DamageAbilityBehavior)
41
- function DamageSelfAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
42
- DamageAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
43
- end
44
- function DamageSelfAbilityBehavior.prototype.onImpact(self, caster)
37
+ function DamageAbilityBehavior.prototype.damageTarget(self, caster, target, damage)
45
38
  local parameters = self.parameters
46
39
  caster:damageTarget(
47
- caster,
48
- self:calculateDamage(caster),
40
+ target,
41
+ damage or self.precalculatedDamage or self:calculateDamage(caster),
49
42
  nil,
50
43
  nil,
51
- parameters and parameters.attackType,
44
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.attackType),
52
45
  parameters and parameters.damageType,
53
- parameters and parameters.weaponType
46
+ parameters and parameters.weaponType,
47
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.metadata)
54
48
  )
55
49
  end
50
+ function DamageAbilityBehavior.prototype.onChannelingStart(self, caster)
51
+ self.precalculatedDamage = self:calculateDamage(caster)
52
+ end
53
+ function DamageAbilityBehavior.prototype.onStop(self)
54
+ self.precalculatedDamage = nil
55
+ end
56
+ ____exports.DamageSelfAbilityBehavior = __TS__Class()
57
+ local DamageSelfAbilityBehavior = ____exports.DamageSelfAbilityBehavior
58
+ DamageSelfAbilityBehavior.name = "DamageSelfAbilityBehavior"
59
+ __TS__ClassExtends(DamageSelfAbilityBehavior, ____exports.DamageAbilityBehavior)
60
+ function DamageSelfAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
61
+ DamageSelfAbilityBehavior.____super.prototype.____constructor(self, ability, damage, parameters)
62
+ end
63
+ function DamageSelfAbilityBehavior.prototype.onImpact(self, caster)
64
+ self:damageTarget(caster, caster)
65
+ end
56
66
  ____exports.DamageTargetAbilityBehavior = __TS__Class()
57
67
  local DamageTargetAbilityBehavior = ____exports.DamageTargetAbilityBehavior
58
68
  DamageTargetAbilityBehavior.name = "DamageTargetAbilityBehavior"
59
- __TS__ClassExtends(DamageTargetAbilityBehavior, DamageAbilityBehavior)
69
+ __TS__ClassExtends(DamageTargetAbilityBehavior, ____exports.DamageAbilityBehavior)
60
70
  function DamageTargetAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
61
- DamageAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
71
+ DamageTargetAbilityBehavior.____super.prototype.____constructor(self, ability, damage, parameters)
62
72
  end
63
73
  function DamageTargetAbilityBehavior.prototype.onWidgetTargetImpact(self, caster, target)
64
- local parameters = self.parameters
65
- caster:damageTarget(
66
- target,
67
- self:calculateDamage(caster),
68
- nil,
69
- nil,
70
- parameters and parameters.attackType,
71
- parameters and parameters.damageType,
72
- parameters and parameters.weaponType
73
- )
74
+ self:damageTarget(caster, target)
74
75
  end
75
76
  local DamageAreaAbilityBehavior = __TS__Class()
76
77
  DamageAreaAbilityBehavior.name = "DamageAreaAbilityBehavior"
77
- __TS__ClassExtends(DamageAreaAbilityBehavior, DamageAbilityBehavior)
78
+ __TS__ClassExtends(DamageAreaAbilityBehavior, ____exports.DamageAbilityBehavior)
78
79
  function DamageAreaAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
79
- DamageAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
80
+ DamageAreaAbilityBehavior.____super.prototype.____constructor(self, ability, damage, parameters)
80
81
  end
81
82
  function DamageAreaAbilityBehavior.prototype.damageArea(self, caster, x, y)
82
83
  local parameters = self.parameters
83
- local targets = Unit.getAllowedTargetsInCollisionRange(
84
- caster,
85
- self:resolveCurrentAbilityDependentValue(ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD),
84
+ caster:damageArea(
86
85
  x,
87
86
  y,
88
- self:resolveCurrentAbilityDependentValue(AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD)
87
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.areaOfEffect or AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD),
88
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.allowedTargetCombatClassifications or ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD),
89
+ self.precalculatedDamage or self:calculateDamage(caster),
90
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.maximumDamage or 0),
91
+ nil,
92
+ nil,
93
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.attackType),
94
+ parameters and parameters.damageType,
95
+ parameters and parameters.weaponType,
96
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.metadata)
89
97
  )
90
- local damage = self:calculateDamage(caster)
91
- local maximumDamage = self:resolveCurrentAbilityDependentValue(parameters and parameters.maximumDamage or 0)
92
- if maximumDamage ~= 0 and damage > maximumDamage then
93
- damage = maximumDamage / #targets
94
- end
95
- for ____, target in ipairs(targets) do
96
- caster:damageTarget(
97
- target,
98
- damage,
99
- nil,
100
- nil,
101
- parameters and parameters.attackType,
102
- parameters and parameters.damageType,
103
- parameters and parameters.weaponType
104
- )
105
- end
106
98
  end
107
99
  ____exports.DamageSelfAreaAbilityBehavior = __TS__Class()
108
100
  local DamageSelfAreaAbilityBehavior = ____exports.DamageSelfAreaAbilityBehavior
@@ -0,0 +1,20 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityBehavior } from "../ability";
3
+ import { Unit } from "../../internal/unit";
4
+ import { Item } from "../../internal/item";
5
+ import { Destructable } from "../../../core/types/destructable";
6
+ export declare abstract class EmulateImpactAbilityBehavior extends AbilityBehavior {
7
+ /**
8
+ * Pays the cost of the cast and invokes only the common impact event: for impacts
9
+ * that have no cast target to report, such as ones triggered by a command.
10
+ */
11
+ protected emulateImpact(caster: Unit): boolean;
12
+ protected emulateUnitTargetImpact(caster: Unit, target: Unit): boolean;
13
+ protected emulateItemTargetImpact(caster: Unit, target: Item): boolean;
14
+ protected emulateDestructibleTargetImpact(caster: Unit, target: Destructable): boolean;
15
+ protected emulatePointTargetImpact(caster: Unit, x: number, y: number): boolean;
16
+ protected emulateNoTargetImpact(caster: Unit): boolean;
17
+ /** Invokes the common impact event and the one matching the target, as a real impact. */
18
+ private emulateTargetImpact;
19
+ private payEmulatedImpact;
20
+ }
@@ -0,0 +1,117 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
5
+ local ____exports = {}
6
+ local ____ability = require("engine.behaviour.ability")
7
+ local AbilityBehavior = ____ability.AbilityBehavior
8
+ local ____unit = require("engine.internal.unit")
9
+ local Unit = ____unit.Unit
10
+ local ____ability = require("engine.standard.fields.ability")
11
+ local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
12
+ local MANA_COST_ABILITY_INTEGER_LEVEL_FIELD = ____ability.MANA_COST_ABILITY_INTEGER_LEVEL_FIELD
13
+ local ____sound = require("core.types.sound")
14
+ local Sound3D = ____sound.Sound3D
15
+ local SoundSettings = ____sound.SoundSettings
16
+ local ____ability = require("engine.internal.ability")
17
+ local UnitAbility = ____ability.UnitAbility
18
+ local ____event = require("event")
19
+ local Event = ____event.Event
20
+ local ____ability = require("engine.internal.unit.ability")
21
+ local emulateAbilityImpactEvent = ____ability.emulateAbilityImpactEvent
22
+ ____exports.EmulateImpactAbilityBehavior = __TS__Class()
23
+ local EmulateImpactAbilityBehavior = ____exports.EmulateImpactAbilityBehavior
24
+ EmulateImpactAbilityBehavior.name = "EmulateImpactAbilityBehavior"
25
+ __TS__ClassExtends(EmulateImpactAbilityBehavior, AbilityBehavior)
26
+ function EmulateImpactAbilityBehavior.prototype.emulateImpact(self, caster)
27
+ if not self:payEmulatedImpact(caster) then
28
+ return false
29
+ end
30
+ Event.invoke(Unit.abilityImpactEvent, caster, self.ability)
31
+ return true
32
+ end
33
+ function EmulateImpactAbilityBehavior.prototype.emulateUnitTargetImpact(self, caster, target)
34
+ return self:emulateTargetImpact(
35
+ caster,
36
+ target,
37
+ nil,
38
+ nil,
39
+ target.x,
40
+ target.y
41
+ )
42
+ end
43
+ function EmulateImpactAbilityBehavior.prototype.emulateItemTargetImpact(self, caster, target)
44
+ return self:emulateTargetImpact(
45
+ caster,
46
+ nil,
47
+ target,
48
+ nil,
49
+ target.x,
50
+ target.y
51
+ )
52
+ end
53
+ function EmulateImpactAbilityBehavior.prototype.emulateDestructibleTargetImpact(self, caster, target)
54
+ return self:emulateTargetImpact(
55
+ caster,
56
+ nil,
57
+ nil,
58
+ target,
59
+ target.x,
60
+ target.y
61
+ )
62
+ end
63
+ function EmulateImpactAbilityBehavior.prototype.emulatePointTargetImpact(self, caster, x, y)
64
+ return self:emulateTargetImpact(
65
+ caster,
66
+ nil,
67
+ nil,
68
+ nil,
69
+ x,
70
+ y
71
+ )
72
+ end
73
+ function EmulateImpactAbilityBehavior.prototype.emulateNoTargetImpact(self, caster)
74
+ return self:emulateTargetImpact(
75
+ caster,
76
+ nil,
77
+ nil,
78
+ nil,
79
+ 0,
80
+ 0
81
+ )
82
+ end
83
+ function EmulateImpactAbilityBehavior.prototype.emulateTargetImpact(self, caster, targetUnit, targetItem, targetDestructible, x, y)
84
+ if not self:payEmulatedImpact(caster) then
85
+ return false
86
+ end
87
+ emulateAbilityImpactEvent(
88
+ caster,
89
+ self.ability,
90
+ targetUnit,
91
+ targetItem,
92
+ targetDestructible,
93
+ x,
94
+ y
95
+ )
96
+ return true
97
+ end
98
+ function EmulateImpactAbilityBehavior.prototype.payEmulatedImpact(self, caster)
99
+ local manaCost = self:resolveCurrentAbilityDependentValue(MANA_COST_ABILITY_INTEGER_LEVEL_FIELD)
100
+ local cooldown = self:resolveCurrentAbilityDependentValue(COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD)
101
+ if self.ability.cooldownRemaining ~= 0 or caster.mana < manaCost or __TS__InstanceOf(self.ability, UnitAbility) and self.ability.isDisabled then
102
+ return false
103
+ end
104
+ caster.mana = caster.mana - manaCost
105
+ if cooldown == 0 then
106
+ self.ability:interruptCast()
107
+ else
108
+ self.ability:startCooldown(cooldown)
109
+ end
110
+ self:flashCasterEffect(caster)
111
+ local soundPresetId = self.ability:getField(ABILITY_SF_EFFECT_SOUND)
112
+ if soundPresetId ~= "" then
113
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, caster)
114
+ end
115
+ return true
116
+ end
117
+ return ____exports
@@ -1,6 +1,17 @@
1
1
  /** @noSelfInFile */
2
- import { AbilityBehavior } from "../ability";
3
2
  import { Unit } from "../../internal/unit";
4
- export declare class InstantImpactAbilityBehavior extends AbilityBehavior {
5
- onCastingStart(caster: Unit): void;
3
+ import { Item } from "../../internal/item";
4
+ import { Destructable } from "../../../core/types/destructable";
5
+ import { EmulateImpactAbilityBehavior } from "./emulate-impact";
6
+ /**
7
+ * Makes the ability take effect as soon as its cast starts, skipping the cast animation:
8
+ * the impact events fire with the cast's target, so target-specific impact handlers
9
+ * (`onPointTargetImpact`, `onUnitTargetImpact`, ...) work as with a native impact.
10
+ */
11
+ export declare class InstantImpactAbilityBehavior extends EmulateImpactAbilityBehavior {
12
+ onUnitTargetCastingStart(caster: Unit, target: Unit): void;
13
+ onItemTargetCastingStart(caster: Unit, target: Item): void;
14
+ onDestructibleTargetCastingStart(caster: Unit, target: Destructable): void;
15
+ onPointTargetCastingStart(caster: Unit, x: number, y: number): void;
16
+ onNoTargetCastingStart(caster: Unit): void;
6
17
  }
@@ -2,28 +2,28 @@ local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
4
  local ____exports = {}
5
- local ____ability = require("engine.behaviour.ability")
6
- local AbilityBehavior = ____ability.AbilityBehavior
7
- local ____ability = require("engine.standard.fields.ability")
8
- local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
9
- local MANA_COST_ABILITY_INTEGER_LEVEL_FIELD = ____ability.MANA_COST_ABILITY_INTEGER_LEVEL_FIELD
5
+ local ____emulate_2Dimpact = require("engine.behaviour.ability.emulate-impact")
6
+ local EmulateImpactAbilityBehavior = ____emulate_2Dimpact.EmulateImpactAbilityBehavior
7
+ --- Makes the ability take effect as soon as its cast starts, skipping the cast animation:
8
+ -- the impact events fire with the cast's target, so target-specific impact handlers
9
+ -- (`onPointTargetImpact`, `onUnitTargetImpact`, ...) work as with a native impact.
10
10
  ____exports.InstantImpactAbilityBehavior = __TS__Class()
11
11
  local InstantImpactAbilityBehavior = ____exports.InstantImpactAbilityBehavior
12
12
  InstantImpactAbilityBehavior.name = "InstantImpactAbilityBehavior"
13
- __TS__ClassExtends(InstantImpactAbilityBehavior, AbilityBehavior)
14
- function InstantImpactAbilityBehavior.prototype.onCastingStart(self, caster)
15
- local abilityTypeId = self.ability.typeId
16
- local manaCost = self:resolveCurrentAbilityDependentValue(MANA_COST_ABILITY_INTEGER_LEVEL_FIELD)
17
- local cooldown = self:resolveCurrentAbilityDependentValue(COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD)
18
- if caster:getAbilityRemainingCooldown(abilityTypeId) ~= 0 or caster.mana < manaCost then
19
- return
20
- end
21
- caster.mana = caster.mana - manaCost
22
- if cooldown == 0 then
23
- caster:interruptCast(self.ability.typeId)
24
- else
25
- caster:startAbilityCooldown(self.ability.typeId, cooldown)
26
- end
27
- AbilityBehavior:forAll(self.ability, "onImpact", caster)
13
+ __TS__ClassExtends(InstantImpactAbilityBehavior, EmulateImpactAbilityBehavior)
14
+ function InstantImpactAbilityBehavior.prototype.onUnitTargetCastingStart(self, caster, target)
15
+ self:emulateUnitTargetImpact(caster, target)
16
+ end
17
+ function InstantImpactAbilityBehavior.prototype.onItemTargetCastingStart(self, caster, target)
18
+ self:emulateItemTargetImpact(caster, target)
19
+ end
20
+ function InstantImpactAbilityBehavior.prototype.onDestructibleTargetCastingStart(self, caster, target)
21
+ self:emulateDestructibleTargetImpact(caster, target)
22
+ end
23
+ function InstantImpactAbilityBehavior.prototype.onPointTargetCastingStart(self, caster, x, y)
24
+ self:emulatePointTargetImpact(caster, x, y)
25
+ end
26
+ function InstantImpactAbilityBehavior.prototype.onNoTargetCastingStart(self, caster)
27
+ self:emulateNoTargetImpact(caster)
28
28
  end
29
29
  return ____exports
@@ -0,0 +1,9 @@
1
+ /** @noSelfInFile */
2
+ import { Unit } from "../../internal/unit";
3
+ import "../../internal/unit/item-order-events";
4
+ import { EmulateImpactAbilityBehavior } from "./emulate-impact";
5
+ import { Ability } from "../../internal/ability";
6
+ export declare class OnCommandImpactAbilityBehavior extends EmulateImpactAbilityBehavior {
7
+ constructor(ability: Ability);
8
+ onCommand(caster: Unit): void;
9
+ }
@@ -0,0 +1,26 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local ____exports = {}
5
+ local ____unit = require("engine.internal.unit")
6
+ local Unit = ____unit.Unit
7
+ require("engine.internal.unit.item-order-events")
8
+ local ____emulate_2Dimpact = require("engine.behaviour.ability.emulate-impact")
9
+ local EmulateImpactAbilityBehavior = ____emulate_2Dimpact.EmulateImpactAbilityBehavior
10
+ ____exports.OnCommandImpactAbilityBehavior = __TS__Class()
11
+ local OnCommandImpactAbilityBehavior = ____exports.OnCommandImpactAbilityBehavior
12
+ OnCommandImpactAbilityBehavior.name = "OnCommandImpactAbilityBehavior"
13
+ __TS__ClassExtends(OnCommandImpactAbilityBehavior, EmulateImpactAbilityBehavior)
14
+ function OnCommandImpactAbilityBehavior.prototype.____constructor(self, ability)
15
+ EmulateImpactAbilityBehavior.prototype.____constructor(self, ability)
16
+ self:registerCommandEvent()
17
+ end
18
+ function OnCommandImpactAbilityBehavior.prototype.onCommand(self, caster)
19
+ self:emulateImpact(caster)
20
+ end
21
+ Unit.itemUseOrderEvent:addListener(function(unit, item)
22
+ for ____, ability in ipairs(item.abilities) do
23
+ ____exports.OnCommandImpactAbilityBehavior:forAll(ability, "onCommand", unit)
24
+ end
25
+ end)
26
+ return ____exports
@@ -0,0 +1,25 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityBehavior } from "../ability";
3
+ import { Unit } from "../../internal/unit";
4
+ import { Ability } from "../../internal/ability";
5
+ import { AbilityDependentValue } from "../../object-field/ability";
6
+ import { BuffPolarity } from "../../object-data/auxiliary/buff-polarity";
7
+ import { BuffResistanceType } from "../../object-data/auxiliary/buff-resistance-type";
8
+ export declare class RemoveBuffsSelfAbilityBehavior extends AbilityBehavior {
9
+ private readonly polarity?;
10
+ private readonly resistanceType?;
11
+ private readonly includeExpirationTimers?;
12
+ private readonly includeAuras?;
13
+ private readonly autoDispel?;
14
+ constructor(ability: Ability, polarity?: AbilityDependentValue<BuffPolarity> | undefined, resistanceType?: AbilityDependentValue<BuffResistanceType> | undefined, includeExpirationTimers?: AbilityDependentValue<boolean> | undefined, includeAuras?: AbilityDependentValue<boolean> | undefined, autoDispel?: AbilityDependentValue<boolean> | undefined);
15
+ onImpact(caster: Unit): void;
16
+ }
17
+ export declare class RemoveBuffsTargetAbilityBehavior extends AbilityBehavior {
18
+ private readonly polarity?;
19
+ private readonly resistanceType?;
20
+ private readonly includeExpirationTimers?;
21
+ private readonly includeAuras?;
22
+ private readonly autoDispel?;
23
+ constructor(ability: Ability, polarity?: AbilityDependentValue<BuffPolarity> | undefined, resistanceType?: AbilityDependentValue<BuffResistanceType> | undefined, includeExpirationTimers?: AbilityDependentValue<boolean> | undefined, includeAuras?: AbilityDependentValue<boolean> | undefined, autoDispel?: AbilityDependentValue<boolean> | undefined);
24
+ onUnitTargetImpact(_: Unit, target: Unit): void;
25
+ }
@@ -0,0 +1,49 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local ____exports = {}
5
+ local ____ability = require("engine.behaviour.ability")
6
+ local AbilityBehavior = ____ability.AbilityBehavior
7
+ ____exports.RemoveBuffsSelfAbilityBehavior = __TS__Class()
8
+ local RemoveBuffsSelfAbilityBehavior = ____exports.RemoveBuffsSelfAbilityBehavior
9
+ RemoveBuffsSelfAbilityBehavior.name = "RemoveBuffsSelfAbilityBehavior"
10
+ __TS__ClassExtends(RemoveBuffsSelfAbilityBehavior, AbilityBehavior)
11
+ function RemoveBuffsSelfAbilityBehavior.prototype.____constructor(self, ability, polarity, resistanceType, includeExpirationTimers, includeAuras, autoDispel)
12
+ AbilityBehavior.prototype.____constructor(self, ability)
13
+ self.polarity = polarity
14
+ self.resistanceType = resistanceType
15
+ self.includeExpirationTimers = includeExpirationTimers
16
+ self.includeAuras = includeAuras
17
+ self.autoDispel = autoDispel
18
+ end
19
+ function RemoveBuffsSelfAbilityBehavior.prototype.onImpact(self, caster)
20
+ caster:removeBuffs(
21
+ self:resolveCurrentAbilityDependentValue(self.polarity),
22
+ self:resolveCurrentAbilityDependentValue(self.resistanceType),
23
+ self:resolveCurrentAbilityDependentValue(self.includeExpirationTimers),
24
+ self:resolveCurrentAbilityDependentValue(self.includeAuras),
25
+ self:resolveCurrentAbilityDependentValue(self.autoDispel)
26
+ )
27
+ end
28
+ ____exports.RemoveBuffsTargetAbilityBehavior = __TS__Class()
29
+ local RemoveBuffsTargetAbilityBehavior = ____exports.RemoveBuffsTargetAbilityBehavior
30
+ RemoveBuffsTargetAbilityBehavior.name = "RemoveBuffsTargetAbilityBehavior"
31
+ __TS__ClassExtends(RemoveBuffsTargetAbilityBehavior, AbilityBehavior)
32
+ function RemoveBuffsTargetAbilityBehavior.prototype.____constructor(self, ability, polarity, resistanceType, includeExpirationTimers, includeAuras, autoDispel)
33
+ AbilityBehavior.prototype.____constructor(self, ability)
34
+ self.polarity = polarity
35
+ self.resistanceType = resistanceType
36
+ self.includeExpirationTimers = includeExpirationTimers
37
+ self.includeAuras = includeAuras
38
+ self.autoDispel = autoDispel
39
+ end
40
+ function RemoveBuffsTargetAbilityBehavior.prototype.onUnitTargetImpact(self, _, target)
41
+ target:removeBuffs(
42
+ self:resolveCurrentAbilityDependentValue(self.polarity),
43
+ self:resolveCurrentAbilityDependentValue(self.resistanceType),
44
+ self:resolveCurrentAbilityDependentValue(self.includeExpirationTimers),
45
+ self:resolveCurrentAbilityDependentValue(self.includeAuras),
46
+ self:resolveCurrentAbilityDependentValue(self.autoDispel)
47
+ )
48
+ end
49
+ return ____exports
@@ -8,7 +8,7 @@ export declare class RestoreManaSelfAbilityBehavior extends AbilityBehavior {
8
8
  constructor(ability: Ability, mana: AbilityDependentValue<number>);
9
9
  onImpact(caster: Unit): void;
10
10
  }
11
- export declare class RestoreManaAbilityBehavior extends AbilityBehavior {
11
+ export declare class RestoreManaTargetAbilityBehavior extends AbilityBehavior {
12
12
  private readonly mana;
13
13
  constructor(ability: Ability, mana: AbilityDependentValue<number>);
14
14
  onUnitTargetImpact(caster: Unit, target: Unit): void;
@@ -15,15 +15,15 @@ end
15
15
  function RestoreManaSelfAbilityBehavior.prototype.onImpact(self, caster)
16
16
  caster.mana = caster.mana + self:resolveCurrentAbilityDependentValue(self.mana)
17
17
  end
18
- ____exports.RestoreManaAbilityBehavior = __TS__Class()
19
- local RestoreManaAbilityBehavior = ____exports.RestoreManaAbilityBehavior
20
- RestoreManaAbilityBehavior.name = "RestoreManaAbilityBehavior"
21
- __TS__ClassExtends(RestoreManaAbilityBehavior, AbilityBehavior)
22
- function RestoreManaAbilityBehavior.prototype.____constructor(self, ability, mana)
18
+ ____exports.RestoreManaTargetAbilityBehavior = __TS__Class()
19
+ local RestoreManaTargetAbilityBehavior = ____exports.RestoreManaTargetAbilityBehavior
20
+ RestoreManaTargetAbilityBehavior.name = "RestoreManaTargetAbilityBehavior"
21
+ __TS__ClassExtends(RestoreManaTargetAbilityBehavior, AbilityBehavior)
22
+ function RestoreManaTargetAbilityBehavior.prototype.____constructor(self, ability, mana)
23
23
  AbilityBehavior.prototype.____constructor(self, ability)
24
24
  self.mana = mana
25
25
  end
26
- function RestoreManaAbilityBehavior.prototype.onUnitTargetImpact(self, caster, target)
26
+ function RestoreManaTargetAbilityBehavior.prototype.onUnitTargetImpact(self, caster, target)
27
27
  target.mana = target.mana + self:resolveCurrentAbilityDependentValue(self.mana)
28
28
  end
29
29
  return ____exports
@@ -1,31 +1,60 @@
1
1
  /** @noSelfInFile */
2
2
  import { Behavior } from "../behavior";
3
- import { Unit } from "../unit";
3
+ import { Unit } from "../internal/unit";
4
+ import "../internal/unit/ability";
5
+ import "../internal/unit+ability";
4
6
  import { Ability } from "../internal/ability";
5
7
  import { AbilityTypeId } from "../object-data/entry/ability-type";
6
8
  import { Widget } from "../../core/types/widget";
7
9
  import { Item } from "../internal/item";
8
10
  import { Destructable } from "../../core/types/destructable";
9
11
  import { EffectParameters } from "../../core/types/effect";
10
- import { AbilityDependentValue } from "../object-field/ability";
12
+ import { AbilityDependentValue, ReadonlySubscribableAbilityDependentValue, SubscribableAbilityDependentValue } from "../object-field/ability";
13
+ import { Destructor } from "../../destroyable";
11
14
  export type AbilityBehaviorConstructor<Args extends any[]> = new (ability: Ability, ...args: Args) => AbilityBehavior;
15
+ export type AbilityBehaviorParameters = {
16
+ isExclusiveOnImpactHandler?: boolean;
17
+ };
12
18
  export declare abstract class AbilityBehavior<Parameters extends {
13
19
  periodicActionParameters?: any[];
14
20
  missileParameters?: any[];
15
21
  } = {}> extends Behavior<Ability, NonNullable<Parameters["periodicActionParameters"]>> {
16
- constructor(ability: Ability);
22
+ constructor(ability: Ability, parameters?: AbilityBehaviorParameters);
23
+ protected onDestroy(): Destructor;
24
+ protected subscribe<T extends boolean | number | string>(value: SubscribableAbilityDependentValue<T>): void;
25
+ protected registerCommandEvent(orderTypeStringId?: string): void;
17
26
  get ability(): Ability;
27
+ get unit(): Unit | undefined;
18
28
  protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value: AbilityDependentValue<T>): T;
19
- protected flashAreaEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
20
- protected flashEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
21
- protected flashSpecialEffect(...args: [...pointOrWidget: [x: number, y: number] | [widget: Widget], duration?: number]): void;
29
+ protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value?: AbilityDependentValue<T>): T | undefined;
30
+ protected getDuration(widget: Widget): number;
31
+ flashCasterEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
32
+ flashTargetEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
33
+ flashAreaEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
34
+ flashEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
35
+ flashSpecialEffect(...args: [
36
+ ...pointOrWidget: [x: number, y: number] | [widget: Widget],
37
+ ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]
38
+ ]): void;
22
39
  private static MissileLaunchConfig;
23
40
  private get missileLaunchConfig();
24
- protected launchMissile(source: Unit, target: Unit, ...parameters: NonNullable<Parameters["missileParameters"]>): void;
41
+ protected launchMissile(source: Unit, ...args: [
42
+ ...pointOrWidget: [x: number, y: number] | [widget: Unit /** TODO: support Widget */],
43
+ ...parameters: NonNullable<Parameters["missileParameters"]>
44
+ ]): void;
45
+ protected onCreate(): void;
46
+ onValueChange(_value: ReadonlySubscribableAbilityDependentValue<string | number | boolean>): void;
25
47
  onMissileArrival(...parameters: NonNullable<Parameters["missileParameters"]>): void;
26
48
  onUnitGainAbility(_unit: Unit): void;
27
49
  onUnitLoseAbility(_unit: Unit): void;
50
+ onCommand(caster: Unit, orderTypeStringId: string): void;
28
51
  onCastingStart(caster: Unit): void;
52
+ onWidgetTargetCastingStart(caster: Unit, target: Widget): void;
53
+ onUnitTargetCastingStart(caster: Unit, target: Unit): void;
54
+ onItemTargetCastingStart(caster: Unit, target: Item): void;
55
+ onDestructibleTargetCastingStart(caster: Unit, target: Destructable): void;
56
+ onPointTargetCastingStart(caster: Unit, x: number, y: number): void;
57
+ onNoTargetCastingStart(caster: Unit): void;
29
58
  onCastingFinish(caster: Unit): void;
30
59
  onChannelingStart(caster: Unit): void;
31
60
  onWidgetTargetChannelingStart(caster: Unit, target: Widget): void;