warscript 0.0.1-dev.2450f74 → 0.0.1-dev.24da7f2

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 (367) 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 +21 -2
  7. package/core/types/frame.lua +153 -78
  8. package/core/types/handle.lua +9 -9
  9. package/core/types/item.d.ts +1 -0
  10. package/core/types/item.lua +1 -0
  11. package/core/types/missile.lua +8 -7
  12. package/core/types/player.d.ts +18 -1
  13. package/core/types/player.lua +73 -25
  14. package/core/types/playerCamera.lua +1 -1
  15. package/core/types/playerColor.lua +4 -3
  16. package/core/types/sound.d.ts +1 -1
  17. package/core/types/sound.lua +14 -9
  18. package/core/types/tileCell.d.ts +10 -3
  19. package/core/types/tileCell.lua +33 -3
  20. package/core/types/timer.d.ts +3 -2
  21. package/core/types/timer.lua +8 -2
  22. package/core/types/unit.d.ts +5 -0
  23. package/core/types/unit.lua +5 -0
  24. package/core/util.d.ts +3 -1
  25. package/core/util.lua +109 -3
  26. package/decl/native.d.ts +706 -7
  27. package/destroyable.d.ts +1 -0
  28. package/destroyable.lua +9 -0
  29. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  30. package/engine/ability-type-extended-tooltip.lua +44 -0
  31. package/engine/behavior.d.ts +10 -2
  32. package/engine/behavior.lua +157 -76
  33. package/engine/behaviour/ability/apply-buff.lua +4 -4
  34. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  35. package/engine/behaviour/ability/damage.d.ts +4 -0
  36. package/engine/behaviour/ability/damage.lua +19 -15
  37. package/engine/behaviour/ability/emulate-impact.d.ts +14 -0
  38. package/engine/behaviour/ability/emulate-impact.lua +79 -5
  39. package/engine/behaviour/ability/instant-impact.d.ts +12 -1
  40. package/engine/behaviour/ability/instant-impact.lua +17 -2
  41. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  42. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  43. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  44. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  45. package/engine/behaviour/ability.d.ts +19 -6
  46. package/engine/behaviour/ability.lua +120 -9
  47. package/engine/behaviour/unit/stun-immunity.d.ts +9 -5
  48. package/engine/behaviour/unit/stun-immunity.lua +17 -7
  49. package/engine/behaviour/unit.d.ts +10 -3
  50. package/engine/behaviour/unit.lua +107 -24
  51. package/engine/buff.d.ts +124 -54
  52. package/engine/buff.lua +614 -281
  53. package/engine/index.d.ts +2 -1
  54. package/engine/internal/ability.d.ts +7 -0
  55. package/engine/internal/ability.lua +65 -36
  56. package/engine/internal/item/fields.d.ts +12 -0
  57. package/engine/internal/item/fields.lua +33 -0
  58. package/engine/internal/item/owner-cache.d.ts +5 -0
  59. package/engine/internal/item/owner-cache.lua +4 -0
  60. package/engine/internal/item+owner.d.ts +2 -0
  61. package/engine/internal/item+owner.lua +27 -4
  62. package/engine/internal/item.d.ts +28 -13
  63. package/engine/internal/item.lua +163 -59
  64. package/engine/internal/mechanics/cast-ability.lua +6 -3
  65. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  66. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  67. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  68. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  69. package/engine/internal/object-data/health-bonus.lua +16 -0
  70. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  71. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  72. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  73. package/engine/internal/object-data/mana-bonus.lua +16 -0
  74. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  75. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  76. package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
  77. package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
  78. package/engine/internal/unit/ability.d.ts +14 -14
  79. package/engine/internal/unit/ability.lua +88 -45
  80. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  81. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  82. package/engine/internal/unit/appearance.d.ts +15 -0
  83. package/engine/internal/unit/appearance.lua +85 -0
  84. package/engine/internal/unit/attributes.d.ts +17 -0
  85. package/engine/internal/unit/attributes.lua +46 -0
  86. package/engine/internal/unit/bonus.d.ts +17 -0
  87. package/engine/internal/unit/bonus.lua +113 -8
  88. package/engine/internal/unit/buff.d.ts +2 -2
  89. package/engine/internal/unit/buff.lua +34 -19
  90. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  91. package/engine/internal/unit/equipment-inventory.lua +233 -0
  92. package/engine/internal/unit/expiration-timer.lua +1 -1
  93. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  94. package/engine/internal/unit/extended-inventory.lua +99 -0
  95. package/engine/internal/unit/fly-height.d.ts +7 -0
  96. package/engine/internal/unit/fly-height.lua +20 -0
  97. package/engine/internal/unit/ignore-events-items.lua +10 -1
  98. package/engine/internal/unit/interrupts.d.ts +12 -0
  99. package/engine/internal/unit/interrupts.lua +28 -0
  100. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  101. package/engine/internal/unit/inventory.lua +87 -0
  102. package/engine/internal/unit/item-container.d.ts +25 -0
  103. package/engine/internal/unit/item-container.lua +11 -0
  104. package/engine/internal/unit/item-order-events.d.ts +17 -0
  105. package/engine/internal/unit/item-order-events.lua +67 -0
  106. package/engine/internal/unit/item-slot.d.ts +27 -0
  107. package/engine/internal/unit/item-slot.lua +92 -0
  108. package/engine/internal/unit/main-selected.lua +12 -27
  109. package/engine/internal/unit/order.d.ts +3 -3
  110. package/engine/internal/unit/order.lua +10 -10
  111. package/engine/internal/unit/range-event.d.ts +12 -0
  112. package/engine/internal/unit/range-event.lua +90 -0
  113. package/engine/internal/unit/scale.d.ts +7 -0
  114. package/engine/internal/unit/scale.lua +20 -0
  115. package/engine/internal/unit/shared-vision-counter.d.ts +18 -0
  116. package/engine/internal/unit/shared-vision-counter.lua +31 -0
  117. package/engine/internal/unit+ability.d.ts +2 -1
  118. package/engine/internal/unit+ability.lua +73 -2
  119. package/engine/internal/unit+bonus.lua +3 -3
  120. package/engine/internal/unit+damage.d.ts +9 -0
  121. package/engine/internal/unit+damage.lua +33 -0
  122. package/engine/internal/unit+rally.lua +9 -31
  123. package/engine/internal/unit-missile-data.lua +96 -68
  124. package/engine/internal/unit-missile-launch.lua +64 -33
  125. package/engine/internal/unit.d.ts +17 -29
  126. package/engine/internal/unit.lua +212 -282
  127. package/engine/lightning.lua +4 -4
  128. package/engine/local-client.d.ts +28 -0
  129. package/engine/local-client.lua +324 -54
  130. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  131. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  132. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  133. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  134. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  135. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  136. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  137. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  138. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  139. package/engine/object-data/auxiliary/item-class.lua +2 -0
  140. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  141. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  142. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  143. package/engine/object-data/auxiliary/order-type.lua +2 -0
  144. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  145. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  146. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  147. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  148. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  149. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  150. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  151. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  152. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  153. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  154. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  155. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  156. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  157. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  158. package/engine/object-data/entry/ability-type/barrage.d.ts +12 -0
  159. package/engine/object-data/entry/ability-type/barrage.lua +52 -0
  160. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  161. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  162. package/engine/object-data/entry/ability-type/blank-configurable.lua +2 -2
  163. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  164. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  165. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  166. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  167. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  168. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  169. package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
  170. package/engine/object-data/entry/ability-type/channel.lua +3 -3
  171. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  172. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  173. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  174. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  175. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  176. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  177. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  178. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  179. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  180. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  181. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  182. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  183. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  184. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  185. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  186. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  187. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  188. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  189. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  190. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  191. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  192. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  193. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  194. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  195. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  196. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  197. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  198. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  199. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  200. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  201. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  202. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  203. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  204. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  205. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  206. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  207. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  208. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  209. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  210. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  211. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  212. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  213. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  214. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  215. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  216. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  217. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  218. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  219. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  220. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  221. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  222. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  223. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  224. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  225. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  226. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  227. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  228. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  229. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  230. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  231. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  232. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  233. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  234. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  235. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  236. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  237. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  238. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  239. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  240. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  241. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  242. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  243. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  244. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  245. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  246. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  247. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  248. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  249. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  250. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  251. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  252. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  253. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  254. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  255. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  256. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  257. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  258. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  259. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  260. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  261. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  262. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  263. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  264. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  265. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  266. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  267. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  268. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  269. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  270. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  271. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  272. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  273. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  274. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  275. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  276. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  277. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  278. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  279. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  280. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  281. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  282. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  283. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  284. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  285. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  286. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  287. package/engine/object-data/entry/ability-type.d.ts +35 -8
  288. package/engine/object-data/entry/ability-type.lua +303 -12
  289. package/engine/object-data/entry/buff-type/applicable.lua +122 -111
  290. package/engine/object-data/entry/buff-type.d.ts +6 -2
  291. package/engine/object-data/entry/buff-type.lua +26 -0
  292. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  293. package/engine/object-data/entry/destructible-type.lua +181 -0
  294. package/engine/object-data/entry/item-type.d.ts +18 -3
  295. package/engine/object-data/entry/item-type.lua +84 -0
  296. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  297. package/engine/object-data/entry/lightning-type.lua +1 -1
  298. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  299. package/engine/object-data/entry/unit-type.d.ts +61 -2
  300. package/engine/object-data/entry/unit-type.lua +444 -52
  301. package/engine/object-data/entry/upgrade.d.ts +2 -2
  302. package/engine/object-data/entry.d.ts +6 -1
  303. package/engine/object-data/entry.lua +8 -0
  304. package/engine/object-field/ability.lua +2 -2
  305. package/engine/object-field/item.d.ts +22 -0
  306. package/engine/object-field/item.lua +118 -0
  307. package/engine/object-field/unit.d.ts +20 -5
  308. package/engine/object-field/unit.lua +61 -0
  309. package/engine/object-field.d.ts +10 -2
  310. package/engine/object-field.lua +268 -123
  311. package/engine/random.d.ts +5 -0
  312. package/engine/random.lua +18 -0
  313. package/engine/standard/entries/ability-type.d.ts +3102 -7
  314. package/engine/standard/entries/ability-type.lua +0 -6
  315. package/engine/standard/entries/buff-type.d.ts +45 -0
  316. package/engine/standard/entries/buff-type.lua +43 -0
  317. package/engine/standard/entries/item-type.d.ts +1299 -0
  318. package/engine/standard/entries/item-type.lua +2 -0
  319. package/engine/standard/entries/lightning-type.d.ts +42 -15
  320. package/engine/standard/entries/lightning-type.lua +0 -14
  321. package/engine/standard/entries/unit-type.d.ts +5 -0
  322. package/engine/standard/entries/unit-type.lua +5 -0
  323. package/engine/standard/fields/ability.d.ts +4 -4
  324. package/engine/standard/fields/ability.lua +4 -4
  325. package/engine/standard/fields/item.d.ts +4 -0
  326. package/engine/standard/fields/item.lua +6 -0
  327. package/engine/standard/fields/unit.d.ts +11 -3
  328. package/engine/standard/fields/unit.lua +15 -2
  329. package/engine/synchronization.d.ts +11 -0
  330. package/engine/synchronization.lua +77 -0
  331. package/engine/text-tag.d.ts +13 -1
  332. package/engine/text-tag.lua +80 -42
  333. package/engine/unit.d.ts +11 -1
  334. package/engine/unit.lua +11 -1
  335. package/event.d.ts +1 -1
  336. package/lualib_bundle.lua +1 -1
  337. package/math.d.ts +2 -0
  338. package/math.lua +14 -0
  339. package/net/socket.lua +1 -1
  340. package/network.lua +25 -1
  341. package/objutil/buff.lua +11 -9
  342. package/objutil/object.lua +1 -1
  343. package/operation.d.ts +8 -1
  344. package/operation.lua +38 -18
  345. package/package.json +3 -23
  346. package/patch-lua.lua +15 -0
  347. package/utility/arrays.d.ts +8 -1
  348. package/utility/arrays.lua +25 -0
  349. package/utility/callback-array.d.ts +5 -1
  350. package/utility/callback-array.lua +16 -1
  351. package/utility/linked-map.d.ts +35 -0
  352. package/utility/linked-map.lua +107 -0
  353. package/utility/linked-set.d.ts +4 -1
  354. package/utility/linked-set.lua +46 -1
  355. package/utility/lua-maps.d.ts +11 -2
  356. package/utility/lua-maps.lua +33 -2
  357. package/utility/random.d.ts +102 -0
  358. package/utility/random.lua +273 -0
  359. package/utility/records.lua +20 -1
  360. package/utility/types.d.ts +3 -0
  361. package/utility/unordered-map.d.ts +27 -0
  362. package/utility/unordered-map.lua +99 -0
  363. package/engine/internal/unit/item.lua +0 -78
  364. /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
  365. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  366. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  367. /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(self, 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(
@@ -945,6 +999,9 @@ function Unit.prototype.removeAbility(self, abilityTypeId)
945
999
  if abilities[i].typeId == abilityTypeId then
946
1000
  local ability = abilities[i]
947
1001
  tremove(abilities, i)
1002
+ if ability.state == 2 then
1003
+ break
1004
+ end
948
1005
  ability:destroy()
949
1006
  return true
950
1007
  end
@@ -963,24 +1020,6 @@ end
963
1020
  function Unit.prototype.endAbilityCooldown(self, abilityId)
964
1021
  BlzEndUnitAbilityCooldown(self.handle, abilityId)
965
1022
  end
966
- function Unit.prototype.interruptMovement(self)
967
- local handle = self.handle
968
- unitDisableAbility(
969
- handle,
970
- fourCC("Amov"),
971
- true,
972
- false
973
- )
974
- unitDisableAbility(
975
- handle,
976
- fourCC("Amov"),
977
- false,
978
- false
979
- )
980
- end
981
- function Unit.prototype.interruptAttack(self)
982
- unitInterruptAttack(self.handle)
983
- end
984
1023
  function Unit.prototype.interruptCast(self, abilityId)
985
1024
  local handle = self.handle
986
1025
  unitDisableAbility(handle, abilityId, true, false)
@@ -1051,18 +1090,44 @@ function Unit.prototype.unpauseEx(self)
1051
1090
  end
1052
1091
  function Unit.prototype.incrementStunCounter(self)
1053
1092
  local stunCounter = self[102] or 0
1054
- if not self[101] or stunCounter >= 0 then
1093
+ if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
1055
1094
  BlzPauseUnitEx(self.handle, true)
1056
1095
  end
1057
1096
  self[102] = stunCounter + 1
1058
1097
  end
1059
1098
  function Unit.prototype.decrementStunCounter(self)
1060
1099
  local stunCounter = self[102] or 0
1061
- if not self[101] or stunCounter >= 1 then
1100
+ if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
1062
1101
  BlzPauseUnitEx(self.handle, false)
1063
1102
  end
1064
1103
  self[102] = stunCounter - 1
1065
1104
  end
1105
+ function Unit.prototype.incrementForceStunCounter(self)
1106
+ local forceStunCounter = self[103] or 0
1107
+ if forceStunCounter == 0 then
1108
+ local handle = self.handle
1109
+ if not self[101] then
1110
+ for _ = self[102] or 0, -1 do
1111
+ BlzPauseUnitEx(handle, true)
1112
+ end
1113
+ end
1114
+ BlzPauseUnitEx(handle, true)
1115
+ end
1116
+ self[103] = forceStunCounter + 1
1117
+ end
1118
+ function Unit.prototype.decrementForceStunCounter(self)
1119
+ local forceStunCounter = self[103] or 0
1120
+ if forceStunCounter == 1 then
1121
+ local handle = self.handle
1122
+ if not self[101] then
1123
+ for _ = self[102] or 0, -1 do
1124
+ BlzPauseUnitEx(handle, false)
1125
+ end
1126
+ end
1127
+ BlzPauseUnitEx(handle, false)
1128
+ end
1129
+ self[103] = forceStunCounter - 1
1130
+ end
1066
1131
  function Unit.create(self, owner, id, x, y, facing, skinId)
1067
1132
  local handle = skinId and BlzCreateUnitWithSkin(
1068
1133
  owner.handle,
@@ -1259,7 +1324,7 @@ __TS__SetDescriptor(
1259
1324
  Unit.prototype,
1260
1325
  "isStunned",
1261
1326
  {get = function(self)
1262
- return getUnitCurrentOrder(self.handle) == orderId("stunned")
1327
+ return getUnitCurrentOrder(self.handle) == 851973
1263
1328
  end},
1264
1329
  true
1265
1330
  )
@@ -1349,19 +1414,6 @@ __TS__SetDescriptor(
1349
1414
  },
1350
1415
  true
1351
1416
  )
1352
- __TS__SetDescriptor(
1353
- Unit.prototype,
1354
- "strengthBase",
1355
- {
1356
- get = function(self)
1357
- return getHeroStr(self.handle, false)
1358
- end,
1359
- set = function(self, strengthBase)
1360
- setHeroStr(self.handle, strengthBase, true)
1361
- end
1362
- },
1363
- true
1364
- )
1365
1417
  __TS__SetDescriptor(
1366
1418
  Unit.prototype,
1367
1419
  "strengthBonus",
@@ -1379,19 +1431,6 @@ __TS__SetDescriptor(
1379
1431
  end},
1380
1432
  true
1381
1433
  )
1382
- __TS__SetDescriptor(
1383
- Unit.prototype,
1384
- "agilityBase",
1385
- {
1386
- get = function(self)
1387
- return getHeroAgi(self.handle, false)
1388
- end,
1389
- set = function(self, agilityBase)
1390
- setHeroAgi(self.handle, agilityBase, true)
1391
- end
1392
- },
1393
- true
1394
- )
1395
1434
  __TS__SetDescriptor(
1396
1435
  Unit.prototype,
1397
1436
  "agilityBonus",
@@ -1409,19 +1448,6 @@ __TS__SetDescriptor(
1409
1448
  end},
1410
1449
  true
1411
1450
  )
1412
- __TS__SetDescriptor(
1413
- Unit.prototype,
1414
- "intelligenceBase",
1415
- {
1416
- get = function(self)
1417
- return getHeroInt(self.handle, false)
1418
- end,
1419
- set = function(self, intelligenceBase)
1420
- setHeroInt(self.handle, intelligenceBase, true)
1421
- end
1422
- },
1423
- true
1424
- )
1425
1451
  __TS__SetDescriptor(
1426
1452
  Unit.prototype,
1427
1453
  "intelligenceBonus",
@@ -1470,17 +1496,17 @@ __TS__SetDescriptor(
1470
1496
  "isTeamGlowVisible",
1471
1497
  {
1472
1498
  get = function(self)
1473
- return not self[106]
1499
+ return not self[107]
1474
1500
  end,
1475
1501
  set = function(self, isTeamGlowVisible)
1476
1502
  BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
1477
- local ____temp_7
1503
+ local ____temp_8
1478
1504
  if not isTeamGlowVisible then
1479
- ____temp_7 = true
1505
+ ____temp_8 = true
1480
1506
  else
1481
- ____temp_7 = nil
1507
+ ____temp_8 = nil
1482
1508
  end
1483
- self[106] = ____temp_7
1509
+ self[107] = ____temp_8
1484
1510
  end
1485
1511
  },
1486
1512
  true
@@ -1490,7 +1516,7 @@ __TS__SetDescriptor(
1490
1516
  "color",
1491
1517
  {set = function(self, color)
1492
1518
  SetUnitColor(self.handle, color.handle)
1493
- if self[106] then
1519
+ if self[107] then
1494
1520
  BlzShowUnitTeamGlow(self.handle, false)
1495
1521
  end
1496
1522
  end},
@@ -1514,14 +1540,14 @@ __TS__SetDescriptor(
1514
1540
  "maxHealth",
1515
1541
  {
1516
1542
  get = function(self)
1517
- return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
1543
+ return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
1518
1544
  end,
1519
1545
  set = function(self, maxHealth)
1520
- if maxHealth < 1 and self[103] ~= nil then
1521
- self[104] = (self[104] or 0) + (1 - maxHealth)
1546
+ if maxHealth < 1 and self[104] ~= nil then
1547
+ self[105] = (self[105] or 0) + (1 - maxHealth)
1522
1548
  maxHealth = 1
1523
1549
  end
1524
- BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
1550
+ BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
1525
1551
  end
1526
1552
  },
1527
1553
  true
@@ -1563,10 +1589,10 @@ __TS__SetDescriptor(
1563
1589
  "health",
1564
1590
  {
1565
1591
  get = function(self)
1566
- return GetWidgetLife(self.handle) - (self[105] or 0)
1592
+ return GetWidgetLife(self.handle) - (self[106] or 0)
1567
1593
  end,
1568
1594
  set = function(self, health)
1569
- SetWidgetLife(self.handle, health + (self[105] or 0))
1595
+ SetWidgetLife(self.handle, health + (self[106] or 0))
1570
1596
  end
1571
1597
  },
1572
1598
  true
@@ -1642,25 +1668,12 @@ __TS__SetDescriptor(
1642
1668
  },
1643
1669
  true
1644
1670
  )
1645
- __TS__SetDescriptor(
1646
- Unit.prototype,
1647
- "flyHeight",
1648
- {
1649
- get = function(self)
1650
- return getUnitFlyHeight(self.handle)
1651
- end,
1652
- set = function(self, v)
1653
- SetUnitFlyHeight(self.handle, v, 100000)
1654
- end
1655
- },
1656
- true
1657
- )
1658
1671
  __TS__SetDescriptor(
1659
1672
  Unit.prototype,
1660
1673
  "x",
1661
1674
  {
1662
1675
  get = function(self)
1663
- return self[107] or getUnitX(self.handle)
1676
+ return self[108] or getUnitX(self.handle)
1664
1677
  end,
1665
1678
  set = function(self, v)
1666
1679
  SetUnitX(self.handle, v)
@@ -1673,7 +1686,7 @@ __TS__SetDescriptor(
1673
1686
  "y",
1674
1687
  {
1675
1688
  get = function(self)
1676
- return self[108] or getUnitY(self.handle)
1689
+ return self[109] or getUnitY(self.handle)
1677
1690
  end,
1678
1691
  set = function(self, v)
1679
1692
  SetUnitY(self.handle, v)
@@ -1778,14 +1791,18 @@ __TS__SetDescriptor(
1778
1791
  local handle = self.handle
1779
1792
  if isPaused and not IsUnitPaused(handle) then
1780
1793
  self[101] = true
1781
- for _ = self[102] or 0, -1 do
1782
- BlzPauseUnitEx(handle, true)
1794
+ if (self[103] or 0) <= 0 then
1795
+ for _ = self[102] or 0, -1 do
1796
+ BlzPauseUnitEx(handle, true)
1797
+ end
1783
1798
  end
1784
1799
  PauseUnit(handle, true)
1785
1800
  elseif not isPaused and IsUnitPaused(handle) then
1786
1801
  PauseUnit(handle, false)
1787
- for _ = self[102] or 0, -1 do
1788
- BlzPauseUnitEx(handle, false)
1802
+ if (self[103] or 0) <= 0 then
1803
+ for _ = self[102] or 0, -1 do
1804
+ BlzPauseUnitEx(handle, false)
1805
+ end
1789
1806
  end
1790
1807
  self[101] = nil
1791
1808
  end
@@ -1843,20 +1860,6 @@ __TS__SetDescriptor(
1843
1860
  },
1844
1861
  true
1845
1862
  )
1846
- __TS__SetDescriptor(
1847
- Unit.prototype,
1848
- "scale",
1849
- {
1850
- get = function(self)
1851
- return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
1852
- end,
1853
- set = function(self, v)
1854
- setUnitScale(self.handle, v, v, v)
1855
- setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
1856
- end
1857
- },
1858
- true
1859
- )
1860
1863
  __TS__SetDescriptor(
1861
1864
  Unit.prototype,
1862
1865
  "timeScale",
@@ -1883,7 +1886,7 @@ __TS__SetDescriptor(
1883
1886
  Unit.prototype,
1884
1887
  "pathingCollisionRange",
1885
1888
  {get = function(self)
1886
- return 16 * (min(
1889
+ return 16 * (math.min(
1887
1890
  getUnitCollisionSize(self.handle) // 16,
1888
1891
  3
1889
1892
  ) + 1)
@@ -1993,30 +1996,6 @@ __TS__SetDescriptor(
1993
1996
  end},
1994
1997
  true
1995
1998
  )
1996
- __TS__SetDescriptor(
1997
- Unit.prototype,
1998
- "onUnitInRange",
1999
- {get = function(self)
2000
- local handle = self.handle
2001
- local onUnitInRange = setmetatable(
2002
- {},
2003
- {__index = function(self, value)
2004
- local event = __TS__New(
2005
- TriggerEvent,
2006
- function(trigger)
2007
- TriggerRegisterUnitInRangeSimple(trigger, value, handle)
2008
- end,
2009
- function() return ____exports.Unit:of(handle) end
2010
- )
2011
- rawset(self, value, event)
2012
- return event
2013
- end}
2014
- )
2015
- rawset(self, "onUnitInRange", onUnitInRange)
2016
- return onUnitInRange
2017
- end},
2018
- true
2019
- )
2020
1999
  __TS__SetDescriptor(
2021
2000
  Unit.prototype,
2022
2001
  "onManaEqual",
@@ -2152,6 +2131,11 @@ __TS__SetDescriptor(
2152
2131
  end},
2153
2132
  true
2154
2133
  )
2134
+ Unit.levelChangedEvent = __TS__New(
2135
+ ____exports.UnitTriggerEvent,
2136
+ EVENT_PLAYER_HERO_LEVEL,
2137
+ function() return ____exports.Unit:of(getTriggerUnit()) end
2138
+ )
2155
2139
  Unit.deathEvent = __TS__New(
2156
2140
  ____exports.UnitTriggerEvent,
2157
2141
  EVENT_PLAYER_UNIT_DEATH,
@@ -2169,7 +2153,7 @@ Unit.onResurrect = __TS__New(
2169
2153
  ____exports.Unit.deathEvent:addListener(function(unit)
2170
2154
  dead[unit] = true
2171
2155
  end)
2172
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2156
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2173
2157
  if dead[unit] and not IsUnitType(unit.handle, UNIT_TYPE_DEAD) then
2174
2158
  dead[unit] = false
2175
2159
  invoke(event, unit)
@@ -2186,7 +2170,7 @@ Unit.morphEvent = __TS__New(
2186
2170
  invoke(event, unit)
2187
2171
  end
2188
2172
  end
2189
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2173
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2190
2174
  if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
2191
2175
  Timer:run(ifNotLeft, unit)
2192
2176
  end
@@ -2227,25 +2211,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
2227
2211
  InitializingEvent,
2228
2212
  function(event)
2229
2213
  local function listener(unit, id)
2230
- local ____GetSpellTargetUnit_result_10
2214
+ local ____GetSpellTargetUnit_result_11
2231
2215
  if GetSpellTargetUnit() then
2232
- ____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
2216
+ ____GetSpellTargetUnit_result_11 = ____exports.Unit:of(GetSpellTargetUnit())
2233
2217
  else
2234
- local ____GetSpellTargetItem_result_9
2218
+ local ____GetSpellTargetItem_result_10
2235
2219
  if GetSpellTargetItem() then
2236
- ____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
2220
+ ____GetSpellTargetItem_result_10 = Item:of(GetSpellTargetItem())
2237
2221
  else
2238
- local ____GetSpellTargetDestructable_result_8
2222
+ local ____GetSpellTargetDestructable_result_9
2239
2223
  if GetSpellTargetDestructable() then
2240
- ____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
2224
+ ____GetSpellTargetDestructable_result_9 = Destructable:of(GetSpellTargetDestructable())
2241
2225
  else
2242
- ____GetSpellTargetDestructable_result_8 = nil
2226
+ ____GetSpellTargetDestructable_result_9 = nil
2243
2227
  end
2244
- ____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
2228
+ ____GetSpellTargetItem_result_10 = ____GetSpellTargetDestructable_result_9
2245
2229
  end
2246
- ____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
2230
+ ____GetSpellTargetUnit_result_11 = ____GetSpellTargetItem_result_10
2247
2231
  end
2248
- local target = ____GetSpellTargetUnit_result_10
2232
+ local target = ____GetSpellTargetUnit_result_11
2249
2233
  if target then
2250
2234
  invoke(event, unit, id, target)
2251
2235
  end
@@ -2468,12 +2452,7 @@ Unit.onDamaging = (function()
2468
2452
  preventRetaliation = damagingEventPreventRetaliation
2469
2453
  }
2470
2454
  if data.isAttack and source then
2471
- 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
2472
- if weapon == -1 then
2473
- local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
2474
- weapon = 0
2475
- end
2476
- data.weapon = assert(source.weapons[weapon + 1])
2455
+ data.weapon = source:chooseWeapon(target)
2477
2456
  end
2478
2457
  if not data.isAttack or not source or not source._attackHandlers then
2479
2458
  invoke(
@@ -2618,7 +2597,7 @@ Unit.onDamage = __TS__New(
2618
2597
  invoke(event, source, target, evData)
2619
2598
  if evData[0] ~= nil and target.health - evData.amount < 0.405 then
2620
2599
  local bonusHealth = math.ceil(evData.amount)
2621
- target[105] = (target[105] or 0) + bonusHealth
2600
+ target[106] = (target[106] or 0) + bonusHealth
2622
2601
  BlzSetUnitMaxHP(
2623
2602
  target.handle,
2624
2603
  BlzGetUnitMaxHP(target.handle) + bonusHealth
@@ -2632,7 +2611,7 @@ Unit.onDamage = __TS__New(
2632
2611
  evData[0],
2633
2612
  table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
2634
2613
  )
2635
- target[105] = (target[105] or 0) - bonusHealth
2614
+ target[106] = (target[106] or 0) - bonusHealth
2636
2615
  SetWidgetLife(
2637
2616
  target.handle,
2638
2617
  GetWidgetLife(target.handle) - bonusHealth
@@ -2658,7 +2637,7 @@ Unit.itemDroppedEvent = __TS__New(
2658
2637
  function()
2659
2638
  local unit = getTriggerUnit()
2660
2639
  local item = getManipulatedItem()
2661
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2640
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2662
2641
  return ____exports.Unit:of(unit), Item:of(item)
2663
2642
  end
2664
2643
  return IgnoreEvent
@@ -2670,10 +2649,10 @@ Unit.itemPickedUpEvent = __TS__New(
2670
2649
  function()
2671
2650
  local unitHandle = getTriggerUnit()
2672
2651
  local itemHandle = getManipulatedItem()
2673
- if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
2652
+ if getUnitTypeId(unitHandle) ~= dummyUnitId and not isItemIgnoredInEvents(itemHandle) then
2674
2653
  local unit = ____exports.Unit:of(unitHandle)
2675
2654
  local item = Item:of(itemHandle)
2676
- if item.owner ~= unit then
2655
+ if ownerByItem[item] ~= unit then
2677
2656
  return unit, item
2678
2657
  end
2679
2658
  end
@@ -2686,17 +2665,12 @@ Unit.itemUsedEvent = __TS__New(
2686
2665
  function()
2687
2666
  local unit = getTriggerUnit()
2688
2667
  local item = getManipulatedItem()
2689
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2668
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2690
2669
  return ____exports.Unit:of(unit), Item:of(item)
2691
2670
  end
2692
2671
  return IgnoreEvent
2693
2672
  end
2694
2673
  )
2695
- Unit.itemStackedEvent = __TS__New(
2696
- ____exports.UnitTriggerEvent,
2697
- EVENT_PLAYER_UNIT_STACK_ITEM,
2698
- function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
2699
- )
2700
2674
  __TS__ObjectDefineProperty(
2701
2675
  Unit,
2702
2676
  "itemChargesChangedEvent",
@@ -2712,51 +2686,6 @@ __TS__ObjectDefineProperty(
2712
2686
  return event
2713
2687
  end}
2714
2688
  )
2715
- __TS__ObjectDefineProperty(
2716
- Unit,
2717
- "itemUseOrderEvent",
2718
- {get = function(self)
2719
- local event = __TS__New(Event)
2720
- for order = orderId("useslot0"), orderId("useslot5") do
2721
- local slot = order - orderId("useslot0")
2722
- local function listener(unit)
2723
- local item = unit.items[slot + 1]
2724
- if item ~= nil then
2725
- invoke(event, unit, item)
2726
- end
2727
- end
2728
- self.onImmediateOrder[order]:addListener(listener)
2729
- self.onTargetOrder[order]:addListener(listener)
2730
- self.onPointOrder[order]:addListener(listener)
2731
- end
2732
- rawset(self, "itemUseOrderEvent", event)
2733
- return event
2734
- end}
2735
- )
2736
- __TS__ObjectDefineProperty(
2737
- Unit,
2738
- "itemMoveOrderEvent",
2739
- {get = function(self)
2740
- local event = __TS__New(Event)
2741
- for order = orderId("moveslot0"), orderId("moveslot5") do
2742
- local slotTo = order - orderId("moveslot0")
2743
- self.onTargetOrder[order]:addListener(function(unit, item)
2744
- local slotFrom = unit.items:findSlot(item)
2745
- if slotFrom ~= nil then
2746
- invoke(
2747
- event,
2748
- unit,
2749
- item,
2750
- slotFrom,
2751
- slotTo
2752
- )
2753
- end
2754
- end)
2755
- end
2756
- rawset(self, "itemMoveOrderEvent", event)
2757
- return event
2758
- end}
2759
- )
2760
2689
  __TS__ObjectDefineProperty(
2761
2690
  Unit,
2762
2691
  "onCreate",
@@ -2782,6 +2711,10 @@ __TS__ObjectDefineProperty(
2782
2711
  rawset(self, "destroyEvent", destroyEvent)
2783
2712
  return destroyEvent
2784
2713
  end}
2714
+ )
2715
+ Unit.synchronize = synchronizer(
2716
+ function(unit) return unit.syncId end,
2717
+ function(syncId) return unitBySyncId[syncId] end
2785
2718
  );
2786
2719
  (function(self)
2787
2720
  local leaveAbilityIds = postcompile(function()
@@ -2799,11 +2732,7 @@ __TS__ObjectDefineProperty(
2799
2732
  function(____, id) return fourCC(id) end
2800
2733
  )
2801
2734
  end)
2802
- for ____, leaveOrderId in ipairs({
2803
- orderId("undefend"),
2804
- orderId("magicundefense"),
2805
- orderId("unimmolation")
2806
- }) do
2735
+ for ____, leaveOrderId in ipairs({852056, 852479, 852178}) do
2807
2736
  ____exports.Unit.onImmediateOrder[leaveOrderId]:addListener(function(unit)
2808
2737
  local handle = unit.handle
2809
2738
  for i = 1, #leaveAbilityIds do
@@ -2811,7 +2740,8 @@ __TS__ObjectDefineProperty(
2811
2740
  return
2812
2741
  end
2813
2742
  end
2814
- unit:destroy()
2743
+ unit:saveData()
2744
+ Timer:run(unit, "destroy")
2815
2745
  end)
2816
2746
  end
2817
2747
  end)(Unit)