warscript 0.0.1-dev.008d8ef

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 (507) hide show
  1. package/LICENSE +23 -0
  2. package/attributes.d.ts +12 -0
  3. package/attributes.lua +16 -0
  4. package/binaryreader.d.ts +21 -0
  5. package/binaryreader.lua +53 -0
  6. package/binarywriter.d.ts +21 -0
  7. package/binarywriter.lua +90 -0
  8. package/core/dummy.d.ts +22 -0
  9. package/core/dummy.lua +133 -0
  10. package/core/game.d.ts +3 -0
  11. package/core/game.lua +24 -0
  12. package/core/thread.d.ts +8 -0
  13. package/core/thread.lua +40 -0
  14. package/core/types/ability.d.ts +4 -0
  15. package/core/types/ability.lua +10 -0
  16. package/core/types/async.d.ts +3 -0
  17. package/core/types/async.lua +2 -0
  18. package/core/types/camera.d.ts +4 -0
  19. package/core/types/camera.lua +21 -0
  20. package/core/types/cameraField.d.ts +15 -0
  21. package/core/types/cameraField.lua +38 -0
  22. package/core/types/color.d.ts +16 -0
  23. package/core/types/color.lua +93 -0
  24. package/core/types/destructable.d.ts +31 -0
  25. package/core/types/destructable.lua +245 -0
  26. package/core/types/effect.d.ts +31 -0
  27. package/core/types/effect.lua +209 -0
  28. package/core/types/frame.d.ts +141 -0
  29. package/core/types/frame.lua +884 -0
  30. package/core/types/game.d.ts +8 -0
  31. package/core/types/game.lua +41 -0
  32. package/core/types/group.d.ts +21 -0
  33. package/core/types/group.lua +94 -0
  34. package/core/types/handle.d.ts +49 -0
  35. package/core/types/handle.lua +174 -0
  36. package/core/types/image.d.ts +29 -0
  37. package/core/types/image.lua +121 -0
  38. package/core/types/internal/ability+cooldownRemaining.d.ts +1 -0
  39. package/core/types/internal/ability+cooldownRemaining.lua +0 -0
  40. package/core/types/item.d.ts +4 -0
  41. package/core/types/item.lua +6 -0
  42. package/core/types/missile.d.ts +22 -0
  43. package/core/types/missile.lua +239 -0
  44. package/core/types/order.d.ts +25 -0
  45. package/core/types/order.lua +55 -0
  46. package/core/types/player.d.ts +71 -0
  47. package/core/types/player.lua +448 -0
  48. package/core/types/playerCamera.d.ts +32 -0
  49. package/core/types/playerCamera.lua +162 -0
  50. package/core/types/playerColor.d.ts +40 -0
  51. package/core/types/playerColor.lua +203 -0
  52. package/core/types/rect.d.ts +39 -0
  53. package/core/types/rect.lua +152 -0
  54. package/core/types/region.d.ts +14 -0
  55. package/core/types/region.lua +84 -0
  56. package/core/types/sound.d.ts +69 -0
  57. package/core/types/sound.lua +247 -0
  58. package/core/types/tileCell.d.ts +13 -0
  59. package/core/types/tileCell.lua +100 -0
  60. package/core/types/timer.d.ts +36 -0
  61. package/core/types/timer.lua +230 -0
  62. package/core/types/timerDialog.d.ts +19 -0
  63. package/core/types/timerDialog.lua +95 -0
  64. package/core/types/unit.d.ts +10 -0
  65. package/core/types/unit.lua +32 -0
  66. package/core/types/widget.d.ts +5 -0
  67. package/core/types/widget.lua +2 -0
  68. package/core/util.d.ts +62 -0
  69. package/core/util.lua +464 -0
  70. package/core/vecmath/common.d.ts +18 -0
  71. package/core/vecmath/common.lua +29 -0
  72. package/core/vecmath/mat2.d.ts +73 -0
  73. package/core/vecmath/mat2.lua +261 -0
  74. package/core/vecmath/vec3.d.ts +47 -0
  75. package/core/vecmath/vec3.lua +350 -0
  76. package/core/vecmath/vec4.d.ts +54 -0
  77. package/core/vecmath/vec4.lua +400 -0
  78. package/crypto/ecc.d.ts +6 -0
  79. package/crypto/ecc.lua +1734 -0
  80. package/decl/index.d.ts +117 -0
  81. package/decl/native.d.ts +8198 -0
  82. package/destroyable.d.ts +20 -0
  83. package/destroyable.lua +31 -0
  84. package/engine/ability.d.ts +5 -0
  85. package/engine/ability.lua +7 -0
  86. package/engine/behavior.d.ts +28 -0
  87. package/engine/behavior.lua +181 -0
  88. package/engine/behaviour/ability/apply-buff.d.ts +38 -0
  89. package/engine/behaviour/ability/apply-buff.lua +126 -0
  90. package/engine/behaviour/ability/apply-unit-behavior.d.ts +21 -0
  91. package/engine/behaviour/ability/apply-unit-behavior.lua +58 -0
  92. package/engine/behaviour/ability/damage.d.ts +47 -0
  93. package/engine/behaviour/ability/damage.lua +133 -0
  94. package/engine/behaviour/ability/heal.d.ts +43 -0
  95. package/engine/behaviour/ability/heal.lua +114 -0
  96. package/engine/behaviour/ability/instant-impact.d.ts +6 -0
  97. package/engine/behaviour/ability/instant-impact.lua +29 -0
  98. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  99. package/engine/behaviour/ability/restore-mana.lua +29 -0
  100. package/engine/behaviour/ability.d.ts +47 -0
  101. package/engine/behaviour/ability.lua +237 -0
  102. package/engine/behaviour/unit/stun-immunity.d.ts +18 -0
  103. package/engine/behaviour/unit/stun-immunity.lua +67 -0
  104. package/engine/behaviour/unit.d.ts +21 -0
  105. package/engine/behaviour/unit.lua +82 -0
  106. package/engine/buff.d.ts +221 -0
  107. package/engine/buff.lua +1091 -0
  108. package/engine/constants.d.ts +7 -0
  109. package/engine/constants.lua +8 -0
  110. package/engine/game-map.d.ts +7 -0
  111. package/engine/game-map.lua +32 -0
  112. package/engine/index.d.ts +5 -0
  113. package/engine/index.lua +2 -0
  114. package/engine/internal/ability.d.ts +91 -0
  115. package/engine/internal/ability.lua +531 -0
  116. package/engine/internal/item/ability.d.ts +2 -0
  117. package/engine/internal/item/ability.lua +48 -0
  118. package/engine/internal/item+owner.d.ts +7 -0
  119. package/engine/internal/item+owner.lua +22 -0
  120. package/engine/internal/item.d.ts +86 -0
  121. package/engine/internal/item.lua +580 -0
  122. package/engine/internal/mechanics/ability-duration.d.ts +2 -0
  123. package/engine/internal/mechanics/ability-duration.lua +13 -0
  124. package/engine/internal/mechanics/area-damage.d.ts +2 -0
  125. package/engine/internal/mechanics/area-damage.lua +33 -0
  126. package/engine/internal/mechanics/cast-ability.d.ts +2 -0
  127. package/engine/internal/mechanics/cast-ability.lua +86 -0
  128. package/engine/internal/misc/dummy-units.d.ts +2 -0
  129. package/engine/internal/misc/dummy-units.lua +14 -0
  130. package/engine/internal/object-data/armor-increase.d.ts +2 -0
  131. package/engine/internal/object-data/armor-increase.lua +19 -0
  132. package/engine/internal/object-data/attribute-bonus.d.ts +2 -0
  133. package/engine/internal/object-data/attribute-bonus.lua +15 -0
  134. package/engine/internal/object-data/auto-attack-damage-increase.d.ts +2 -0
  135. package/engine/internal/object-data/auto-attack-damage-increase.lua +17 -0
  136. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +2 -0
  137. package/engine/internal/object-data/auto-attack-speed-increase.lua +14 -0
  138. package/engine/internal/object-data/dummy-inventory.d.ts +2 -0
  139. package/engine/internal/object-data/dummy-inventory.lua +16 -0
  140. package/engine/internal/object-data/dummy-item.d.ts +2 -0
  141. package/engine/internal/object-data/dummy-item.lua +10 -0
  142. package/engine/internal/object-data/ghost-visible.d.ts +2 -0
  143. package/engine/internal/object-data/ghost-visible.lua +15 -0
  144. package/engine/internal/object-data/invulnerable.d.ts +2 -0
  145. package/engine/internal/object-data/invulnerable.lua +11 -0
  146. package/engine/internal/object-data/movement-speed-increase-factor.d.ts +2 -0
  147. package/engine/internal/object-data/movement-speed-increase-factor.lua +18 -0
  148. package/engine/internal/unit/ability.d.ts +143 -0
  149. package/engine/internal/unit/ability.lua +369 -0
  150. package/engine/internal/unit/allowed-targets.d.ts +17 -0
  151. package/engine/internal/unit/allowed-targets.lua +19 -0
  152. package/engine/internal/unit/band-aids/ancestral-spirit-cannibalize.d.ts +2 -0
  153. package/engine/internal/unit/band-aids/ancestral-spirit-cannibalize.lua +21 -0
  154. package/engine/internal/unit/bonus.d.ts +40 -0
  155. package/engine/internal/unit/bonus.lua +188 -0
  156. package/engine/internal/unit/buff.d.ts +38 -0
  157. package/engine/internal/unit/buff.lua +81 -0
  158. package/engine/internal/unit/detach-missiles.d.ts +7 -0
  159. package/engine/internal/unit/detach-missiles.lua +30 -0
  160. package/engine/internal/unit/expiration-timer.d.ts +22 -0
  161. package/engine/internal/unit/expiration-timer.lua +44 -0
  162. package/engine/internal/unit/ghost-counter.d.ts +12 -0
  163. package/engine/internal/unit/ghost-counter.lua +26 -0
  164. package/engine/internal/unit/invulnerability-counter.d.ts +12 -0
  165. package/engine/internal/unit/invulnerability-counter.lua +26 -0
  166. package/engine/internal/unit/missile.d.ts +42 -0
  167. package/engine/internal/unit/missile.lua +70 -0
  168. package/engine/internal/unit/movement-speed.d.ts +18 -0
  169. package/engine/internal/unit/movement-speed.lua +42 -0
  170. package/engine/internal/unit/summon-event.d.ts +12 -0
  171. package/engine/internal/unit/summon-event.lua +50 -0
  172. package/engine/internal/unit+ability.d.ts +9 -0
  173. package/engine/internal/unit+ability.lua +59 -0
  174. package/engine/internal/unit+bonus.d.ts +8 -0
  175. package/engine/internal/unit+bonus.lua +40 -0
  176. package/engine/internal/unit+damage.d.ts +69 -0
  177. package/engine/internal/unit+damage.lua +123 -0
  178. package/engine/internal/unit+rally.d.ts +10 -0
  179. package/engine/internal/unit+rally.lua +159 -0
  180. package/engine/internal/unit+spellSteal.d.ts +7 -0
  181. package/engine/internal/unit+spellSteal.lua +64 -0
  182. package/engine/internal/unit+transport.d.ts +12 -0
  183. package/engine/internal/unit+transport.lua +96 -0
  184. package/engine/internal/unit-missile-data.d.ts +2 -0
  185. package/engine/internal/unit-missile-data.lua +107 -0
  186. package/engine/internal/unit-missile-launch.d.ts +7 -0
  187. package/engine/internal/unit-missile-launch.lua +32 -0
  188. package/engine/internal/unit.d.ts +339 -0
  189. package/engine/internal/unit.lua +2590 -0
  190. package/engine/internal/utility.d.ts +2 -0
  191. package/engine/internal/utility.lua +13 -0
  192. package/engine/lightning.d.ts +51 -0
  193. package/engine/lightning.lua +303 -0
  194. package/engine/local-client.d.ts +16 -0
  195. package/engine/local-client.lua +86 -0
  196. package/engine/object-data/auxiliary/animation-name.d.ts +14 -0
  197. package/engine/object-data/auxiliary/animation-name.lua +2 -0
  198. package/engine/object-data/auxiliary/animation-qualifier.d.ts +53 -0
  199. package/engine/object-data/auxiliary/animation-qualifier.lua +2 -0
  200. package/engine/object-data/auxiliary/armor-sound-type.d.ts +8 -0
  201. package/engine/object-data/auxiliary/armor-sound-type.lua +2 -0
  202. package/engine/object-data/auxiliary/attachment-preset.d.ts +14 -0
  203. package/engine/object-data/auxiliary/attachment-preset.lua +29 -0
  204. package/engine/object-data/auxiliary/attack-type.d.ts +11 -0
  205. package/engine/object-data/auxiliary/attack-type.lua +2 -0
  206. package/engine/object-data/auxiliary/buff-polarity.d.ts +6 -0
  207. package/engine/object-data/auxiliary/buff-polarity.lua +2 -0
  208. package/engine/object-data/auxiliary/buff-resistance-type.d.ts +6 -0
  209. package/engine/object-data/auxiliary/buff-resistance-type.lua +2 -0
  210. package/engine/object-data/auxiliary/combat-classification.d.ts +44 -0
  211. package/engine/object-data/auxiliary/combat-classification.lua +206 -0
  212. package/engine/object-data/auxiliary/detection-type.d.ts +7 -0
  213. package/engine/object-data/auxiliary/detection-type.lua +2 -0
  214. package/engine/object-data/auxiliary/model-node-name.d.ts +12 -0
  215. package/engine/object-data/auxiliary/model-node-name.lua +2 -0
  216. package/engine/object-data/auxiliary/model-node-qualifier.d.ts +21 -0
  217. package/engine/object-data/auxiliary/model-node-qualifier.lua +2 -0
  218. package/engine/object-data/auxiliary/movement-type.d.ts +10 -0
  219. package/engine/object-data/auxiliary/movement-type.lua +2 -0
  220. package/engine/object-data/auxiliary/race.d.ts +14 -0
  221. package/engine/object-data/auxiliary/race.lua +2 -0
  222. package/engine/object-data/auxiliary/sound-preset-name.d.ts +8 -0
  223. package/engine/object-data/auxiliary/sound-preset-name.lua +2 -0
  224. package/engine/object-data/auxiliary/sound-set-name.d.ts +35 -0
  225. package/engine/object-data/auxiliary/sound-set-name.lua +2 -0
  226. package/engine/object-data/auxiliary/targeting-type.d.ts +8 -0
  227. package/engine/object-data/auxiliary/targeting-type.lua +2 -0
  228. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +16 -0
  229. package/engine/object-data/auxiliary/tech-tree-dependency.lua +8 -0
  230. package/engine/object-data/auxiliary/unit-classification.d.ts +19 -0
  231. package/engine/object-data/auxiliary/unit-classification.lua +50 -0
  232. package/engine/object-data/auxiliary/weapon-sound-type.d.ts +17 -0
  233. package/engine/object-data/auxiliary/weapon-sound-type.lua +2 -0
  234. package/engine/object-data/entry/ability-type/armor-increase.d.ts +8 -0
  235. package/engine/object-data/entry/ability-type/armor-increase.lua +26 -0
  236. package/engine/object-data/entry/ability-type/attribute-increase.d.ts +12 -0
  237. package/engine/object-data/entry/ability-type/attribute-increase.lua +52 -0
  238. package/engine/object-data/entry/ability-type/auto-attack-damage-increase.d.ts +8 -0
  239. package/engine/object-data/entry/ability-type/auto-attack-damage-increase.lua +26 -0
  240. package/engine/object-data/entry/ability-type/auto-attack-heal-reduction-effect.d.ts +12 -0
  241. package/engine/object-data/entry/ability-type/auto-attack-heal-reduction-effect.lua +52 -0
  242. package/engine/object-data/entry/ability-type/auto-attack-speed-increase.d.ts +8 -0
  243. package/engine/object-data/entry/ability-type/auto-attack-speed-increase.lua +26 -0
  244. package/engine/object-data/entry/ability-type/bash.d.ts +16 -0
  245. package/engine/object-data/entry/ability-type/bash.lua +78 -0
  246. package/engine/object-data/entry/ability-type/berserk.d.ts +10 -0
  247. package/engine/object-data/entry/ability-type/berserk.lua +39 -0
  248. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +20 -0
  249. package/engine/object-data/entry/ability-type/blank-configurable.lua +249 -0
  250. package/engine/object-data/entry/ability-type/blank-passive.d.ts +6 -0
  251. package/engine/object-data/entry/ability-type/blank-passive.lua +28 -0
  252. package/engine/object-data/entry/ability-type/blink.d.ts +10 -0
  253. package/engine/object-data/entry/ability-type/blink.lua +39 -0
  254. package/engine/object-data/entry/ability-type/blizzard.d.ts +16 -0
  255. package/engine/object-data/entry/ability-type/blizzard.lua +78 -0
  256. package/engine/object-data/entry/ability-type/blood-lust.d.ts +12 -0
  257. package/engine/object-data/entry/ability-type/blood-lust.lua +52 -0
  258. package/engine/object-data/entry/ability-type/chain-lightning.d.ts +12 -0
  259. package/engine/object-data/entry/ability-type/chain-lightning.lua +52 -0
  260. package/engine/object-data/entry/ability-type/channel.d.ts +47 -0
  261. package/engine/object-data/entry/ability-type/channel.lua +140 -0
  262. package/engine/object-data/entry/ability-type/charge-gold-and-lumber.d.ts +14 -0
  263. package/engine/object-data/entry/ability-type/charge-gold-and-lumber.lua +65 -0
  264. package/engine/object-data/entry/ability-type/cleaving-attack.d.ts +8 -0
  265. package/engine/object-data/entry/ability-type/cleaving-attack.lua +26 -0
  266. package/engine/object-data/entry/ability-type/cluster-rockets.d.ts +18 -0
  267. package/engine/object-data/entry/ability-type/cluster-rockets.lua +91 -0
  268. package/engine/object-data/entry/ability-type/cripple.d.ts +12 -0
  269. package/engine/object-data/entry/ability-type/cripple.lua +52 -0
  270. package/engine/object-data/entry/ability-type/critical-strike.d.ts +18 -0
  271. package/engine/object-data/entry/ability-type/critical-strike.lua +91 -0
  272. package/engine/object-data/entry/ability-type/curse.d.ts +8 -0
  273. package/engine/object-data/entry/ability-type/curse.lua +26 -0
  274. package/engine/object-data/entry/ability-type/dark-summoning.d.ts +10 -0
  275. package/engine/object-data/entry/ability-type/dark-summoning.lua +39 -0
  276. package/engine/object-data/entry/ability-type/death-coil.d.ts +8 -0
  277. package/engine/object-data/entry/ability-type/death-coil.lua +26 -0
  278. package/engine/object-data/entry/ability-type/disease-cloud.d.ts +15 -0
  279. package/engine/object-data/entry/ability-type/disease-cloud.lua +65 -0
  280. package/engine/object-data/entry/ability-type/divine-shield.d.ts +5 -0
  281. package/engine/object-data/entry/ability-type/divine-shield.lua +12 -0
  282. package/engine/object-data/entry/ability-type/endurance-aura.d.ts +10 -0
  283. package/engine/object-data/entry/ability-type/endurance-aura.lua +39 -0
  284. package/engine/object-data/entry/ability-type/engineering-upgrade.d.ts +13 -0
  285. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +88 -0
  286. package/engine/object-data/entry/ability-type/evasion.d.ts +8 -0
  287. package/engine/object-data/entry/ability-type/evasion.lua +26 -0
  288. package/engine/object-data/entry/ability-type/faerie-fire.d.ts +10 -0
  289. package/engine/object-data/entry/ability-type/faerie-fire.lua +39 -0
  290. package/engine/object-data/entry/ability-type/far-sight.d.ts +9 -0
  291. package/engine/object-data/entry/ability-type/far-sight.lua +26 -0
  292. package/engine/object-data/entry/ability-type/feral-spirit.d.ts +11 -0
  293. package/engine/object-data/entry/ability-type/feral-spirit.lua +39 -0
  294. package/engine/object-data/entry/ability-type/frenzy.d.ts +12 -0
  295. package/engine/object-data/entry/ability-type/frenzy.lua +52 -0
  296. package/engine/object-data/entry/ability-type/frost-nova.d.ts +12 -0
  297. package/engine/object-data/entry/ability-type/frost-nova.lua +52 -0
  298. package/engine/object-data/entry/ability-type/ghost-visible.d.ts +10 -0
  299. package/engine/object-data/entry/ability-type/ghost-visible.lua +39 -0
  300. package/engine/object-data/entry/ability-type/gold-mine.d.ts +12 -0
  301. package/engine/object-data/entry/ability-type/gold-mine.lua +52 -0
  302. package/engine/object-data/entry/ability-type/heal.d.ts +8 -0
  303. package/engine/object-data/entry/ability-type/heal.lua +26 -0
  304. package/engine/object-data/entry/ability-type/healing-salve.d.ts +22 -0
  305. package/engine/object-data/entry/ability-type/healing-salve.lua +78 -0
  306. package/engine/object-data/entry/ability-type/healing-spray.d.ts +18 -0
  307. package/engine/object-data/entry/ability-type/healing-spray.lua +91 -0
  308. package/engine/object-data/entry/ability-type/healing-wave.d.ts +12 -0
  309. package/engine/object-data/entry/ability-type/healing-wave.lua +52 -0
  310. package/engine/object-data/entry/ability-type/holy-light.d.ts +8 -0
  311. package/engine/object-data/entry/ability-type/holy-light.lua +26 -0
  312. package/engine/object-data/entry/ability-type/incinerate.d.ts +18 -0
  313. package/engine/object-data/entry/ability-type/incinerate.lua +91 -0
  314. package/engine/object-data/entry/ability-type/inner-fire.d.ts +14 -0
  315. package/engine/object-data/entry/ability-type/inner-fire.lua +65 -0
  316. package/engine/object-data/entry/ability-type/inventory.d.ts +16 -0
  317. package/engine/object-data/entry/ability-type/inventory.lua +78 -0
  318. package/engine/object-data/entry/ability-type/invulnerable.d.ts +5 -0
  319. package/engine/object-data/entry/ability-type/invulnerable.lua +12 -0
  320. package/engine/object-data/entry/ability-type/lightning-shield.d.ts +8 -0
  321. package/engine/object-data/entry/ability-type/lightning-shield.lua +26 -0
  322. package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
  323. package/engine/object-data/entry/ability-type/mine.lua +39 -0
  324. package/engine/object-data/entry/ability-type/movement-speed-increase.d.ts +8 -0
  325. package/engine/object-data/entry/ability-type/movement-speed-increase.lua +26 -0
  326. package/engine/object-data/entry/ability-type/permanent-immolation.d.ts +8 -0
  327. package/engine/object-data/entry/ability-type/permanent-immolation.lua +26 -0
  328. package/engine/object-data/entry/ability-type/phoenix-morph.d.ts +25 -0
  329. package/engine/object-data/entry/ability-type/phoenix-morph.lua +130 -0
  330. package/engine/object-data/entry/ability-type/recall.d.ts +10 -0
  331. package/engine/object-data/entry/ability-type/recall.lua +39 -0
  332. package/engine/object-data/entry/ability-type/rejuvenation.d.ts +20 -0
  333. package/engine/object-data/entry/ability-type/rejuvenation.lua +65 -0
  334. package/engine/object-data/entry/ability-type/searing-arrows.d.ts +8 -0
  335. package/engine/object-data/entry/ability-type/searing-arrows.lua +26 -0
  336. package/engine/object-data/entry/ability-type/shock-wave.d.ts +10 -0
  337. package/engine/object-data/entry/ability-type/shock-wave.lua +39 -0
  338. package/engine/object-data/entry/ability-type/slow-poison.d.ts +12 -0
  339. package/engine/object-data/entry/ability-type/slow-poison.lua +52 -0
  340. package/engine/object-data/entry/ability-type/slow.d.ts +12 -0
  341. package/engine/object-data/entry/ability-type/slow.lua +52 -0
  342. package/engine/object-data/entry/ability-type/spell-damage-reduction.d.ts +10 -0
  343. package/engine/object-data/entry/ability-type/spell-damage-reduction.lua +39 -0
  344. package/engine/object-data/entry/ability-type/spiked-carapace.d.ts +12 -0
  345. package/engine/object-data/entry/ability-type/spiked-carapace.lua +52 -0
  346. package/engine/object-data/entry/ability-type/spirit-touch.d.ts +14 -0
  347. package/engine/object-data/entry/ability-type/spirit-touch.lua +65 -0
  348. package/engine/object-data/entry/ability-type/storm-bolt.d.ts +8 -0
  349. package/engine/object-data/entry/ability-type/storm-bolt.lua +26 -0
  350. package/engine/object-data/entry/ability-type/summon-quilbeast.d.ts +11 -0
  351. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +39 -0
  352. package/engine/object-data/entry/ability-type/summon-water-elemental.d.ts +11 -0
  353. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +39 -0
  354. package/engine/object-data/entry/ability-type.d.ts +148 -0
  355. package/engine/object-data/entry/ability-type.lua +1059 -0
  356. package/engine/object-data/entry/buff-type/applicable.d.ts +15 -0
  357. package/engine/object-data/entry/buff-type/applicable.lua +333 -0
  358. package/engine/object-data/entry/buff-type/blank.d.ts +7 -0
  359. package/engine/object-data/entry/buff-type/blank.lua +17 -0
  360. package/engine/object-data/entry/buff-type.d.ts +63 -0
  361. package/engine/object-data/entry/buff-type.lua +316 -0
  362. package/engine/object-data/entry/destructible-type.d.ts +20 -0
  363. package/engine/object-data/entry/destructible-type.lua +83 -0
  364. package/engine/object-data/entry/item-type/blank.d.ts +7 -0
  365. package/engine/object-data/entry/item-type/blank.lua +21 -0
  366. package/engine/object-data/entry/item-type.d.ts +48 -0
  367. package/engine/object-data/entry/item-type.lua +259 -0
  368. package/engine/object-data/entry/lightning-type.d.ts +36 -0
  369. package/engine/object-data/entry/lightning-type.lua +191 -0
  370. package/engine/object-data/entry/unit-type/blank.d.ts +6 -0
  371. package/engine/object-data/entry/unit-type/blank.lua +13 -0
  372. package/engine/object-data/entry/unit-type.d.ts +258 -0
  373. package/engine/object-data/entry/unit-type.lua +1634 -0
  374. package/engine/object-data/entry/upgrade/blank.d.ts +7 -0
  375. package/engine/object-data/entry/upgrade/blank.lua +22 -0
  376. package/engine/object-data/entry/upgrade.d.ts +58 -0
  377. package/engine/object-data/entry/upgrade.lua +238 -0
  378. package/engine/object-data/entry.d.ts +79 -0
  379. package/engine/object-data/entry.lua +634 -0
  380. package/engine/object-data/utility/object-data-entry-id-generator.d.ts +6 -0
  381. package/engine/object-data/utility/object-data-entry-id-generator.lua +63 -0
  382. package/engine/object-data/utility/order-type-string-id-factory.d.ts +9 -0
  383. package/engine/object-data/utility/order-type-string-id-factory.lua +368 -0
  384. package/engine/object-field/ability.d.ts +117 -0
  385. package/engine/object-field/ability.lua +477 -0
  386. package/engine/object-field/unit.d.ts +16 -0
  387. package/engine/object-field/unit.lua +52 -0
  388. package/engine/object-field.d.ts +86 -0
  389. package/engine/object-field.lua +470 -0
  390. package/engine/random.d.ts +11 -0
  391. package/engine/random.lua +18 -0
  392. package/engine/standard/entries/ability-type.d.ts +8 -0
  393. package/engine/standard/entries/ability-type.lua +8 -0
  394. package/engine/standard/entries/lightning-type.d.ts +16 -0
  395. package/engine/standard/entries/lightning-type.lua +16 -0
  396. package/engine/standard/entries/unit-type.d.ts +104 -0
  397. package/engine/standard/entries/unit-type.lua +104 -0
  398. package/engine/standard/entries/upgrade.d.ts +92 -0
  399. package/engine/standard/entries/upgrade.lua +92 -0
  400. package/engine/standard/fields/ability.d.ts +737 -0
  401. package/engine/standard/fields/ability.lua +749 -0
  402. package/engine/standard/pathing-textures.d.ts +6 -0
  403. package/engine/standard/pathing-textures.lua +7 -0
  404. package/engine/text-tag.d.ts +25 -0
  405. package/engine/text-tag.lua +109 -0
  406. package/engine/unit.d.ts +21 -0
  407. package/engine/unit.lua +39 -0
  408. package/event.d.ts +52 -0
  409. package/event.lua +273 -0
  410. package/exception.d.ts +19 -0
  411. package/exception.lua +57 -0
  412. package/file.d.ts +4 -0
  413. package/file.lua +42 -0
  414. package/global/math.d.ts +21 -0
  415. package/global/math.lua +72 -0
  416. package/global/vec2.d.ts +66 -0
  417. package/global/vec2.lua +160 -0
  418. package/index.d.ts +8 -0
  419. package/index.lua +9 -0
  420. package/lualib_bundle.lua +2733 -0
  421. package/math/vec2.d.ts +11 -0
  422. package/math/vec2.lua +42 -0
  423. package/math.d.ts +37 -0
  424. package/math.lua +91 -0
  425. package/net/signal.d.ts +11 -0
  426. package/net/signal.lua +56 -0
  427. package/net/socket.d.ts +9 -0
  428. package/net/socket.lua +26 -0
  429. package/network.d.ts +31 -0
  430. package/network.lua +194 -0
  431. package/objutil/ability.d.ts +709 -0
  432. package/objutil/ability.lua +3781 -0
  433. package/objutil/buff.d.ts +109 -0
  434. package/objutil/buff.lua +769 -0
  435. package/objutil/dummy.d.ts +2 -0
  436. package/objutil/dummy.lua +49 -0
  437. package/objutil/idgen.d.ts +9 -0
  438. package/objutil/idgen.lua +92 -0
  439. package/objutil/item.d.ts +38 -0
  440. package/objutil/item.lua +254 -0
  441. package/objutil/object.d.ts +42 -0
  442. package/objutil/object.lua +213 -0
  443. package/objutil/unit.d.ts +133 -0
  444. package/objutil/unit.lua +913 -0
  445. package/objutil/upgrade.d.ts +22 -0
  446. package/objutil/upgrade.lua +127 -0
  447. package/operation.d.ts +35 -0
  448. package/operation.lua +179 -0
  449. package/package.json +46 -0
  450. package/patch-lualib.d.ts +2 -0
  451. package/patch-lualib.lua +67 -0
  452. package/patch-natives.d.ts +11 -0
  453. package/patch-natives.lua +14 -0
  454. package/property.d.ts +55 -0
  455. package/property.lua +374 -0
  456. package/string.d.ts +136 -0
  457. package/string.lua +48 -0
  458. package/time/dayOfWeek.d.ts +97 -0
  459. package/time/dayOfWeek.lua +53 -0
  460. package/time/localDate.d.ts +145 -0
  461. package/time/localDate.lua +236 -0
  462. package/time/localDateTime.d.ts +133 -0
  463. package/time/localDateTime.lua +154 -0
  464. package/time/localTime.d.ts +87 -0
  465. package/time/localTime.lua +91 -0
  466. package/time/month.d.ts +146 -0
  467. package/time/month.lua +129 -0
  468. package/time/year.d.ts +117 -0
  469. package/time/year.lua +81 -0
  470. package/types.d.ts +13 -0
  471. package/types.lua +0 -0
  472. package/util/objectPool.d.ts +6 -0
  473. package/util/objectPool.lua +28 -0
  474. package/util/stream.d.ts +28 -0
  475. package/util/stream.lua +453 -0
  476. package/util/stringBuilder.d.ts +8 -0
  477. package/util/stringBuilder.lua +25 -0
  478. package/utility/arrays.d.ts +56 -0
  479. package/utility/arrays.lua +372 -0
  480. package/utility/base64.d.ts +23 -0
  481. package/utility/base64.lua +177 -0
  482. package/utility/bit-set.d.ts +16 -0
  483. package/utility/bit-set.lua +12 -0
  484. package/utility/functions.d.ts +5 -0
  485. package/utility/functions.lua +90 -0
  486. package/utility/json.d.ts +2 -0
  487. package/utility/json.lua +400 -0
  488. package/utility/linked-set.d.ts +49 -0
  489. package/utility/linked-set.lua +197 -0
  490. package/utility/lua-maps.d.ts +5 -0
  491. package/utility/lua-maps.lua +25 -0
  492. package/utility/lua-sets.d.ts +5 -0
  493. package/utility/lua-sets.lua +37 -0
  494. package/utility/lzw.d.ts +2 -0
  495. package/utility/lzw.lua +161 -0
  496. package/utility/observable-array.d.ts +17 -0
  497. package/utility/observable-array.lua +30 -0
  498. package/utility/preconditions.d.ts +23 -0
  499. package/utility/preconditions.lua +58 -0
  500. package/utility/records.d.ts +3 -0
  501. package/utility/records.lua +9 -0
  502. package/utility/reflection.d.ts +4 -0
  503. package/utility/reflection.lua +31 -0
  504. package/utility/strings.d.ts +2 -0
  505. package/utility/strings.lua +44 -0
  506. package/utility/types.d.ts +39 -0
  507. package/utility/types.lua +2 -0
@@ -0,0 +1,2590 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__StringSplit = ____lualib.__TS__StringSplit
3
+ local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
4
+ local __TS__ArrayMap = ____lualib.__TS__ArrayMap
5
+ local __TS__New = ____lualib.__TS__New
6
+ local __TS__Class = ____lualib.__TS__Class
7
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
8
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
9
+ local __TS__ArraySetLength = ____lualib.__TS__ArraySetLength
10
+ local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
11
+ local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
12
+ local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
13
+ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
14
+ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
15
+ local Set = ____lualib.Set
16
+ local __TS__Spread = ____lualib.__TS__Spread
17
+ local ____exports = {}
18
+ local ____handle = require("core.types.handle")
19
+ local Handle = ____handle.Handle
20
+ local ____player = require("core.types.player")
21
+ local Player = ____player.Player
22
+ local ____event = require("event")
23
+ local Event = ____event.Event
24
+ local IgnoreEvent = ____event.IgnoreEvent
25
+ local InitializingEvent = ____event.InitializingEvent
26
+ local TriggerEvent = ____event.TriggerEvent
27
+ local ____color = require("core.types.color")
28
+ local Color = ____color.Color
29
+ local ____item = require("engine.internal.item")
30
+ local Item = ____item.Item
31
+ local ____destructable = require("core.types.destructable")
32
+ local Destructable = ____destructable.Destructable
33
+ local ____ability = require("objutil.ability")
34
+ local AbilityDefinition = ____ability.AbilityDefinition
35
+ local AbilityDefinitionLightningAttack = ____ability.AbilityDefinitionLightningAttack
36
+ local AbilityDefinitionSpikedCarapace = ____ability.AbilityDefinitionSpikedCarapace
37
+ local ____ability = require("engine.internal.ability")
38
+ local ItemAbility = ____ability.ItemAbility
39
+ local UnitAbility = ____ability.UnitAbility
40
+ local UnrecognizedAbility = ____ability.UnrecognizedAbility
41
+ local ____timer = require("core.types.timer")
42
+ local Timer = ____timer.Timer
43
+ local ____dummy = require("objutil.dummy")
44
+ local dummyUnitId = ____dummy.dummyUnitId
45
+ local ____preconditions = require("utility.preconditions")
46
+ local checkNotNull = ____preconditions.checkNotNull
47
+ local ____constants = require("engine.constants")
48
+ local HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT = ____constants.HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT
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
+ local match = string.match
55
+ local ____tostring = _G.tostring
56
+ local setUnitAnimation = SetUnitAnimation
57
+ local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
58
+ local setUnitAnimationByIndex = SetUnitAnimationByIndex
59
+ local queueUnitAnimation = QueueUnitAnimation
60
+ local getUnitIntegerField = BlzGetUnitIntegerField
61
+ local getUnitRealField = BlzGetUnitRealField
62
+ local getHeroStr = GetHeroStr
63
+ local getHeroAgi = GetHeroAgi
64
+ local getHeroInt = GetHeroInt
65
+ local setHeroStr = SetHeroStr
66
+ local setHeroAgi = SetHeroAgi
67
+ local setHeroInt = SetHeroInt
68
+ local getUnitBooleanField = BlzGetUnitBooleanField
69
+ local getUnitStringField = BlzGetUnitStringField
70
+ local setUnitIntegerField = BlzSetUnitIntegerField
71
+ local setUnitRealField = BlzSetUnitRealField
72
+ local setUnitBooleanField = BlzSetUnitBooleanField
73
+ local setUnitStringField = BlzSetUnitStringField
74
+ local setUnitScale = SetUnitScale
75
+ local setUnitPosition = SetUnitPosition
76
+ local setUnitTimeScale = SetUnitTimeScale
77
+ local getHandleId = GetHandleId
78
+ local createUnit = CreateUnit
79
+ local killUnit = KillUnit
80
+ local setUnitExploded = SetUnitExploded
81
+ local removeUnit = RemoveUnit
82
+ local getUnitTypeId = GetUnitTypeId
83
+ local isHeroUnitId = IsHeroUnitId
84
+ local getTriggerUnit = GetTriggerUnit
85
+ local getManipulatedItem = GetManipulatedItem
86
+ local getTriggerPlayer = GetTriggerPlayer
87
+ local getSpellAbility = GetSpellAbility
88
+ local getSpellAbilityId = GetSpellAbilityId
89
+ local getSpellTargetUnit = GetSpellTargetUnit
90
+ local getSpellTargetX = GetSpellTargetX
91
+ local getSpellTargetY = GetSpellTargetY
92
+ local getSpellTargetItem = GetSpellTargetItem
93
+ local getSpellTargetDestructable = GetSpellTargetDestructable
94
+ local isUnitInRangeXY = IsUnitInRangeXY
95
+ local isUnitInRange = IsUnitInRange
96
+ local setResourceAmount = SetResourceAmount
97
+ local getResourceAmount = GetResourceAmount
98
+ local getUnitWeaponRealField = BlzGetUnitWeaponRealField
99
+ local setUnitWeaponRealField = BlzSetUnitWeaponRealField
100
+ local getUnitWeaponStringField = BlzGetUnitWeaponStringField
101
+ local setUnitWeaponStringField = BlzSetUnitWeaponStringField
102
+ local getUnitAbilityLevel = GetUnitAbilityLevel
103
+ local unitDisableAbility = BlzUnitDisableAbility
104
+ local unitInterruptAttack = BlzUnitInterruptAttack
105
+ local isUnitInvisible = IsUnitInvisible
106
+ local isUnitVisible = IsUnitVisible
107
+ local getUnitX = GetUnitX
108
+ local getUnitY = GetUnitY
109
+ local getUnitFlyHeight = GetUnitFlyHeight
110
+ local moveLocation = MoveLocation
111
+ local getLocationZ = GetLocationZ
112
+ local groupEnumUnitsInRange = GroupEnumUnitsInRange
113
+ local groupEnumUnitsInRect = GroupEnumUnitsInRect
114
+ local groupEnumUnitsOfPlayer = GroupEnumUnitsOfPlayer
115
+ local getFilterUnit = GetFilterUnit
116
+ local getUnitCollisionSize = BlzGetUnitCollisionSize
117
+ local getOrderedUnit = GetOrderedUnit
118
+ local getIssuedOrderId = GetIssuedOrderId
119
+ local isUnitInvulnerable = BlzIsUnitInvulnerable
120
+ local unitAlive = UnitAlive
121
+ local unitAddType = UnitAddType
122
+ local unitRemoveType = UnitRemoveType
123
+ local isUnitIllusion = IsUnitIllusion
124
+ local isUnitType = IsUnitType
125
+ local isUnitAlly = IsUnitAlly
126
+ local isUnitEnemy = IsUnitEnemy
127
+ local getOwningPlayer = GetOwningPlayer
128
+ local setUnitColor = SetUnitColor
129
+ local showUnitTeamGlow = BlzShowUnitTeamGlow
130
+ ____exports.UnitClassification = {}
131
+ local UnitClassification = ____exports.UnitClassification
132
+ do
133
+ UnitClassification.STRUCTURE = UNIT_TYPE_STRUCTURE
134
+ UnitClassification.UNDEAD = UNIT_TYPE_UNDEAD
135
+ UnitClassification.AIR = UNIT_TYPE_FLYING
136
+ UnitClassification.GROUND = UNIT_TYPE_GROUND
137
+ UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
138
+ UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
139
+ UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
140
+ UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
141
+ UnitClassification.TAUREN = UNIT_TYPE_TAUREN
142
+ UnitClassification.RESISTANT = UNIT_TYPE_RESISTANT
143
+ end
144
+ local tremove = table.remove
145
+ local loc = Location(0, 0)
146
+ local invoke = Event.invoke
147
+ local stockAbilities = postcompile(function()
148
+ local abilityData = {}
149
+ if currentMap then
150
+ for id, unit in pairs(currentMap.objects.unit.all) do
151
+ local ids = __TS__ArrayMap(
152
+ __TS__ArrayFilter(
153
+ __TS__StringSplit(
154
+ tostring(unit:getField("uabi") or ""),
155
+ ","
156
+ ),
157
+ function(____, id) return id ~= "_" and id ~= "" end
158
+ ),
159
+ function(____, id) return fourCC(id) end
160
+ )
161
+ if #ids ~= 0 then
162
+ abilityData[fourCC(id)] = ids
163
+ end
164
+ end
165
+ end
166
+ return abilityData
167
+ end)
168
+ local attackHandlerAbilityId = compiletime(function()
169
+ local ability = __TS__New(AbilityDefinitionLightningAttack)
170
+ ability.graphicDelay = 0
171
+ ability.graphicDuration = 0
172
+ ability.lightningEffects = {}
173
+ ability.missileArt = ""
174
+ ability.missileSpeed = 0
175
+ ability.targetArt = ""
176
+ return fourCC(ability.id)
177
+ end)
178
+ local leaveDetectAbilityId = compiletime(fourCC(__TS__New(AbilityDefinition, "Adef").id))
179
+ for ____, player in ipairs(Player.all) do
180
+ SetPlayerAbilityAvailable(player.handle, leaveDetectAbilityId, false)
181
+ end
182
+ local morphDetectAbilityId = compiletime(fourCC(__TS__New(AbilityDefinition, "Adef").id))
183
+ for ____, player in ipairs(Player.all) do
184
+ SetPlayerAbilityAvailable(player.handle, morphDetectAbilityId, false)
185
+ end
186
+ local armorBonusAbilityId = compiletime(function()
187
+ local ability = __TS__New(AbilityDefinitionSpikedCarapace)
188
+ ability.levels = 1
189
+ ability.returnedDamageFactor = 0
190
+ ability.receivedDamageFactor = 1
191
+ ability.armorBonus = 0
192
+ return fourCC(ability.id)
193
+ end)
194
+ local armorBonusField = ABILITY_RLF_DEFENSE_BONUS_UTS3
195
+ local atan = math.atan
196
+ local fmod = math.fmod
197
+ local sqrt = math.sqrt
198
+ local max = math.max
199
+ local rad = math.rad
200
+ local pi2 = 2 * math.pi
201
+ local dummyGroup = CreateGroup()
202
+ local targetCollection
203
+ local targetCollectionNextIndex
204
+ local centerX
205
+ local centerY
206
+ local enumRange
207
+ local enumPredicate
208
+ local collectIntoTarget = Filter(function()
209
+ local unit = getFilterUnit()
210
+ if getUnitTypeId(unit) ~= dummyUnitId and getUnitAbilityLevel(unit, leaveDetectAbilityId) > 0 then
211
+ targetCollection[targetCollectionNextIndex] = ____exports.Unit:of(unit)
212
+ targetCollectionNextIndex = targetCollectionNextIndex + 1
213
+ end
214
+ end)
215
+ local collectIntoTargetWithPredicate = Filter(function()
216
+ local unit = getFilterUnit()
217
+ if getUnitTypeId(unit) ~= dummyUnitId and getUnitAbilityLevel(unit, leaveDetectAbilityId) > 0 and enumPredicate(____exports.Unit:of(unit)) then
218
+ targetCollection[targetCollectionNextIndex] = ____exports.Unit:of(unit)
219
+ targetCollectionNextIndex = targetCollectionNextIndex + 1
220
+ end
221
+ end)
222
+ local gConsumer
223
+ local message
224
+ local invokeConsumer = Filter(function()
225
+ local unit = getFilterUnit()
226
+ if message == nil and getUnitTypeId(unit) ~= dummyUnitId and getUnitAbilityLevel(unit, leaveDetectAbilityId) > 0 then
227
+ local success, msg = pcall(
228
+ gConsumer,
229
+ ____exports.Unit:of(unit)
230
+ )
231
+ if not success then
232
+ message = msg
233
+ end
234
+ end
235
+ end)
236
+ local collectIntoTargetCollision = Filter(function()
237
+ local unit = getFilterUnit()
238
+ if isUnitInRangeXY(unit, centerX, centerY, enumRange) and getUnitTypeId(unit) ~= dummyUnitId and getUnitAbilityLevel(unit, leaveDetectAbilityId) > 0 then
239
+ targetCollection[targetCollectionNextIndex] = ____exports.Unit:of(unit)
240
+ targetCollectionNextIndex = targetCollectionNextIndex + 1
241
+ end
242
+ end)
243
+ local collectIntoTargetCollisionWithPredicate = Filter(function()
244
+ local unit = getFilterUnit()
245
+ if isUnitInRangeXY(unit, centerX, centerY, enumRange) and getUnitTypeId(unit) ~= dummyUnitId and getUnitAbilityLevel(unit, leaveDetectAbilityId) > 0 and enumPredicate(____exports.Unit:of(unit)) then
246
+ targetCollection[targetCollectionNextIndex] = ____exports.Unit:of(unit)
247
+ targetCollectionNextIndex = targetCollectionNextIndex + 1
248
+ end
249
+ end)
250
+ local posX
251
+ local posY
252
+ local startAngle
253
+ local centerAngle
254
+ local collectSectorIntoTarget = Filter(function()
255
+ local unit = getFilterUnit()
256
+ if getUnitTypeId(unit) ~= dummyUnitId and getUnitAbilityLevel(unit, leaveDetectAbilityId) > 0 then
257
+ local angle = atan(
258
+ getUnitY(unit) - posY,
259
+ getUnitX(unit) - posX
260
+ )
261
+ angle = fmod(angle - startAngle, pi2)
262
+ if (angle < 0 and angle + pi2 or angle) <= centerAngle then
263
+ targetCollection[targetCollectionNextIndex] = ____exports.Unit:of(unit)
264
+ targetCollectionNextIndex = targetCollectionNextIndex + 1
265
+ end
266
+ end
267
+ end)
268
+ local function deg2rad(angle)
269
+ angle = fmod(angle, 360)
270
+ return rad(angle < 0 and angle + 360 or angle)
271
+ end
272
+ ____exports.UnitTriggerEvent = __TS__Class()
273
+ local UnitTriggerEvent = ____exports.UnitTriggerEvent
274
+ UnitTriggerEvent.name = "UnitTriggerEvent"
275
+ __TS__ClassExtends(UnitTriggerEvent, TriggerEvent)
276
+ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
277
+ TriggerEvent.prototype.____constructor(
278
+ self,
279
+ function(trigger) return TriggerRegisterAnyUnitEventBJ(trigger, eventType) end,
280
+ c
281
+ )
282
+ end
283
+ local function dispatch(event, idGetter, argsGetter)
284
+ local initialized = false
285
+ return setmetatable(
286
+ {},
287
+ {
288
+ __index = function(self, id)
289
+ if type(id) ~= "number" then
290
+ return event[id]
291
+ end
292
+ if not initialized then
293
+ event:addListener(function(...)
294
+ local id = idGetter(...)
295
+ local dispatched = rawget(self, id)
296
+ if dispatched ~= nil then
297
+ invoke(
298
+ dispatched,
299
+ argsGetter(...)
300
+ )
301
+ end
302
+ end)
303
+ initialized = true
304
+ end
305
+ local dispatched = __TS__New(Event)
306
+ rawset(self, id, dispatched)
307
+ return dispatched
308
+ end,
309
+ __newindex = event
310
+ }
311
+ )
312
+ end
313
+ local function dispatchId(event)
314
+ return dispatch(
315
+ event,
316
+ function(unit, id, ...) return id end,
317
+ function(unit, id, ...) return unit, ... end
318
+ )
319
+ end
320
+ local function dispatchAbility(event)
321
+ local initialized = false
322
+ return setmetatable(
323
+ {},
324
+ {
325
+ __index = function(self, id)
326
+ if type(id) ~= "number" then
327
+ return event[id]
328
+ end
329
+ if not initialized then
330
+ event:addListener(function(unit, ability, ...)
331
+ local dispatched = rawget(self, ability.typeId)
332
+ if dispatched ~= nil then
333
+ invoke(dispatched, unit, ability, ...)
334
+ end
335
+ end)
336
+ initialized = true
337
+ end
338
+ local dispatched = __TS__New(Event)
339
+ rawset(self, id, dispatched)
340
+ return dispatched
341
+ end,
342
+ __newindex = event
343
+ }
344
+ )
345
+ end
346
+ local function damageEventPreventDeath(self, callback, ...)
347
+ if self[0] ~= nil then
348
+ return
349
+ end
350
+ rawset(self, 0, callback)
351
+ local parametersLength = select("#", ...)
352
+ rawset(self, 1, parametersLength)
353
+ for i = 1, parametersLength do
354
+ rawset(self, 1 + i, (select(i, ...)))
355
+ end
356
+ end
357
+ local damageSetters = {amount = BlzSetEventDamage, attackType = BlzSetEventAttackType, damageType = BlzSetEventDamageType, weaponType = BlzSetEventWeaponType}
358
+ local jlimitopByOperator = {
359
+ [0] = LESS_THAN_OR_EQUAL,
360
+ [1] = LESS_THAN_OR_EQUAL,
361
+ [2] = EQUAL,
362
+ [3] = GREATER_THAN_OR_EQUAL,
363
+ [4] = GREATER_THAN_OR_EQUAL,
364
+ [5] = NOT_EQUAL
365
+ }
366
+ local modifiers = {
367
+ speed = function(unit, value)
368
+ SetUnitMoveSpeed(
369
+ unit,
370
+ GetUnitMoveSpeed(unit) + value
371
+ )
372
+ end,
373
+ armor = function(unit, value)
374
+ if UnitAddAbility(unit, armorBonusAbilityId) then
375
+ assert(UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId))
376
+ end
377
+ local ability = assert(BlzGetUnitAbility(unit, armorBonusAbilityId))
378
+ assert(BlzSetAbilityRealLevelField(
379
+ ability,
380
+ armorBonusField,
381
+ 0,
382
+ BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
383
+ ))
384
+ end
385
+ }
386
+ local getters = {
387
+ speed = function(unit, delta)
388
+ return GetUnitMoveSpeed(unit) + delta
389
+ end,
390
+ armor = function(unit)
391
+ return BlzGetUnitArmor(unit)
392
+ end
393
+ }
394
+ ____exports.UnitWeapon = __TS__Class()
395
+ local UnitWeapon = ____exports.UnitWeapon
396
+ UnitWeapon.name = "UnitWeapon"
397
+ function UnitWeapon.prototype.____constructor(self, unit, index)
398
+ self.unit = unit
399
+ self.index = index
400
+ end
401
+ __TS__SetDescriptor(
402
+ UnitWeapon.prototype,
403
+ "cooldown",
404
+ {
405
+ get = function(self)
406
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index)
407
+ end,
408
+ set = function(self, cooldown)
409
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index, cooldown)
410
+ end
411
+ },
412
+ true
413
+ )
414
+ __TS__SetDescriptor(
415
+ UnitWeapon.prototype,
416
+ "damage",
417
+ {
418
+ get = function(self)
419
+ local minimumDamage = self.damageBase + self.damageDiceCount
420
+ local maximumDamage = self.damageBase + self.damageDiceCount * self.damageDiceSideCount
421
+ return {minimumDamage, maximumDamage}
422
+ end,
423
+ set = function(self, ____bindingPattern0)
424
+ local maximumDamage
425
+ local minimumDamage
426
+ minimumDamage = ____bindingPattern0[1]
427
+ maximumDamage = ____bindingPattern0[2]
428
+ self.damageBase = minimumDamage - 1
429
+ self.damageDiceCount = 1
430
+ self.damageDiceSideCount = maximumDamage - minimumDamage + 1
431
+ end
432
+ },
433
+ true
434
+ )
435
+ __TS__SetDescriptor(
436
+ UnitWeapon.prototype,
437
+ "damageBase",
438
+ {
439
+ get = function(self)
440
+ return BlzGetUnitBaseDamage(self.unit.handle, self.index)
441
+ end,
442
+ set = function(self, damageBase)
443
+ BlzSetUnitBaseDamage(self.unit.handle, self.index, damageBase)
444
+ end
445
+ },
446
+ true
447
+ )
448
+ __TS__SetDescriptor(
449
+ UnitWeapon.prototype,
450
+ "damageDiceCount",
451
+ {
452
+ get = function(self)
453
+ return BlzGetUnitDiceNumber(self.unit.handle, self.index)
454
+ end,
455
+ set = function(self, damageDiceCount)
456
+ BlzSetUnitDiceNumber(self.unit.handle, self.index, damageDiceCount)
457
+ end
458
+ },
459
+ true
460
+ )
461
+ __TS__SetDescriptor(
462
+ UnitWeapon.prototype,
463
+ "damageDiceSideCount",
464
+ {
465
+ get = function(self)
466
+ return BlzGetUnitDiceSides(self.unit.handle, self.index)
467
+ end,
468
+ set = function(self, damageDiceSideCount)
469
+ BlzSetUnitDiceSides(self.unit.handle, self.index, damageDiceSideCount)
470
+ end
471
+ },
472
+ true
473
+ )
474
+ __TS__SetDescriptor(
475
+ UnitWeapon.prototype,
476
+ "range",
477
+ {
478
+ get = function(self)
479
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_RANGE, self.index)
480
+ end,
481
+ set = function(self, range)
482
+ local handle = self.unit.handle
483
+ local index = self.index
484
+ setUnitWeaponRealField(
485
+ handle,
486
+ UNIT_WEAPON_RF_ATTACK_RANGE,
487
+ index + 1,
488
+ getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index + 1) + (range - getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index))
489
+ )
490
+ end
491
+ },
492
+ true
493
+ )
494
+ __TS__SetDescriptor(
495
+ UnitWeapon.prototype,
496
+ "impactDelay",
497
+ {
498
+ get = function(self)
499
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index)
500
+ end,
501
+ set = function(self, impactDelay)
502
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index, impactDelay)
503
+ end
504
+ },
505
+ true
506
+ )
507
+ __TS__SetDescriptor(
508
+ UnitWeapon.prototype,
509
+ "missileArc",
510
+ {
511
+ get = function(self)
512
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index)
513
+ end,
514
+ set = function(self, missileArc)
515
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index, missileArc)
516
+ end
517
+ },
518
+ true
519
+ )
520
+ __TS__SetDescriptor(
521
+ UnitWeapon.prototype,
522
+ "missileModelPath",
523
+ {
524
+ get = function(self)
525
+ return getUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index)
526
+ end,
527
+ set = function(self, missileModelPath)
528
+ setUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index, missileModelPath)
529
+ end
530
+ },
531
+ true
532
+ )
533
+ __TS__SetDescriptor(
534
+ UnitWeapon.prototype,
535
+ "missileSpeed",
536
+ {
537
+ get = function(self)
538
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index)
539
+ end,
540
+ set = function(self, missileSpeed)
541
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index, missileSpeed)
542
+ end
543
+ },
544
+ true
545
+ )
546
+ local unitInventorySize = UnitInventorySize
547
+ local unitItemInSlot = UnitItemInSlot
548
+ local getItemAbility = BlzGetItemAbility
549
+ local getUnitAbility = BlzGetUnitAbility
550
+ local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
551
+ local getAbilityId = BlzGetAbilityId
552
+ local getAbilityName = GetAbilityName
553
+ local unitAddAbility = UnitAddAbility
554
+ local getUnitGoldCost = GetUnitGoldCost
555
+ local getUnitLumberCost = GetUnitWoodCost
556
+ local unitRemoveAbility = UnitRemoveAbility
557
+ local function retrieveAbility(unit, ability, abilityId)
558
+ if ability == nil then
559
+ return __TS__New(
560
+ UnrecognizedAbility,
561
+ abilityId,
562
+ ____exports.Unit:of(unit)
563
+ )
564
+ end
565
+ if not unitAddAbility(unit, abilityId) then
566
+ if getUnitAbility(unit, abilityId) == ability then
567
+ return UnitAbility:of(
568
+ ability,
569
+ abilityId,
570
+ ____exports.Unit:of(unit)
571
+ )
572
+ end
573
+ else
574
+ unitRemoveAbility(unit, abilityId)
575
+ end
576
+ for i = 0, unitInventorySize(unit) - 1 do
577
+ local item = unitItemInSlot(unit, i)
578
+ if getItemAbility(item, abilityId) == ability then
579
+ return ItemAbility:of(
580
+ ability,
581
+ abilityId,
582
+ Item:of(item)
583
+ )
584
+ end
585
+ end
586
+ return UnitAbility:of(
587
+ ability,
588
+ abilityId,
589
+ ____exports.Unit:of(unit)
590
+ )
591
+ end
592
+ local fieldGetters = {
593
+ unitintegerfield = function(unit, field)
594
+ return getUnitIntegerField(unit.handle, field)
595
+ end,
596
+ unitrealfield = function(unit, field)
597
+ return getUnitRealField(unit.handle, field)
598
+ end,
599
+ unitbooleanfield = function(unit, field)
600
+ return getUnitBooleanField(unit.handle, field)
601
+ end,
602
+ unitstringfield = function(unit, field)
603
+ return getUnitStringField(unit.handle, field)
604
+ end
605
+ }
606
+ local fieldSetters = {
607
+ unitintegerfield = function(unit, field, value)
608
+ return setUnitIntegerField(unit.handle, field, value)
609
+ end,
610
+ unitrealfield = function(unit, field, value)
611
+ return setUnitRealField(unit.handle, field, value)
612
+ end,
613
+ unitbooleanfield = function(unit, field, value)
614
+ return setUnitBooleanField(unit.handle, field, value)
615
+ end,
616
+ unitstringfield = function(unit, field, value)
617
+ return setUnitStringField(unit.handle, field, value)
618
+ end
619
+ }
620
+ local dummies = {}
621
+ for ____, player in ipairs(Player.all) do
622
+ local dummy = assert(createUnit(
623
+ player.handle,
624
+ dummyUnitId,
625
+ 0,
626
+ 0,
627
+ 270
628
+ ))
629
+ ShowUnit(dummy, false)
630
+ dummies[player] = dummy
631
+ end
632
+ local function delayHealthChecksCallback(unit)
633
+ local counter = (unit[102] or 0) - 1
634
+ if counter ~= 0 then
635
+ unit[102] = counter
636
+ return
637
+ end
638
+ unit[102] = nil
639
+ local healthBonus = unit[103]
640
+ if healthBonus ~= nil then
641
+ unit[103] = nil
642
+ local handle = unit.handle
643
+ BlzSetUnitMaxHP(
644
+ handle,
645
+ BlzGetUnitMaxHP(handle) - healthBonus
646
+ )
647
+ end
648
+ end
649
+ ____exports.Unit = __TS__Class()
650
+ local Unit = ____exports.Unit
651
+ Unit.name = "Unit"
652
+ __TS__ClassExtends(Unit, Handle)
653
+ function Unit.prototype.____constructor(self, handle)
654
+ Handle.prototype.____constructor(self, handle)
655
+ self._owner = Player:of(getOwningPlayer(handle))
656
+ assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
657
+ assert(unitAddAbility(handle, morphDetectAbilityId))
658
+ if unitAddAbility(
659
+ handle,
660
+ fourCC("Amrf")
661
+ ) then
662
+ assert(unitRemoveAbility(
663
+ handle,
664
+ fourCC("Amrf")
665
+ ))
666
+ end
667
+ local ____ = self.abilities
668
+ end
669
+ function Unit.prototype.getEvent(self, event, collector)
670
+ self.events = self.events or ({})
671
+ local eventId = GetHandleId(event)
672
+ if not self.events[eventId] then
673
+ self.events[eventId] = __TS__New(
674
+ TriggerEvent,
675
+ function(trigger)
676
+ TriggerRegisterUnitEvent(trigger, self.handle, event)
677
+ end,
678
+ collector or (function() return {} end)
679
+ )
680
+ end
681
+ return self.events[eventId]
682
+ end
683
+ function Unit.prototype.onDestroy(self)
684
+ local handle = self.handle
685
+ if not self._owner then
686
+ self._owner = Player:of(getOwningPlayer(handle))
687
+ end
688
+ local abilities = self.abilities
689
+ for ____, ability in ipairs(abilities) do
690
+ ability:destroy()
691
+ end
692
+ __TS__ArraySetLength(abilities, 0)
693
+ for ____, player in ipairs(Player.all) do
694
+ if self:isSelected(player) then
695
+ Event.invoke(____exports.Unit.onDeselect, self, player)
696
+ end
697
+ end
698
+ if self.events then
699
+ for ____, event in pairs(self.events) do
700
+ event:destroy()
701
+ end
702
+ end
703
+ local eventsToDestroy = self._eventsToDestroy
704
+ if eventsToDestroy ~= nil then
705
+ forEach(eventsToDestroy, "destroy")
706
+ end
707
+ if getUnitAbilityLevel(handle, leaveDetectAbilityId) > 0 then
708
+ unitRemoveAbility(handle, leaveDetectAbilityId)
709
+ removeUnit(handle)
710
+ end
711
+ return Handle.prototype.onDestroy(self)
712
+ end
713
+ function Unit.prototype.addAttackHandler(self, condition, action)
714
+ local handler = {
715
+ condition,
716
+ warpack.wrapThread(action)
717
+ }
718
+ local handlers = self._attackHandlers or ({})
719
+ handlers[#handlers + 1] = handler
720
+ self._attackHandlers = handlers
721
+ if #handlers == 1 then
722
+ local handle = self.handle
723
+ assert(unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId))
724
+ end
725
+ return handler
726
+ end
727
+ function Unit.prototype.removeAttackHandler(self, handler)
728
+ local handlers = self._attackHandlers
729
+ if handlers then
730
+ for i = 1, #handlers do
731
+ if handlers[i] == handler then
732
+ tremove(handlers, i)
733
+ return true
734
+ end
735
+ end
736
+ end
737
+ return false
738
+ end
739
+ function Unit.prototype.addModifier(self, property, modifier)
740
+ local handle = self.handle
741
+ local deltas = self._deltas
742
+ local delta = deltas[property] or 0
743
+ local addition = modifier(getters[property](handle, delta))
744
+ modifiers[property](handle, addition)
745
+ deltas[property] = delta + addition
746
+ return {destroy = function()
747
+ modifiers[property](handle, -addition)
748
+ deltas[property] = (deltas[property] or 0) - addition
749
+ end}
750
+ end
751
+ function Unit.prototype.hasCombatClassification(self, combatClassification)
752
+ local ____combatClassification_0 = combatClassification
753
+ return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_0 == ____combatClassification_0
754
+ end
755
+ function Unit.prototype.addClassification(self, classification)
756
+ return unitAddType(self.handle, classification)
757
+ end
758
+ function Unit.prototype.removeClassification(self, classification)
759
+ return unitRemoveType(self.handle, classification)
760
+ end
761
+ function Unit.prototype.hasClassification(self, classification)
762
+ return isUnitType(self.handle, classification)
763
+ end
764
+ function Unit.prototype.isVisibleTo(self, player)
765
+ return isUnitVisible(self.handle, player.handle)
766
+ end
767
+ function Unit.prototype.isInvisibleTo(self, player)
768
+ return isUnitInvisible(self.handle, player.handle)
769
+ end
770
+ function Unit.prototype.isInRangeOf(self, x, y, range)
771
+ local ____temp_1
772
+ if type(x) == "number" then
773
+ ____temp_1 = isUnitInRangeXY(self.handle, x, y, range)
774
+ else
775
+ ____temp_1 = isUnitInRange(self.handle, x.handle, y)
776
+ end
777
+ return ____temp_1
778
+ end
779
+ function Unit.prototype.isAllyOf(self, unit)
780
+ return isUnitAlly(
781
+ self.handle,
782
+ getOwningPlayer(unit.handle)
783
+ )
784
+ end
785
+ function Unit.prototype.isEnemyOf(self, unit)
786
+ return isUnitEnemy(
787
+ self.handle,
788
+ getOwningPlayer(unit.handle)
789
+ )
790
+ end
791
+ function Unit.prototype.playAnimation(self, animation, rarity)
792
+ if type(animation) == "number" then
793
+ setUnitAnimationByIndex(self.handle, animation)
794
+ elseif rarity then
795
+ setUnitAnimationWithRarity(self.handle, animation, rarity)
796
+ else
797
+ setUnitAnimation(self.handle, animation)
798
+ end
799
+ end
800
+ function Unit.prototype.queueAnimation(self, animation)
801
+ queueUnitAnimation(self.handle, animation)
802
+ end
803
+ function Unit.prototype.delayHealthChecks(self)
804
+ self[102] = (self[102] or 0) + 1
805
+ Timer:run(delayHealthChecksCallback, self)
806
+ end
807
+ function Unit.prototype.setPosition(self, x, y)
808
+ setUnitPosition(self.handle, x, y)
809
+ end
810
+ function Unit.prototype.isSelected(self, player)
811
+ return IsUnitSelected(self.handle, player.handle)
812
+ end
813
+ function Unit.prototype.explode(self)
814
+ setUnitExploded(self.handle, true)
815
+ killUnit(self.handle)
816
+ end
817
+ function Unit.prototype.kill(self)
818
+ killUnit(self.handle)
819
+ end
820
+ function Unit.prototype.revive(self, x, y, doEffect)
821
+ local ____ReviveHero_4 = ReviveHero
822
+ local ____array_3 = __TS__SparseArrayNew(self.handle, x, y)
823
+ local ____doEffect_2 = doEffect
824
+ if ____doEffect_2 == nil then
825
+ ____doEffect_2 = false
826
+ end
827
+ __TS__SparseArrayPush(____array_3, ____doEffect_2)
828
+ ____ReviveHero_4(__TS__SparseArraySpread(____array_3))
829
+ end
830
+ function Unit.prototype.healTarget(self, target, amount)
831
+ if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
832
+ target.health = target.health + 0.65 * amount
833
+ else
834
+ target.health = target.health + amount
835
+ end
836
+ end
837
+ function Unit.prototype.useItem(self, item)
838
+ return UnitUseItem(self.handle, item.handle)
839
+ end
840
+ function Unit.prototype.issueImmediateOrder(self, order)
841
+ return IssueImmediateOrderById(self.handle, order)
842
+ end
843
+ function Unit.prototype.issuePointOrder(self, order, x, y)
844
+ return IssuePointOrderById(self.handle, order, x, y)
845
+ end
846
+ function Unit.prototype.issueTargetOrder(self, order, target)
847
+ return IssueTargetOrderById(self.handle, order, target.handle)
848
+ end
849
+ function Unit.prototype.queueImmediateOrder(self, order)
850
+ return BlzQueueImmediateOrderById(self.handle, order)
851
+ end
852
+ function Unit.prototype.queuePointOrder(self, order, x, y)
853
+ return BlzQueuePointOrderById(self.handle, order, x, y)
854
+ end
855
+ function Unit.prototype.queueTargetOrder(self, order, target)
856
+ return BlzQueueTargetOrderById(self.handle, order, target.handle)
857
+ end
858
+ function Unit.prototype.addItem(self, item)
859
+ return UnitAddItem(self.handle, item.handle)
860
+ end
861
+ function Unit.prototype.dropItemTarget(self, item, target)
862
+ return UnitDropItemTarget(self.handle, item.handle, target.handle)
863
+ end
864
+ function Unit.prototype.dropItemSlot(self, item, slot)
865
+ return UnitDropItemSlot(self.handle, item.handle, slot)
866
+ end
867
+ function Unit.prototype.itemInSlot(self, slot)
868
+ return Item:of(UnitItemInSlot(self.handle, slot))
869
+ end
870
+ function Unit.prototype.addAbility(self, abilityId)
871
+ if unitAddAbility(self.handle, abilityId) then
872
+ local ability = UnitAbility:of(
873
+ checkNotNull(getUnitAbility(self.handle, abilityId)),
874
+ abilityId,
875
+ self
876
+ )
877
+ local abilities = self.abilities
878
+ abilities[#abilities + 1] = ability
879
+ return ability
880
+ end
881
+ return nil
882
+ end
883
+ function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
884
+ return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
885
+ end
886
+ function Unit.prototype.setAbilityLevel(self, abilityId, level)
887
+ return SetUnitAbilityLevel(self.handle, abilityId, level)
888
+ end
889
+ function Unit.prototype.getAbilityLevel(self, abilityId)
890
+ return getUnitAbilityLevel(self.handle, abilityId)
891
+ end
892
+ function Unit.prototype.hasAbility(self, abilityId)
893
+ return getUnitAbilityLevel(self.handle, abilityId) > 0
894
+ end
895
+ function Unit.prototype.getAbilityById(self, abilityId)
896
+ local handle = self.handle
897
+ if unitAddAbility(handle, abilityId) then
898
+ assert(unitRemoveAbility(handle, abilityId))
899
+ return nil
900
+ end
901
+ return UnitAbility:of(
902
+ getUnitAbility(self.handle, abilityId),
903
+ abilityId,
904
+ self
905
+ )
906
+ end
907
+ function Unit.prototype.removeAbility(self, abilityId)
908
+ if unitRemoveAbility(self.handle, abilityId) then
909
+ local abilities = self.abilities
910
+ for i = 1, #abilities do
911
+ if abilities[i].typeId == abilityId then
912
+ abilities[i]:destroy()
913
+ tremove(abilities, i)
914
+ return true
915
+ end
916
+ end
917
+ return true
918
+ end
919
+ return false
920
+ end
921
+ function Unit.prototype.hideAbility(self, abilityId, flag)
922
+ BlzUnitHideAbility(self.handle, abilityId, flag)
923
+ end
924
+ function Unit.prototype.getAbilityRemainingCooldown(self, abilityId)
925
+ return BlzGetUnitAbilityCooldownRemaining(self.handle, abilityId)
926
+ end
927
+ function Unit.prototype.startAbilityCooldown(self, abilityId, cooldown)
928
+ BlzStartUnitAbilityCooldown(self.handle, abilityId, cooldown)
929
+ end
930
+ function Unit.prototype.endAbilityCooldown(self, abilityId)
931
+ BlzEndUnitAbilityCooldown(self.handle, abilityId)
932
+ end
933
+ function Unit.prototype.interruptAttack(self)
934
+ unitInterruptAttack(self.handle)
935
+ end
936
+ function Unit.prototype.interruptCast(self, abilityId)
937
+ unitDisableAbility(self.handle, abilityId, true, false)
938
+ unitDisableAbility(self.handle, abilityId, false, false)
939
+ end
940
+ function Unit.prototype.getDistanceTo(self, target)
941
+ local handle = self.handle
942
+ local targetHandle = target.handle
943
+ if targetHandle then
944
+ local dx = getUnitX(targetHandle) - getUnitX(handle)
945
+ local dy = getUnitY(targetHandle) - getUnitY(handle)
946
+ return sqrt(dx * dx + dy * dy)
947
+ else
948
+ local dx = target.x - getUnitX(handle)
949
+ local dy = target.y - getUnitY(handle)
950
+ return sqrt(dx * dx + dy * dy)
951
+ end
952
+ end
953
+ function Unit.prototype.getCollisionDistanceTo(self, targetUnitOrX, targetY)
954
+ local handle = self.handle
955
+ if targetY == nil then
956
+ local targetHandle = targetUnitOrX.handle
957
+ local dx = getUnitX(targetHandle) - getUnitX(handle)
958
+ local dy = getUnitY(targetHandle) - getUnitY(handle)
959
+ return max(
960
+ 0,
961
+ sqrt(dx * dx + dy * dy) - getUnitCollisionSize(targetHandle) - getUnitCollisionSize(handle)
962
+ )
963
+ else
964
+ local dx = targetUnitOrX - getUnitX(handle)
965
+ local dy = targetY - getUnitY(handle)
966
+ return max(
967
+ 0,
968
+ sqrt(dx * dx + dy * dy) - getUnitCollisionSize(handle)
969
+ )
970
+ end
971
+ end
972
+ function Unit.prototype.resetCooldown(self)
973
+ UnitResetCooldown(self.handle)
974
+ end
975
+ function Unit.prototype.incrementDisableAutoAttackCounter(self)
976
+ unitDisableAbility(
977
+ self.handle,
978
+ fourCC("Aatk"),
979
+ true,
980
+ false
981
+ )
982
+ end
983
+ function Unit.prototype.decrementDisableAutoAttackCounter(self)
984
+ unitDisableAbility(
985
+ self.handle,
986
+ fourCC("Aatk"),
987
+ false,
988
+ false
989
+ )
990
+ end
991
+ function Unit.prototype.pauseEx(self)
992
+ self:incrementStunCounter()
993
+ end
994
+ function Unit.prototype.unpauseEx(self)
995
+ self:decrementStunCounter()
996
+ end
997
+ function Unit.prototype.incrementStunCounter(self)
998
+ local stunCounter = self[101] or 0
999
+ if not self[100] or stunCounter >= 0 then
1000
+ BlzPauseUnitEx(self.handle, true)
1001
+ end
1002
+ self[101] = stunCounter + 1
1003
+ end
1004
+ function Unit.prototype.decrementStunCounter(self)
1005
+ local stunCounter = self[101] or 0
1006
+ if not self[100] or stunCounter >= 1 then
1007
+ BlzPauseUnitEx(self.handle, false)
1008
+ end
1009
+ self[101] = stunCounter - 1
1010
+ end
1011
+ function Unit.create(self, owner, id, x, y, facing, skinId)
1012
+ local handle = skinId and BlzCreateUnitWithSkin(
1013
+ owner.handle,
1014
+ id,
1015
+ x,
1016
+ y,
1017
+ facing,
1018
+ skinId
1019
+ ) or CreateUnit(
1020
+ owner.handle,
1021
+ id,
1022
+ x,
1023
+ y,
1024
+ facing
1025
+ )
1026
+ return handle and self:of(handle)
1027
+ end
1028
+ function Unit.forAll(self, consumer)
1029
+ message = nil
1030
+ gConsumer = consumer
1031
+ groupEnumUnitsInRange(
1032
+ dummyGroup,
1033
+ 0,
1034
+ 0,
1035
+ 999999,
1036
+ invokeConsumer
1037
+ )
1038
+ if message then
1039
+ error(message)
1040
+ end
1041
+ end
1042
+ function Unit.getAll(self, predicate)
1043
+ targetCollection = {}
1044
+ targetCollectionNextIndex = 1
1045
+ enumPredicate = predicate
1046
+ local collect = predicate and collectIntoTargetWithPredicate or collectIntoTarget
1047
+ for ____, player in ipairs(Player.all) do
1048
+ groupEnumUnitsOfPlayer(dummyGroup, player.handle, collect)
1049
+ end
1050
+ return targetCollection
1051
+ end
1052
+ function Unit.getOwnedBy(self, player, predicate)
1053
+ targetCollection = {}
1054
+ targetCollectionNextIndex = 1
1055
+ enumPredicate = predicate
1056
+ groupEnumUnitsOfPlayer(dummyGroup, player.handle, predicate and collectIntoTargetWithPredicate or collectIntoTarget)
1057
+ return targetCollection
1058
+ end
1059
+ function Unit.getInRect(self, rect, predicate)
1060
+ targetCollection = {}
1061
+ targetCollectionNextIndex = 1
1062
+ enumPredicate = predicate
1063
+ groupEnumUnitsInRect(dummyGroup, rect.handle, predicate and collectIntoTargetWithPredicate or collectIntoTarget)
1064
+ return targetCollection
1065
+ end
1066
+ function Unit.getInRange(self, x, y, range, predicate)
1067
+ targetCollection = {}
1068
+ targetCollectionNextIndex = 1
1069
+ enumPredicate = predicate
1070
+ groupEnumUnitsInRange(
1071
+ dummyGroup,
1072
+ x,
1073
+ y,
1074
+ range,
1075
+ predicate and collectIntoTargetWithPredicate or collectIntoTarget
1076
+ )
1077
+ return targetCollection
1078
+ end
1079
+ function Unit.getInCollisionRange(self, x, y, range, predicate)
1080
+ targetCollection = {}
1081
+ targetCollectionNextIndex = 1
1082
+ centerX = x
1083
+ centerY = y
1084
+ enumRange = range
1085
+ enumPredicate = predicate
1086
+ groupEnumUnitsInRange(
1087
+ dummyGroup,
1088
+ centerX,
1089
+ centerY,
1090
+ range + 256,
1091
+ predicate and collectIntoTargetCollisionWithPredicate or collectIntoTargetCollision
1092
+ )
1093
+ return targetCollection
1094
+ end
1095
+ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
1096
+ posX = pos.x
1097
+ posY = pos.y
1098
+ startAngle = deg2rad(offsetAngle)
1099
+ centerAngle = deg2rad(centralAngle)
1100
+ targetCollection = {}
1101
+ targetCollectionNextIndex = 1
1102
+ groupEnumUnitsInRange(
1103
+ dummyGroup,
1104
+ pos.x,
1105
+ pos.y,
1106
+ range,
1107
+ collectSectorIntoTarget
1108
+ )
1109
+ return targetCollection
1110
+ end
1111
+ function Unit.getSelectionOf(self, player)
1112
+ targetCollection = {}
1113
+ targetCollectionNextIndex = 1
1114
+ GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
1115
+ return targetCollection
1116
+ end
1117
+ function Unit.prototype.getField(self, field)
1118
+ local fieldType = match(
1119
+ ____tostring(field),
1120
+ "^(.-):"
1121
+ )
1122
+ return fieldGetters[fieldType](self, field)
1123
+ end
1124
+ function Unit.prototype.setField(self, field, value)
1125
+ local fieldType = match(
1126
+ ____tostring(field),
1127
+ "^(.-):"
1128
+ )
1129
+ return fieldSetters[fieldType](self, field, value)
1130
+ end
1131
+ function Unit.prototype.__tostring(self)
1132
+ return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
1133
+ end
1134
+ __TS__SetDescriptor(
1135
+ Unit.prototype,
1136
+ "_deltas",
1137
+ {get = function(self)
1138
+ local deltas = {}
1139
+ rawset(self, "_deltas", deltas)
1140
+ return deltas
1141
+ end},
1142
+ true
1143
+ )
1144
+ __TS__SetDescriptor(
1145
+ Unit.prototype,
1146
+ "skinId",
1147
+ {
1148
+ get = function(self)
1149
+ return BlzGetUnitSkin(self.handle)
1150
+ end,
1151
+ set = function(self, v)
1152
+ BlzSetUnitSkin(self.handle, v)
1153
+ end
1154
+ },
1155
+ true
1156
+ )
1157
+ __TS__SetDescriptor(
1158
+ Unit.prototype,
1159
+ "typeId",
1160
+ {get = function(self)
1161
+ return getUnitTypeId(self.handle)
1162
+ end},
1163
+ true
1164
+ )
1165
+ __TS__SetDescriptor(
1166
+ Unit.prototype,
1167
+ "isHero",
1168
+ {get = function(self)
1169
+ return isHeroUnitId(getUnitTypeId(self.handle))
1170
+ end},
1171
+ true
1172
+ )
1173
+ __TS__SetDescriptor(
1174
+ Unit.prototype,
1175
+ "isAlive",
1176
+ {get = function(self)
1177
+ return unitAlive(self.handle)
1178
+ end},
1179
+ true
1180
+ )
1181
+ __TS__SetDescriptor(
1182
+ Unit.prototype,
1183
+ "isDead",
1184
+ {get = function(self)
1185
+ return not unitAlive(self.handle)
1186
+ end},
1187
+ true
1188
+ )
1189
+ __TS__SetDescriptor(
1190
+ Unit.prototype,
1191
+ "isIllusion",
1192
+ {get = function(self)
1193
+ return isUnitIllusion(self.handle)
1194
+ end},
1195
+ true
1196
+ )
1197
+ __TS__SetDescriptor(
1198
+ Unit.prototype,
1199
+ "combatClassifications",
1200
+ {
1201
+ get = function(self)
1202
+ return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS)
1203
+ end,
1204
+ set = function(self, combatClassifications)
1205
+ setUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS, combatClassifications)
1206
+ end
1207
+ },
1208
+ true
1209
+ )
1210
+ __TS__SetDescriptor(
1211
+ Unit.prototype,
1212
+ "weapons",
1213
+ {get = function(self)
1214
+ return {self.firstWeapon, self.secondWeapon}
1215
+ end},
1216
+ true
1217
+ )
1218
+ __TS__SetDescriptor(
1219
+ Unit.prototype,
1220
+ "firstWeapon",
1221
+ {get = function(self)
1222
+ local weapon = __TS__New(____exports.UnitWeapon, self, 0)
1223
+ rawset(self, "firstWeapon", weapon)
1224
+ return weapon
1225
+ end},
1226
+ true
1227
+ )
1228
+ __TS__SetDescriptor(
1229
+ Unit.prototype,
1230
+ "secondWeapon",
1231
+ {get = function(self)
1232
+ local weapon = __TS__New(____exports.UnitWeapon, self, 1)
1233
+ rawset(self, "secondWeapon", weapon)
1234
+ return weapon
1235
+ end},
1236
+ true
1237
+ )
1238
+ __TS__SetDescriptor(
1239
+ Unit.prototype,
1240
+ "level",
1241
+ {
1242
+ get = function(self)
1243
+ return GetHeroLevel(self.handle)
1244
+ end,
1245
+ set = function(self, v)
1246
+ local handle = self.handle
1247
+ local level = GetHeroLevel(handle)
1248
+ if v > level then
1249
+ SetHeroLevel(handle, v, false)
1250
+ else
1251
+ UnitStripHeroLevel(handle, level - v)
1252
+ end
1253
+ end
1254
+ },
1255
+ true
1256
+ )
1257
+ __TS__SetDescriptor(
1258
+ Unit.prototype,
1259
+ "xp",
1260
+ {
1261
+ get = function(self)
1262
+ return GetHeroXP(self.handle)
1263
+ end,
1264
+ set = function(self, v)
1265
+ SetHeroXP(self.handle, v, false)
1266
+ end
1267
+ },
1268
+ true
1269
+ )
1270
+ __TS__SetDescriptor(
1271
+ Unit.prototype,
1272
+ "strengthBase",
1273
+ {
1274
+ get = function(self)
1275
+ return getHeroStr(self.handle, false)
1276
+ end,
1277
+ set = function(self, strengthBase)
1278
+ setHeroStr(self.handle, strengthBase, true)
1279
+ end
1280
+ },
1281
+ true
1282
+ )
1283
+ __TS__SetDescriptor(
1284
+ Unit.prototype,
1285
+ "strengthBonus",
1286
+ {get = function(self)
1287
+ local handle = self.handle
1288
+ return getHeroStr(handle, true) - getHeroStr(handle, false)
1289
+ end},
1290
+ true
1291
+ )
1292
+ __TS__SetDescriptor(
1293
+ Unit.prototype,
1294
+ "strength",
1295
+ {get = function(self)
1296
+ return getHeroStr(self.handle, true)
1297
+ end},
1298
+ true
1299
+ )
1300
+ __TS__SetDescriptor(
1301
+ Unit.prototype,
1302
+ "agilityBase",
1303
+ {
1304
+ get = function(self)
1305
+ return getHeroAgi(self.handle, false)
1306
+ end,
1307
+ set = function(self, agilityBase)
1308
+ setHeroAgi(self.handle, agilityBase, true)
1309
+ end
1310
+ },
1311
+ true
1312
+ )
1313
+ __TS__SetDescriptor(
1314
+ Unit.prototype,
1315
+ "agilityBonus",
1316
+ {get = function(self)
1317
+ local handle = self.handle
1318
+ return getHeroAgi(handle, true) - getHeroAgi(handle, false)
1319
+ end},
1320
+ true
1321
+ )
1322
+ __TS__SetDescriptor(
1323
+ Unit.prototype,
1324
+ "agility",
1325
+ {get = function(self)
1326
+ return getHeroAgi(self.handle, true)
1327
+ end},
1328
+ true
1329
+ )
1330
+ __TS__SetDescriptor(
1331
+ Unit.prototype,
1332
+ "intelligenceBase",
1333
+ {
1334
+ get = function(self)
1335
+ return getHeroInt(self.handle, false)
1336
+ end,
1337
+ set = function(self, intelligenceBase)
1338
+ setHeroInt(self.handle, intelligenceBase, true)
1339
+ end
1340
+ },
1341
+ true
1342
+ )
1343
+ __TS__SetDescriptor(
1344
+ Unit.prototype,
1345
+ "intelligenceBonus",
1346
+ {get = function(self)
1347
+ local handle = self.handle
1348
+ return getHeroInt(handle, true) - getHeroInt(handle, false)
1349
+ end},
1350
+ true
1351
+ )
1352
+ __TS__SetDescriptor(
1353
+ Unit.prototype,
1354
+ "intelligence",
1355
+ {get = function(self)
1356
+ return getHeroInt(self.handle, true)
1357
+ end},
1358
+ true
1359
+ )
1360
+ __TS__SetDescriptor(
1361
+ Unit.prototype,
1362
+ "name",
1363
+ {
1364
+ get = function(self)
1365
+ return GetUnitName(self.handle)
1366
+ end,
1367
+ set = function(self, v)
1368
+ BlzSetUnitName(self.handle, v)
1369
+ end
1370
+ },
1371
+ true
1372
+ )
1373
+ __TS__SetDescriptor(
1374
+ Unit.prototype,
1375
+ "properName",
1376
+ {
1377
+ get = function(self)
1378
+ return GetHeroProperName(self.handle)
1379
+ end,
1380
+ set = function(self, v)
1381
+ BlzSetHeroProperName(self.handle, v)
1382
+ end
1383
+ },
1384
+ true
1385
+ )
1386
+ __TS__SetDescriptor(
1387
+ Unit.prototype,
1388
+ "isTeamGlowVisible",
1389
+ {
1390
+ get = function(self)
1391
+ return not self[105]
1392
+ end,
1393
+ set = function(self, isTeamGlowVisible)
1394
+ showUnitTeamGlow(self.handle, isTeamGlowVisible)
1395
+ local ____temp_5
1396
+ if not isTeamGlowVisible then
1397
+ ____temp_5 = true
1398
+ else
1399
+ ____temp_5 = nil
1400
+ end
1401
+ self[105] = ____temp_5
1402
+ end
1403
+ },
1404
+ true
1405
+ )
1406
+ __TS__SetDescriptor(
1407
+ Unit.prototype,
1408
+ "color",
1409
+ {set = function(self, color)
1410
+ setUnitColor(self.handle, color.handle)
1411
+ if self[105] then
1412
+ showUnitTeamGlow(self.handle, false)
1413
+ end
1414
+ end},
1415
+ true
1416
+ )
1417
+ __TS__SetDescriptor(
1418
+ Unit.prototype,
1419
+ "acquisitionRange",
1420
+ {
1421
+ get = function(self)
1422
+ return GetUnitAcquireRange(self.handle)
1423
+ end,
1424
+ set = function(self, v)
1425
+ SetUnitAcquireRange(self.handle, v)
1426
+ end
1427
+ },
1428
+ true
1429
+ )
1430
+ __TS__SetDescriptor(
1431
+ Unit.prototype,
1432
+ "maxHealth",
1433
+ {
1434
+ get = function(self)
1435
+ return BlzGetUnitMaxHP(self.handle) - (self[103] or 0) - (self[104] or 0)
1436
+ end,
1437
+ set = function(self, maxHealth)
1438
+ if maxHealth < 1 and self[102] ~= nil then
1439
+ self[103] = (self[103] or 0) + (1 - maxHealth)
1440
+ maxHealth = 1
1441
+ end
1442
+ BlzSetUnitMaxHP(self.handle, maxHealth + (self[104] or 0))
1443
+ end
1444
+ },
1445
+ true
1446
+ )
1447
+ __TS__SetDescriptor(
1448
+ Unit.prototype,
1449
+ "healthRegenerationRate",
1450
+ {
1451
+ get = function(self)
1452
+ local handle = self.handle
1453
+ return getUnitRealField(handle, UNIT_RF_HIT_POINTS_REGENERATION_RATE) + getHeroStr(handle, true) * HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT
1454
+ end,
1455
+ set = function(self, healthRegenerationRate)
1456
+ local handle = self.handle
1457
+ setUnitRealField(
1458
+ handle,
1459
+ UNIT_RF_HIT_POINTS_REGENERATION_RATE,
1460
+ healthRegenerationRate - getHeroStr(handle, true) * HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT
1461
+ )
1462
+ end
1463
+ },
1464
+ true
1465
+ )
1466
+ __TS__SetDescriptor(
1467
+ Unit.prototype,
1468
+ "maxMana",
1469
+ {
1470
+ get = function(self)
1471
+ return BlzGetUnitMaxMana(self.handle)
1472
+ end,
1473
+ set = function(self, maxMana)
1474
+ BlzSetUnitMaxMana(self.handle, maxMana)
1475
+ end
1476
+ },
1477
+ true
1478
+ )
1479
+ __TS__SetDescriptor(
1480
+ Unit.prototype,
1481
+ "health",
1482
+ {
1483
+ get = function(self)
1484
+ return GetWidgetLife(self.handle) - (self[104] or 0)
1485
+ end,
1486
+ set = function(self, health)
1487
+ SetWidgetLife(self.handle, health + (self[104] or 0))
1488
+ end
1489
+ },
1490
+ true
1491
+ )
1492
+ __TS__SetDescriptor(
1493
+ Unit.prototype,
1494
+ "mana",
1495
+ {
1496
+ get = function(self)
1497
+ return GetUnitState(self.handle, UNIT_STATE_MANA)
1498
+ end,
1499
+ set = function(self, mana)
1500
+ SetUnitState(self.handle, UNIT_STATE_MANA, mana)
1501
+ end
1502
+ },
1503
+ true
1504
+ )
1505
+ __TS__SetDescriptor(
1506
+ Unit.prototype,
1507
+ "manaRegenerationRate",
1508
+ {
1509
+ get = function(self)
1510
+ local handle = self.handle
1511
+ return getUnitRealField(handle, UNIT_RF_MANA_REGENERATION) + getHeroInt(handle, true) * MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT
1512
+ end,
1513
+ set = function(self, manaRegenerationRate)
1514
+ local handle = self.handle
1515
+ setUnitRealField(
1516
+ handle,
1517
+ UNIT_RF_MANA_REGENERATION,
1518
+ manaRegenerationRate - getHeroInt(handle, true) * MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT
1519
+ )
1520
+ end
1521
+ },
1522
+ true
1523
+ )
1524
+ __TS__SetDescriptor(
1525
+ Unit.prototype,
1526
+ "armor",
1527
+ {
1528
+ get = function(self)
1529
+ return BlzGetUnitArmor(self.handle)
1530
+ end,
1531
+ set = function(self, armor)
1532
+ BlzSetUnitArmor(self.handle, armor)
1533
+ end
1534
+ },
1535
+ true
1536
+ )
1537
+ __TS__SetDescriptor(
1538
+ Unit.prototype,
1539
+ "facing",
1540
+ {
1541
+ get = function(self)
1542
+ return GetUnitFacing(self.handle)
1543
+ end,
1544
+ set = function(self, v)
1545
+ BlzSetUnitFacingEx(self.handle, v)
1546
+ end
1547
+ },
1548
+ true
1549
+ )
1550
+ __TS__SetDescriptor(
1551
+ Unit.prototype,
1552
+ "speed",
1553
+ {
1554
+ get = function(self)
1555
+ return GetUnitMoveSpeed(self.handle)
1556
+ end,
1557
+ set = function(self, v)
1558
+ SetUnitMoveSpeed(self.handle, v)
1559
+ end
1560
+ },
1561
+ true
1562
+ )
1563
+ __TS__SetDescriptor(
1564
+ Unit.prototype,
1565
+ "flyHeight",
1566
+ {
1567
+ get = function(self)
1568
+ return getUnitFlyHeight(self.handle)
1569
+ end,
1570
+ set = function(self, v)
1571
+ SetUnitFlyHeight(self.handle, v, 100000)
1572
+ end
1573
+ },
1574
+ true
1575
+ )
1576
+ __TS__SetDescriptor(
1577
+ Unit.prototype,
1578
+ "x",
1579
+ {
1580
+ get = function(self)
1581
+ return getUnitX(self.handle)
1582
+ end,
1583
+ set = function(self, v)
1584
+ SetUnitX(self.handle, v)
1585
+ end
1586
+ },
1587
+ true
1588
+ )
1589
+ __TS__SetDescriptor(
1590
+ Unit.prototype,
1591
+ "y",
1592
+ {
1593
+ get = function(self)
1594
+ return getUnitY(self.handle)
1595
+ end,
1596
+ set = function(self, v)
1597
+ SetUnitY(self.handle, v)
1598
+ end
1599
+ },
1600
+ true
1601
+ )
1602
+ __TS__SetDescriptor(
1603
+ Unit.prototype,
1604
+ "z",
1605
+ {get = function(self)
1606
+ local handle = self.handle
1607
+ moveLocation(
1608
+ loc,
1609
+ getUnitX(handle),
1610
+ getUnitY(handle)
1611
+ )
1612
+ return getUnitFlyHeight(handle) + getLocationZ(loc)
1613
+ end},
1614
+ true
1615
+ )
1616
+ __TS__SetDescriptor(
1617
+ Unit.prototype,
1618
+ "xy",
1619
+ {set = function(self, v)
1620
+ SetUnitX(self.handle, v.x)
1621
+ SetUnitY(self.handle, v.y)
1622
+ end},
1623
+ true
1624
+ )
1625
+ __TS__SetDescriptor(
1626
+ Unit.prototype,
1627
+ "position",
1628
+ {
1629
+ get = function(self)
1630
+ return vec2(
1631
+ getUnitX(self.handle),
1632
+ getUnitY(self.handle)
1633
+ )
1634
+ end,
1635
+ set = function(self, v)
1636
+ SetUnitPosition(self.handle, v.x, v.y)
1637
+ end
1638
+ },
1639
+ true
1640
+ )
1641
+ __TS__SetDescriptor(
1642
+ Unit.prototype,
1643
+ "owner",
1644
+ {
1645
+ get = function(self)
1646
+ return Player:of(getOwningPlayer(self.handle)) or self._owner or Player.neutralExtra
1647
+ end,
1648
+ set = function(self, v)
1649
+ SetUnitOwner(self.handle, v.handle, false)
1650
+ if self._owner then
1651
+ self._owner = v
1652
+ end
1653
+ end
1654
+ },
1655
+ true
1656
+ )
1657
+ __TS__SetDescriptor(
1658
+ Unit.prototype,
1659
+ "goldCost",
1660
+ {get = function(self)
1661
+ local typeId = getUnitTypeId(self.handle)
1662
+ return isHeroUnitId(typeId) and 0 or getUnitGoldCost(typeId)
1663
+ end},
1664
+ true
1665
+ )
1666
+ __TS__SetDescriptor(
1667
+ Unit.prototype,
1668
+ "lumberCost",
1669
+ {get = function(self)
1670
+ local typeId = getUnitTypeId(self.handle)
1671
+ return isHeroUnitId(typeId) and 0 or getUnitLumberCost(typeId)
1672
+ end},
1673
+ true
1674
+ )
1675
+ __TS__SetDescriptor(
1676
+ Unit.prototype,
1677
+ "gold",
1678
+ {
1679
+ get = function(self)
1680
+ return getResourceAmount(self.handle)
1681
+ end,
1682
+ set = function(self, gold)
1683
+ setResourceAmount(self.handle, gold)
1684
+ end
1685
+ },
1686
+ true
1687
+ )
1688
+ __TS__SetDescriptor(
1689
+ Unit.prototype,
1690
+ "isPaused",
1691
+ {
1692
+ get = function(self)
1693
+ return IsUnitPaused(self.handle)
1694
+ end,
1695
+ set = function(self, isPaused)
1696
+ local handle = self.handle
1697
+ if isPaused and not IsUnitPaused(handle) then
1698
+ self[100] = true
1699
+ for _ = self[101] or 0, -1 do
1700
+ BlzPauseUnitEx(handle, true)
1701
+ end
1702
+ PauseUnit(handle, true)
1703
+ elseif not isPaused and IsUnitPaused(handle) then
1704
+ PauseUnit(handle, false)
1705
+ for _ = self[101] or 0, -1 do
1706
+ BlzPauseUnitEx(handle, false)
1707
+ end
1708
+ self[100] = nil
1709
+ end
1710
+ end
1711
+ },
1712
+ true
1713
+ )
1714
+ __TS__SetDescriptor(
1715
+ Unit.prototype,
1716
+ "hidden",
1717
+ {
1718
+ get = function(self)
1719
+ return IsUnitHidden(self.handle)
1720
+ end,
1721
+ set = function(self, v)
1722
+ if v then
1723
+ ShowUnitHide(self.handle)
1724
+ else
1725
+ ShowUnitShow(self.handle)
1726
+ end
1727
+ end
1728
+ },
1729
+ true
1730
+ )
1731
+ __TS__SetDescriptor(
1732
+ Unit.prototype,
1733
+ "isInvulnerable",
1734
+ {get = function(self)
1735
+ return isUnitInvulnerable(self.handle)
1736
+ end},
1737
+ true
1738
+ )
1739
+ __TS__SetDescriptor(
1740
+ Unit.prototype,
1741
+ "vertexColor",
1742
+ {
1743
+ get = function(self)
1744
+ local handle = self.handle
1745
+ return Color:of(
1746
+ getUnitIntegerField(handle, UNIT_IF_TINTING_COLOR_RED),
1747
+ getUnitIntegerField(handle, UNIT_IF_TINTING_COLOR_GREEN),
1748
+ getUnitIntegerField(handle, UNIT_IF_TINTING_COLOR_BLUE),
1749
+ getUnitIntegerField(handle, UNIT_IF_TINTING_COLOR_ALPHA)
1750
+ )
1751
+ end,
1752
+ set = function(self, v)
1753
+ SetUnitVertexColor(
1754
+ self.handle,
1755
+ v.r,
1756
+ v.g,
1757
+ v.b,
1758
+ v.a
1759
+ )
1760
+ end
1761
+ },
1762
+ true
1763
+ )
1764
+ __TS__SetDescriptor(
1765
+ Unit.prototype,
1766
+ "scale",
1767
+ {
1768
+ get = function(self)
1769
+ return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
1770
+ end,
1771
+ set = function(self, v)
1772
+ setUnitScale(self.handle, v, v, v)
1773
+ setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
1774
+ end
1775
+ },
1776
+ true
1777
+ )
1778
+ __TS__SetDescriptor(
1779
+ Unit.prototype,
1780
+ "timeScale",
1781
+ {
1782
+ get = function(self)
1783
+ return self._timeScale or 1
1784
+ end,
1785
+ set = function(self, v)
1786
+ setUnitTimeScale(self.handle, v)
1787
+ self._timeScale = v ~= 1 and v or nil
1788
+ end
1789
+ },
1790
+ true
1791
+ )
1792
+ __TS__SetDescriptor(
1793
+ Unit.prototype,
1794
+ "collisionSize",
1795
+ {get = function(self)
1796
+ return getUnitCollisionSize(self.handle)
1797
+ end},
1798
+ true
1799
+ )
1800
+ __TS__SetDescriptor(
1801
+ Unit.prototype,
1802
+ "pathingCollisionRange",
1803
+ {get = function(self)
1804
+ return 16 * (min(
1805
+ getUnitCollisionSize(self.handle) // 16,
1806
+ 3
1807
+ ) + 1)
1808
+ end},
1809
+ true
1810
+ )
1811
+ __TS__SetDescriptor(
1812
+ Unit.prototype,
1813
+ "pathing",
1814
+ {set = function(self, v)
1815
+ SetUnitPathing(self.handle, v)
1816
+ end},
1817
+ true
1818
+ )
1819
+ __TS__SetDescriptor(
1820
+ Unit.prototype,
1821
+ "buffIds",
1822
+ {get = function(self)
1823
+ local buffIds = {}
1824
+ local buffIdsCount = 0
1825
+ local handle = self.handle
1826
+ do
1827
+ local i = 0
1828
+ local ability = getUnitAbilityByIndex(handle, i)
1829
+ while ability ~= nil do
1830
+ local abilityId = getAbilityId(ability)
1831
+ if getAbilityName(abilityId) == "Default string" and abilityId ~= fourCC("Atrg") then
1832
+ buffIdsCount = buffIdsCount + 1
1833
+ buffIds[buffIdsCount] = abilityId
1834
+ end
1835
+ do
1836
+ i = i + 1
1837
+ ability = getUnitAbilityByIndex(handle, i)
1838
+ end
1839
+ end
1840
+ end
1841
+ return buffIds
1842
+ end},
1843
+ true
1844
+ )
1845
+ __TS__SetDescriptor(
1846
+ Unit.prototype,
1847
+ "waygateActive",
1848
+ {
1849
+ get = function(self)
1850
+ return WaygateIsActive(self.handle)
1851
+ end,
1852
+ set = function(self, v)
1853
+ WaygateActivate(self.handle, v)
1854
+ end
1855
+ },
1856
+ true
1857
+ )
1858
+ __TS__SetDescriptor(
1859
+ Unit.prototype,
1860
+ "waygateDestination",
1861
+ {
1862
+ get = function(self)
1863
+ return vec2(
1864
+ WaygateGetDestinationX(self.handle),
1865
+ WaygateGetDestinationY(self.handle)
1866
+ )
1867
+ end,
1868
+ set = function(self, v)
1869
+ WaygateSetDestination(self.handle, v.x, v.y)
1870
+ end
1871
+ },
1872
+ true
1873
+ )
1874
+ __TS__SetDescriptor(
1875
+ Unit.prototype,
1876
+ "abilities",
1877
+ {get = function(self)
1878
+ local abilities = {}
1879
+ local stock = stockAbilities[self.typeId]
1880
+ if stock then
1881
+ local handle = self.handle
1882
+ local j = 1
1883
+ for i = 1, #stock do
1884
+ local abilityId = stock[i]
1885
+ local ability = UnitAbility:of(
1886
+ getUnitAbility(handle, abilityId),
1887
+ abilityId,
1888
+ self
1889
+ )
1890
+ if ability then
1891
+ abilities[j] = ability
1892
+ j = j + 1
1893
+ end
1894
+ end
1895
+ end
1896
+ rawset(self, "abilities", abilities)
1897
+ return abilities
1898
+ end},
1899
+ true
1900
+ )
1901
+ __TS__SetDescriptor(
1902
+ Unit.prototype,
1903
+ "onUnitInRange",
1904
+ {get = function(self)
1905
+ local handle = self.handle
1906
+ local onUnitInRange = setmetatable(
1907
+ {},
1908
+ {__index = function(self, value)
1909
+ local event = __TS__New(
1910
+ TriggerEvent,
1911
+ function(trigger)
1912
+ TriggerRegisterUnitInRangeSimple(trigger, value, handle)
1913
+ end,
1914
+ function() return ____exports.Unit:of(handle) end
1915
+ )
1916
+ rawset(self, value, event)
1917
+ return event
1918
+ end}
1919
+ )
1920
+ rawset(self, "onUnitInRange", onUnitInRange)
1921
+ return onUnitInRange
1922
+ end},
1923
+ true
1924
+ )
1925
+ __TS__SetDescriptor(
1926
+ Unit.prototype,
1927
+ "onManaEqual",
1928
+ {get = function(self)
1929
+ local handle = self.handle
1930
+ local onManaEqual = setmetatable(
1931
+ {},
1932
+ {__index = function(self, value)
1933
+ local event = __TS__New(
1934
+ TriggerEvent,
1935
+ function(trigger)
1936
+ TriggerRegisterUnitManaEvent(trigger, handle, EQUAL, value)
1937
+ end,
1938
+ function() return ____exports.Unit:of(handle), value end
1939
+ )
1940
+ rawset(self, value, event)
1941
+ return event
1942
+ end}
1943
+ )
1944
+ rawset(self, "onManaEqual", onManaEqual)
1945
+ return onManaEqual
1946
+ end},
1947
+ true
1948
+ )
1949
+ __TS__SetDescriptor(
1950
+ Unit.prototype,
1951
+ "manaEvent",
1952
+ {get = function(self)
1953
+ local unit = self
1954
+ local eventByValueByOperator = setmetatable(
1955
+ {},
1956
+ {__index = function(self, operator)
1957
+ local eventByValue = setmetatable(
1958
+ {},
1959
+ {__index = function(self, value)
1960
+ local actualValue = value
1961
+ if operator == 4 then
1962
+ actualValue = value + 0.01
1963
+ elseif operator == 0 then
1964
+ actualValue = value - 0.01
1965
+ end
1966
+ local event = __TS__New(
1967
+ TriggerEvent,
1968
+ function(trigger)
1969
+ TriggerRegisterUnitManaEvent(trigger, unit.handle, jlimitopByOperator[operator], actualValue)
1970
+ end,
1971
+ function() return unit end
1972
+ )
1973
+ local eventsToDestroy = unit._eventsToDestroy
1974
+ if eventsToDestroy == nil then
1975
+ eventsToDestroy = {}
1976
+ unit._eventsToDestroy = eventsToDestroy
1977
+ end
1978
+ eventsToDestroy[#eventsToDestroy + 1] = event
1979
+ rawset(self, value, event)
1980
+ return event
1981
+ end}
1982
+ )
1983
+ rawset(self, operator, eventByValue)
1984
+ return eventByValue
1985
+ end}
1986
+ )
1987
+ rawset(self, "manaEvent", eventByValueByOperator)
1988
+ return eventByValueByOperator
1989
+ end},
1990
+ true
1991
+ )
1992
+ __TS__SetDescriptor(
1993
+ Unit.prototype,
1994
+ "onSelect",
1995
+ {get = function(self)
1996
+ return self:getEvent(EVENT_UNIT_SELECTED)
1997
+ end},
1998
+ true
1999
+ )
2000
+ __TS__SetDescriptor(
2001
+ Unit.prototype,
2002
+ "onDeselect",
2003
+ {get = function(self)
2004
+ return self:getEvent(EVENT_UNIT_DESELECTED)
2005
+ end},
2006
+ true
2007
+ )
2008
+ __TS__SetDescriptor(
2009
+ Unit.prototype,
2010
+ "onImmediateOrder",
2011
+ {get = function(self)
2012
+ return self:getEvent(
2013
+ EVENT_UNIT_ISSUED_ORDER,
2014
+ function() return GetIssuedOrderId() end
2015
+ )
2016
+ end},
2017
+ true
2018
+ )
2019
+ __TS__SetDescriptor(
2020
+ Unit.prototype,
2021
+ "onPointOrder",
2022
+ {get = function(self)
2023
+ return self:getEvent(
2024
+ EVENT_UNIT_ISSUED_POINT_ORDER,
2025
+ function() return GetIssuedOrderId() end
2026
+ )
2027
+ end},
2028
+ true
2029
+ )
2030
+ __TS__SetDescriptor(
2031
+ Unit.prototype,
2032
+ "onTargetOrder",
2033
+ {get = function(self)
2034
+ return self:getEvent(
2035
+ EVENT_UNIT_ISSUED_TARGET_ORDER,
2036
+ function() return GetIssuedOrderId(), ____exports.Unit:of(GetOrderTargetUnit()) or Item:of(GetOrderTargetItem()) or checkNotNull(Destructable:of(GetOrderTargetDestructable())) end
2037
+ )
2038
+ end},
2039
+ true
2040
+ )
2041
+ __TS__SetDescriptor(
2042
+ Unit.prototype,
2043
+ "onSpellEffect",
2044
+ {get = function(self)
2045
+ return self:getEvent(
2046
+ EVENT_UNIT_SPELL_EFFECT,
2047
+ function() return GetSpellAbilityId() end
2048
+ )
2049
+ end},
2050
+ true
2051
+ )
2052
+ Unit.deathEvent = __TS__New(
2053
+ ____exports.UnitTriggerEvent,
2054
+ EVENT_PLAYER_UNIT_DEATH,
2055
+ function() return ____exports.Unit:of(GetDyingUnit()), ____exports.Unit:of(GetKillingUnit()) end
2056
+ )
2057
+ Unit.onDecay = __TS__New(
2058
+ ____exports.UnitTriggerEvent,
2059
+ EVENT_PLAYER_UNIT_DECAY,
2060
+ function() return ____exports.Unit:of(GetDecayingUnit()) end
2061
+ )
2062
+ Unit.onResurrect = __TS__New(
2063
+ InitializingEvent,
2064
+ function(event)
2065
+ local dead = setmetatable({}, {__mode = "k"})
2066
+ ____exports.Unit.deathEvent:addListener(function(unit)
2067
+ dead[unit] = true
2068
+ end)
2069
+ ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2070
+ if dead[unit] and not IsUnitType(unit.handle, UNIT_TYPE_DEAD) then
2071
+ dead[unit] = false
2072
+ invoke(event, unit)
2073
+ end
2074
+ end)
2075
+ end
2076
+ )
2077
+ Unit.morphEvent = __TS__New(
2078
+ InitializingEvent,
2079
+ function(event)
2080
+ local function ifNotLeft(unit)
2081
+ local handle = unit.handle
2082
+ if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
2083
+ invoke(event, unit)
2084
+ end
2085
+ end
2086
+ ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2087
+ if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
2088
+ Timer:run(ifNotLeft, unit)
2089
+ end
2090
+ end)
2091
+ end
2092
+ )
2093
+ Unit.onOwnerChange = __TS__New(
2094
+ ____exports.UnitTriggerEvent,
2095
+ EVENT_PLAYER_UNIT_CHANGE_OWNER,
2096
+ function() return ____exports.Unit:of(GetChangingUnit()), Player:of(GetChangingUnitPrevOwner()) end
2097
+ )
2098
+ Unit.onSelect = __TS__New(
2099
+ ____exports.UnitTriggerEvent,
2100
+ EVENT_PLAYER_UNIT_SELECTED,
2101
+ function() return ____exports.Unit:of(getTriggerUnit()), Player:of(getTriggerPlayer()) end
2102
+ )
2103
+ Unit.onDeselect = __TS__New(
2104
+ ____exports.UnitTriggerEvent,
2105
+ EVENT_PLAYER_UNIT_DESELECTED,
2106
+ function() return ____exports.Unit:of(getTriggerUnit()), Player:of(getTriggerPlayer()) end
2107
+ )
2108
+ Unit.constructionStartEvent = __TS__New(
2109
+ ____exports.UnitTriggerEvent,
2110
+ EVENT_PLAYER_UNIT_CONSTRUCT_START,
2111
+ function() return ____exports.Unit:of(GetConstructingStructure()) end
2112
+ )
2113
+ Unit.onUpgradeFinish = __TS__New(
2114
+ ____exports.UnitTriggerEvent,
2115
+ EVENT_PLAYER_UNIT_UPGRADE_FINISH,
2116
+ function() return ____exports.Unit:of(getTriggerUnit()) end
2117
+ )
2118
+ Unit.onSpellEffect = dispatchId(__TS__New(
2119
+ ____exports.UnitTriggerEvent,
2120
+ EVENT_PLAYER_UNIT_SPELL_EFFECT,
2121
+ function() return ____exports.Unit:of(GetTriggerUnit()), GetSpellAbilityId() end
2122
+ ))
2123
+ Unit.onTargetCast = dispatchId(__TS__New(
2124
+ InitializingEvent,
2125
+ function(event)
2126
+ local function listener(unit, id)
2127
+ local ____GetSpellTargetUnit_result_8
2128
+ if GetSpellTargetUnit() then
2129
+ ____GetSpellTargetUnit_result_8 = ____exports.Unit:of(GetSpellTargetUnit())
2130
+ else
2131
+ local ____GetSpellTargetItem_result_7
2132
+ if GetSpellTargetItem() then
2133
+ ____GetSpellTargetItem_result_7 = Item:of(GetSpellTargetItem())
2134
+ else
2135
+ local ____GetSpellTargetDestructable_result_6
2136
+ if GetSpellTargetDestructable() then
2137
+ ____GetSpellTargetDestructable_result_6 = Destructable:of(GetSpellTargetDestructable())
2138
+ else
2139
+ ____GetSpellTargetDestructable_result_6 = nil
2140
+ end
2141
+ ____GetSpellTargetItem_result_7 = ____GetSpellTargetDestructable_result_6
2142
+ end
2143
+ ____GetSpellTargetUnit_result_8 = ____GetSpellTargetItem_result_7
2144
+ end
2145
+ local target = ____GetSpellTargetUnit_result_8
2146
+ if target then
2147
+ invoke(event, unit, id, target)
2148
+ end
2149
+ end
2150
+ ____exports.Unit.onSpellEffect:addListener(listener)
2151
+ return listener
2152
+ end,
2153
+ function(listener)
2154
+ ____exports.Unit.onSpellEffect:removeListener(listener)
2155
+ end
2156
+ ))
2157
+ Unit.onCastPrepare = dispatchAbility(__TS__New(
2158
+ ____exports.UnitTriggerEvent,
2159
+ EVENT_PLAYER_UNIT_SPELL_CHANNEL,
2160
+ function()
2161
+ local unit = getTriggerUnit()
2162
+ return ____exports.Unit:of(unit), retrieveAbility(
2163
+ unit,
2164
+ getSpellAbility(),
2165
+ getSpellAbilityId()
2166
+ )
2167
+ end
2168
+ ))
2169
+ Unit.onCast = dispatchAbility(__TS__New(
2170
+ ____exports.UnitTriggerEvent,
2171
+ EVENT_PLAYER_UNIT_SPELL_EFFECT,
2172
+ function()
2173
+ local unit = getTriggerUnit()
2174
+ return ____exports.Unit:of(unit), retrieveAbility(
2175
+ unit,
2176
+ getSpellAbility(),
2177
+ getSpellAbilityId()
2178
+ )
2179
+ end
2180
+ ))
2181
+ Unit.onPointCastPrepare = dispatchAbility(__TS__New(
2182
+ InitializingEvent,
2183
+ function(event)
2184
+ local function listener(unit, ability)
2185
+ local x = getSpellTargetX()
2186
+ local y = getSpellTargetY()
2187
+ if x ~= 0 or y ~= 0 then
2188
+ invoke(
2189
+ event,
2190
+ unit,
2191
+ ability,
2192
+ x,
2193
+ y
2194
+ )
2195
+ end
2196
+ end
2197
+ ____exports.Unit.onCastPrepare:addListener(listener)
2198
+ return listener
2199
+ end,
2200
+ function(listener)
2201
+ ____exports.Unit.onCastPrepare:removeListener(listener)
2202
+ end
2203
+ ))
2204
+ Unit.onUnitTargetCastPrepare = dispatchAbility(__TS__New(
2205
+ InitializingEvent,
2206
+ function(event)
2207
+ local function listener(unit, ability)
2208
+ local target = ____exports.Unit:of(getSpellTargetUnit())
2209
+ if target then
2210
+ invoke(event, unit, ability, target)
2211
+ end
2212
+ end
2213
+ ____exports.Unit.onCastPrepare:addListener(listener)
2214
+ return listener
2215
+ end,
2216
+ function(listener)
2217
+ ____exports.Unit.onCastPrepare:removeListener(listener)
2218
+ end
2219
+ ))
2220
+ Unit.onUnitTargetCast = dispatchAbility(__TS__New(
2221
+ InitializingEvent,
2222
+ function(event)
2223
+ local function listener(unit, ability)
2224
+ local target = ____exports.Unit:of(getSpellTargetUnit())
2225
+ if target then
2226
+ invoke(event, unit, ability, target)
2227
+ end
2228
+ end
2229
+ ____exports.Unit.onCast:addListener(listener)
2230
+ return listener
2231
+ end,
2232
+ function(listener)
2233
+ ____exports.Unit.onCast:removeListener(listener)
2234
+ end
2235
+ ))
2236
+ Unit.onPointCast = dispatchAbility(__TS__New(
2237
+ InitializingEvent,
2238
+ function(event)
2239
+ local function listener(unit, ability)
2240
+ if not (getSpellTargetUnit() or getSpellTargetItem() or getSpellTargetDestructable()) then
2241
+ local x = getSpellTargetX()
2242
+ local y = getSpellTargetY()
2243
+ if x ~= 0 or y ~= 0 then
2244
+ invoke(
2245
+ event,
2246
+ unit,
2247
+ ability,
2248
+ x,
2249
+ y
2250
+ )
2251
+ end
2252
+ end
2253
+ end
2254
+ ____exports.Unit.onCast:addListener(listener)
2255
+ return listener
2256
+ end,
2257
+ function(listener)
2258
+ ____exports.Unit.onCast:removeListener(listener)
2259
+ end
2260
+ ))
2261
+ Unit.onCastStart = dispatchAbility(__TS__New(
2262
+ ____exports.UnitTriggerEvent,
2263
+ EVENT_PLAYER_UNIT_SPELL_CAST,
2264
+ function()
2265
+ local unit = getTriggerUnit()
2266
+ return ____exports.Unit:of(unit), retrieveAbility(
2267
+ unit,
2268
+ getSpellAbility(),
2269
+ getSpellAbilityId()
2270
+ )
2271
+ end
2272
+ ))
2273
+ Unit.onUnitTargetCastStart = dispatchAbility(__TS__New(
2274
+ InitializingEvent,
2275
+ function(event)
2276
+ local function listener(unit, ability)
2277
+ local target = ____exports.Unit:of(getSpellTargetUnit())
2278
+ if target then
2279
+ invoke(event, unit, ability, target)
2280
+ end
2281
+ end
2282
+ ____exports.Unit.onCastStart:addListener(listener)
2283
+ return listener
2284
+ end,
2285
+ function(listener)
2286
+ ____exports.Unit.onCastStart:removeListener(listener)
2287
+ end
2288
+ ))
2289
+ Unit.onCastFinish = dispatchAbility(__TS__New(
2290
+ ____exports.UnitTriggerEvent,
2291
+ EVENT_PLAYER_UNIT_SPELL_FINISH,
2292
+ function()
2293
+ local unit = getTriggerUnit()
2294
+ return ____exports.Unit:of(unit), retrieveAbility(
2295
+ unit,
2296
+ getSpellAbility(),
2297
+ getSpellAbilityId()
2298
+ )
2299
+ end
2300
+ ))
2301
+ Unit.onCastStop = dispatchAbility(__TS__New(
2302
+ ____exports.UnitTriggerEvent,
2303
+ EVENT_PLAYER_UNIT_SPELL_ENDCAST,
2304
+ function()
2305
+ local unit = getTriggerUnit()
2306
+ return ____exports.Unit:of(unit), retrieveAbility(
2307
+ unit,
2308
+ getSpellAbility(),
2309
+ getSpellAbilityId()
2310
+ )
2311
+ end
2312
+ ))
2313
+ Unit.onImmediateOrder = dispatchId(__TS__New(
2314
+ ____exports.UnitTriggerEvent,
2315
+ EVENT_PLAYER_UNIT_ISSUED_ORDER,
2316
+ function()
2317
+ local unit = ____exports.Unit:of(getOrderedUnit())
2318
+ local issuedOrderId = getIssuedOrderId()
2319
+ if unit ~= nil and unit.state == 1 then
2320
+ return unit, issuedOrderId
2321
+ end
2322
+ return IgnoreEvent
2323
+ end
2324
+ ))
2325
+ Unit.onTargetOrder = dispatchId(__TS__New(
2326
+ ____exports.UnitTriggerEvent,
2327
+ EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER,
2328
+ function() return ____exports.Unit:of(GetOrderedUnit()), GetIssuedOrderId(), ____exports.Unit:of(GetOrderTargetUnit()) or Item:of(GetOrderTargetItem()) or checkNotNull(Destructable:of(GetOrderTargetDestructable())) end
2329
+ ))
2330
+ Unit.onPointOrder = dispatchId(__TS__New(
2331
+ ____exports.UnitTriggerEvent,
2332
+ EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER,
2333
+ function() return ____exports.Unit:of(GetOrderedUnit()), GetIssuedOrderId(), GetOrderPointX(), GetOrderPointY() end
2334
+ ))
2335
+ Unit.autoAttackStartEvent = __TS__New(
2336
+ ____exports.UnitTriggerEvent,
2337
+ EVENT_PLAYER_UNIT_ATTACKED,
2338
+ function() return ____exports.Unit:of(GetAttacker()), ____exports.Unit:of(GetTriggerUnit()) end
2339
+ )
2340
+ Unit.onDamaging = (function()
2341
+ local event = __TS__New(Event)
2342
+ local trigger = CreateTrigger()
2343
+ TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
2344
+ TriggerAddCondition(
2345
+ trigger,
2346
+ Condition(warpack.wrapSafeCall(function()
2347
+ local source = ____exports.Unit:of(GetEventDamageSource())
2348
+ if source and source.typeId == dummyUnitId then
2349
+ source = nil
2350
+ end
2351
+ local target = BlzGetEventDamageTarget()
2352
+ local data = {
2353
+ amount = GetEventDamage(),
2354
+ attackType = BlzGetEventAttackType(),
2355
+ damageType = BlzGetEventDamageType(),
2356
+ weaponType = BlzGetEventWeaponType(),
2357
+ isAttack = BlzGetEventIsAttack()
2358
+ }
2359
+ if data.isAttack and source then
2360
+ 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
2361
+ if weapon == -1 then
2362
+ local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
2363
+ weapon = 0
2364
+ end
2365
+ data.weapon = assert(source.weapons[weapon + 1])
2366
+ end
2367
+ if not data.isAttack or not source or not source._attackHandlers then
2368
+ invoke(
2369
+ event,
2370
+ source,
2371
+ ____exports.Unit:of(target),
2372
+ setmetatable(
2373
+ {},
2374
+ {
2375
+ __index = data,
2376
+ __newindex = function(self, key, value)
2377
+ damageSetters[key](value)
2378
+ data[key] = value
2379
+ end
2380
+ }
2381
+ )
2382
+ )
2383
+ return
2384
+ end
2385
+ BlzSetEventDamage(0)
2386
+ BlzSetEventAttackType(ATTACK_TYPE_NORMAL)
2387
+ BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
2388
+ BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
2389
+ local sourceOwner = source.owner.handle
2390
+ local targetOwner = GetOwningPlayer(target)
2391
+ if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
2392
+ SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
2393
+ Timer:run(function()
2394
+ SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
2395
+ end)
2396
+ end
2397
+ if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
2398
+ SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
2399
+ Timer:run(function()
2400
+ SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
2401
+ end)
2402
+ end
2403
+ for ____, ____value in ipairs(source._attackHandlers) do
2404
+ local condition = ____value[1]
2405
+ local action = ____value[2]
2406
+ if condition(
2407
+ source,
2408
+ ____exports.Unit:of(target),
2409
+ data
2410
+ ) then
2411
+ action(
2412
+ source,
2413
+ ____exports.Unit:of(target),
2414
+ setmetatable(
2415
+ {fire = function()
2416
+ UnitDamageTarget(
2417
+ source.handle,
2418
+ target,
2419
+ data.amount,
2420
+ true,
2421
+ true,
2422
+ data.attackType,
2423
+ data.damageType,
2424
+ data.weaponType
2425
+ )
2426
+ end},
2427
+ {__index = data, __newindex = data}
2428
+ )
2429
+ )
2430
+ return
2431
+ end
2432
+ end
2433
+ end))
2434
+ )
2435
+ return event
2436
+ end)()
2437
+ Unit.onDamage = __TS__New(
2438
+ InitializingEvent,
2439
+ function(event)
2440
+ local trigger = CreateTrigger()
2441
+ TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
2442
+ TriggerAddCondition(
2443
+ trigger,
2444
+ Condition(warpack.wrapSafeCall(function()
2445
+ local source = ____exports.Unit:of(GetEventDamageSource())
2446
+ if source and source.typeId == dummyUnitId then
2447
+ source = nil
2448
+ end
2449
+ local data = {
2450
+ amount = GetEventDamage(),
2451
+ attackType = BlzGetEventAttackType(),
2452
+ damageType = BlzGetEventDamageType(),
2453
+ weaponType = BlzGetEventWeaponType(),
2454
+ isAttack = BlzGetEventIsAttack(),
2455
+ preventDeath = damageEventPreventDeath
2456
+ }
2457
+ local evData = setmetatable(
2458
+ {},
2459
+ {
2460
+ __index = data,
2461
+ __newindex = function(self, key, value)
2462
+ damageSetters[key](value)
2463
+ data[key] = value
2464
+ end
2465
+ }
2466
+ )
2467
+ local target = ____exports.Unit:of(BlzGetEventDamageTarget())
2468
+ invoke(event, source, target, evData)
2469
+ if evData[0] ~= nil and target.health - evData.amount < 0.405 then
2470
+ local bonusHealth = math.ceil(evData.amount)
2471
+ target[104] = (target[104] or 0) + bonusHealth
2472
+ BlzSetUnitMaxHP(
2473
+ target.handle,
2474
+ BlzGetUnitMaxHP(target.handle) + bonusHealth
2475
+ )
2476
+ SetWidgetLife(
2477
+ target.handle,
2478
+ GetWidgetLife(target.handle) + bonusHealth
2479
+ )
2480
+ Timer:run(function()
2481
+ warpack.safeCall(
2482
+ evData[0],
2483
+ table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
2484
+ )
2485
+ target[104] = (target[104] or 0) - bonusHealth
2486
+ SetWidgetLife(
2487
+ target.handle,
2488
+ GetWidgetLife(target.handle) - bonusHealth
2489
+ )
2490
+ BlzSetUnitMaxHP(
2491
+ target.handle,
2492
+ BlzGetUnitMaxHP(target.handle) - bonusHealth
2493
+ )
2494
+ end)
2495
+ end
2496
+ end))
2497
+ )
2498
+ return trigger
2499
+ end,
2500
+ function(trigger)
2501
+ TriggerClearConditions(trigger)
2502
+ DestroyTrigger(trigger)
2503
+ end
2504
+ )
2505
+ Unit.onItemDrop = __TS__New(
2506
+ ____exports.UnitTriggerEvent,
2507
+ EVENT_PLAYER_UNIT_DROP_ITEM,
2508
+ function()
2509
+ local unit = getTriggerUnit()
2510
+ if getUnitTypeId(unit) ~= dummyUnitId then
2511
+ return ____exports.Unit:of(unit), Item:of(getManipulatedItem())
2512
+ end
2513
+ return IgnoreEvent
2514
+ end
2515
+ )
2516
+ Unit.onItemPickup = __TS__New(
2517
+ ____exports.UnitTriggerEvent,
2518
+ EVENT_PLAYER_UNIT_PICKUP_ITEM,
2519
+ function()
2520
+ local unit = getTriggerUnit()
2521
+ if getUnitTypeId(unit) ~= dummyUnitId then
2522
+ return ____exports.Unit:of(unit), Item:of(getManipulatedItem())
2523
+ end
2524
+ return IgnoreEvent
2525
+ end
2526
+ )
2527
+ Unit.onItemUse = __TS__New(
2528
+ ____exports.UnitTriggerEvent,
2529
+ EVENT_PLAYER_UNIT_USE_ITEM,
2530
+ function() return ____exports.Unit:of(GetTriggerUnit()), Item:of(GetManipulatedItem()) end
2531
+ )
2532
+ __TS__ObjectDefineProperty(
2533
+ Unit,
2534
+ "onCreate",
2535
+ {get = function(self)
2536
+ local onCreate = dispatch(
2537
+ ____exports.Unit.onCreateEvent,
2538
+ function(unit) return unit.typeId end,
2539
+ function(unit) return unit end
2540
+ )
2541
+ rawset(self, "onCreate", onCreate)
2542
+ return onCreate
2543
+ end}
2544
+ )
2545
+ __TS__ObjectDefineProperty(
2546
+ Unit,
2547
+ "destroyEvent",
2548
+ {get = function(self)
2549
+ local destroyEvent = dispatch(
2550
+ ____exports.Unit.onDestroyEvent,
2551
+ function(unit) return unit.typeId end,
2552
+ function(unit) return unit end
2553
+ )
2554
+ rawset(self, "destroyEvent", destroyEvent)
2555
+ return destroyEvent
2556
+ end}
2557
+ );
2558
+ (function(self)
2559
+ local leaveAbilityIds = postcompile(function()
2560
+ local parentLeaveAbilityIds = __TS__New(Set, {"Adef", "Amdf", "AEim", "ACim"})
2561
+ local leaveAbilityIds = {__TS__Spread(parentLeaveAbilityIds:values())}
2562
+ if currentMap then
2563
+ for id, ability in pairs(currentMap.objects.ability.all) do
2564
+ if ability.parentId and parentLeaveAbilityIds:has(ability.parentId) then
2565
+ leaveAbilityIds[#leaveAbilityIds + 1] = id
2566
+ end
2567
+ end
2568
+ end
2569
+ return __TS__ArrayMap(
2570
+ leaveAbilityIds,
2571
+ function(____, id) return fourCC(id) end
2572
+ )
2573
+ end)
2574
+ for ____, leaveOrderId in ipairs({
2575
+ orderId("undefend"),
2576
+ orderId("magicundefense"),
2577
+ orderId("unimmolation")
2578
+ }) do
2579
+ ____exports.Unit.onImmediateOrder[leaveOrderId]:addListener(function(unit)
2580
+ local handle = unit.handle
2581
+ for i = 1, #leaveAbilityIds do
2582
+ if getUnitAbilityLevel(handle, leaveAbilityIds[i]) ~= 0 then
2583
+ return
2584
+ end
2585
+ end
2586
+ unit:destroy()
2587
+ end)
2588
+ end
2589
+ end)(Unit)
2590
+ return ____exports