warscript 0.0.1-dev.9cbb1ff → 0.0.1-dev.9d07b64

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 (388) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/core/dummy.lua +4 -2
  4. package/core/types/effect.d.ts +11 -1
  5. package/core/types/effect.lua +43 -77
  6. package/core/types/frame.d.ts +16 -2
  7. package/core/types/frame.lua +141 -77
  8. package/core/types/handle.lua +9 -9
  9. package/core/types/item.d.ts +1 -0
  10. package/core/types/item.lua +1 -0
  11. package/core/types/player.d.ts +18 -1
  12. package/core/types/player.lua +76 -26
  13. package/core/types/playerCamera.d.ts +2 -0
  14. package/core/types/playerCamera.lua +123 -5
  15. package/core/types/playerColor.lua +4 -3
  16. package/core/types/sound.d.ts +1 -1
  17. package/core/types/sound.lua +14 -9
  18. package/core/types/tileCell.d.ts +18 -3
  19. package/core/types/tileCell.lua +108 -0
  20. package/core/types/timer.d.ts +3 -1
  21. package/core/types/timer.lua +27 -2
  22. package/core/types/unit.d.ts +5 -0
  23. package/core/types/unit.lua +5 -0
  24. package/core/util.d.ts +3 -1
  25. package/core/util.lua +109 -3
  26. package/decl/native.d.ts +1718 -964
  27. package/destroyable.d.ts +1 -0
  28. package/destroyable.lua +9 -0
  29. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  30. package/engine/ability-type-extended-tooltip.lua +44 -0
  31. package/engine/behavior.d.ts +14 -1
  32. package/engine/behavior.lua +230 -70
  33. package/engine/behaviour/ability/apply-buff.lua +5 -5
  34. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  35. package/engine/behaviour/ability/damage.d.ts +10 -3
  36. package/engine/behaviour/ability/damage.lua +41 -49
  37. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  38. package/engine/behaviour/ability/emulate-impact.lua +16 -7
  39. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  40. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  41. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  42. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  43. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  44. package/engine/behaviour/ability/restore-mana.lua +6 -6
  45. package/engine/behaviour/ability.d.ts +13 -6
  46. package/engine/behaviour/ability.lua +109 -25
  47. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  48. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  49. package/engine/behaviour/unit.d.ts +40 -3
  50. package/engine/behaviour/unit.lua +270 -6
  51. package/engine/buff.d.ts +114 -58
  52. package/engine/buff.lua +567 -303
  53. package/engine/index.d.ts +2 -1
  54. package/engine/internal/ability.d.ts +14 -1
  55. package/engine/internal/ability.lua +113 -44
  56. package/engine/internal/item/ability.lua +63 -11
  57. package/engine/internal/item/fields.d.ts +12 -0
  58. package/engine/internal/item/fields.lua +33 -0
  59. package/engine/internal/item/owner-cache.d.ts +5 -0
  60. package/engine/internal/item/owner-cache.lua +4 -0
  61. package/engine/internal/item+owner.d.ts +2 -0
  62. package/engine/internal/item+owner.lua +37 -8
  63. package/engine/internal/item.d.ts +32 -16
  64. package/engine/internal/item.lua +257 -82
  65. package/engine/internal/mechanics/cast-ability.lua +6 -3
  66. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  67. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  68. package/engine/internal/misc/frame-coordinates.lua +21 -0
  69. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  70. package/engine/internal/misc/get-terrain-z.lua +11 -0
  71. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  72. package/engine/internal/misc/player-local-handle.lua +5 -0
  73. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  74. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  75. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  76. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  77. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  78. package/engine/internal/object-data/health-bonus.lua +16 -0
  79. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  80. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  81. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  82. package/engine/internal/object-data/mana-bonus.lua +16 -0
  83. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  84. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  85. package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
  86. package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
  87. package/engine/internal/unit/ability.d.ts +35 -0
  88. package/engine/internal/unit/ability.lua +98 -9
  89. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  90. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  91. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  92. package/engine/internal/unit/allowed-targets.lua +9 -1
  93. package/engine/internal/unit/appearance.d.ts +15 -0
  94. package/engine/internal/unit/appearance.lua +85 -0
  95. package/engine/internal/unit/attributes.d.ts +17 -0
  96. package/engine/internal/unit/attributes.lua +46 -0
  97. package/engine/internal/unit/bonus.d.ts +17 -0
  98. package/engine/internal/unit/bonus.lua +113 -8
  99. package/engine/internal/unit/buff.d.ts +2 -2
  100. package/engine/internal/unit/buff.lua +34 -19
  101. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  102. package/engine/internal/unit/equipment-inventory.lua +233 -0
  103. package/engine/internal/unit/expiration-timer.lua +1 -1
  104. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  105. package/engine/internal/unit/extended-inventory.lua +99 -0
  106. package/engine/internal/unit/fly-height.d.ts +7 -0
  107. package/engine/internal/unit/fly-height.lua +20 -0
  108. package/engine/internal/unit/ignore-events-items.lua +10 -1
  109. package/engine/internal/unit/interrupts.d.ts +12 -0
  110. package/engine/internal/unit/interrupts.lua +28 -0
  111. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  112. package/engine/internal/unit/inventory.lua +87 -0
  113. package/engine/internal/unit/item-container.d.ts +25 -0
  114. package/engine/internal/unit/item-container.lua +11 -0
  115. package/engine/internal/unit/item-order-events.d.ts +17 -0
  116. package/engine/internal/unit/item-order-events.lua +67 -0
  117. package/engine/internal/unit/item-slot.d.ts +27 -0
  118. package/engine/internal/unit/item-slot.lua +92 -0
  119. package/engine/internal/unit/main-selected.lua +12 -27
  120. package/engine/internal/unit/order.d.ts +20 -0
  121. package/engine/internal/unit/order.lua +136 -0
  122. package/engine/internal/unit/range-event.d.ts +12 -0
  123. package/engine/internal/unit/range-event.lua +90 -0
  124. package/engine/internal/unit/scale.d.ts +7 -0
  125. package/engine/internal/unit/scale.lua +20 -0
  126. package/engine/internal/unit+ability.d.ts +2 -1
  127. package/engine/internal/unit+ability.lua +73 -3
  128. package/engine/internal/unit+bonus.lua +3 -3
  129. package/engine/internal/unit+damage.d.ts +11 -11
  130. package/engine/internal/unit+damage.lua +43 -14
  131. package/engine/internal/unit+rally.lua +9 -31
  132. package/engine/internal/unit+spellSteal.lua +1 -2
  133. package/engine/internal/unit-missile-data.lua +58 -32
  134. package/engine/internal/unit-missile-launch.lua +65 -27
  135. package/engine/internal/unit.d.ts +35 -36
  136. package/engine/internal/unit.lua +381 -336
  137. package/engine/local-client.d.ts +28 -0
  138. package/engine/local-client.lua +324 -54
  139. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  140. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  141. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  142. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  143. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  144. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  145. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  146. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  147. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  148. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  149. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  150. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  151. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  152. package/engine/object-data/auxiliary/item-class.lua +2 -0
  153. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  154. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  155. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  156. package/engine/object-data/auxiliary/order-type.lua +2 -0
  157. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  158. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  159. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  160. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  161. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  162. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  163. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  164. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  165. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  166. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  167. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  168. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  169. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  170. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  171. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  172. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  173. package/engine/object-data/entry/ability-type/blank-configurable.lua +2 -2
  174. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  175. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  176. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  177. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  178. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  179. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  180. package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
  181. package/engine/object-data/entry/ability-type/channel.lua +3 -3
  182. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  183. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  184. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  185. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  186. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  187. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  188. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  189. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  190. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  191. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  192. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  193. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  194. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  195. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  196. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  197. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  198. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  199. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  200. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  201. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  202. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  203. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  204. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  205. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  206. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  207. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  208. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  209. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  210. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  211. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  212. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  213. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  214. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  215. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  216. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  217. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  218. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  219. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  220. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  221. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  222. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  223. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  224. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  225. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  226. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  227. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  228. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  229. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  230. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  231. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  232. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  233. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  234. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  235. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  236. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  237. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  238. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  239. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  240. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  241. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  242. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  243. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  244. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  245. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  246. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  247. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  248. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  249. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  250. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  251. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  252. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  253. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  254. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  255. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  256. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  257. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  258. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  259. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  260. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  261. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  262. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  263. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  264. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  265. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  266. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  267. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  268. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  269. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  270. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  271. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  272. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  273. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  274. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  275. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  276. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  277. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  278. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  279. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  280. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  281. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  282. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  283. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  284. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  285. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  286. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  287. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  288. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  289. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  290. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  291. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  292. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  293. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  294. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  295. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  296. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  297. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  298. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  299. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  300. package/engine/object-data/entry/ability-type.d.ts +33 -8
  301. package/engine/object-data/entry/ability-type.lua +291 -15
  302. package/engine/object-data/entry/buff-type/applicable.lua +122 -111
  303. package/engine/object-data/entry/buff-type.d.ts +6 -2
  304. package/engine/object-data/entry/buff-type.lua +26 -0
  305. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  306. package/engine/object-data/entry/destructible-type.lua +181 -0
  307. package/engine/object-data/entry/item-type.d.ts +18 -3
  308. package/engine/object-data/entry/item-type.lua +84 -0
  309. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  310. package/engine/object-data/entry/lightning-type.lua +1 -1
  311. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  312. package/engine/object-data/entry/unit-type.d.ts +74 -6
  313. package/engine/object-data/entry/unit-type.lua +552 -98
  314. package/engine/object-data/entry/upgrade.d.ts +2 -2
  315. package/engine/object-data/entry.d.ts +6 -1
  316. package/engine/object-data/entry.lua +8 -0
  317. package/engine/object-field/ability.d.ts +4 -4
  318. package/engine/object-field/ability.lua +9 -8
  319. package/engine/object-field/item.d.ts +22 -0
  320. package/engine/object-field/item.lua +118 -0
  321. package/engine/object-field/unit.d.ts +72 -3
  322. package/engine/object-field/unit.lua +268 -7
  323. package/engine/object-field.d.ts +18 -7
  324. package/engine/object-field.lua +294 -135
  325. package/engine/random.d.ts +10 -0
  326. package/engine/random.lua +21 -0
  327. package/engine/standard/entries/ability-type.d.ts +3102 -7
  328. package/engine/standard/entries/ability-type.lua +0 -6
  329. package/engine/standard/entries/buff-type.d.ts +45 -0
  330. package/engine/standard/entries/buff-type.lua +43 -0
  331. package/engine/standard/entries/item-type.d.ts +1299 -0
  332. package/engine/standard/entries/item-type.lua +2 -0
  333. package/engine/standard/entries/lightning-type.d.ts +42 -15
  334. package/engine/standard/entries/lightning-type.lua +0 -14
  335. package/engine/standard/entries/unit-type.d.ts +5 -0
  336. package/engine/standard/entries/unit-type.lua +5 -0
  337. package/engine/standard/fields/ability.d.ts +4 -4
  338. package/engine/standard/fields/ability.lua +4 -4
  339. package/engine/standard/fields/item.d.ts +4 -0
  340. package/engine/standard/fields/item.lua +6 -0
  341. package/engine/standard/fields/unit.d.ts +12 -0
  342. package/engine/standard/fields/unit.lua +20 -0
  343. package/engine/synchronization.d.ts +11 -0
  344. package/engine/synchronization.lua +77 -0
  345. package/engine/text-tag.d.ts +36 -2
  346. package/engine/text-tag.lua +250 -10
  347. package/engine/unit.d.ts +11 -1
  348. package/engine/unit.lua +11 -1
  349. package/event.d.ts +1 -1
  350. package/lualib_bundle.lua +1 -1
  351. package/math.d.ts +2 -0
  352. package/math.lua +14 -0
  353. package/net/socket.lua +1 -1
  354. package/network.lua +25 -1
  355. package/objutil/buff.lua +12 -11
  356. package/objutil/object.lua +1 -1
  357. package/operation.d.ts +8 -1
  358. package/operation.lua +38 -18
  359. package/package.json +3 -23
  360. package/patch-lua.lua +15 -0
  361. package/patch-lualib.lua +1 -1
  362. package/utility/arrays.d.ts +9 -1
  363. package/utility/arrays.lua +28 -0
  364. package/utility/callback-array.d.ts +17 -0
  365. package/utility/callback-array.lua +61 -0
  366. package/utility/functions.d.ts +8 -0
  367. package/utility/functions.lua +13 -0
  368. package/utility/linked-map.d.ts +35 -0
  369. package/utility/linked-map.lua +107 -0
  370. package/utility/linked-set.d.ts +4 -1
  371. package/utility/linked-set.lua +46 -1
  372. package/utility/lua-maps.d.ts +12 -2
  373. package/utility/lua-maps.lua +37 -2
  374. package/utility/lua-sets.d.ts +1 -0
  375. package/utility/lua-sets.lua +4 -0
  376. package/utility/random.d.ts +102 -0
  377. package/utility/random.lua +273 -0
  378. package/utility/records.lua +20 -1
  379. package/utility/types.d.ts +3 -0
  380. package/utility/unordered-map.d.ts +27 -0
  381. package/utility/unordered-map.lua +99 -0
  382. package/core/types/order.d.ts +0 -25
  383. package/core/types/order.lua +0 -55
  384. package/engine/internal/unit/item.lua +0 -78
  385. /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
  386. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  387. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  388. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -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(parameters and parameters.allowedTargetCombatClassifications or ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD),
84
+ caster:damageArea(
86
85
  x,
87
86
  y,
88
- self:resolveCurrentAbilityDependentValue(parameters and parameters.areaOfEffect or 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
@@ -2,5 +2,5 @@
2
2
  import { AbilityBehavior } from "../ability";
3
3
  import { Unit } from "../../internal/unit";
4
4
  export declare abstract class EmulateImpactAbilityBehavior extends AbilityBehavior {
5
- protected emulateImpact(caster: Unit): void;
5
+ protected emulateImpact(caster: Unit): boolean;
6
6
  }
@@ -1,18 +1,22 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
4
5
  local ____exports = {}
5
6
  local ____ability = require("engine.behaviour.ability")
6
7
  local AbilityBehavior = ____ability.AbilityBehavior
8
+ local ____unit = require("engine.internal.unit")
9
+ local Unit = ____unit.Unit
7
10
  local ____ability = require("engine.standard.fields.ability")
8
11
  local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
9
12
  local MANA_COST_ABILITY_INTEGER_LEVEL_FIELD = ____ability.MANA_COST_ABILITY_INTEGER_LEVEL_FIELD
10
- local ____math = require("math")
11
- local max = ____math.max
12
- local MINIMUM_POSITIVE_NORMALIZED_FLOAT = ____math.MINIMUM_POSITIVE_NORMALIZED_FLOAT
13
13
  local ____sound = require("core.types.sound")
14
14
  local Sound3D = ____sound.Sound3D
15
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
16
20
  ____exports.EmulateImpactAbilityBehavior = __TS__Class()
17
21
  local EmulateImpactAbilityBehavior = ____exports.EmulateImpactAbilityBehavior
18
22
  EmulateImpactAbilityBehavior.name = "EmulateImpactAbilityBehavior"
@@ -20,16 +24,21 @@ __TS__ClassExtends(EmulateImpactAbilityBehavior, AbilityBehavior)
20
24
  function EmulateImpactAbilityBehavior.prototype.emulateImpact(self, caster)
21
25
  local manaCost = self:resolveCurrentAbilityDependentValue(MANA_COST_ABILITY_INTEGER_LEVEL_FIELD)
22
26
  local cooldown = self:resolveCurrentAbilityDependentValue(COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD)
23
- if self.ability.cooldownRemaining ~= 0 or caster.mana < manaCost then
24
- return
27
+ if self.ability.cooldownRemaining ~= 0 or caster.mana < manaCost or __TS__InstanceOf(self.ability, UnitAbility) and self.ability.isDisabled then
28
+ return false
25
29
  end
26
30
  caster.mana = caster.mana - manaCost
27
- self.ability.cooldownRemaining = max(cooldown, MINIMUM_POSITIVE_NORMALIZED_FLOAT)
31
+ if cooldown == 0 then
32
+ self.ability:interruptCast()
33
+ else
34
+ self.ability:startCooldown(cooldown)
35
+ end
28
36
  self:flashCasterEffect(caster)
29
37
  local soundPresetId = self.ability:getField(ABILITY_SF_EFFECT_SOUND)
30
38
  if soundPresetId ~= "" then
31
39
  Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, caster)
32
40
  end
33
- AbilityBehavior:forAll(self.ability, "onImpact", caster)
41
+ Event.invoke(Unit.abilityImpactEvent, caster, self.ability)
42
+ return true
34
43
  end
35
44
  return ____exports
@@ -1,5 +1,6 @@
1
1
  /** @noSelfInFile */
2
2
  import { Unit } from "../../internal/unit";
3
+ import "../../internal/unit/item-order-events";
3
4
  import { EmulateImpactAbilityBehavior } from "./emulate-impact";
4
5
  import { Ability } from "../../internal/ability";
5
6
  export declare class OnCommandImpactAbilityBehavior extends EmulateImpactAbilityBehavior {
@@ -4,6 +4,7 @@ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
4
  local ____exports = {}
5
5
  local ____unit = require("engine.internal.unit")
6
6
  local Unit = ____unit.Unit
7
+ require("engine.internal.unit.item-order-events")
7
8
  local ____emulate_2Dimpact = require("engine.behaviour.ability.emulate-impact")
8
9
  local EmulateImpactAbilityBehavior = ____emulate_2Dimpact.EmulateImpactAbilityBehavior
9
10
  ____exports.OnCommandImpactAbilityBehavior = __TS__Class()
@@ -14,3 +14,12 @@ export declare class RemoveBuffsSelfAbilityBehavior extends AbilityBehavior {
14
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
15
  onImpact(caster: Unit): void;
16
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
+ }
@@ -25,4 +25,25 @@ function RemoveBuffsSelfAbilityBehavior.prototype.onImpact(self, caster)
25
25
  self:resolveCurrentAbilityDependentValue(self.autoDispel)
26
26
  )
27
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
28
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,6 +1,8 @@
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";
@@ -25,16 +27,21 @@ export declare abstract class AbilityBehavior<Parameters extends {
25
27
  get unit(): Unit | undefined;
26
28
  protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value: AbilityDependentValue<T>): T;
27
29
  protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value?: AbilityDependentValue<T>): T | undefined;
28
- protected flashCasterEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
29
- protected flashTargetEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
30
- protected flashAreaEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
31
- protected flashEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
32
- protected flashSpecialEffect(...args: [
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: [
33
36
  ...pointOrWidget: [x: number, y: number] | [widget: Widget],
34
37
  ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]
35
38
  ]): void;
36
39
  private static MissileLaunchConfig;
37
40
  private get missileLaunchConfig();
41
+ protected launchMissile(source: Unit, ...args: [
42
+ ...pointOrWidget: [x: number, y: number] | [widget: Unit /** TODO: support Widget */],
43
+ ...parameters: NonNullable<Parameters["missileParameters"]>
44
+ ]): void;
38
45
  protected onCreate(): void;
39
46
  onValueChange(_value: ReadonlySubscribableAbilityDependentValue<string | number | boolean>): void;
40
47
  onMissileArrival(...parameters: NonNullable<Parameters["missileParameters"]>): void;
@@ -5,42 +5,81 @@ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
5
5
  local __TS__New = ____lualib.__TS__New
6
6
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
7
7
  local ____exports = {}
8
- local createUnitEventListener
9
8
  local ____behavior = require("engine.behavior")
10
9
  local Behavior = ____behavior.Behavior
11
- local ____unit = require("engine.unit")
10
+ local ____unit = require("engine.internal.unit")
12
11
  local Unit = ____unit.Unit
12
+ local UnitClassification = ____unit.UnitClassification
13
+ require("engine.internal.unit.ability")
14
+ require("engine.internal.unit+ability")
13
15
  local ____ability = require("engine.internal.ability")
14
16
  local Ability = ____ability.Ability
15
17
  local ____effect = require("core.types.effect")
16
18
  local Effect = ____effect.Effect
17
19
  local ____ability = require("engine.standard.fields.ability")
18
20
  local AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
21
+ local CASTER_EFFECT_COUNT_ABILITY_INTEGER_FIELD = ____ability.CASTER_EFFECT_COUNT_ABILITY_INTEGER_FIELD
19
22
  local CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = ____ability.CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD
20
23
  local CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
24
+ local CASTER_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD = ____ability.CASTER_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD
25
+ local DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD = ____ability.DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD
26
+ local DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD = ____ability.DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD
21
27
  local EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
22
28
  local MISSILE_ARC_ABILITY_FLOAT_FIELD = ____ability.MISSILE_ARC_ABILITY_FLOAT_FIELD
23
29
  local MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
24
30
  local MISSILE_SPEED_ABILITY_INTEGER_FIELD = ____ability.MISSILE_SPEED_ABILITY_INTEGER_FIELD
25
31
  local SPECIAL_EFFECT_ATTACHMENT_POINT_STRING_FIELD = ____ability.SPECIAL_EFFECT_ATTACHMENT_POINT_STRING_FIELD
26
32
  local SPECIAL_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.SPECIAL_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
33
+ local TARGET_EFFECT_COUNT_ABILITY_INTEGER_FIELD = ____ability.TARGET_EFFECT_COUNT_ABILITY_INTEGER_FIELD
34
+ local TARGET_EFFECT_FIFTH_ATTACHMENT_POINT_STRING_FIELD = ____ability.TARGET_EFFECT_FIFTH_ATTACHMENT_POINT_STRING_FIELD
27
35
  local TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = ____ability.TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD
36
+ local TARGET_EFFECT_FOURTH_ATTACHMENT_POINT_STRING_FIELD = ____ability.TARGET_EFFECT_FOURTH_ATTACHMENT_POINT_STRING_FIELD
28
37
  local TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
38
+ local TARGET_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD = ____ability.TARGET_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD
39
+ local TARGET_EFFECT_SIXTH_ATTACHMENT_POINT_STRING_FIELD = ____ability.TARGET_EFFECT_SIXTH_ATTACHMENT_POINT_STRING_FIELD
40
+ local TARGET_EFFECT_THIRD_ATTACHMENT_POINT_STRING_FIELD = ____ability.TARGET_EFFECT_THIRD_ATTACHMENT_POINT_STRING_FIELD
29
41
  local ____ability = require("engine.object-field.ability")
30
42
  local AbilityField = ____ability.AbilityField
31
43
  local AbilityLevelField = ____ability.AbilityLevelField
32
44
  local resolveCurrentAbilityDependentValue = ____ability.resolveCurrentAbilityDependentValue
33
- local ____timer = require("core.types.timer")
34
- local Timer = ____timer.Timer
45
+ local ____missile = require("core.types.missile")
46
+ local Missile = ____missile.Missile
47
+ local CASTER_EFFECT_ATTACHMENT_POINT_STRING_FIELDS = {CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD, CASTER_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD}
48
+ local TARGET_EFFECT_ATTACHMENT_POINT_STRING_FIELDS = {
49
+ TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD,
50
+ TARGET_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD,
51
+ TARGET_EFFECT_THIRD_ATTACHMENT_POINT_STRING_FIELD,
52
+ TARGET_EFFECT_FOURTH_ATTACHMENT_POINT_STRING_FIELD,
53
+ TARGET_EFFECT_FIFTH_ATTACHMENT_POINT_STRING_FIELD,
54
+ TARGET_EFFECT_SIXTH_ATTACHMENT_POINT_STRING_FIELD
55
+ }
56
+ --- Flashes every preset of an effect preset list (caster/target effects): each model at
57
+ -- its own attachment point. The effect count field limits the list; at least the first
58
+ -- model is always flashed, as abilities without the count set expect.
59
+ local function flashEffectPresets(ability, modelPathsField, attachmentPointFields, effectCountField, widget, ...)
60
+ local count = math.min(
61
+ math.max(
62
+ effectCountField:getValue(ability),
63
+ 1
64
+ ),
65
+ #attachmentPointFields
66
+ )
67
+ for i = 0, count - 1 do
68
+ local modelPath = modelPathsField:getValue(ability, i)
69
+ if modelPath ~= "" then
70
+ local attachmentPoint = attachmentPointFields[i + 1]:getValue(ability)
71
+ Effect:flash(modelPath, widget, attachmentPoint ~= "" and attachmentPoint or "origin", ...)
72
+ end
73
+ end
74
+ end
35
75
  local createBehaviorFunctionsByAbilityTypeId = {}
36
- local exclusiveOnImpactHandlerAbilityBehaviorByAbility = setmetatable({}, {__mode = "k"})
37
- local function createZeroTimerUnitEventListener(key)
38
- local unitEventListener = createUnitEventListener(key)
39
- return function(unit, ability, ...)
40
- Timer:run(unitEventListener, unit, ability, ...)
76
+ local function invokeOnMissileArrival(_missile, success, abilityBehavior, ...)
77
+ if success then
78
+ abilityBehavior:onMissileArrival(...)
41
79
  end
42
80
  end
43
- createUnitEventListener = function(key)
81
+ local exclusiveOnImpactHandlerAbilityBehaviorByAbility = setmetatable({}, {__mode = "k"})
82
+ local function createUnitEventListener(key)
44
83
  return function(unit, ability, ...)
45
84
  ____exports.AbilityBehavior:forAll(ability, key, unit, ...)
46
85
  end
@@ -114,21 +153,31 @@ end
114
153
  function AbilityBehavior.prototype.resolveCurrentAbilityDependentValue(self, value)
115
154
  return resolveCurrentAbilityDependentValue(self.ability, value)
116
155
  end
156
+ function AbilityBehavior.prototype.getDuration(self, widget)
157
+ if __TS__InstanceOf(widget, Unit) then
158
+ if widget.isHero or widget:getField(UNIT_IF_LEVEL) >= 6 or widget:hasClassification(UnitClassification.RESISTANT) then
159
+ return self:resolveCurrentAbilityDependentValue(DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD)
160
+ end
161
+ end
162
+ return self:resolveCurrentAbilityDependentValue(DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD)
163
+ end
117
164
  function AbilityBehavior.prototype.flashCasterEffect(self, widget, ...)
118
- local attachmentPoint = CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
119
- Effect:flash(
120
- CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
165
+ flashEffectPresets(
166
+ self.ability,
167
+ CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD,
168
+ CASTER_EFFECT_ATTACHMENT_POINT_STRING_FIELDS,
169
+ CASTER_EFFECT_COUNT_ABILITY_INTEGER_FIELD,
121
170
  widget,
122
- attachmentPoint ~= "" and attachmentPoint or "origin",
123
171
  ...
124
172
  )
125
173
  end
126
174
  function AbilityBehavior.prototype.flashTargetEffect(self, widget, ...)
127
- local attachmentPoint = TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
128
- Effect:flash(
129
- TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
175
+ flashEffectPresets(
176
+ self.ability,
177
+ TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD,
178
+ TARGET_EFFECT_ATTACHMENT_POINT_STRING_FIELDS,
179
+ TARGET_EFFECT_COUNT_ABILITY_INTEGER_FIELD,
130
180
  widget,
131
- attachmentPoint ~= "" and attachmentPoint or "origin",
132
181
  ...
133
182
  )
134
183
  end
@@ -168,6 +217,28 @@ function AbilityBehavior.prototype.flashSpecialEffect(self, xOrWidget, yOrParame
168
217
  )
169
218
  end
170
219
  end
220
+ function AbilityBehavior.prototype.launchMissile(self, source, xOrWidget, yOrParameter, ...)
221
+ if type(xOrWidget) ~= "number" then
222
+ Missile:launch(
223
+ self.missileLaunchConfig,
224
+ source,
225
+ xOrWidget,
226
+ invokeOnMissileArrival,
227
+ self,
228
+ yOrParameter,
229
+ ...
230
+ )
231
+ else
232
+ Missile:launch(
233
+ self.missileLaunchConfig,
234
+ source,
235
+ vec2(xOrWidget, yOrParameter),
236
+ invokeOnMissileArrival,
237
+ self,
238
+ ...
239
+ )
240
+ end
241
+ end
171
242
  function AbilityBehavior.prototype.onCreate(self)
172
243
  end
173
244
  function AbilityBehavior.prototype.onValueChange(self, _value)
@@ -274,13 +345,13 @@ __TS__SetDescriptor(
274
345
  Unit.abilityDestructibleTargetChannelingStartEvent:addListener(createUnitEventListener("onDestructibleTargetChannelingStart"))
275
346
  Unit.abilityPointTargetChannelingStartEvent:addListener(createUnitEventListener("onPointTargetChannelingStart"))
276
347
  Unit.abilityNoTargetChannelingStartEvent:addListener(createUnitEventListener("onNoTargetChannelingStart"))
277
- Unit.abilityChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onImpact"))
278
- Unit.abilityWidgetTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onWidgetTargetImpact"))
279
- Unit.abilityUnitTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onUnitTargetImpact"))
280
- Unit.abilityItemTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onItemTargetImpact"))
281
- Unit.abilityDestructibleTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onDestructibleTargetImpact"))
282
- Unit.abilityPointTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onPointTargetImpact"))
283
- Unit.abilityNoTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onNoTargetImpact"))
348
+ Unit.abilityImpactEvent:addListener(createUnitEventListener("onImpact"))
349
+ Unit.abilityWidgetTargetImpactEvent:addListener(createUnitEventListener("onWidgetTargetImpact"))
350
+ Unit.abilityUnitTargetImpactEvent:addListener(createUnitEventListener("onUnitTargetImpact"))
351
+ Unit.abilityItemTargetImpactEvent:addListener(createUnitEventListener("onItemTargetImpact"))
352
+ Unit.abilityDestructibleTargetImpactEvent:addListener(createUnitEventListener("onDestructibleTargetImpact"))
353
+ Unit.abilityPointTargetImpactEvent:addListener(createUnitEventListener("onPointTargetImpact"))
354
+ Unit.abilityNoTargetImpactEvent:addListener(createUnitEventListener("onNoTargetImpact"))
284
355
  Unit.abilityChannelingFinishEvent:addListener(createUnitEventListener("onChannelingFinish"))
285
356
  Unit.abilityStopEvent:addListener(createUnitEventListener("onStop"))
286
357
  end)(AbilityBehavior)
@@ -296,6 +367,19 @@ end)
296
367
  AbilityLevelField.valueChangeEvent:addListener(function(ability, field)
297
368
  ____exports.AbilityBehavior:forAll(ability, checkBehaviorOnValueChange, field)
298
369
  end)
370
+ local function checkBehaviorOnLevelChange(behavior)
371
+ local subscribedValues = subscribedValuesByAbilityBehavior[behavior]
372
+ if subscribedValues ~= nil then
373
+ for value in pairs(subscribedValues) do
374
+ if __TS__InstanceOf(value, AbilityLevelField) then
375
+ behavior:onValueChange(value)
376
+ end
377
+ end
378
+ end
379
+ end
380
+ Unit.abilityLevelChangedEvent:addListener(function(_, ability)
381
+ ____exports.AbilityBehavior:forAll(ability, checkBehaviorOnLevelChange)
382
+ end)
299
383
  Ability.onCreate:addListener(function(ability)
300
384
  local createBehaviorFunctions = createBehaviorFunctionsByAbilityTypeId[ability.typeId]
301
385
  if createBehaviorFunctions ~= nil then
@@ -4,15 +4,21 @@ import { Unit } from "../../unit";
4
4
  import { BuffTypeId } from "../../object-data/entry/buff-type";
5
5
  import { TextTagPreset } from "../../text-tag";
6
6
  import { Destructor } from "../../../destroyable";
7
- export type StunImmunityUnitBehaviourParameters = {
8
- buffTypeIds?: LuaSet<BuffTypeId>;
7
+ import { BehaviorPriority } from "../../behavior";
8
+ export type StunImmunityUnitBehaviorParameters = {
9
+ readonly priority?: BehaviorPriority;
10
+ buffTypeIds?: readonly BuffTypeId[];
9
11
  textTagPreset?: TextTagPreset;
10
12
  textTagText?: string;
13
+ additionalAction?: (this: void, unit: Unit) => void;
11
14
  };
12
15
  export declare class StunImmunityUnitBehavior extends UnitBehavior {
13
- private readonly parameters;
14
- static defaultParameters: StunImmunityUnitBehaviourParameters;
15
- constructor(unit: Unit, parameters?: StunImmunityUnitBehaviourParameters);
16
+ readonly parameters: Readonly<StunImmunityUnitBehaviorParameters>;
17
+ static defaultParameters: StunImmunityUnitBehaviorParameters;
18
+ constructor(unit: Unit, parameters?: Readonly<StunImmunityUnitBehaviorParameters>);
16
19
  protected onDestroy(): Destructor;
17
- private onBuffsCheck;
20
+ onDamageReceived(): void;
21
+ onTargetingAbilityChannelingStart(): void;
22
+ onTargetingAbilityImpact(): void;
23
+ protected onEffect(): void;
18
24
  }