warscript 0.0.1-dev.448dcfb → 0.0.1-dev.45a73a4

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 (353) hide show
  1. package/attributes.d.ts +1 -0
  2. package/attributes.lua +9 -0
  3. package/core/dummy.lua +4 -2
  4. package/core/types/effect.d.ts +11 -1
  5. package/core/types/effect.lua +43 -77
  6. package/core/types/frame.d.ts +16 -2
  7. package/core/types/frame.lua +131 -65
  8. package/core/types/handle.lua +9 -9
  9. package/core/types/item.d.ts +1 -0
  10. package/core/types/item.lua +1 -0
  11. package/core/types/player.d.ts +18 -1
  12. package/core/types/player.lua +73 -25
  13. package/core/types/playerCamera.lua +44 -0
  14. package/core/types/playerColor.lua +4 -3
  15. package/core/types/sound.d.ts +1 -1
  16. package/core/types/sound.lua +14 -9
  17. package/core/types/tileCell.d.ts +18 -3
  18. package/core/types/tileCell.lua +108 -0
  19. package/core/types/timer.d.ts +3 -2
  20. package/core/types/timer.lua +22 -2
  21. package/core/types/unit.d.ts +5 -0
  22. package/core/types/unit.lua +5 -0
  23. package/core/util.d.ts +3 -1
  24. package/core/util.lua +109 -3
  25. package/decl/native.d.ts +707 -9
  26. package/destroyable.d.ts +1 -0
  27. package/destroyable.lua +9 -0
  28. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  29. package/engine/ability-type-extended-tooltip.lua +44 -0
  30. package/engine/behavior.d.ts +12 -1
  31. package/engine/behavior.lua +199 -65
  32. package/engine/behaviour/ability/apply-buff.lua +4 -4
  33. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  34. package/engine/behaviour/ability/damage.d.ts +4 -0
  35. package/engine/behaviour/ability/damage.lua +19 -15
  36. package/engine/behaviour/ability/emulate-impact.lua +5 -4
  37. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  38. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  39. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  40. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  41. package/engine/behaviour/ability.d.ts +13 -6
  42. package/engine/behaviour/ability.lua +56 -1
  43. package/engine/behaviour/unit/stun-immunity.d.ts +9 -5
  44. package/engine/behaviour/unit/stun-immunity.lua +17 -7
  45. package/engine/behaviour/unit.d.ts +16 -5
  46. package/engine/behaviour/unit.lua +127 -22
  47. package/engine/buff.d.ts +73 -27
  48. package/engine/buff.lua +424 -193
  49. package/engine/index.d.ts +2 -1
  50. package/engine/internal/ability.d.ts +7 -0
  51. package/engine/internal/ability.lua +71 -41
  52. package/engine/internal/item/fields.d.ts +12 -0
  53. package/engine/internal/item/fields.lua +33 -0
  54. package/engine/internal/item/owner-cache.d.ts +5 -0
  55. package/engine/internal/item/owner-cache.lua +4 -0
  56. package/engine/internal/item+owner.d.ts +2 -0
  57. package/engine/internal/item+owner.lua +27 -4
  58. package/engine/internal/item.d.ts +27 -14
  59. package/engine/internal/item.lua +180 -80
  60. package/engine/internal/mechanics/cast-ability.lua +6 -3
  61. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  62. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  63. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  64. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  65. package/engine/internal/object-data/health-bonus.lua +16 -0
  66. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  67. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  68. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  69. package/engine/internal/object-data/mana-bonus.lua +16 -0
  70. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  71. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  72. package/engine/internal/unit/ability.d.ts +14 -14
  73. package/engine/internal/unit/ability.lua +72 -45
  74. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  75. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  76. package/engine/internal/unit/appearance.d.ts +15 -0
  77. package/engine/internal/unit/appearance.lua +85 -0
  78. package/engine/internal/unit/attributes.d.ts +17 -0
  79. package/engine/internal/unit/attributes.lua +46 -0
  80. package/engine/internal/unit/bonus.d.ts +14 -0
  81. package/engine/internal/unit/bonus.lua +102 -8
  82. package/engine/internal/unit/buff.d.ts +2 -2
  83. package/engine/internal/unit/buff.lua +34 -19
  84. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  85. package/engine/internal/unit/equipment-inventory.lua +233 -0
  86. package/engine/internal/unit/expiration-timer.lua +1 -1
  87. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  88. package/engine/internal/unit/extended-inventory.lua +99 -0
  89. package/engine/internal/unit/fly-height.d.ts +7 -0
  90. package/engine/internal/unit/fly-height.lua +20 -0
  91. package/engine/internal/unit/ignore-events-items.lua +10 -1
  92. package/engine/internal/unit/interrupts.d.ts +12 -0
  93. package/engine/internal/unit/interrupts.lua +28 -0
  94. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  95. package/engine/internal/unit/inventory.lua +87 -0
  96. package/engine/internal/unit/item-container.d.ts +25 -0
  97. package/engine/internal/unit/item-container.lua +11 -0
  98. package/engine/internal/unit/item-order-events.d.ts +17 -0
  99. package/engine/internal/unit/item-order-events.lua +67 -0
  100. package/engine/internal/unit/item-slot.d.ts +27 -0
  101. package/engine/internal/unit/item-slot.lua +92 -0
  102. package/engine/internal/unit/main-selected.lua +12 -27
  103. package/engine/internal/unit/order.d.ts +3 -3
  104. package/engine/internal/unit/order.lua +10 -10
  105. package/engine/internal/unit/range-event.d.ts +12 -0
  106. package/engine/internal/unit/range-event.lua +90 -0
  107. package/engine/internal/unit/scale.d.ts +7 -0
  108. package/engine/internal/unit/scale.lua +20 -0
  109. package/engine/internal/unit+ability.d.ts +2 -1
  110. package/engine/internal/unit+ability.lua +63 -2
  111. package/engine/internal/unit+bonus.lua +3 -3
  112. package/engine/internal/unit+damage.d.ts +9 -0
  113. package/engine/internal/unit+damage.lua +33 -0
  114. package/engine/internal/unit+rally.lua +9 -31
  115. package/engine/internal/unit-missile-data.lua +58 -32
  116. package/engine/internal/unit-missile-launch.lua +64 -33
  117. package/engine/internal/unit.d.ts +19 -31
  118. package/engine/internal/unit.lua +215 -287
  119. package/engine/local-client.d.ts +28 -0
  120. package/engine/local-client.lua +324 -54
  121. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  122. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  123. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  124. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  125. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  126. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  127. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  128. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  129. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  130. package/engine/object-data/auxiliary/item-class.lua +2 -0
  131. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  132. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  133. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  134. package/engine/object-data/auxiliary/order-type.lua +2 -0
  135. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  136. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  137. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  138. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  139. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  140. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  141. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  142. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  143. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  144. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  145. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  146. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  147. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  148. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  149. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  150. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  151. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  152. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  153. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  154. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  155. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  156. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  157. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  158. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  159. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  160. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  161. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  162. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  163. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  164. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  165. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  166. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  167. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  168. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  169. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  170. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  171. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  172. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  173. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  174. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  175. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  176. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  177. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  178. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  179. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  180. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  181. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  182. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  183. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  184. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  185. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  186. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  187. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  188. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  189. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  190. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  191. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  192. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  193. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  194. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  195. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  196. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  197. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  198. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  199. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  200. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  201. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  202. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  203. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  204. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  205. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  206. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  207. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  208. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  209. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  210. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  211. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  212. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  213. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  214. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  215. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  216. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  217. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  218. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  219. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  220. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  221. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  222. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  223. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  224. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  225. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  226. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  227. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  228. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  229. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  230. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  231. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  232. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  233. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  234. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  235. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  236. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  237. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  238. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  239. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  240. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  241. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  242. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  243. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  244. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  245. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  246. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  247. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  248. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  249. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  250. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  251. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  252. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  253. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  254. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  255. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  256. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  257. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  258. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  259. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  260. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  261. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  262. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  263. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  264. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  265. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  266. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  267. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  268. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  269. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  270. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  271. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  272. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  273. package/engine/object-data/entry/ability-type.d.ts +31 -6
  274. package/engine/object-data/entry/ability-type.lua +287 -9
  275. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  276. package/engine/object-data/entry/buff-type.d.ts +6 -2
  277. package/engine/object-data/entry/buff-type.lua +26 -0
  278. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  279. package/engine/object-data/entry/destructible-type.lua +181 -0
  280. package/engine/object-data/entry/item-type.d.ts +18 -3
  281. package/engine/object-data/entry/item-type.lua +84 -0
  282. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  283. package/engine/object-data/entry/lightning-type.lua +1 -1
  284. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  285. package/engine/object-data/entry/unit-type.d.ts +51 -2
  286. package/engine/object-data/entry/unit-type.lua +415 -37
  287. package/engine/object-data/entry/upgrade.d.ts +2 -2
  288. package/engine/object-data/entry.d.ts +6 -1
  289. package/engine/object-data/entry.lua +8 -0
  290. package/engine/object-field/ability.lua +2 -2
  291. package/engine/object-field/item.d.ts +22 -0
  292. package/engine/object-field/item.lua +118 -0
  293. package/engine/object-field/unit.d.ts +20 -5
  294. package/engine/object-field/unit.lua +61 -0
  295. package/engine/object-field.d.ts +10 -2
  296. package/engine/object-field.lua +268 -123
  297. package/engine/random.d.ts +10 -0
  298. package/engine/random.lua +21 -0
  299. package/engine/standard/entries/ability-type.d.ts +3102 -7
  300. package/engine/standard/entries/ability-type.lua +0 -6
  301. package/engine/standard/entries/buff-type.d.ts +45 -0
  302. package/engine/standard/entries/buff-type.lua +43 -0
  303. package/engine/standard/entries/item-type.d.ts +1299 -0
  304. package/engine/standard/entries/item-type.lua +2 -0
  305. package/engine/standard/entries/lightning-type.d.ts +42 -15
  306. package/engine/standard/entries/lightning-type.lua +0 -14
  307. package/engine/standard/entries/unit-type.d.ts +5 -0
  308. package/engine/standard/entries/unit-type.lua +5 -0
  309. package/engine/standard/fields/ability.d.ts +2 -2
  310. package/engine/standard/fields/ability.lua +2 -2
  311. package/engine/standard/fields/item.d.ts +4 -0
  312. package/engine/standard/fields/item.lua +6 -0
  313. package/engine/standard/fields/unit.d.ts +11 -3
  314. package/engine/standard/fields/unit.lua +15 -2
  315. package/engine/synchronization.d.ts +11 -0
  316. package/engine/synchronization.lua +77 -0
  317. package/engine/text-tag.lua +3 -2
  318. package/engine/unit.d.ts +10 -1
  319. package/engine/unit.lua +10 -1
  320. package/event.d.ts +1 -1
  321. package/lualib_bundle.lua +1 -1
  322. package/math.d.ts +2 -0
  323. package/math.lua +14 -0
  324. package/net/socket.lua +1 -1
  325. package/network.lua +25 -1
  326. package/objutil/buff.lua +11 -9
  327. package/objutil/object.lua +1 -1
  328. package/operation.d.ts +8 -1
  329. package/operation.lua +38 -18
  330. package/package.json +3 -23
  331. package/patch-lua.lua +15 -0
  332. package/patch-lualib.lua +1 -1
  333. package/utility/arrays.d.ts +8 -1
  334. package/utility/arrays.lua +25 -0
  335. package/utility/callback-array.d.ts +17 -0
  336. package/utility/callback-array.lua +61 -0
  337. package/utility/linked-map.d.ts +35 -0
  338. package/utility/linked-map.lua +107 -0
  339. package/utility/linked-set.d.ts +4 -1
  340. package/utility/linked-set.lua +46 -1
  341. package/utility/lua-maps.d.ts +11 -2
  342. package/utility/lua-maps.lua +33 -2
  343. package/utility/random.d.ts +102 -0
  344. package/utility/random.lua +273 -0
  345. package/utility/records.lua +20 -1
  346. package/utility/types.d.ts +3 -0
  347. package/utility/unordered-map.d.ts +27 -0
  348. package/utility/unordered-map.lua +99 -0
  349. package/engine/internal/unit/item.lua +0 -78
  350. /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
  351. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  352. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  353. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -7,10 +7,10 @@ local __TS__Class = ____lualib.__TS__Class
7
7
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
8
8
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
9
9
  local __TS__ArraySetLength = ____lualib.__TS__ArraySetLength
10
+ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
10
11
  local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
11
12
  local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
12
13
  local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
13
- local __TS__InstanceOf = ____lualib.__TS__InstanceOf
14
14
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
15
15
  local Set = ____lualib.Set
16
16
  local __TS__Spread = ____lualib.__TS__Spread
@@ -47,12 +47,10 @@ local checkNotNull = ____preconditions.checkNotNull
47
47
  local ____constants = require("engine.constants")
48
48
  local HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT = ____constants.HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT
49
49
  local MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT = ____constants.MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT
50
- local ____arrays = require("utility.arrays")
51
- local forEach = ____arrays.forEach
52
- local ____math = require("math")
53
- local min = ____math.min
54
50
  local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
55
- local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
51
+ local isItemIgnoredInEvents = ____ignore_2Devents_2Ditems.isItemIgnoredInEvents
52
+ local ____owner_2Dcache = require("engine.internal.item.owner-cache")
53
+ local ownerByItem = ____owner_2Dcache.ownerByItem
56
54
  local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
57
55
  local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
58
56
  local nativeToAttackType = ____attack_2Dtype.nativeToAttackType
@@ -62,6 +60,10 @@ local ____attributes = require("attributes")
62
60
  local isAttribute = ____attributes.isAttribute
63
61
  local ____ability = require("engine.internal.item.ability")
64
62
  local doUnitAbilityAction = ____ability.doUnitAbilityAction
63
+ local ____synchronization = require("engine.synchronization")
64
+ local synchronizer = ____synchronization.synchronizer
65
+ local ____linked_2Dmap = require("utility.linked-map")
66
+ local LinkedMap = ____linked_2Dmap.LinkedMap
65
67
  local match = string.match
66
68
  local ____tostring = _G.tostring
67
69
  local setUnitAnimation = SetUnitAnimation
@@ -71,16 +73,12 @@ local getUnitRealField = BlzGetUnitRealField
71
73
  local getHeroStr = GetHeroStr
72
74
  local getHeroAgi = GetHeroAgi
73
75
  local getHeroInt = GetHeroInt
74
- local setHeroStr = SetHeroStr
75
- local setHeroAgi = SetHeroAgi
76
- local setHeroInt = SetHeroInt
77
76
  local getUnitBooleanField = BlzGetUnitBooleanField
78
77
  local getUnitStringField = BlzGetUnitStringField
79
78
  local setUnitIntegerField = BlzSetUnitIntegerField
80
79
  local setUnitRealField = BlzSetUnitRealField
81
80
  local setUnitBooleanField = BlzSetUnitBooleanField
82
81
  local setUnitStringField = BlzSetUnitStringField
83
- local setUnitScale = SetUnitScale
84
82
  local setUnitPosition = SetUnitPosition
85
83
  local setUnitTimeScale = SetUnitTimeScale
86
84
  local getHandleId = GetHandleId
@@ -108,7 +106,6 @@ local getUnitWeaponStringField = BlzGetUnitWeaponStringField
108
106
  local setUnitWeaponStringField = BlzSetUnitWeaponStringField
109
107
  local getUnitAbilityLevel = GetUnitAbilityLevel
110
108
  local unitDisableAbility = BlzUnitDisableAbility
111
- local unitInterruptAttack = BlzUnitInterruptAttack
112
109
  local isUnitInvisible = IsUnitInvisible
113
110
  local isUnitVisible = IsUnitVisible
114
111
  local getUnitX = GetUnitX
@@ -384,15 +381,27 @@ local modifiers = {
384
381
  end,
385
382
  armor = function(unit, value)
386
383
  if UnitAddAbility(unit, armorBonusAbilityId) then
387
- assert(UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId))
384
+ assert(
385
+ UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
386
+ "armor bonus ability must be made permanent",
387
+ unit
388
+ )
388
389
  end
389
- local ability = assert(BlzGetUnitAbility(unit, armorBonusAbilityId))
390
- assert(BlzSetAbilityRealLevelField(
391
- ability,
392
- armorBonusField,
393
- 0,
394
- BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
395
- ))
390
+ local ability = assert(
391
+ BlzGetUnitAbility(unit, armorBonusAbilityId),
392
+ "armor bonus ability must be existing",
393
+ unit
394
+ )
395
+ assert(
396
+ BlzSetAbilityRealLevelField(
397
+ ability,
398
+ armorBonusField,
399
+ 0,
400
+ BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
401
+ ),
402
+ "armor bonus ability field must be set",
403
+ unit
404
+ )
396
405
  end
397
406
  }
398
407
  local getters = {
@@ -410,6 +419,19 @@ function UnitWeapon.prototype.____constructor(self, unit, index)
410
419
  self.unit = unit
411
420
  self.index = index
412
421
  end
422
+ __TS__SetDescriptor(
423
+ UnitWeapon.prototype,
424
+ "isEnabled",
425
+ {
426
+ get = function(self)
427
+ return BlzGetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index)
428
+ end,
429
+ set = function(self, isEnabled)
430
+ BlzSetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index, isEnabled)
431
+ end
432
+ },
433
+ true
434
+ )
413
435
  __TS__SetDescriptor(
414
436
  UnitWeapon.prototype,
415
437
  "cooldown",
@@ -568,8 +590,6 @@ __TS__SetDescriptor(
568
590
  },
569
591
  true
570
592
  )
571
- local unitInventorySize = UnitInventorySize
572
- local unitItemInSlot = UnitItemInSlot
573
593
  local getItemAbility = BlzGetItemAbility
574
594
  local getUnitAbility = BlzGetUnitAbility
575
595
  local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
@@ -587,8 +607,8 @@ local function retrieveAbility(unit, ability, abilityId)
587
607
  ____exports.Unit:of(unit)
588
608
  )
589
609
  end
590
- for i = 0, unitInventorySize(unit) - 1 do
591
- local item = unitItemInSlot(unit, i)
610
+ for i = 0, UnitInventorySize(unit) - 1 do
611
+ local item = UnitItemInSlot(unit, i)
592
612
  if getItemAbility(item, abilityId) == ability then
593
613
  return ItemAbility:of(
594
614
  ability,
@@ -633,26 +653,30 @@ local fieldSetters = {
633
653
  }
634
654
  local dummies = {}
635
655
  for ____, player in ipairs(Player.all) do
636
- local dummy = assert(createUnit(
637
- player.handle,
638
- dummyUnitId,
639
- 0,
640
- 0,
641
- 270
642
- ))
656
+ local dummy = assert(
657
+ createUnit(
658
+ player.handle,
659
+ dummyUnitId,
660
+ 0,
661
+ 0,
662
+ 270
663
+ ),
664
+ "dummy must be created",
665
+ player
666
+ )
643
667
  ShowUnit(dummy, false)
644
668
  dummies[player] = dummy
645
669
  end
646
670
  local function delayHealthChecksCallback(unit)
647
- local counter = (unit[103] or 0) - 1
671
+ local counter = (unit[104] or 0) - 1
648
672
  if counter ~= 0 then
649
- unit[103] = counter
673
+ unit[104] = counter
650
674
  return
651
675
  end
652
- unit[103] = nil
653
- local healthBonus = unit[104]
676
+ unit[104] = nil
677
+ local healthBonus = unit[105]
654
678
  if healthBonus ~= nil then
655
- unit[104] = nil
679
+ unit[105] = nil
656
680
  local handle = unit.handle
657
681
  BlzSetUnitMaxHP(
658
682
  handle,
@@ -682,41 +706,57 @@ function Unit.prototype.____constructor(self, handle)
682
706
  nextSyncId = ____nextSyncId_1 + 1
683
707
  self.syncId = ____nextSyncId_1
684
708
  self._owner = Player:of(getOwningPlayer(handle))
685
- assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
686
- assert(unitAddAbility(handle, morphDetectAbilityId))
709
+ assert(
710
+ unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId),
711
+ "leave detection ability must be added",
712
+ self
713
+ )
714
+ assert(
715
+ unitAddAbility(handle, morphDetectAbilityId),
716
+ "morph detection ability must be added",
717
+ self
718
+ )
687
719
  if unitAddAbility(
688
720
  handle,
689
721
  fourCC("Amrf")
690
722
  ) then
691
- assert(unitRemoveAbility(
692
- handle,
693
- fourCC("Amrf")
694
- ))
723
+ assert(
724
+ unitRemoveAbility(
725
+ handle,
726
+ fourCC("Amrf")
727
+ ),
728
+ "fly ability must be removed after addition",
729
+ self
730
+ )
695
731
  end
696
732
  unitBySyncId[self.syncId] = self
697
733
  local ____ = self.abilities
698
734
  end
699
- function Unit.prototype.getEvent(self, event, collector)
700
- self.events = self.events or ({})
701
- local eventId = GetHandleId(event)
702
- if not self.events[eventId] then
703
- self.events[eventId] = __TS__New(
735
+ function Unit.prototype.getEvent(self, jevent, collector)
736
+ self.events = self.events or __TS__New(LinkedMap)
737
+ local eventId = GetHandleId(jevent)
738
+ local event = self.events:get(eventId)
739
+ if event == nil then
740
+ event = __TS__New(
704
741
  TriggerEvent,
705
742
  function(trigger)
706
- TriggerRegisterUnitEvent(trigger, self.handle, event)
743
+ TriggerRegisterUnitEvent(trigger, self.handle, jevent)
707
744
  end,
708
745
  collector or (function() return {} end)
709
746
  )
747
+ self.events:put(eventId, event)
710
748
  end
711
- return self.events[eventId]
749
+ return event
750
+ end
751
+ function Unit.prototype.saveData(self)
752
+ local handle = self.handle
753
+ self[108] = self[108] or getUnitX(handle)
754
+ self[109] = self[109] or getUnitY(handle)
755
+ self._owner = self._owner or Player:of(getOwningPlayer(handle))
712
756
  end
713
757
  function Unit.prototype.onDestroy(self)
714
758
  local handle = self.handle
715
- self[107] = getUnitX(handle)
716
- self[108] = getUnitY(handle)
717
- if not self._owner then
718
- self._owner = Player:of(getOwningPlayer(handle))
719
- end
759
+ self:saveData()
720
760
  local abilities = self.abilities
721
761
  for ____, ability in ipairs(abilities) do
722
762
  ability:destroy()
@@ -734,7 +774,9 @@ function Unit.prototype.onDestroy(self)
734
774
  end
735
775
  local eventsToDestroy = self._eventsToDestroy
736
776
  if eventsToDestroy ~= nil then
737
- forEach(eventsToDestroy, "destroy")
777
+ for ____, event in ipairs(eventsToDestroy) do
778
+ event:destroy()
779
+ end
738
780
  end
739
781
  if getUnitAbilityLevel(handle, leaveDetectAbilityId) > 0 then
740
782
  unitRemoveAbility(handle, leaveDetectAbilityId)
@@ -752,7 +794,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
752
794
  self._attackHandlers = handlers
753
795
  if #handlers == 1 then
754
796
  local handle = self.handle
755
- assert(unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId))
797
+ assert(
798
+ unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
799
+ "attack handler ability must be added",
800
+ self
801
+ )
756
802
  end
757
803
  return handler
758
804
  end
@@ -800,13 +846,19 @@ function Unit.prototype.isInvisibleTo(self, player)
800
846
  return isUnitInvisible(self.handle, player.handle)
801
847
  end
802
848
  function Unit.prototype.isInRangeOf(self, x, y, range)
803
- local ____temp_3
849
+ local ____temp_4
804
850
  if type(x) == "number" then
805
- ____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
851
+ ____temp_4 = isUnitInRangeXY(self.handle, x, y, range)
806
852
  else
807
- ____temp_3 = isUnitInRange(self.handle, x.handle, y)
853
+ local ____temp_3
854
+ if __TS__InstanceOf(x, ____exports.Unit) then
855
+ ____temp_3 = isUnitInRange(self.handle, x.handle, y)
856
+ else
857
+ ____temp_3 = isUnitInRangeXY(self.handle, x.x, x.y, range)
858
+ end
859
+ ____temp_4 = ____temp_3
808
860
  end
809
- return ____temp_3
861
+ return ____temp_4
810
862
  end
811
863
  function Unit.prototype.isAllyOf(self, unit)
812
864
  return isUnitAlly(
@@ -836,16 +888,18 @@ function Unit.prototype.queueAnimation(self, animation)
836
888
  QueueUnitAnimation(self.handle, animation)
837
889
  end
838
890
  function Unit.prototype.chooseWeapon(self, target)
839
- if target:isAllowedTarget(self, self.firstWeapon.allowedTargetCombatClassifications) then
840
- return self.firstWeapon
891
+ local firstWeapon = self.firstWeapon
892
+ if firstWeapon.isEnabled and target:isAllowedTarget(self, firstWeapon.allowedTargetCombatClassifications) then
893
+ return firstWeapon
841
894
  end
842
- if target:isAllowedTarget(target, self.secondWeapon.allowedTargetCombatClassifications) then
843
- return self.secondWeapon
895
+ local secondWeapon = self.secondWeapon
896
+ if secondWeapon.isEnabled and target:isAllowedTarget(target, secondWeapon.allowedTargetCombatClassifications) then
897
+ return secondWeapon
844
898
  end
845
899
  return nil
846
900
  end
847
901
  function Unit.prototype.delayHealthChecks(self)
848
- self[103] = (self[103] or 0) + 1
902
+ self[104] = (self[104] or 0) + 1
849
903
  Timer:run(delayHealthChecksCallback, self)
850
904
  end
851
905
  function Unit.prototype.setPosition(self, x, y)
@@ -862,14 +916,14 @@ function Unit.prototype.kill(self)
862
916
  killUnit(self.handle)
863
917
  end
864
918
  function Unit.prototype.revive(self, x, y, doEffect)
865
- local ____ReviveHero_6 = ReviveHero
866
- local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
867
- local ____doEffect_4 = doEffect
868
- if ____doEffect_4 == nil then
869
- ____doEffect_4 = false
919
+ local ____ReviveHero_7 = ReviveHero
920
+ local ____array_6 = __TS__SparseArrayNew(self.handle, x, y)
921
+ local ____doEffect_5 = doEffect
922
+ if ____doEffect_5 == nil then
923
+ ____doEffect_5 = false
870
924
  end
871
- __TS__SparseArrayPush(____array_5, ____doEffect_4)
872
- ____ReviveHero_6(__TS__SparseArraySpread(____array_5))
925
+ __TS__SparseArrayPush(____array_6, ____doEffect_5)
926
+ ____ReviveHero_7(__TS__SparseArraySpread(____array_6))
873
927
  end
874
928
  function Unit.prototype.healTarget(self, target, amount)
875
929
  if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
@@ -909,7 +963,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
909
963
  return UnitDropItemSlot(self.handle, item.handle, slot)
910
964
  end
911
965
  function Unit.prototype.itemInSlot(self, slot)
912
- return Item:of(unitItemInSlot(self.handle, slot))
966
+ return Item:of(UnitItemInSlot(self.handle, slot))
913
967
  end
914
968
  function Unit.prototype.addAbility(self, abilityId)
915
969
  local ability = UnitAbility:of(
@@ -935,20 +989,21 @@ end
935
989
  function Unit.prototype.hasAbility(self, abilityId)
936
990
  return getUnitAbilityLevel(self.handle, abilityId) > 0
937
991
  end
938
- function Unit.prototype.getAbilityById(self, abilityId)
992
+ function Unit.prototype.getAbility(self, abilityId)
939
993
  local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
940
994
  return UnitAbility:of(ability, abilityId, self)
941
995
  end
942
- function Unit.prototype.removeAbility(self, abilityId)
996
+ function Unit.prototype.removeAbility(self, abilityTypeId)
943
997
  local abilities = self.abilities
944
998
  for i = 1, #abilities do
945
- if abilities[i].typeId == abilityId then
946
- abilities[i]:destroy()
999
+ if abilities[i].typeId == abilityTypeId then
1000
+ local ability = abilities[i]
947
1001
  tremove(abilities, i)
1002
+ ability:destroy()
948
1003
  return true
949
1004
  end
950
1005
  end
951
- return false
1006
+ return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
952
1007
  end
953
1008
  function Unit.prototype.hideAbility(self, abilityId, flag)
954
1009
  BlzUnitHideAbility(self.handle, abilityId, flag)
@@ -962,24 +1017,6 @@ end
962
1017
  function Unit.prototype.endAbilityCooldown(self, abilityId)
963
1018
  BlzEndUnitAbilityCooldown(self.handle, abilityId)
964
1019
  end
965
- function Unit.prototype.interruptMovement(self)
966
- local handle = self.handle
967
- unitDisableAbility(
968
- handle,
969
- fourCC("Amov"),
970
- true,
971
- false
972
- )
973
- unitDisableAbility(
974
- handle,
975
- fourCC("Amov"),
976
- false,
977
- false
978
- )
979
- end
980
- function Unit.prototype.interruptAttack(self)
981
- unitInterruptAttack(self.handle)
982
- end
983
1020
  function Unit.prototype.interruptCast(self, abilityId)
984
1021
  local handle = self.handle
985
1022
  unitDisableAbility(handle, abilityId, true, false)
@@ -1050,18 +1087,44 @@ function Unit.prototype.unpauseEx(self)
1050
1087
  end
1051
1088
  function Unit.prototype.incrementStunCounter(self)
1052
1089
  local stunCounter = self[102] or 0
1053
- if not self[101] or stunCounter >= 0 then
1090
+ if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
1054
1091
  BlzPauseUnitEx(self.handle, true)
1055
1092
  end
1056
1093
  self[102] = stunCounter + 1
1057
1094
  end
1058
1095
  function Unit.prototype.decrementStunCounter(self)
1059
1096
  local stunCounter = self[102] or 0
1060
- if not self[101] or stunCounter >= 1 then
1097
+ if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
1061
1098
  BlzPauseUnitEx(self.handle, false)
1062
1099
  end
1063
1100
  self[102] = stunCounter - 1
1064
1101
  end
1102
+ function Unit.prototype.incrementForceStunCounter(self)
1103
+ local forceStunCounter = self[103] or 0
1104
+ if forceStunCounter == 0 then
1105
+ local handle = self.handle
1106
+ if not self[101] then
1107
+ for _ = self[102] or 0, -1 do
1108
+ BlzPauseUnitEx(handle, true)
1109
+ end
1110
+ end
1111
+ BlzPauseUnitEx(handle, true)
1112
+ end
1113
+ self[103] = forceStunCounter + 1
1114
+ end
1115
+ function Unit.prototype.decrementForceStunCounter(self)
1116
+ local forceStunCounter = self[103] or 0
1117
+ if forceStunCounter == 1 then
1118
+ local handle = self.handle
1119
+ if not self[101] then
1120
+ for _ = self[102] or 0, -1 do
1121
+ BlzPauseUnitEx(handle, false)
1122
+ end
1123
+ end
1124
+ BlzPauseUnitEx(handle, false)
1125
+ end
1126
+ self[103] = forceStunCounter - 1
1127
+ end
1065
1128
  function Unit.create(self, owner, id, x, y, facing, skinId)
1066
1129
  local handle = skinId and BlzCreateUnitWithSkin(
1067
1130
  owner.handle,
@@ -1258,7 +1321,7 @@ __TS__SetDescriptor(
1258
1321
  Unit.prototype,
1259
1322
  "isStunned",
1260
1323
  {get = function(self)
1261
- return getUnitCurrentOrder(self.handle) == orderId("stunned")
1324
+ return getUnitCurrentOrder(self.handle) == 851973
1262
1325
  end},
1263
1326
  true
1264
1327
  )
@@ -1348,19 +1411,6 @@ __TS__SetDescriptor(
1348
1411
  },
1349
1412
  true
1350
1413
  )
1351
- __TS__SetDescriptor(
1352
- Unit.prototype,
1353
- "strengthBase",
1354
- {
1355
- get = function(self)
1356
- return getHeroStr(self.handle, false)
1357
- end,
1358
- set = function(self, strengthBase)
1359
- setHeroStr(self.handle, strengthBase, true)
1360
- end
1361
- },
1362
- true
1363
- )
1364
1414
  __TS__SetDescriptor(
1365
1415
  Unit.prototype,
1366
1416
  "strengthBonus",
@@ -1378,19 +1428,6 @@ __TS__SetDescriptor(
1378
1428
  end},
1379
1429
  true
1380
1430
  )
1381
- __TS__SetDescriptor(
1382
- Unit.prototype,
1383
- "agilityBase",
1384
- {
1385
- get = function(self)
1386
- return getHeroAgi(self.handle, false)
1387
- end,
1388
- set = function(self, agilityBase)
1389
- setHeroAgi(self.handle, agilityBase, true)
1390
- end
1391
- },
1392
- true
1393
- )
1394
1431
  __TS__SetDescriptor(
1395
1432
  Unit.prototype,
1396
1433
  "agilityBonus",
@@ -1408,19 +1445,6 @@ __TS__SetDescriptor(
1408
1445
  end},
1409
1446
  true
1410
1447
  )
1411
- __TS__SetDescriptor(
1412
- Unit.prototype,
1413
- "intelligenceBase",
1414
- {
1415
- get = function(self)
1416
- return getHeroInt(self.handle, false)
1417
- end,
1418
- set = function(self, intelligenceBase)
1419
- setHeroInt(self.handle, intelligenceBase, true)
1420
- end
1421
- },
1422
- true
1423
- )
1424
1448
  __TS__SetDescriptor(
1425
1449
  Unit.prototype,
1426
1450
  "intelligenceBonus",
@@ -1469,17 +1493,17 @@ __TS__SetDescriptor(
1469
1493
  "isTeamGlowVisible",
1470
1494
  {
1471
1495
  get = function(self)
1472
- return not self[106]
1496
+ return not self[107]
1473
1497
  end,
1474
1498
  set = function(self, isTeamGlowVisible)
1475
1499
  BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
1476
- local ____temp_7
1500
+ local ____temp_8
1477
1501
  if not isTeamGlowVisible then
1478
- ____temp_7 = true
1502
+ ____temp_8 = true
1479
1503
  else
1480
- ____temp_7 = nil
1504
+ ____temp_8 = nil
1481
1505
  end
1482
- self[106] = ____temp_7
1506
+ self[107] = ____temp_8
1483
1507
  end
1484
1508
  },
1485
1509
  true
@@ -1489,7 +1513,7 @@ __TS__SetDescriptor(
1489
1513
  "color",
1490
1514
  {set = function(self, color)
1491
1515
  SetUnitColor(self.handle, color.handle)
1492
- if self[106] then
1516
+ if self[107] then
1493
1517
  BlzShowUnitTeamGlow(self.handle, false)
1494
1518
  end
1495
1519
  end},
@@ -1513,14 +1537,14 @@ __TS__SetDescriptor(
1513
1537
  "maxHealth",
1514
1538
  {
1515
1539
  get = function(self)
1516
- return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
1540
+ return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
1517
1541
  end,
1518
1542
  set = function(self, maxHealth)
1519
- if maxHealth < 1 and self[103] ~= nil then
1520
- self[104] = (self[104] or 0) + (1 - maxHealth)
1543
+ if maxHealth < 1 and self[104] ~= nil then
1544
+ self[105] = (self[105] or 0) + (1 - maxHealth)
1521
1545
  maxHealth = 1
1522
1546
  end
1523
- BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
1547
+ BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
1524
1548
  end
1525
1549
  },
1526
1550
  true
@@ -1562,10 +1586,10 @@ __TS__SetDescriptor(
1562
1586
  "health",
1563
1587
  {
1564
1588
  get = function(self)
1565
- return GetWidgetLife(self.handle) - (self[105] or 0)
1589
+ return GetWidgetLife(self.handle) - (self[106] or 0)
1566
1590
  end,
1567
1591
  set = function(self, health)
1568
- SetWidgetLife(self.handle, health + (self[105] or 0))
1592
+ SetWidgetLife(self.handle, health + (self[106] or 0))
1569
1593
  end
1570
1594
  },
1571
1595
  true
@@ -1641,25 +1665,12 @@ __TS__SetDescriptor(
1641
1665
  },
1642
1666
  true
1643
1667
  )
1644
- __TS__SetDescriptor(
1645
- Unit.prototype,
1646
- "flyHeight",
1647
- {
1648
- get = function(self)
1649
- return getUnitFlyHeight(self.handle)
1650
- end,
1651
- set = function(self, v)
1652
- SetUnitFlyHeight(self.handle, v, 100000)
1653
- end
1654
- },
1655
- true
1656
- )
1657
1668
  __TS__SetDescriptor(
1658
1669
  Unit.prototype,
1659
1670
  "x",
1660
1671
  {
1661
1672
  get = function(self)
1662
- return self[107] or getUnitX(self.handle)
1673
+ return self[108] or getUnitX(self.handle)
1663
1674
  end,
1664
1675
  set = function(self, v)
1665
1676
  SetUnitX(self.handle, v)
@@ -1672,7 +1683,7 @@ __TS__SetDescriptor(
1672
1683
  "y",
1673
1684
  {
1674
1685
  get = function(self)
1675
- return self[108] or getUnitY(self.handle)
1686
+ return self[109] or getUnitY(self.handle)
1676
1687
  end,
1677
1688
  set = function(self, v)
1678
1689
  SetUnitY(self.handle, v)
@@ -1777,14 +1788,18 @@ __TS__SetDescriptor(
1777
1788
  local handle = self.handle
1778
1789
  if isPaused and not IsUnitPaused(handle) then
1779
1790
  self[101] = true
1780
- for _ = self[102] or 0, -1 do
1781
- BlzPauseUnitEx(handle, true)
1791
+ if (self[103] or 0) <= 0 then
1792
+ for _ = self[102] or 0, -1 do
1793
+ BlzPauseUnitEx(handle, true)
1794
+ end
1782
1795
  end
1783
1796
  PauseUnit(handle, true)
1784
1797
  elseif not isPaused and IsUnitPaused(handle) then
1785
1798
  PauseUnit(handle, false)
1786
- for _ = self[102] or 0, -1 do
1787
- BlzPauseUnitEx(handle, false)
1799
+ if (self[103] or 0) <= 0 then
1800
+ for _ = self[102] or 0, -1 do
1801
+ BlzPauseUnitEx(handle, false)
1802
+ end
1788
1803
  end
1789
1804
  self[101] = nil
1790
1805
  end
@@ -1842,20 +1857,6 @@ __TS__SetDescriptor(
1842
1857
  },
1843
1858
  true
1844
1859
  )
1845
- __TS__SetDescriptor(
1846
- Unit.prototype,
1847
- "scale",
1848
- {
1849
- get = function(self)
1850
- return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
1851
- end,
1852
- set = function(self, v)
1853
- setUnitScale(self.handle, v, v, v)
1854
- setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
1855
- end
1856
- },
1857
- true
1858
- )
1859
1860
  __TS__SetDescriptor(
1860
1861
  Unit.prototype,
1861
1862
  "timeScale",
@@ -1882,7 +1883,7 @@ __TS__SetDescriptor(
1882
1883
  Unit.prototype,
1883
1884
  "pathingCollisionRange",
1884
1885
  {get = function(self)
1885
- return 16 * (min(
1886
+ return 16 * (math.min(
1886
1887
  getUnitCollisionSize(self.handle) // 16,
1887
1888
  3
1888
1889
  ) + 1)
@@ -1992,30 +1993,6 @@ __TS__SetDescriptor(
1992
1993
  end},
1993
1994
  true
1994
1995
  )
1995
- __TS__SetDescriptor(
1996
- Unit.prototype,
1997
- "onUnitInRange",
1998
- {get = function(self)
1999
- local handle = self.handle
2000
- local onUnitInRange = setmetatable(
2001
- {},
2002
- {__index = function(self, value)
2003
- local event = __TS__New(
2004
- TriggerEvent,
2005
- function(trigger)
2006
- TriggerRegisterUnitInRangeSimple(trigger, value, handle)
2007
- end,
2008
- function() return ____exports.Unit:of(handle) end
2009
- )
2010
- rawset(self, value, event)
2011
- return event
2012
- end}
2013
- )
2014
- rawset(self, "onUnitInRange", onUnitInRange)
2015
- return onUnitInRange
2016
- end},
2017
- true
2018
- )
2019
1996
  __TS__SetDescriptor(
2020
1997
  Unit.prototype,
2021
1998
  "onManaEqual",
@@ -2151,6 +2128,11 @@ __TS__SetDescriptor(
2151
2128
  end},
2152
2129
  true
2153
2130
  )
2131
+ Unit.levelChangedEvent = __TS__New(
2132
+ ____exports.UnitTriggerEvent,
2133
+ EVENT_PLAYER_HERO_LEVEL,
2134
+ function() return ____exports.Unit:of(getTriggerUnit()) end
2135
+ )
2154
2136
  Unit.deathEvent = __TS__New(
2155
2137
  ____exports.UnitTriggerEvent,
2156
2138
  EVENT_PLAYER_UNIT_DEATH,
@@ -2168,7 +2150,7 @@ Unit.onResurrect = __TS__New(
2168
2150
  ____exports.Unit.deathEvent:addListener(function(unit)
2169
2151
  dead[unit] = true
2170
2152
  end)
2171
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2153
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2172
2154
  if dead[unit] and not IsUnitType(unit.handle, UNIT_TYPE_DEAD) then
2173
2155
  dead[unit] = false
2174
2156
  invoke(event, unit)
@@ -2185,7 +2167,7 @@ Unit.morphEvent = __TS__New(
2185
2167
  invoke(event, unit)
2186
2168
  end
2187
2169
  end
2188
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2170
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2189
2171
  if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
2190
2172
  Timer:run(ifNotLeft, unit)
2191
2173
  end
@@ -2226,25 +2208,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
2226
2208
  InitializingEvent,
2227
2209
  function(event)
2228
2210
  local function listener(unit, id)
2229
- local ____GetSpellTargetUnit_result_10
2211
+ local ____GetSpellTargetUnit_result_11
2230
2212
  if GetSpellTargetUnit() then
2231
- ____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
2213
+ ____GetSpellTargetUnit_result_11 = ____exports.Unit:of(GetSpellTargetUnit())
2232
2214
  else
2233
- local ____GetSpellTargetItem_result_9
2215
+ local ____GetSpellTargetItem_result_10
2234
2216
  if GetSpellTargetItem() then
2235
- ____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
2217
+ ____GetSpellTargetItem_result_10 = Item:of(GetSpellTargetItem())
2236
2218
  else
2237
- local ____GetSpellTargetDestructable_result_8
2219
+ local ____GetSpellTargetDestructable_result_9
2238
2220
  if GetSpellTargetDestructable() then
2239
- ____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
2221
+ ____GetSpellTargetDestructable_result_9 = Destructable:of(GetSpellTargetDestructable())
2240
2222
  else
2241
- ____GetSpellTargetDestructable_result_8 = nil
2223
+ ____GetSpellTargetDestructable_result_9 = nil
2242
2224
  end
2243
- ____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
2225
+ ____GetSpellTargetItem_result_10 = ____GetSpellTargetDestructable_result_9
2244
2226
  end
2245
- ____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
2227
+ ____GetSpellTargetUnit_result_11 = ____GetSpellTargetItem_result_10
2246
2228
  end
2247
- local target = ____GetSpellTargetUnit_result_10
2229
+ local target = ____GetSpellTargetUnit_result_11
2248
2230
  if target then
2249
2231
  invoke(event, unit, id, target)
2250
2232
  end
@@ -2467,12 +2449,7 @@ Unit.onDamaging = (function()
2467
2449
  preventRetaliation = damagingEventPreventRetaliation
2468
2450
  }
2469
2451
  if data.isAttack and source then
2470
- 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
2471
- if weapon == -1 then
2472
- local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
2473
- weapon = 0
2474
- end
2475
- data.weapon = assert(source.weapons[weapon + 1])
2452
+ data.weapon = source:chooseWeapon(target)
2476
2453
  end
2477
2454
  if not data.isAttack or not source or not source._attackHandlers then
2478
2455
  invoke(
@@ -2617,7 +2594,7 @@ Unit.onDamage = __TS__New(
2617
2594
  invoke(event, source, target, evData)
2618
2595
  if evData[0] ~= nil and target.health - evData.amount < 0.405 then
2619
2596
  local bonusHealth = math.ceil(evData.amount)
2620
- target[105] = (target[105] or 0) + bonusHealth
2597
+ target[106] = (target[106] or 0) + bonusHealth
2621
2598
  BlzSetUnitMaxHP(
2622
2599
  target.handle,
2623
2600
  BlzGetUnitMaxHP(target.handle) + bonusHealth
@@ -2631,7 +2608,7 @@ Unit.onDamage = __TS__New(
2631
2608
  evData[0],
2632
2609
  table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
2633
2610
  )
2634
- target[105] = (target[105] or 0) - bonusHealth
2611
+ target[106] = (target[106] or 0) - bonusHealth
2635
2612
  SetWidgetLife(
2636
2613
  target.handle,
2637
2614
  GetWidgetLife(target.handle) - bonusHealth
@@ -2657,7 +2634,7 @@ Unit.itemDroppedEvent = __TS__New(
2657
2634
  function()
2658
2635
  local unit = getTriggerUnit()
2659
2636
  local item = getManipulatedItem()
2660
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2637
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2661
2638
  return ____exports.Unit:of(unit), Item:of(item)
2662
2639
  end
2663
2640
  return IgnoreEvent
@@ -2669,10 +2646,10 @@ Unit.itemPickedUpEvent = __TS__New(
2669
2646
  function()
2670
2647
  local unitHandle = getTriggerUnit()
2671
2648
  local itemHandle = getManipulatedItem()
2672
- if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
2649
+ if getUnitTypeId(unitHandle) ~= dummyUnitId and not isItemIgnoredInEvents(itemHandle) then
2673
2650
  local unit = ____exports.Unit:of(unitHandle)
2674
2651
  local item = Item:of(itemHandle)
2675
- if item.owner ~= unit then
2652
+ if ownerByItem[item] ~= unit then
2676
2653
  return unit, item
2677
2654
  end
2678
2655
  end
@@ -2685,17 +2662,12 @@ Unit.itemUsedEvent = __TS__New(
2685
2662
  function()
2686
2663
  local unit = getTriggerUnit()
2687
2664
  local item = getManipulatedItem()
2688
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2665
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2689
2666
  return ____exports.Unit:of(unit), Item:of(item)
2690
2667
  end
2691
2668
  return IgnoreEvent
2692
2669
  end
2693
2670
  )
2694
- Unit.itemStackedEvent = __TS__New(
2695
- ____exports.UnitTriggerEvent,
2696
- EVENT_PLAYER_UNIT_STACK_ITEM,
2697
- function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
2698
- )
2699
2671
  __TS__ObjectDefineProperty(
2700
2672
  Unit,
2701
2673
  "itemChargesChangedEvent",
@@ -2711,51 +2683,6 @@ __TS__ObjectDefineProperty(
2711
2683
  return event
2712
2684
  end}
2713
2685
  )
2714
- __TS__ObjectDefineProperty(
2715
- Unit,
2716
- "itemUseOrderEvent",
2717
- {get = function(self)
2718
- local event = __TS__New(Event)
2719
- for order = orderId("useslot0"), orderId("useslot5") do
2720
- local slot = order - orderId("useslot0")
2721
- local function listener(unit)
2722
- local item = unit.items[slot + 1]
2723
- if item ~= nil then
2724
- invoke(event, unit, item)
2725
- end
2726
- end
2727
- self.onImmediateOrder[order]:addListener(listener)
2728
- self.onTargetOrder[order]:addListener(listener)
2729
- self.onPointOrder[order]:addListener(listener)
2730
- end
2731
- rawset(self, "itemUseOrderEvent", event)
2732
- return event
2733
- end}
2734
- )
2735
- __TS__ObjectDefineProperty(
2736
- Unit,
2737
- "itemMoveOrderEvent",
2738
- {get = function(self)
2739
- local event = __TS__New(Event)
2740
- for order = orderId("moveslot0"), orderId("moveslot5") do
2741
- local slotTo = order - orderId("moveslot0")
2742
- self.onTargetOrder[order]:addListener(function(unit, item)
2743
- local slotFrom = unit.items:findSlot(item)
2744
- if slotFrom ~= nil then
2745
- invoke(
2746
- event,
2747
- unit,
2748
- item,
2749
- slotFrom,
2750
- slotTo
2751
- )
2752
- end
2753
- end)
2754
- end
2755
- rawset(self, "itemMoveOrderEvent", event)
2756
- return event
2757
- end}
2758
- )
2759
2686
  __TS__ObjectDefineProperty(
2760
2687
  Unit,
2761
2688
  "onCreate",
@@ -2781,6 +2708,10 @@ __TS__ObjectDefineProperty(
2781
2708
  rawset(self, "destroyEvent", destroyEvent)
2782
2709
  return destroyEvent
2783
2710
  end}
2711
+ )
2712
+ Unit.synchronize = synchronizer(
2713
+ function(unit) return unit.syncId end,
2714
+ function(syncId) return unitBySyncId[syncId] end
2784
2715
  );
2785
2716
  (function(self)
2786
2717
  local leaveAbilityIds = postcompile(function()
@@ -2798,11 +2729,7 @@ __TS__ObjectDefineProperty(
2798
2729
  function(____, id) return fourCC(id) end
2799
2730
  )
2800
2731
  end)
2801
- for ____, leaveOrderId in ipairs({
2802
- orderId("undefend"),
2803
- orderId("magicundefense"),
2804
- orderId("unimmolation")
2805
- }) do
2732
+ for ____, leaveOrderId in ipairs({852056, 852479, 852178}) do
2806
2733
  ____exports.Unit.onImmediateOrder[leaveOrderId]:addListener(function(unit)
2807
2734
  local handle = unit.handle
2808
2735
  for i = 1, #leaveAbilityIds do
@@ -2810,7 +2737,8 @@ __TS__ObjectDefineProperty(
2810
2737
  return
2811
2738
  end
2812
2739
  end
2813
- unit:destroy()
2740
+ unit:saveData()
2741
+ Timer:run(unit, "destroy")
2814
2742
  end)
2815
2743
  end
2816
2744
  end)(Unit)