warscript 0.0.1-dev.47f470c → 0.0.1-dev.4b6e45a

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 (424) 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 +12 -4
  5. package/core/types/effect.lua +67 -104
  6. package/core/types/frame.d.ts +21 -2
  7. package/core/types/frame.lua +165 -87
  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/missile.lua +8 -7
  12. package/core/types/player.d.ts +18 -1
  13. package/core/types/player.lua +76 -26
  14. package/core/types/playerCamera.d.ts +2 -0
  15. package/core/types/playerCamera.lua +123 -5
  16. package/core/types/playerColor.lua +4 -3
  17. package/core/types/sound.d.ts +18 -26
  18. package/core/types/sound.lua +105 -55
  19. package/core/types/tileCell.d.ts +18 -3
  20. package/core/types/tileCell.lua +108 -0
  21. package/core/types/timer.d.ts +9 -8
  22. package/core/types/timer.lua +45 -23
  23. package/core/types/unit.d.ts +5 -0
  24. package/core/types/unit.lua +5 -0
  25. package/core/util.d.ts +3 -1
  26. package/core/util.lua +115 -4
  27. package/decl/native.d.ts +1719 -964
  28. package/destroyable.d.ts +1 -0
  29. package/destroyable.lua +9 -0
  30. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  31. package/engine/ability-type-extended-tooltip.lua +44 -0
  32. package/engine/behavior.d.ts +14 -1
  33. package/engine/behavior.lua +230 -70
  34. package/engine/behaviour/ability/apply-buff.lua +5 -5
  35. package/engine/behaviour/ability/apply-unit-behavior.lua +6 -0
  36. package/engine/behaviour/ability/damage.d.ts +13 -3
  37. package/engine/behaviour/ability/damage.lua +41 -49
  38. package/engine/behaviour/ability/emulate-impact.d.ts +15 -1
  39. package/engine/behaviour/ability/emulate-impact.lua +96 -7
  40. package/engine/behaviour/ability/instant-impact.d.ts +12 -1
  41. package/engine/behaviour/ability/instant-impact.lua +17 -2
  42. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  43. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  44. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  45. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  46. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  47. package/engine/behaviour/ability/restore-mana.lua +6 -6
  48. package/engine/behaviour/ability.d.ts +23 -6
  49. package/engine/behaviour/ability.lua +145 -29
  50. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  51. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  52. package/engine/behaviour/unit.d.ts +41 -2
  53. package/engine/behaviour/unit.lua +270 -6
  54. package/engine/buff.d.ts +130 -57
  55. package/engine/buff.lua +643 -294
  56. package/engine/index.d.ts +2 -1
  57. package/engine/internal/ability.d.ts +14 -1
  58. package/engine/internal/ability.lua +113 -44
  59. package/engine/internal/item/ability.lua +63 -11
  60. package/engine/internal/item/fields.d.ts +12 -0
  61. package/engine/internal/item/fields.lua +33 -0
  62. package/engine/internal/item/owner-cache.d.ts +5 -0
  63. package/engine/internal/item/owner-cache.lua +4 -0
  64. package/engine/internal/item+owner.d.ts +2 -0
  65. package/engine/internal/item+owner.lua +37 -8
  66. package/engine/internal/item.d.ts +32 -16
  67. package/engine/internal/item.lua +257 -82
  68. package/engine/internal/mechanics/ability-duration.lua +1 -1
  69. package/engine/internal/mechanics/cast-ability.lua +6 -3
  70. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  71. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  72. package/engine/internal/misc/frame-coordinates.lua +21 -0
  73. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  74. package/engine/internal/misc/get-terrain-z.lua +11 -0
  75. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  76. package/engine/internal/misc/player-local-handle.lua +5 -0
  77. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  78. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  79. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  80. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  81. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  82. package/engine/internal/object-data/health-bonus.lua +16 -0
  83. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  84. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  85. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  86. package/engine/internal/object-data/mana-bonus.lua +16 -0
  87. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  88. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  89. package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
  90. package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
  91. package/engine/internal/unit/ability.d.ts +35 -0
  92. package/engine/internal/unit/ability.lua +114 -9
  93. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  94. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  95. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  96. package/engine/internal/unit/allowed-targets.lua +9 -1
  97. package/engine/internal/unit/appearance.d.ts +15 -0
  98. package/engine/internal/unit/appearance.lua +85 -0
  99. package/engine/internal/unit/attributes.d.ts +17 -0
  100. package/engine/internal/unit/attributes.lua +46 -0
  101. package/engine/internal/unit/bonus.d.ts +17 -0
  102. package/engine/internal/unit/bonus.lua +113 -8
  103. package/engine/internal/unit/buff.d.ts +2 -2
  104. package/engine/internal/unit/buff.lua +34 -19
  105. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  106. package/engine/internal/unit/equipment-inventory.lua +233 -0
  107. package/engine/internal/unit/expiration-timer.lua +1 -1
  108. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  109. package/engine/internal/unit/extended-inventory.lua +99 -0
  110. package/engine/internal/unit/fly-height.d.ts +7 -0
  111. package/engine/internal/unit/fly-height.lua +20 -0
  112. package/engine/internal/unit/ignore-events-items.lua +10 -1
  113. package/engine/internal/unit/interrupts.d.ts +12 -0
  114. package/engine/internal/unit/interrupts.lua +28 -0
  115. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  116. package/engine/internal/unit/inventory.lua +87 -0
  117. package/engine/internal/unit/item-container.d.ts +25 -0
  118. package/engine/internal/unit/item-container.lua +11 -0
  119. package/engine/internal/unit/item-order-events.d.ts +17 -0
  120. package/engine/internal/unit/item-order-events.lua +67 -0
  121. package/engine/internal/unit/item-slot.d.ts +27 -0
  122. package/engine/internal/unit/item-slot.lua +92 -0
  123. package/engine/internal/unit/main-selected.lua +12 -27
  124. package/engine/internal/unit/order.d.ts +20 -0
  125. package/engine/internal/unit/order.lua +136 -0
  126. package/engine/internal/unit/range-event.d.ts +12 -0
  127. package/engine/internal/unit/range-event.lua +90 -0
  128. package/engine/internal/unit/scale.d.ts +7 -0
  129. package/engine/internal/unit/scale.lua +20 -0
  130. package/engine/internal/unit/shared-vision-counter.d.ts +18 -0
  131. package/engine/internal/unit/shared-vision-counter.lua +31 -0
  132. package/engine/internal/unit+ability.d.ts +2 -1
  133. package/engine/internal/unit+ability.lua +83 -3
  134. package/engine/internal/unit+bonus.lua +3 -3
  135. package/engine/internal/unit+damage.d.ts +11 -11
  136. package/engine/internal/unit+damage.lua +43 -14
  137. package/engine/internal/unit+rally.lua +9 -31
  138. package/engine/internal/unit+spellSteal.lua +1 -2
  139. package/engine/internal/unit-missile-data.lua +96 -68
  140. package/engine/internal/unit-missile-launch.lua +65 -27
  141. package/engine/internal/unit.d.ts +47 -34
  142. package/engine/internal/unit.lua +413 -323
  143. package/engine/lightning.lua +4 -4
  144. package/engine/local-client.d.ts +28 -0
  145. package/engine/local-client.lua +324 -54
  146. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  147. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  148. package/engine/object-data/auxiliary/attachment-preset.d.ts +14 -2
  149. package/engine/object-data/auxiliary/attachment-preset.lua +11 -3
  150. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  151. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  152. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  153. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  154. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  155. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  156. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  157. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  158. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  159. package/engine/object-data/auxiliary/item-class.lua +2 -0
  160. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  161. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  162. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  163. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  164. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  165. package/engine/object-data/auxiliary/order-type.lua +2 -0
  166. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  167. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  168. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  169. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  170. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  171. package/engine/object-data/auxiliary/unit-weapon-type.d.ts +21 -0
  172. package/engine/object-data/auxiliary/unit-weapon-type.lua +2 -0
  173. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  174. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  175. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  176. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  177. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  178. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  179. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  180. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  181. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  182. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  183. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  184. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  185. package/engine/object-data/entry/ability-type/barrage.d.ts +12 -0
  186. package/engine/object-data/entry/ability-type/barrage.lua +52 -0
  187. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  188. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  189. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  190. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  191. package/engine/object-data/entry/ability-type/blank-configurable.lua +2 -11
  192. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  193. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  194. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  195. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  196. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  197. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  198. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  199. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  200. package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
  201. package/engine/object-data/entry/ability-type/channel.lua +3 -3
  202. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  203. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  204. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  205. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  206. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  207. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  208. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  209. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  210. package/engine/object-data/entry/ability-type/curse.lua +2 -2
  211. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  212. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  213. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  214. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  215. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  216. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  217. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  218. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  219. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  220. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  221. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  222. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  223. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  224. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  225. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  226. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  227. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  228. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  229. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  230. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  231. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  232. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  233. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  234. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  235. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  236. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  237. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  238. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  239. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  240. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  241. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  242. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  243. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  244. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  245. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  246. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  247. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  248. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  249. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  250. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  251. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  252. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  253. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  254. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  255. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  256. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  257. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  258. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  259. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  260. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  261. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  262. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  263. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  264. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  265. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  266. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  267. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  268. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  269. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  270. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  271. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  272. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  273. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  274. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  275. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  276. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  277. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  278. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  279. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  280. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  281. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  282. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  283. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  284. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  285. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  286. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  287. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  288. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  289. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  290. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  291. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  292. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  293. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  294. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  295. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  296. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  297. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  298. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  299. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  300. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  301. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  302. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  303. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  304. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  305. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  306. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  307. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  308. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  309. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  310. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  311. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  312. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  313. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  314. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  315. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  316. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  317. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  318. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  319. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  320. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  321. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  322. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  323. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  324. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  325. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  326. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  327. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  328. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  329. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  330. package/engine/object-data/entry/ability-type/web.lua +52 -0
  331. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  332. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  333. package/engine/object-data/entry/ability-type.d.ts +50 -21
  334. package/engine/object-data/entry/ability-type.lua +376 -27
  335. package/engine/object-data/entry/buff-type/applicable.lua +124 -108
  336. package/engine/object-data/entry/buff-type.d.ts +10 -12
  337. package/engine/object-data/entry/buff-type.lua +37 -27
  338. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  339. package/engine/object-data/entry/destructible-type.lua +181 -0
  340. package/engine/object-data/entry/item-type.d.ts +18 -3
  341. package/engine/object-data/entry/item-type.lua +84 -0
  342. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  343. package/engine/object-data/entry/lightning-type.lua +1 -1
  344. package/engine/object-data/entry/sound-preset.d.ts +19 -3
  345. package/engine/object-data/entry/sound-preset.lua +105 -15
  346. package/engine/object-data/entry/unit-type.d.ts +74 -6
  347. package/engine/object-data/entry/unit-type.lua +560 -100
  348. package/engine/object-data/entry/upgrade.d.ts +2 -2
  349. package/engine/object-data/entry.d.ts +8 -3
  350. package/engine/object-data/entry.lua +22 -7
  351. package/engine/object-field/ability.d.ts +4 -4
  352. package/engine/object-field/ability.lua +9 -8
  353. package/engine/object-field/item.d.ts +22 -0
  354. package/engine/object-field/item.lua +118 -0
  355. package/engine/object-field/unit.d.ts +72 -3
  356. package/engine/object-field/unit.lua +268 -7
  357. package/engine/object-field.d.ts +26 -7
  358. package/engine/object-field.lua +360 -119
  359. package/engine/random.d.ts +10 -0
  360. package/engine/random.lua +21 -0
  361. package/engine/standard/entries/ability-type.d.ts +3102 -7
  362. package/engine/standard/entries/ability-type.lua +0 -6
  363. package/engine/standard/entries/buff-type.d.ts +48 -0
  364. package/engine/standard/entries/buff-type.lua +46 -0
  365. package/engine/standard/entries/item-type.d.ts +1299 -0
  366. package/engine/standard/entries/item-type.lua +2 -0
  367. package/engine/standard/entries/lightning-type.d.ts +42 -15
  368. package/engine/standard/entries/lightning-type.lua +0 -14
  369. package/engine/standard/entries/unit-type.d.ts +5 -0
  370. package/engine/standard/entries/unit-type.lua +5 -0
  371. package/engine/standard/fields/ability.d.ts +4 -4
  372. package/engine/standard/fields/ability.lua +4 -4
  373. package/engine/standard/fields/item.d.ts +4 -0
  374. package/engine/standard/fields/item.lua +6 -0
  375. package/engine/standard/fields/unit.d.ts +12 -0
  376. package/engine/standard/fields/unit.lua +20 -0
  377. package/engine/synchronization.d.ts +11 -0
  378. package/engine/synchronization.lua +77 -0
  379. package/engine/text-tag.d.ts +48 -2
  380. package/engine/text-tag.lua +287 -10
  381. package/engine/unit.d.ts +12 -1
  382. package/engine/unit.lua +12 -1
  383. package/event.d.ts +1 -1
  384. package/lualib_bundle.lua +1 -1
  385. package/math.d.ts +2 -0
  386. package/math.lua +14 -0
  387. package/net/socket.lua +1 -1
  388. package/network.lua +25 -1
  389. package/objutil/buff.lua +12 -11
  390. package/objutil/object.lua +1 -1
  391. package/objutil/unit.lua +2 -2
  392. package/operation.d.ts +8 -1
  393. package/operation.lua +38 -18
  394. package/package.json +3 -23
  395. package/patch-lua.lua +15 -0
  396. package/patch-lualib.lua +1 -1
  397. package/utility/arrays.d.ts +9 -1
  398. package/utility/arrays.lua +28 -0
  399. package/utility/callback-array.d.ts +17 -0
  400. package/utility/callback-array.lua +61 -0
  401. package/utility/functions.d.ts +8 -0
  402. package/utility/functions.lua +13 -0
  403. package/utility/linked-map.d.ts +35 -0
  404. package/utility/linked-map.lua +107 -0
  405. package/utility/linked-set.d.ts +5 -1
  406. package/utility/linked-set.lua +49 -1
  407. package/utility/lua-maps.d.ts +15 -2
  408. package/utility/lua-maps.lua +53 -2
  409. package/utility/lua-sets.d.ts +2 -0
  410. package/utility/lua-sets.lua +7 -0
  411. package/utility/random.d.ts +102 -0
  412. package/utility/random.lua +273 -0
  413. package/utility/records.lua +20 -1
  414. package/utility/reflection.lua +11 -7
  415. package/utility/types.d.ts +3 -0
  416. package/utility/unordered-map.d.ts +27 -0
  417. package/utility/unordered-map.lua +99 -0
  418. package/core/types/order.d.ts +0 -25
  419. package/core/types/order.lua +0 -55
  420. package/engine/internal/unit/item.lua +0 -78
  421. /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
  422. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  423. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  424. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -7,10 +7,10 @@ local __TS__Class = ____lualib.__TS__Class
7
7
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
8
8
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
9
9
  local __TS__ArraySetLength = ____lualib.__TS__ArraySetLength
10
+ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
10
11
  local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
11
12
  local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
12
13
  local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
13
- local __TS__InstanceOf = ____lualib.__TS__InstanceOf
14
14
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
15
15
  local Set = ____lualib.Set
16
16
  local __TS__Spread = ____lualib.__TS__Spread
@@ -47,40 +47,44 @@ local checkNotNull = ____preconditions.checkNotNull
47
47
  local ____constants = require("engine.constants")
48
48
  local HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT = ____constants.HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT
49
49
  local MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT = ____constants.MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT
50
- local ____arrays = require("utility.arrays")
51
- local forEach = ____arrays.forEach
52
- local ____math = require("math")
53
- local min = ____math.min
54
50
  local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
55
- local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
51
+ local isItemIgnoredInEvents = ____ignore_2Devents_2Ditems.isItemIgnoredInEvents
52
+ local ____owner_2Dcache = require("engine.internal.item.owner-cache")
53
+ local ownerByItem = ____owner_2Dcache.ownerByItem
54
+ local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
55
+ local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
56
+ local nativeToAttackType = ____attack_2Dtype.nativeToAttackType
57
+ local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
58
+ local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
59
+ local ____attributes = require("attributes")
60
+ local isAttribute = ____attributes.isAttribute
61
+ local ____ability = require("engine.internal.item.ability")
62
+ local doUnitAbilityAction = ____ability.doUnitAbilityAction
63
+ local ____synchronization = require("engine.synchronization")
64
+ local synchronizer = ____synchronization.synchronizer
65
+ local ____linked_2Dmap = require("utility.linked-map")
66
+ local LinkedMap = ____linked_2Dmap.LinkedMap
56
67
  local match = string.match
57
68
  local ____tostring = _G.tostring
58
69
  local setUnitAnimation = SetUnitAnimation
59
- local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
60
70
  local setUnitAnimationByIndex = SetUnitAnimationByIndex
61
- local queueUnitAnimation = QueueUnitAnimation
62
71
  local getUnitIntegerField = BlzGetUnitIntegerField
63
72
  local getUnitRealField = BlzGetUnitRealField
64
73
  local getHeroStr = GetHeroStr
65
74
  local getHeroAgi = GetHeroAgi
66
75
  local getHeroInt = GetHeroInt
67
- local setHeroStr = SetHeroStr
68
- local setHeroAgi = SetHeroAgi
69
- local setHeroInt = SetHeroInt
70
76
  local getUnitBooleanField = BlzGetUnitBooleanField
71
77
  local getUnitStringField = BlzGetUnitStringField
72
78
  local setUnitIntegerField = BlzSetUnitIntegerField
73
79
  local setUnitRealField = BlzSetUnitRealField
74
80
  local setUnitBooleanField = BlzSetUnitBooleanField
75
81
  local setUnitStringField = BlzSetUnitStringField
76
- local setUnitScale = SetUnitScale
77
82
  local setUnitPosition = SetUnitPosition
78
83
  local setUnitTimeScale = SetUnitTimeScale
79
84
  local getHandleId = GetHandleId
80
85
  local getUnitCurrentOrder = GetUnitCurrentOrder
81
86
  local createUnit = CreateUnit
82
87
  local killUnit = KillUnit
83
- local setUnitExploded = SetUnitExploded
84
88
  local removeUnit = RemoveUnit
85
89
  local getUnitTypeId = GetUnitTypeId
86
90
  local isHeroUnitId = IsHeroUnitId
@@ -96,15 +100,12 @@ local getSpellTargetItem = GetSpellTargetItem
96
100
  local getSpellTargetDestructable = GetSpellTargetDestructable
97
101
  local isUnitInRangeXY = IsUnitInRangeXY
98
102
  local isUnitInRange = IsUnitInRange
99
- local setResourceAmount = SetResourceAmount
100
- local getResourceAmount = GetResourceAmount
101
103
  local getUnitWeaponRealField = BlzGetUnitWeaponRealField
102
104
  local setUnitWeaponRealField = BlzSetUnitWeaponRealField
103
105
  local getUnitWeaponStringField = BlzGetUnitWeaponStringField
104
106
  local setUnitWeaponStringField = BlzSetUnitWeaponStringField
105
107
  local getUnitAbilityLevel = GetUnitAbilityLevel
106
108
  local unitDisableAbility = BlzUnitDisableAbility
107
- local unitInterruptAttack = BlzUnitInterruptAttack
108
109
  local isUnitInvisible = IsUnitInvisible
109
110
  local isUnitVisible = IsUnitVisible
110
111
  local getUnitX = GetUnitX
@@ -121,15 +122,9 @@ local getOrderedUnit = GetOrderedUnit
121
122
  local getIssuedOrderId = GetIssuedOrderId
122
123
  local isUnitInvulnerable = BlzIsUnitInvulnerable
123
124
  local unitAlive = UnitAlive
124
- local unitAddType = UnitAddType
125
- local unitRemoveType = UnitRemoveType
126
- local isUnitIllusion = IsUnitIllusion
127
- local isUnitType = IsUnitType
128
125
  local isUnitAlly = IsUnitAlly
129
126
  local isUnitEnemy = IsUnitEnemy
130
127
  local getOwningPlayer = GetOwningPlayer
131
- local setUnitColor = SetUnitColor
132
- local showUnitTeamGlow = BlzShowUnitTeamGlow
133
128
  ____exports.UnitClassification = {}
134
129
  local UnitClassification = ____exports.UnitClassification
135
130
  do
@@ -139,6 +134,7 @@ do
139
134
  UnitClassification.GROUND = UNIT_TYPE_GROUND
140
135
  UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
141
136
  UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
137
+ UnitClassification.WORKER = UNIT_TYPE_PEON
142
138
  UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
143
139
  UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
144
140
  UnitClassification.TAUREN = UNIT_TYPE_TAUREN
@@ -346,6 +342,9 @@ local function dispatchAbility(event)
346
342
  }
347
343
  )
348
344
  end
345
+ local function damagingEventPreventRetaliation(self)
346
+ self[0] = true
347
+ end
349
348
  local function damageEventPreventDeath(self, callback, ...)
350
349
  if self[0] ~= nil then
351
350
  return
@@ -357,7 +356,14 @@ local function damageEventPreventDeath(self, callback, ...)
357
356
  rawset(self, 1 + i, (select(i, ...)))
358
357
  end
359
358
  end
360
- local damageSetters = {amount = BlzSetEventDamage, attackType = BlzSetEventAttackType, damageType = BlzSetEventDamageType, weaponType = BlzSetEventWeaponType}
359
+ local damageSetters = {
360
+ amount = BlzSetEventDamage,
361
+ attackType = function(attackType)
362
+ return BlzSetEventAttackType(attackTypeToNative(attackType))
363
+ end,
364
+ damageType = BlzSetEventDamageType,
365
+ weaponType = BlzSetEventWeaponType
366
+ }
361
367
  local jlimitopByOperator = {
362
368
  [0] = LESS_THAN_OR_EQUAL,
363
369
  [1] = LESS_THAN_OR_EQUAL,
@@ -375,15 +381,27 @@ local modifiers = {
375
381
  end,
376
382
  armor = function(unit, value)
377
383
  if UnitAddAbility(unit, armorBonusAbilityId) then
378
- assert(UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId))
384
+ assert(
385
+ UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
386
+ "armor bonus ability must be made permanent",
387
+ unit
388
+ )
379
389
  end
380
- local ability = assert(BlzGetUnitAbility(unit, armorBonusAbilityId))
381
- assert(BlzSetAbilityRealLevelField(
382
- ability,
383
- armorBonusField,
384
- 0,
385
- BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
386
- ))
390
+ local ability = assert(
391
+ BlzGetUnitAbility(unit, armorBonusAbilityId),
392
+ "armor bonus ability must be existing",
393
+ unit
394
+ )
395
+ assert(
396
+ BlzSetAbilityRealLevelField(
397
+ ability,
398
+ armorBonusField,
399
+ 0,
400
+ BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
401
+ ),
402
+ "armor bonus ability field must be set",
403
+ unit
404
+ )
387
405
  end
388
406
  }
389
407
  local getters = {
@@ -401,6 +419,19 @@ function UnitWeapon.prototype.____constructor(self, unit, index)
401
419
  self.unit = unit
402
420
  self.index = index
403
421
  end
422
+ __TS__SetDescriptor(
423
+ UnitWeapon.prototype,
424
+ "isEnabled",
425
+ {
426
+ get = function(self)
427
+ return BlzGetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index)
428
+ end,
429
+ set = function(self, isEnabled)
430
+ BlzSetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index, isEnabled)
431
+ end
432
+ },
433
+ true
434
+ )
404
435
  __TS__SetDescriptor(
405
436
  UnitWeapon.prototype,
406
437
  "cooldown",
@@ -435,6 +466,32 @@ __TS__SetDescriptor(
435
466
  },
436
467
  true
437
468
  )
469
+ __TS__SetDescriptor(
470
+ UnitWeapon.prototype,
471
+ "allowedTargetCombatClassifications",
472
+ {
473
+ get = function(self)
474
+ return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
475
+ end,
476
+ set = function(self, allowedTargetCombatClassifications)
477
+ BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
478
+ end
479
+ },
480
+ true
481
+ )
482
+ __TS__SetDescriptor(
483
+ UnitWeapon.prototype,
484
+ "type",
485
+ {
486
+ get = function(self)
487
+ return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_WEAPON_TYPE, self.index)
488
+ end,
489
+ set = function(self, ____type)
490
+ BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_WEAPON_TYPE, self.index, ____type)
491
+ end
492
+ },
493
+ true
494
+ )
438
495
  __TS__SetDescriptor(
439
496
  UnitWeapon.prototype,
440
497
  "damageBase",
@@ -546,8 +603,6 @@ __TS__SetDescriptor(
546
603
  },
547
604
  true
548
605
  )
549
- local unitInventorySize = UnitInventorySize
550
- local unitItemInSlot = UnitItemInSlot
551
606
  local getItemAbility = BlzGetItemAbility
552
607
  local getUnitAbility = BlzGetUnitAbility
553
608
  local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
@@ -565,8 +620,8 @@ local function retrieveAbility(unit, ability, abilityId)
565
620
  ____exports.Unit:of(unit)
566
621
  )
567
622
  end
568
- for i = 0, unitInventorySize(unit) - 1 do
569
- local item = unitItemInSlot(unit, i)
623
+ for i = 0, UnitInventorySize(unit) - 1 do
624
+ local item = UnitItemInSlot(unit, i)
570
625
  if getItemAbility(item, abilityId) == ability then
571
626
  return ItemAbility:of(
572
627
  ability,
@@ -611,26 +666,30 @@ local fieldSetters = {
611
666
  }
612
667
  local dummies = {}
613
668
  for ____, player in ipairs(Player.all) do
614
- local dummy = assert(createUnit(
615
- player.handle,
616
- dummyUnitId,
617
- 0,
618
- 0,
619
- 270
620
- ))
669
+ local dummy = assert(
670
+ createUnit(
671
+ player.handle,
672
+ dummyUnitId,
673
+ 0,
674
+ 0,
675
+ 270
676
+ ),
677
+ "dummy must be created",
678
+ player
679
+ )
621
680
  ShowUnit(dummy, false)
622
681
  dummies[player] = dummy
623
682
  end
624
683
  local function delayHealthChecksCallback(unit)
625
- local counter = (unit[103] or 0) - 1
684
+ local counter = (unit[104] or 0) - 1
626
685
  if counter ~= 0 then
627
- unit[103] = counter
686
+ unit[104] = counter
628
687
  return
629
688
  end
630
- unit[103] = nil
631
- local healthBonus = unit[104]
689
+ unit[104] = nil
690
+ local healthBonus = unit[105]
632
691
  if healthBonus ~= nil then
633
- unit[104] = nil
692
+ unit[105] = nil
634
693
  local handle = unit.handle
635
694
  BlzSetUnitMaxHP(
636
695
  handle,
@@ -639,50 +698,78 @@ local function delayHealthChecksCallback(unit)
639
698
  end
640
699
  end
641
700
  local nextSyncId = 1
642
- local unitBySyncId = setmetatable({}, {__mode = "k"})
701
+ local unitBySyncId = setmetatable({}, {__mode = "v"})
702
+ local damagingEventByTarget = setmetatable({}, {__mode = "k"})
703
+ local function addAbility(unit, abilityTypeId)
704
+ local ____unitAddAbility_result_0
705
+ if unitAddAbility(unit, abilityTypeId) then
706
+ ____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
707
+ else
708
+ ____unitAddAbility_result_0 = nil
709
+ end
710
+ return ____unitAddAbility_result_0
711
+ end
643
712
  ____exports.Unit = __TS__Class()
644
713
  local Unit = ____exports.Unit
645
714
  Unit.name = "Unit"
646
715
  __TS__ClassExtends(Unit, Handle)
647
716
  function Unit.prototype.____constructor(self, handle)
648
717
  Handle.prototype.____constructor(self, handle)
649
- local ____nextSyncId_0 = nextSyncId
650
- nextSyncId = ____nextSyncId_0 + 1
651
- self.syncId = ____nextSyncId_0
718
+ local ____nextSyncId_1 = nextSyncId
719
+ nextSyncId = ____nextSyncId_1 + 1
720
+ self.syncId = ____nextSyncId_1
652
721
  self._owner = Player:of(getOwningPlayer(handle))
653
- assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
654
- assert(unitAddAbility(handle, morphDetectAbilityId))
722
+ assert(
723
+ unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId),
724
+ "leave detection ability must be added",
725
+ self
726
+ )
727
+ assert(
728
+ unitAddAbility(handle, morphDetectAbilityId),
729
+ "morph detection ability must be added",
730
+ self
731
+ )
655
732
  if unitAddAbility(
656
733
  handle,
657
734
  fourCC("Amrf")
658
735
  ) then
659
- assert(unitRemoveAbility(
660
- handle,
661
- fourCC("Amrf")
662
- ))
736
+ assert(
737
+ unitRemoveAbility(
738
+ handle,
739
+ fourCC("Amrf")
740
+ ),
741
+ "fly ability must be removed after addition",
742
+ self
743
+ )
663
744
  end
664
745
  unitBySyncId[self.syncId] = self
665
746
  local ____ = self.abilities
666
747
  end
667
- function Unit.prototype.getEvent(self, event, collector)
668
- self.events = self.events or ({})
669
- local eventId = GetHandleId(event)
670
- if not self.events[eventId] then
671
- self.events[eventId] = __TS__New(
748
+ function Unit.prototype.getEvent(self, jevent, collector)
749
+ self.events = self.events or __TS__New(LinkedMap)
750
+ local eventId = GetHandleId(jevent)
751
+ local event = self.events:get(eventId)
752
+ if event == nil then
753
+ event = __TS__New(
672
754
  TriggerEvent,
673
755
  function(trigger)
674
- TriggerRegisterUnitEvent(trigger, self.handle, event)
756
+ TriggerRegisterUnitEvent(trigger, self.handle, jevent)
675
757
  end,
676
758
  collector or (function() return {} end)
677
759
  )
760
+ self.events:put(eventId, event)
678
761
  end
679
- return self.events[eventId]
762
+ return event
763
+ end
764
+ function Unit.prototype.saveData(self)
765
+ local handle = self.handle
766
+ self[108] = self[108] or getUnitX(handle)
767
+ self[109] = self[109] or getUnitY(handle)
768
+ self._owner = self._owner or Player:of(getOwningPlayer(handle))
680
769
  end
681
770
  function Unit.prototype.onDestroy(self)
682
771
  local handle = self.handle
683
- if not self._owner then
684
- self._owner = Player:of(getOwningPlayer(handle))
685
- end
772
+ self:saveData()
686
773
  local abilities = self.abilities
687
774
  for ____, ability in ipairs(abilities) do
688
775
  ability:destroy()
@@ -700,7 +787,9 @@ function Unit.prototype.onDestroy(self)
700
787
  end
701
788
  local eventsToDestroy = self._eventsToDestroy
702
789
  if eventsToDestroy ~= nil then
703
- forEach(eventsToDestroy, "destroy")
790
+ for ____, event in ipairs(eventsToDestroy) do
791
+ event:destroy()
792
+ end
704
793
  end
705
794
  if getUnitAbilityLevel(handle, leaveDetectAbilityId) > 0 then
706
795
  unitRemoveAbility(handle, leaveDetectAbilityId)
@@ -718,7 +807,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
718
807
  self._attackHandlers = handlers
719
808
  if #handlers == 1 then
720
809
  local handle = self.handle
721
- assert(unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId))
810
+ assert(
811
+ unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
812
+ "attack handler ability must be added",
813
+ self
814
+ )
722
815
  end
723
816
  return handler
724
817
  end
@@ -747,17 +840,17 @@ function Unit.prototype.addModifier(self, property, modifier)
747
840
  end}
748
841
  end
749
842
  function Unit.prototype.hasCombatClassification(self, combatClassification)
750
- local ____combatClassification_1 = combatClassification
751
- return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_1 == ____combatClassification_1
843
+ local ____combatClassification_2 = combatClassification
844
+ return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
752
845
  end
753
846
  function Unit.prototype.addClassification(self, classification)
754
- return unitAddType(self.handle, classification)
847
+ return UnitAddType(self.handle, classification)
755
848
  end
756
849
  function Unit.prototype.removeClassification(self, classification)
757
- return unitRemoveType(self.handle, classification)
850
+ return UnitRemoveType(self.handle, classification)
758
851
  end
759
852
  function Unit.prototype.hasClassification(self, classification)
760
- return isUnitType(self.handle, classification)
853
+ return IsUnitType(self.handle, classification)
761
854
  end
762
855
  function Unit.prototype.isVisibleTo(self, player)
763
856
  return isUnitVisible(self.handle, player.handle)
@@ -766,13 +859,19 @@ function Unit.prototype.isInvisibleTo(self, player)
766
859
  return isUnitInvisible(self.handle, player.handle)
767
860
  end
768
861
  function Unit.prototype.isInRangeOf(self, x, y, range)
769
- local ____temp_2
862
+ local ____temp_4
770
863
  if type(x) == "number" then
771
- ____temp_2 = isUnitInRangeXY(self.handle, x, y, range)
864
+ ____temp_4 = isUnitInRangeXY(self.handle, x, y, range)
772
865
  else
773
- ____temp_2 = isUnitInRange(self.handle, x.handle, y)
866
+ local ____temp_3
867
+ if __TS__InstanceOf(x, ____exports.Unit) then
868
+ ____temp_3 = isUnitInRange(self.handle, x.handle, y)
869
+ else
870
+ ____temp_3 = isUnitInRangeXY(self.handle, x.x, x.y, range)
871
+ end
872
+ ____temp_4 = ____temp_3
774
873
  end
775
- return ____temp_2
874
+ return ____temp_4
776
875
  end
777
876
  function Unit.prototype.isAllyOf(self, unit)
778
877
  return isUnitAlly(
@@ -790,16 +889,30 @@ function Unit.prototype.playAnimation(self, animation, rarity)
790
889
  if type(animation) == "number" then
791
890
  setUnitAnimationByIndex(self.handle, animation)
792
891
  elseif rarity then
793
- setUnitAnimationWithRarity(self.handle, animation, rarity)
892
+ SetUnitAnimationWithRarity(self.handle, animation, rarity)
794
893
  else
795
894
  setUnitAnimation(self.handle, animation)
796
895
  end
797
896
  end
897
+ function Unit.prototype.resetAnimation(self)
898
+ ResetUnitAnimation(self.handle)
899
+ end
798
900
  function Unit.prototype.queueAnimation(self, animation)
799
- queueUnitAnimation(self.handle, animation)
901
+ QueueUnitAnimation(self.handle, animation)
902
+ end
903
+ function Unit.prototype.chooseWeapon(self, target)
904
+ local firstWeapon = self.firstWeapon
905
+ if firstWeapon.isEnabled and target:isAllowedTarget(self, firstWeapon.allowedTargetCombatClassifications) then
906
+ return firstWeapon
907
+ end
908
+ local secondWeapon = self.secondWeapon
909
+ if secondWeapon.isEnabled and target:isAllowedTarget(self, secondWeapon.allowedTargetCombatClassifications) then
910
+ return secondWeapon
911
+ end
912
+ return nil
800
913
  end
801
914
  function Unit.prototype.delayHealthChecks(self)
802
- self[103] = (self[103] or 0) + 1
915
+ self[104] = (self[104] or 0) + 1
803
916
  Timer:run(delayHealthChecksCallback, self)
804
917
  end
805
918
  function Unit.prototype.setPosition(self, x, y)
@@ -809,21 +922,21 @@ function Unit.prototype.isSelected(self, player)
809
922
  return IsUnitSelected(self.handle, player.handle)
810
923
  end
811
924
  function Unit.prototype.explode(self)
812
- setUnitExploded(self.handle, true)
925
+ SetUnitExploded(self.handle, true)
813
926
  killUnit(self.handle)
814
927
  end
815
928
  function Unit.prototype.kill(self)
816
929
  killUnit(self.handle)
817
930
  end
818
931
  function Unit.prototype.revive(self, x, y, doEffect)
819
- local ____ReviveHero_5 = ReviveHero
820
- local ____array_4 = __TS__SparseArrayNew(self.handle, x, y)
821
- local ____doEffect_3 = doEffect
822
- if ____doEffect_3 == nil then
823
- ____doEffect_3 = false
932
+ local ____ReviveHero_7 = ReviveHero
933
+ local ____array_6 = __TS__SparseArrayNew(self.handle, x, y)
934
+ local ____doEffect_5 = doEffect
935
+ if ____doEffect_5 == nil then
936
+ ____doEffect_5 = false
824
937
  end
825
- __TS__SparseArrayPush(____array_4, ____doEffect_3)
826
- ____ReviveHero_5(__TS__SparseArraySpread(____array_4))
938
+ __TS__SparseArrayPush(____array_6, ____doEffect_5)
939
+ ____ReviveHero_7(__TS__SparseArraySpread(____array_6))
827
940
  end
828
941
  function Unit.prototype.healTarget(self, target, amount)
829
942
  if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
@@ -863,20 +976,19 @@ function Unit.prototype.dropItemSlot(self, item, slot)
863
976
  return UnitDropItemSlot(self.handle, item.handle, slot)
864
977
  end
865
978
  function Unit.prototype.itemInSlot(self, slot)
866
- return Item:of(unitItemInSlot(self.handle, slot))
979
+ return Item:of(UnitItemInSlot(self.handle, slot))
867
980
  end
868
981
  function Unit.prototype.addAbility(self, abilityId)
869
- if unitAddAbility(self.handle, abilityId) then
870
- local ability = UnitAbility:of(
871
- checkNotNull(getUnitAbility(self.handle, abilityId)),
872
- abilityId,
873
- self
874
- )
982
+ local ability = UnitAbility:of(
983
+ doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
984
+ abilityId,
985
+ self
986
+ )
987
+ if ability ~= nil then
875
988
  local abilities = self.abilities
876
989
  abilities[#abilities + 1] = ability
877
- return ability
878
990
  end
879
- return nil
991
+ return ability
880
992
  end
881
993
  function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
882
994
  return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
@@ -890,31 +1002,24 @@ end
890
1002
  function Unit.prototype.hasAbility(self, abilityId)
891
1003
  return getUnitAbilityLevel(self.handle, abilityId) > 0
892
1004
  end
893
- function Unit.prototype.getAbilityById(self, abilityId)
894
- local handle = self.handle
895
- if unitAddAbility(handle, abilityId) then
896
- assert(unitRemoveAbility(handle, abilityId))
897
- return nil
898
- end
899
- return UnitAbility:of(
900
- getUnitAbility(self.handle, abilityId),
901
- abilityId,
902
- self
903
- )
1005
+ function Unit.prototype.getAbility(self, abilityId)
1006
+ local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
1007
+ return UnitAbility:of(ability, abilityId, self)
904
1008
  end
905
- function Unit.prototype.removeAbility(self, abilityId)
906
- if unitRemoveAbility(self.handle, abilityId) then
907
- local abilities = self.abilities
908
- for i = 1, #abilities do
909
- if abilities[i].typeId == abilityId then
910
- abilities[i]:destroy()
911
- tremove(abilities, i)
912
- return true
1009
+ function Unit.prototype.removeAbility(self, abilityTypeId)
1010
+ local abilities = self.abilities
1011
+ for i = 1, #abilities do
1012
+ if abilities[i].typeId == abilityTypeId then
1013
+ local ability = abilities[i]
1014
+ tremove(abilities, i)
1015
+ if ability.state == 2 then
1016
+ break
913
1017
  end
1018
+ ability:destroy()
1019
+ return true
914
1020
  end
915
- return true
916
1021
  end
917
- return false
1022
+ return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
918
1023
  end
919
1024
  function Unit.prototype.hideAbility(self, abilityId, flag)
920
1025
  BlzUnitHideAbility(self.handle, abilityId, flag)
@@ -928,9 +1033,6 @@ end
928
1033
  function Unit.prototype.endAbilityCooldown(self, abilityId)
929
1034
  BlzEndUnitAbilityCooldown(self.handle, abilityId)
930
1035
  end
931
- function Unit.prototype.interruptAttack(self)
932
- unitInterruptAttack(self.handle)
933
- end
934
1036
  function Unit.prototype.interruptCast(self, abilityId)
935
1037
  local handle = self.handle
936
1038
  unitDisableAbility(handle, abilityId, true, false)
@@ -1001,18 +1103,44 @@ function Unit.prototype.unpauseEx(self)
1001
1103
  end
1002
1104
  function Unit.prototype.incrementStunCounter(self)
1003
1105
  local stunCounter = self[102] or 0
1004
- if not self[101] or stunCounter >= 0 then
1106
+ if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
1005
1107
  BlzPauseUnitEx(self.handle, true)
1006
1108
  end
1007
1109
  self[102] = stunCounter + 1
1008
1110
  end
1009
1111
  function Unit.prototype.decrementStunCounter(self)
1010
1112
  local stunCounter = self[102] or 0
1011
- if not self[101] or stunCounter >= 1 then
1113
+ if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
1012
1114
  BlzPauseUnitEx(self.handle, false)
1013
1115
  end
1014
1116
  self[102] = stunCounter - 1
1015
1117
  end
1118
+ function Unit.prototype.incrementForceStunCounter(self)
1119
+ local forceStunCounter = self[103] or 0
1120
+ if forceStunCounter == 0 then
1121
+ local handle = self.handle
1122
+ if not self[101] then
1123
+ for _ = self[102] or 0, -1 do
1124
+ BlzPauseUnitEx(handle, true)
1125
+ end
1126
+ end
1127
+ BlzPauseUnitEx(handle, true)
1128
+ end
1129
+ self[103] = forceStunCounter + 1
1130
+ end
1131
+ function Unit.prototype.decrementForceStunCounter(self)
1132
+ local forceStunCounter = self[103] or 0
1133
+ if forceStunCounter == 1 then
1134
+ local handle = self.handle
1135
+ if not self[101] then
1136
+ for _ = self[102] or 0, -1 do
1137
+ BlzPauseUnitEx(handle, false)
1138
+ end
1139
+ end
1140
+ BlzPauseUnitEx(handle, false)
1141
+ end
1142
+ self[103] = forceStunCounter - 1
1143
+ end
1016
1144
  function Unit.create(self, owner, id, x, y, facing, skinId)
1017
1145
  local handle = skinId and BlzCreateUnitWithSkin(
1018
1146
  owner.handle,
@@ -1201,7 +1329,7 @@ __TS__SetDescriptor(
1201
1329
  Unit.prototype,
1202
1330
  "isIllusion",
1203
1331
  {get = function(self)
1204
- return isUnitIllusion(self.handle)
1332
+ return IsUnitIllusion(self.handle)
1205
1333
  end},
1206
1334
  true
1207
1335
  )
@@ -1209,7 +1337,7 @@ __TS__SetDescriptor(
1209
1337
  Unit.prototype,
1210
1338
  "isStunned",
1211
1339
  {get = function(self)
1212
- return getUnitCurrentOrder(self.handle) == orderId("stunned")
1340
+ return getUnitCurrentOrder(self.handle) == 851973
1213
1341
  end},
1214
1342
  true
1215
1343
  )
@@ -1288,13 +1416,13 @@ __TS__SetDescriptor(
1288
1416
  )
1289
1417
  __TS__SetDescriptor(
1290
1418
  Unit.prototype,
1291
- "strengthBase",
1419
+ "primaryAttribute",
1292
1420
  {
1293
1421
  get = function(self)
1294
- return getHeroStr(self.handle, false)
1422
+ return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
1295
1423
  end,
1296
- set = function(self, strengthBase)
1297
- setHeroStr(self.handle, strengthBase, true)
1424
+ set = function(self, primaryAttribute)
1425
+ setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
1298
1426
  end
1299
1427
  },
1300
1428
  true
@@ -1316,19 +1444,6 @@ __TS__SetDescriptor(
1316
1444
  end},
1317
1445
  true
1318
1446
  )
1319
- __TS__SetDescriptor(
1320
- Unit.prototype,
1321
- "agilityBase",
1322
- {
1323
- get = function(self)
1324
- return getHeroAgi(self.handle, false)
1325
- end,
1326
- set = function(self, agilityBase)
1327
- setHeroAgi(self.handle, agilityBase, true)
1328
- end
1329
- },
1330
- true
1331
- )
1332
1447
  __TS__SetDescriptor(
1333
1448
  Unit.prototype,
1334
1449
  "agilityBonus",
@@ -1346,19 +1461,6 @@ __TS__SetDescriptor(
1346
1461
  end},
1347
1462
  true
1348
1463
  )
1349
- __TS__SetDescriptor(
1350
- Unit.prototype,
1351
- "intelligenceBase",
1352
- {
1353
- get = function(self)
1354
- return getHeroInt(self.handle, false)
1355
- end,
1356
- set = function(self, intelligenceBase)
1357
- setHeroInt(self.handle, intelligenceBase, true)
1358
- end
1359
- },
1360
- true
1361
- )
1362
1464
  __TS__SetDescriptor(
1363
1465
  Unit.prototype,
1364
1466
  "intelligenceBonus",
@@ -1407,17 +1509,17 @@ __TS__SetDescriptor(
1407
1509
  "isTeamGlowVisible",
1408
1510
  {
1409
1511
  get = function(self)
1410
- return not self[106]
1512
+ return not self[107]
1411
1513
  end,
1412
1514
  set = function(self, isTeamGlowVisible)
1413
- showUnitTeamGlow(self.handle, isTeamGlowVisible)
1414
- local ____temp_6
1515
+ BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
1516
+ local ____temp_8
1415
1517
  if not isTeamGlowVisible then
1416
- ____temp_6 = true
1518
+ ____temp_8 = true
1417
1519
  else
1418
- ____temp_6 = nil
1520
+ ____temp_8 = nil
1419
1521
  end
1420
- self[106] = ____temp_6
1522
+ self[107] = ____temp_8
1421
1523
  end
1422
1524
  },
1423
1525
  true
@@ -1426,9 +1528,9 @@ __TS__SetDescriptor(
1426
1528
  Unit.prototype,
1427
1529
  "color",
1428
1530
  {set = function(self, color)
1429
- setUnitColor(self.handle, color.handle)
1430
- if self[106] then
1431
- showUnitTeamGlow(self.handle, false)
1531
+ SetUnitColor(self.handle, color.handle)
1532
+ if self[107] then
1533
+ BlzShowUnitTeamGlow(self.handle, false)
1432
1534
  end
1433
1535
  end},
1434
1536
  true
@@ -1451,14 +1553,14 @@ __TS__SetDescriptor(
1451
1553
  "maxHealth",
1452
1554
  {
1453
1555
  get = function(self)
1454
- return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
1556
+ return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
1455
1557
  end,
1456
1558
  set = function(self, maxHealth)
1457
- if maxHealth < 1 and self[103] ~= nil then
1458
- self[104] = (self[104] or 0) + (1 - maxHealth)
1559
+ if maxHealth < 1 and self[104] ~= nil then
1560
+ self[105] = (self[105] or 0) + (1 - maxHealth)
1459
1561
  maxHealth = 1
1460
1562
  end
1461
- BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
1563
+ BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
1462
1564
  end
1463
1565
  },
1464
1566
  true
@@ -1500,10 +1602,10 @@ __TS__SetDescriptor(
1500
1602
  "health",
1501
1603
  {
1502
1604
  get = function(self)
1503
- return GetWidgetLife(self.handle) - (self[105] or 0)
1605
+ return GetWidgetLife(self.handle) - (self[106] or 0)
1504
1606
  end,
1505
1607
  set = function(self, health)
1506
- SetWidgetLife(self.handle, health + (self[105] or 0))
1608
+ SetWidgetLife(self.handle, health + (self[106] or 0))
1507
1609
  end
1508
1610
  },
1509
1611
  true
@@ -1579,25 +1681,12 @@ __TS__SetDescriptor(
1579
1681
  },
1580
1682
  true
1581
1683
  )
1582
- __TS__SetDescriptor(
1583
- Unit.prototype,
1584
- "flyHeight",
1585
- {
1586
- get = function(self)
1587
- return getUnitFlyHeight(self.handle)
1588
- end,
1589
- set = function(self, v)
1590
- SetUnitFlyHeight(self.handle, v, 100000)
1591
- end
1592
- },
1593
- true
1594
- )
1595
1684
  __TS__SetDescriptor(
1596
1685
  Unit.prototype,
1597
1686
  "x",
1598
1687
  {
1599
1688
  get = function(self)
1600
- return getUnitX(self.handle)
1689
+ return self[108] or getUnitX(self.handle)
1601
1690
  end,
1602
1691
  set = function(self, v)
1603
1692
  SetUnitX(self.handle, v)
@@ -1610,7 +1699,7 @@ __TS__SetDescriptor(
1610
1699
  "y",
1611
1700
  {
1612
1701
  get = function(self)
1613
- return getUnitY(self.handle)
1702
+ return self[109] or getUnitY(self.handle)
1614
1703
  end,
1615
1704
  set = function(self, v)
1616
1705
  SetUnitY(self.handle, v)
@@ -1696,10 +1785,10 @@ __TS__SetDescriptor(
1696
1785
  "gold",
1697
1786
  {
1698
1787
  get = function(self)
1699
- return getResourceAmount(self.handle)
1788
+ return GetResourceAmount(self.handle)
1700
1789
  end,
1701
1790
  set = function(self, gold)
1702
- setResourceAmount(self.handle, gold)
1791
+ SetResourceAmount(self.handle, gold)
1703
1792
  end
1704
1793
  },
1705
1794
  true
@@ -1715,14 +1804,18 @@ __TS__SetDescriptor(
1715
1804
  local handle = self.handle
1716
1805
  if isPaused and not IsUnitPaused(handle) then
1717
1806
  self[101] = true
1718
- for _ = self[102] or 0, -1 do
1719
- BlzPauseUnitEx(handle, true)
1807
+ if (self[103] or 0) <= 0 then
1808
+ for _ = self[102] or 0, -1 do
1809
+ BlzPauseUnitEx(handle, true)
1810
+ end
1720
1811
  end
1721
1812
  PauseUnit(handle, true)
1722
1813
  elseif not isPaused and IsUnitPaused(handle) then
1723
1814
  PauseUnit(handle, false)
1724
- for _ = self[102] or 0, -1 do
1725
- BlzPauseUnitEx(handle, false)
1815
+ if (self[103] or 0) <= 0 then
1816
+ for _ = self[102] or 0, -1 do
1817
+ BlzPauseUnitEx(handle, false)
1818
+ end
1726
1819
  end
1727
1820
  self[101] = nil
1728
1821
  end
@@ -1780,20 +1873,6 @@ __TS__SetDescriptor(
1780
1873
  },
1781
1874
  true
1782
1875
  )
1783
- __TS__SetDescriptor(
1784
- Unit.prototype,
1785
- "scale",
1786
- {
1787
- get = function(self)
1788
- return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
1789
- end,
1790
- set = function(self, v)
1791
- setUnitScale(self.handle, v, v, v)
1792
- setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
1793
- end
1794
- },
1795
- true
1796
- )
1797
1876
  __TS__SetDescriptor(
1798
1877
  Unit.prototype,
1799
1878
  "timeScale",
@@ -1820,13 +1899,26 @@ __TS__SetDescriptor(
1820
1899
  Unit.prototype,
1821
1900
  "pathingCollisionRange",
1822
1901
  {get = function(self)
1823
- return 16 * (min(
1902
+ return 16 * (math.min(
1824
1903
  getUnitCollisionSize(self.handle) // 16,
1825
1904
  3
1826
1905
  ) + 1)
1827
1906
  end},
1828
1907
  true
1829
1908
  )
1909
+ __TS__SetDescriptor(
1910
+ Unit.prototype,
1911
+ "movementType",
1912
+ {
1913
+ get = function(self)
1914
+ return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
1915
+ end,
1916
+ set = function(self, movementType)
1917
+ setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
1918
+ end
1919
+ },
1920
+ true
1921
+ )
1830
1922
  __TS__SetDescriptor(
1831
1923
  Unit.prototype,
1832
1924
  "pathing",
@@ -1917,30 +2009,6 @@ __TS__SetDescriptor(
1917
2009
  end},
1918
2010
  true
1919
2011
  )
1920
- __TS__SetDescriptor(
1921
- Unit.prototype,
1922
- "onUnitInRange",
1923
- {get = function(self)
1924
- local handle = self.handle
1925
- local onUnitInRange = setmetatable(
1926
- {},
1927
- {__index = function(self, value)
1928
- local event = __TS__New(
1929
- TriggerEvent,
1930
- function(trigger)
1931
- TriggerRegisterUnitInRangeSimple(trigger, value, handle)
1932
- end,
1933
- function() return ____exports.Unit:of(handle) end
1934
- )
1935
- rawset(self, value, event)
1936
- return event
1937
- end}
1938
- )
1939
- rawset(self, "onUnitInRange", onUnitInRange)
1940
- return onUnitInRange
1941
- end},
1942
- true
1943
- )
1944
2012
  __TS__SetDescriptor(
1945
2013
  Unit.prototype,
1946
2014
  "onManaEqual",
@@ -2008,6 +2076,14 @@ __TS__SetDescriptor(
2008
2076
  end},
2009
2077
  true
2010
2078
  )
2079
+ __TS__SetDescriptor(
2080
+ Unit.prototype,
2081
+ "targetAcquiredEvent",
2082
+ {get = function(self)
2083
+ return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
2084
+ end},
2085
+ true
2086
+ )
2011
2087
  __TS__SetDescriptor(
2012
2088
  Unit.prototype,
2013
2089
  "onSelect",
@@ -2068,6 +2144,11 @@ __TS__SetDescriptor(
2068
2144
  end},
2069
2145
  true
2070
2146
  )
2147
+ Unit.levelChangedEvent = __TS__New(
2148
+ ____exports.UnitTriggerEvent,
2149
+ EVENT_PLAYER_HERO_LEVEL,
2150
+ function() return ____exports.Unit:of(getTriggerUnit()) end
2151
+ )
2071
2152
  Unit.deathEvent = __TS__New(
2072
2153
  ____exports.UnitTriggerEvent,
2073
2154
  EVENT_PLAYER_UNIT_DEATH,
@@ -2085,7 +2166,7 @@ Unit.onResurrect = __TS__New(
2085
2166
  ____exports.Unit.deathEvent:addListener(function(unit)
2086
2167
  dead[unit] = true
2087
2168
  end)
2088
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2169
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2089
2170
  if dead[unit] and not IsUnitType(unit.handle, UNIT_TYPE_DEAD) then
2090
2171
  dead[unit] = false
2091
2172
  invoke(event, unit)
@@ -2102,7 +2183,7 @@ Unit.morphEvent = __TS__New(
2102
2183
  invoke(event, unit)
2103
2184
  end
2104
2185
  end
2105
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2186
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2106
2187
  if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
2107
2188
  Timer:run(ifNotLeft, unit)
2108
2189
  end
@@ -2143,25 +2224,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
2143
2224
  InitializingEvent,
2144
2225
  function(event)
2145
2226
  local function listener(unit, id)
2146
- local ____GetSpellTargetUnit_result_9
2227
+ local ____GetSpellTargetUnit_result_11
2147
2228
  if GetSpellTargetUnit() then
2148
- ____GetSpellTargetUnit_result_9 = ____exports.Unit:of(GetSpellTargetUnit())
2229
+ ____GetSpellTargetUnit_result_11 = ____exports.Unit:of(GetSpellTargetUnit())
2149
2230
  else
2150
- local ____GetSpellTargetItem_result_8
2231
+ local ____GetSpellTargetItem_result_10
2151
2232
  if GetSpellTargetItem() then
2152
- ____GetSpellTargetItem_result_8 = Item:of(GetSpellTargetItem())
2233
+ ____GetSpellTargetItem_result_10 = Item:of(GetSpellTargetItem())
2153
2234
  else
2154
- local ____GetSpellTargetDestructable_result_7
2235
+ local ____GetSpellTargetDestructable_result_9
2155
2236
  if GetSpellTargetDestructable() then
2156
- ____GetSpellTargetDestructable_result_7 = Destructable:of(GetSpellTargetDestructable())
2237
+ ____GetSpellTargetDestructable_result_9 = Destructable:of(GetSpellTargetDestructable())
2157
2238
  else
2158
- ____GetSpellTargetDestructable_result_7 = nil
2239
+ ____GetSpellTargetDestructable_result_9 = nil
2159
2240
  end
2160
- ____GetSpellTargetItem_result_8 = ____GetSpellTargetDestructable_result_7
2241
+ ____GetSpellTargetItem_result_10 = ____GetSpellTargetDestructable_result_9
2161
2242
  end
2162
- ____GetSpellTargetUnit_result_9 = ____GetSpellTargetItem_result_8
2243
+ ____GetSpellTargetUnit_result_11 = ____GetSpellTargetItem_result_10
2163
2244
  end
2164
- local target = ____GetSpellTargetUnit_result_9
2245
+ local target = ____GetSpellTargetUnit_result_11
2165
2246
  if target then
2166
2247
  invoke(event, unit, id, target)
2167
2248
  end
@@ -2369,38 +2450,57 @@ Unit.onDamaging = (function()
2369
2450
  if source and source.typeId == dummyUnitId then
2370
2451
  source = nil
2371
2452
  end
2372
- local target = BlzGetEventDamageTarget()
2453
+ local target = ____exports.Unit:of(BlzGetEventDamageTarget())
2454
+ local metadata = damageMetadataByTarget[target]
2455
+ damageMetadataByTarget[target] = nil
2373
2456
  local data = {
2374
2457
  amount = GetEventDamage(),
2375
- attackType = BlzGetEventAttackType(),
2458
+ attackType = nativeToAttackType(BlzGetEventAttackType()),
2376
2459
  damageType = BlzGetEventDamageType(),
2377
2460
  weaponType = BlzGetEventWeaponType(),
2378
- isAttack = BlzGetEventIsAttack()
2461
+ metadata = metadata,
2462
+ isAttack = BlzGetEventIsAttack(),
2463
+ originalAmount = GetEventDamage(),
2464
+ originalMetadata = metadata,
2465
+ preventRetaliation = damagingEventPreventRetaliation
2379
2466
  }
2380
2467
  if data.isAttack and source then
2381
- local weapon = BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 1) and (BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 0) and -1 or 1) or 0
2382
- if weapon == -1 then
2383
- local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
2384
- weapon = 0
2385
- end
2386
- data.weapon = assert(source.weapons[weapon + 1])
2468
+ data.weapon = source:chooseWeapon(target)
2387
2469
  end
2388
2470
  if not data.isAttack or not source or not source._attackHandlers then
2389
2471
  invoke(
2390
2472
  event,
2391
2473
  source,
2392
- ____exports.Unit:of(target),
2474
+ target,
2393
2475
  setmetatable(
2394
2476
  {},
2395
2477
  {
2396
2478
  __index = data,
2397
2479
  __newindex = function(self, key, value)
2398
- damageSetters[key](value)
2480
+ local damageSetter = damageSetters[key]
2481
+ if damageSetter ~= nil then
2482
+ damageSetter(value)
2483
+ end
2399
2484
  data[key] = value
2400
2485
  end
2401
2486
  }
2402
2487
  )
2403
2488
  )
2489
+ if data[0] and source then
2490
+ local sourceOwner = source.owner.handle
2491
+ data[1] = sourceOwner
2492
+ local targetOwner = target.owner.handle
2493
+ data[2] = targetOwner
2494
+ if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
2495
+ SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
2496
+ data[3] = true
2497
+ end
2498
+ if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
2499
+ SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
2500
+ data[4] = true
2501
+ end
2502
+ end
2503
+ damagingEventByTarget[target] = data
2404
2504
  return
2405
2505
  end
2406
2506
  BlzSetEventDamage(0)
@@ -2408,7 +2508,7 @@ Unit.onDamaging = (function()
2408
2508
  BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
2409
2509
  BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
2410
2510
  local sourceOwner = source.owner.handle
2411
- local targetOwner = GetOwningPlayer(target)
2511
+ local targetOwner = target.owner.handle
2412
2512
  if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
2413
2513
  SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
2414
2514
  Timer:run(function()
@@ -2424,23 +2524,19 @@ Unit.onDamaging = (function()
2424
2524
  for ____, ____value in ipairs(source._attackHandlers) do
2425
2525
  local condition = ____value[1]
2426
2526
  local action = ____value[2]
2427
- if condition(
2428
- source,
2429
- ____exports.Unit:of(target),
2430
- data
2431
- ) then
2527
+ if condition(source, target, data) then
2432
2528
  action(
2433
2529
  source,
2434
- ____exports.Unit:of(target),
2530
+ target,
2435
2531
  setmetatable(
2436
2532
  {fire = function()
2437
2533
  UnitDamageTarget(
2438
2534
  source.handle,
2439
- target,
2535
+ target.handle,
2440
2536
  data.amount,
2441
2537
  true,
2442
2538
  true,
2443
- data.attackType,
2539
+ attackTypeToNative(data.attackType),
2444
2540
  data.damageType,
2445
2541
  data.weaponType
2446
2542
  )
@@ -2467,30 +2563,54 @@ Unit.onDamage = __TS__New(
2467
2563
  if source and source.typeId == dummyUnitId then
2468
2564
  source = nil
2469
2565
  end
2566
+ local target = ____exports.Unit:of(BlzGetEventDamageTarget())
2567
+ local damagingEvent = damagingEventByTarget[target]
2568
+ damagingEventByTarget[target] = nil
2470
2569
  local data = {
2471
2570
  amount = GetEventDamage(),
2472
- attackType = BlzGetEventAttackType(),
2571
+ attackType = nativeToAttackType(BlzGetEventAttackType()),
2473
2572
  damageType = BlzGetEventDamageType(),
2474
2573
  weaponType = BlzGetEventWeaponType(),
2574
+ metadata = damagingEvent and damagingEvent.metadata,
2475
2575
  isAttack = BlzGetEventIsAttack(),
2476
- originalAmount = GetEventDamage(),
2576
+ originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
2577
+ originalMetadata = damagingEvent and damagingEvent.originalMetadata,
2477
2578
  preventDeath = damageEventPreventDeath
2478
2579
  }
2580
+ if damagingEvent then
2581
+ for key, value in pairs(damagingEvent) do
2582
+ if isAttribute(key) then
2583
+ data[key] = value
2584
+ end
2585
+ end
2586
+ local sourceOwner = damagingEvent[1]
2587
+ if sourceOwner then
2588
+ local targetOwner = damagingEvent[2]
2589
+ if damagingEvent[3] then
2590
+ SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
2591
+ end
2592
+ if damagingEvent[4] then
2593
+ SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
2594
+ end
2595
+ end
2596
+ end
2479
2597
  local evData = setmetatable(
2480
2598
  {},
2481
2599
  {
2482
2600
  __index = data,
2483
2601
  __newindex = function(self, key, value)
2484
- damageSetters[key](value)
2602
+ local damageSetter = damageSetters[key]
2603
+ if damageSetter ~= nil then
2604
+ damageSetter(value)
2605
+ end
2485
2606
  data[key] = value
2486
2607
  end
2487
2608
  }
2488
2609
  )
2489
- local target = ____exports.Unit:of(BlzGetEventDamageTarget())
2490
2610
  invoke(event, source, target, evData)
2491
2611
  if evData[0] ~= nil and target.health - evData.amount < 0.405 then
2492
2612
  local bonusHealth = math.ceil(evData.amount)
2493
- target[105] = (target[105] or 0) + bonusHealth
2613
+ target[106] = (target[106] or 0) + bonusHealth
2494
2614
  BlzSetUnitMaxHP(
2495
2615
  target.handle,
2496
2616
  BlzGetUnitMaxHP(target.handle) + bonusHealth
@@ -2504,7 +2624,7 @@ Unit.onDamage = __TS__New(
2504
2624
  evData[0],
2505
2625
  table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
2506
2626
  )
2507
- target[105] = (target[105] or 0) - bonusHealth
2627
+ target[106] = (target[106] or 0) - bonusHealth
2508
2628
  SetWidgetLife(
2509
2629
  target.handle,
2510
2630
  GetWidgetLife(target.handle) - bonusHealth
@@ -2530,7 +2650,7 @@ Unit.itemDroppedEvent = __TS__New(
2530
2650
  function()
2531
2651
  local unit = getTriggerUnit()
2532
2652
  local item = getManipulatedItem()
2533
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2653
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2534
2654
  return ____exports.Unit:of(unit), Item:of(item)
2535
2655
  end
2536
2656
  return IgnoreEvent
@@ -2540,10 +2660,14 @@ Unit.itemPickedUpEvent = __TS__New(
2540
2660
  ____exports.UnitTriggerEvent,
2541
2661
  EVENT_PLAYER_UNIT_PICKUP_ITEM,
2542
2662
  function()
2543
- local unit = getTriggerUnit()
2544
- local item = getManipulatedItem()
2545
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2546
- return ____exports.Unit:of(unit), Item:of(item)
2663
+ local unitHandle = getTriggerUnit()
2664
+ local itemHandle = getManipulatedItem()
2665
+ if getUnitTypeId(unitHandle) ~= dummyUnitId and not isItemIgnoredInEvents(itemHandle) then
2666
+ local unit = ____exports.Unit:of(unitHandle)
2667
+ local item = Item:of(itemHandle)
2668
+ if ownerByItem[item] ~= unit then
2669
+ return unit, item
2670
+ end
2547
2671
  end
2548
2672
  return IgnoreEvent
2549
2673
  end
@@ -2554,59 +2678,24 @@ Unit.itemUsedEvent = __TS__New(
2554
2678
  function()
2555
2679
  local unit = getTriggerUnit()
2556
2680
  local item = getManipulatedItem()
2557
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2681
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2558
2682
  return ____exports.Unit:of(unit), Item:of(item)
2559
2683
  end
2560
2684
  return IgnoreEvent
2561
2685
  end
2562
2686
  )
2563
- Unit.itemStackedEvent = __TS__New(
2564
- ____exports.UnitTriggerEvent,
2565
- EVENT_PLAYER_UNIT_STACK_ITEM,
2566
- function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
2567
- )
2568
2687
  __TS__ObjectDefineProperty(
2569
2688
  Unit,
2570
- "itemUseOrderEvent",
2689
+ "itemChargesChangedEvent",
2571
2690
  {get = function(self)
2572
2691
  local event = __TS__New(Event)
2573
- for order = orderId("useslot0"), orderId("useslot5") do
2574
- local slot = order - orderId("useslot0")
2575
- local function listener(unit)
2576
- local item = unit.items[slot + 1]
2577
- if item ~= nil then
2578
- invoke(event, unit, item)
2579
- end
2692
+ Item.chargesChangedEvent:addListener(function(item)
2693
+ local unit = item.owner
2694
+ if unit ~= nil then
2695
+ invoke(event, unit, item)
2580
2696
  end
2581
- self.onImmediateOrder[order]:addListener(listener)
2582
- self.onTargetOrder[order]:addListener(listener)
2583
- self.onPointOrder[order]:addListener(listener)
2584
- end
2585
- rawset(self, "itemUseOrderEvent", event)
2586
- return event
2587
- end}
2588
- )
2589
- __TS__ObjectDefineProperty(
2590
- Unit,
2591
- "itemMoveOrderEvent",
2592
- {get = function(self)
2593
- local event = __TS__New(Event)
2594
- for order = orderId("moveslot0"), orderId("moveslot5") do
2595
- local slotTo = order - orderId("moveslot0")
2596
- self.onTargetOrder[order]:addListener(function(unit, item)
2597
- local slotFrom = unit.items:findSlot(item)
2598
- if slotFrom ~= nil then
2599
- invoke(
2600
- event,
2601
- unit,
2602
- item,
2603
- slotFrom,
2604
- slotTo
2605
- )
2606
- end
2607
- end)
2608
- end
2609
- rawset(self, "itemMoveOrderEvent", event)
2697
+ end)
2698
+ rawset(self, "itemChargesChangedEvent", event)
2610
2699
  return event
2611
2700
  end}
2612
2701
  )
@@ -2635,6 +2724,10 @@ __TS__ObjectDefineProperty(
2635
2724
  rawset(self, "destroyEvent", destroyEvent)
2636
2725
  return destroyEvent
2637
2726
  end}
2727
+ )
2728
+ Unit.synchronize = synchronizer(
2729
+ function(unit) return unit.syncId end,
2730
+ function(syncId) return unitBySyncId[syncId] end
2638
2731
  );
2639
2732
  (function(self)
2640
2733
  local leaveAbilityIds = postcompile(function()
@@ -2652,11 +2745,7 @@ __TS__ObjectDefineProperty(
2652
2745
  function(____, id) return fourCC(id) end
2653
2746
  )
2654
2747
  end)
2655
- for ____, leaveOrderId in ipairs({
2656
- orderId("undefend"),
2657
- orderId("magicundefense"),
2658
- orderId("unimmolation")
2659
- }) do
2748
+ for ____, leaveOrderId in ipairs({852056, 852479, 852178}) do
2660
2749
  ____exports.Unit.onImmediateOrder[leaveOrderId]:addListener(function(unit)
2661
2750
  local handle = unit.handle
2662
2751
  for i = 1, #leaveAbilityIds do
@@ -2664,7 +2753,8 @@ __TS__ObjectDefineProperty(
2664
2753
  return
2665
2754
  end
2666
2755
  end
2667
- unit:destroy()
2756
+ unit:saveData()
2757
+ Timer:run(unit, "destroy")
2668
2758
  end)
2669
2759
  end
2670
2760
  end)(Unit)