warscript 0.0.1-dev.70e8500 → 0.0.1-dev.72620d4

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 (341) 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 +128 -67
  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/playerColor.lua +4 -3
  14. package/core/types/sound.d.ts +1 -1
  15. package/core/types/sound.lua +14 -9
  16. package/core/types/tileCell.d.ts +2 -1
  17. package/core/types/tileCell.lua +5 -0
  18. package/core/types/unit.d.ts +5 -0
  19. package/core/types/unit.lua +5 -0
  20. package/core/util.d.ts +3 -1
  21. package/core/util.lua +109 -3
  22. package/decl/native.d.ts +705 -7
  23. package/destroyable.d.ts +1 -0
  24. package/destroyable.lua +9 -0
  25. package/engine/behavior.d.ts +10 -2
  26. package/engine/behavior.lua +157 -76
  27. package/engine/behaviour/ability/apply-buff.lua +4 -4
  28. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  29. package/engine/behaviour/ability/damage.d.ts +4 -0
  30. package/engine/behaviour/ability/damage.lua +19 -15
  31. package/engine/behaviour/ability/emulate-impact.lua +5 -4
  32. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  33. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  34. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  35. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  36. package/engine/behaviour/ability.d.ts +13 -6
  37. package/engine/behaviour/ability.lua +56 -1
  38. package/engine/behaviour/unit/stun-immunity.d.ts +7 -5
  39. package/engine/behaviour/unit/stun-immunity.lua +6 -5
  40. package/engine/behaviour/unit.d.ts +8 -3
  41. package/engine/behaviour/unit.lua +102 -24
  42. package/engine/buff.d.ts +73 -24
  43. package/engine/buff.lua +418 -166
  44. package/engine/index.d.ts +2 -1
  45. package/engine/internal/ability.d.ts +7 -0
  46. package/engine/internal/ability.lua +65 -36
  47. package/engine/internal/item/fields.d.ts +12 -0
  48. package/engine/internal/item/fields.lua +33 -0
  49. package/engine/internal/item/owner-cache.d.ts +5 -0
  50. package/engine/internal/item/owner-cache.lua +4 -0
  51. package/engine/internal/item+owner.d.ts +2 -0
  52. package/engine/internal/item+owner.lua +27 -4
  53. package/engine/internal/item.d.ts +20 -5
  54. package/engine/internal/item.lua +146 -57
  55. package/engine/internal/mechanics/cast-ability.lua +6 -3
  56. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  57. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  58. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  59. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  60. package/engine/internal/object-data/health-bonus.lua +16 -0
  61. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  62. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  63. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  64. package/engine/internal/object-data/mana-bonus.lua +16 -0
  65. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  66. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  67. package/engine/internal/unit/ability.lua +15 -3
  68. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  69. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  70. package/engine/internal/unit/appearance.d.ts +15 -0
  71. package/engine/internal/unit/appearance.lua +85 -0
  72. package/engine/internal/unit/attributes.d.ts +17 -0
  73. package/engine/internal/unit/attributes.lua +46 -0
  74. package/engine/internal/unit/bonus.d.ts +14 -0
  75. package/engine/internal/unit/bonus.lua +102 -8
  76. package/engine/internal/unit/buff.d.ts +2 -2
  77. package/engine/internal/unit/buff.lua +34 -19
  78. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  79. package/engine/internal/unit/equipment-inventory.lua +233 -0
  80. package/engine/internal/unit/expiration-timer.lua +1 -1
  81. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  82. package/engine/internal/unit/extended-inventory.lua +99 -0
  83. package/engine/internal/unit/fly-height.d.ts +7 -0
  84. package/engine/internal/unit/fly-height.lua +20 -0
  85. package/engine/internal/unit/ignore-events-items.lua +10 -1
  86. package/engine/internal/unit/interrupts.d.ts +12 -0
  87. package/engine/internal/unit/interrupts.lua +28 -0
  88. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  89. package/engine/internal/unit/inventory.lua +87 -0
  90. package/engine/internal/unit/item-container.d.ts +25 -0
  91. package/engine/internal/unit/item-container.lua +11 -0
  92. package/engine/internal/unit/item-order-events.d.ts +17 -0
  93. package/engine/internal/unit/item-order-events.lua +67 -0
  94. package/engine/internal/unit/item-slot.d.ts +27 -0
  95. package/engine/internal/unit/item-slot.lua +92 -0
  96. package/engine/internal/unit/main-selected.lua +12 -27
  97. package/engine/internal/unit/order.d.ts +3 -3
  98. package/engine/internal/unit/order.lua +10 -10
  99. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  100. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  101. package/engine/internal/unit/range-event.d.ts +12 -0
  102. package/engine/internal/unit/range-event.lua +90 -0
  103. package/engine/internal/unit/scale.d.ts +7 -0
  104. package/engine/internal/unit/scale.lua +20 -0
  105. package/engine/internal/unit+ability.d.ts +2 -1
  106. package/engine/internal/unit+ability.lua +63 -2
  107. package/engine/internal/unit+bonus.lua +3 -3
  108. package/engine/internal/unit+damage.d.ts +9 -0
  109. package/engine/internal/unit+damage.lua +33 -0
  110. package/engine/internal/unit+rally.lua +9 -31
  111. package/engine/internal/unit-missile-data.lua +58 -32
  112. package/engine/internal/unit-missile-launch.lua +29 -19
  113. package/engine/internal/unit.d.ts +15 -29
  114. package/engine/internal/unit.lua +189 -272
  115. package/engine/local-client.d.ts +28 -0
  116. package/engine/local-client.lua +324 -54
  117. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  118. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  119. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  120. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  121. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  122. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  123. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  124. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  125. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  126. package/engine/object-data/auxiliary/item-class.lua +2 -0
  127. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  128. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  129. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  130. package/engine/object-data/auxiliary/order-type.lua +2 -0
  131. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  132. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  133. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  134. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  135. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  136. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  137. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  138. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  139. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  140. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  141. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  142. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  143. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  144. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  145. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  146. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  147. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  148. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  149. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  150. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  151. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  152. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  153. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  154. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  155. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  156. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  157. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  158. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  159. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  160. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  161. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  162. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  163. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  164. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  165. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  166. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  167. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  168. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  169. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  170. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  171. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  172. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  173. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  174. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  175. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  176. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  177. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  178. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  179. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  180. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  181. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  182. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  183. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  184. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  185. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  186. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  187. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  188. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  189. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  190. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  191. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  192. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  193. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  194. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  195. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  196. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  197. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  198. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  199. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  200. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  201. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  202. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  203. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  204. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  205. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  206. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  207. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  208. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  209. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  210. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  211. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  212. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  213. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  214. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  215. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  216. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  217. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  218. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  219. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  220. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  221. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  222. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  223. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  224. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  225. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  226. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  227. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  228. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  229. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  230. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  231. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  232. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  233. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  234. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  235. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  236. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  237. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  238. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  239. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  240. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  241. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  242. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  243. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  244. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  245. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  246. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  247. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  248. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  249. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  250. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  251. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  252. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  253. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  254. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  255. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  256. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  257. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  258. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  259. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  260. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  261. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  262. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  263. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  264. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  265. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  266. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  267. package/engine/object-data/entry/ability-type.d.ts +25 -6
  268. package/engine/object-data/entry/ability-type.lua +244 -8
  269. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  270. package/engine/object-data/entry/buff-type.d.ts +6 -2
  271. package/engine/object-data/entry/buff-type.lua +26 -0
  272. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  273. package/engine/object-data/entry/destructible-type.lua +181 -0
  274. package/engine/object-data/entry/item-type.d.ts +18 -3
  275. package/engine/object-data/entry/item-type.lua +84 -0
  276. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  277. package/engine/object-data/entry/lightning-type.lua +1 -1
  278. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  279. package/engine/object-data/entry/unit-type.d.ts +51 -2
  280. package/engine/object-data/entry/unit-type.lua +415 -37
  281. package/engine/object-data/entry/upgrade.d.ts +2 -2
  282. package/engine/object-data/entry.d.ts +6 -1
  283. package/engine/object-data/entry.lua +8 -0
  284. package/engine/object-field/ability.lua +2 -2
  285. package/engine/object-field/item.d.ts +22 -0
  286. package/engine/object-field/item.lua +118 -0
  287. package/engine/object-field/unit.d.ts +20 -5
  288. package/engine/object-field/unit.lua +61 -0
  289. package/engine/object-field.d.ts +10 -2
  290. package/engine/object-field.lua +268 -123
  291. package/engine/random.d.ts +1 -0
  292. package/engine/random.lua +8 -0
  293. package/engine/standard/entries/ability-type.d.ts +3102 -7
  294. package/engine/standard/entries/ability-type.lua +0 -6
  295. package/engine/standard/entries/buff-type.d.ts +45 -0
  296. package/engine/standard/entries/buff-type.lua +43 -0
  297. package/engine/standard/entries/item-type.d.ts +1299 -0
  298. package/engine/standard/entries/item-type.lua +2 -0
  299. package/engine/standard/entries/lightning-type.d.ts +42 -15
  300. package/engine/standard/entries/lightning-type.lua +0 -14
  301. package/engine/standard/entries/unit-type.d.ts +5 -0
  302. package/engine/standard/entries/unit-type.lua +5 -0
  303. package/engine/standard/fields/ability.d.ts +2 -2
  304. package/engine/standard/fields/ability.lua +2 -2
  305. package/engine/standard/fields/item.d.ts +4 -0
  306. package/engine/standard/fields/item.lua +6 -0
  307. package/engine/standard/fields/unit.d.ts +11 -3
  308. package/engine/standard/fields/unit.lua +15 -2
  309. package/engine/synchronization.d.ts +11 -0
  310. package/engine/synchronization.lua +77 -0
  311. package/engine/text-tag.lua +2 -1
  312. package/engine/unit.d.ts +10 -1
  313. package/engine/unit.lua +10 -1
  314. package/event.d.ts +1 -1
  315. package/lualib_bundle.lua +1 -1
  316. package/math.d.ts +2 -0
  317. package/math.lua +14 -0
  318. package/net/socket.lua +1 -1
  319. package/network.lua +25 -1
  320. package/objutil/buff.lua +10 -8
  321. package/objutil/object.lua +1 -1
  322. package/operation.d.ts +8 -1
  323. package/operation.lua +38 -18
  324. package/package.json +3 -23
  325. package/patch-lua.lua +15 -0
  326. package/utility/arrays.d.ts +1 -0
  327. package/utility/arrays.lua +12 -0
  328. package/utility/linked-map.d.ts +35 -0
  329. package/utility/linked-map.lua +107 -0
  330. package/utility/linked-set.d.ts +4 -1
  331. package/utility/linked-set.lua +44 -0
  332. package/utility/random.d.ts +102 -0
  333. package/utility/random.lua +273 -0
  334. package/utility/records.lua +20 -1
  335. package/utility/unordered-map.d.ts +27 -0
  336. package/utility/unordered-map.lua +99 -0
  337. package/engine/internal/unit/item.lua +0 -78
  338. /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
  339. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  340. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  341. /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 = {
@@ -581,8 +590,6 @@ __TS__SetDescriptor(
581
590
  },
582
591
  true
583
592
  )
584
- local unitInventorySize = UnitInventorySize
585
- local unitItemInSlot = UnitItemInSlot
586
593
  local getItemAbility = BlzGetItemAbility
587
594
  local getUnitAbility = BlzGetUnitAbility
588
595
  local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
@@ -600,8 +607,8 @@ local function retrieveAbility(unit, ability, abilityId)
600
607
  ____exports.Unit:of(unit)
601
608
  )
602
609
  end
603
- for i = 0, unitInventorySize(unit) - 1 do
604
- local item = unitItemInSlot(unit, i)
610
+ for i = 0, UnitInventorySize(unit) - 1 do
611
+ local item = UnitItemInSlot(unit, i)
605
612
  if getItemAbility(item, abilityId) == ability then
606
613
  return ItemAbility:of(
607
614
  ability,
@@ -646,26 +653,30 @@ local fieldSetters = {
646
653
  }
647
654
  local dummies = {}
648
655
  for ____, player in ipairs(Player.all) do
649
- local dummy = assert(createUnit(
650
- player.handle,
651
- dummyUnitId,
652
- 0,
653
- 0,
654
- 270
655
- ))
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
+ )
656
667
  ShowUnit(dummy, false)
657
668
  dummies[player] = dummy
658
669
  end
659
670
  local function delayHealthChecksCallback(unit)
660
- local counter = (unit[103] or 0) - 1
671
+ local counter = (unit[104] or 0) - 1
661
672
  if counter ~= 0 then
662
- unit[103] = counter
673
+ unit[104] = counter
663
674
  return
664
675
  end
665
- unit[103] = nil
666
- local healthBonus = unit[104]
676
+ unit[104] = nil
677
+ local healthBonus = unit[105]
667
678
  if healthBonus ~= nil then
668
- unit[104] = nil
679
+ unit[105] = nil
669
680
  local handle = unit.handle
670
681
  BlzSetUnitMaxHP(
671
682
  handle,
@@ -695,41 +706,57 @@ function Unit.prototype.____constructor(self, handle)
695
706
  nextSyncId = ____nextSyncId_1 + 1
696
707
  self.syncId = ____nextSyncId_1
697
708
  self._owner = Player:of(getOwningPlayer(handle))
698
- assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
699
- 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
+ )
700
719
  if unitAddAbility(
701
720
  handle,
702
721
  fourCC("Amrf")
703
722
  ) then
704
- assert(unitRemoveAbility(
705
- handle,
706
- fourCC("Amrf")
707
- ))
723
+ assert(
724
+ unitRemoveAbility(
725
+ handle,
726
+ fourCC("Amrf")
727
+ ),
728
+ "fly ability must be removed after addition",
729
+ self
730
+ )
708
731
  end
709
732
  unitBySyncId[self.syncId] = self
710
733
  local ____ = self.abilities
711
734
  end
712
- function Unit.prototype.getEvent(self, event, collector)
713
- self.events = self.events or ({})
714
- local eventId = GetHandleId(event)
715
- if not self.events[eventId] then
716
- 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(
717
741
  TriggerEvent,
718
742
  function(trigger)
719
- TriggerRegisterUnitEvent(trigger, self.handle, event)
743
+ TriggerRegisterUnitEvent(trigger, self.handle, jevent)
720
744
  end,
721
745
  collector or (function() return {} end)
722
746
  )
747
+ self.events:put(eventId, event)
723
748
  end
724
- 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))
725
756
  end
726
757
  function Unit.prototype.onDestroy(self)
727
758
  local handle = self.handle
728
- self[107] = getUnitX(handle)
729
- self[108] = getUnitY(handle)
730
- if not self._owner then
731
- self._owner = Player:of(getOwningPlayer(handle))
732
- end
759
+ self:saveData()
733
760
  local abilities = self.abilities
734
761
  for ____, ability in ipairs(abilities) do
735
762
  ability:destroy()
@@ -747,7 +774,9 @@ function Unit.prototype.onDestroy(self)
747
774
  end
748
775
  local eventsToDestroy = self._eventsToDestroy
749
776
  if eventsToDestroy ~= nil then
750
- forEach(eventsToDestroy, "destroy")
777
+ for ____, event in ipairs(eventsToDestroy) do
778
+ event:destroy()
779
+ end
751
780
  end
752
781
  if getUnitAbilityLevel(handle, leaveDetectAbilityId) > 0 then
753
782
  unitRemoveAbility(handle, leaveDetectAbilityId)
@@ -765,7 +794,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
765
794
  self._attackHandlers = handlers
766
795
  if #handlers == 1 then
767
796
  local handle = self.handle
768
- 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
+ )
769
802
  end
770
803
  return handler
771
804
  end
@@ -813,13 +846,19 @@ function Unit.prototype.isInvisibleTo(self, player)
813
846
  return isUnitInvisible(self.handle, player.handle)
814
847
  end
815
848
  function Unit.prototype.isInRangeOf(self, x, y, range)
816
- local ____temp_3
849
+ local ____temp_4
817
850
  if type(x) == "number" then
818
- ____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
851
+ ____temp_4 = isUnitInRangeXY(self.handle, x, y, range)
819
852
  else
820
- ____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
821
860
  end
822
- return ____temp_3
861
+ return ____temp_4
823
862
  end
824
863
  function Unit.prototype.isAllyOf(self, unit)
825
864
  return isUnitAlly(
@@ -860,7 +899,7 @@ function Unit.prototype.chooseWeapon(self, target)
860
899
  return nil
861
900
  end
862
901
  function Unit.prototype.delayHealthChecks(self)
863
- self[103] = (self[103] or 0) + 1
902
+ self[104] = (self[104] or 0) + 1
864
903
  Timer:run(delayHealthChecksCallback, self)
865
904
  end
866
905
  function Unit.prototype.setPosition(self, x, y)
@@ -877,14 +916,14 @@ function Unit.prototype.kill(self)
877
916
  killUnit(self.handle)
878
917
  end
879
918
  function Unit.prototype.revive(self, x, y, doEffect)
880
- local ____ReviveHero_6 = ReviveHero
881
- local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
882
- local ____doEffect_4 = doEffect
883
- if ____doEffect_4 == nil then
884
- ____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
885
924
  end
886
- __TS__SparseArrayPush(____array_5, ____doEffect_4)
887
- ____ReviveHero_6(__TS__SparseArraySpread(____array_5))
925
+ __TS__SparseArrayPush(____array_6, ____doEffect_5)
926
+ ____ReviveHero_7(__TS__SparseArraySpread(____array_6))
888
927
  end
889
928
  function Unit.prototype.healTarget(self, target, amount)
890
929
  if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
@@ -924,7 +963,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
924
963
  return UnitDropItemSlot(self.handle, item.handle, slot)
925
964
  end
926
965
  function Unit.prototype.itemInSlot(self, slot)
927
- return Item:of(unitItemInSlot(self.handle, slot))
966
+ return Item:of(UnitItemInSlot(self.handle, slot))
928
967
  end
929
968
  function Unit.prototype.addAbility(self, abilityId)
930
969
  local ability = UnitAbility:of(
@@ -978,24 +1017,6 @@ end
978
1017
  function Unit.prototype.endAbilityCooldown(self, abilityId)
979
1018
  BlzEndUnitAbilityCooldown(self.handle, abilityId)
980
1019
  end
981
- function Unit.prototype.interruptMovement(self)
982
- local handle = self.handle
983
- unitDisableAbility(
984
- handle,
985
- fourCC("Amov"),
986
- true,
987
- false
988
- )
989
- unitDisableAbility(
990
- handle,
991
- fourCC("Amov"),
992
- false,
993
- false
994
- )
995
- end
996
- function Unit.prototype.interruptAttack(self)
997
- unitInterruptAttack(self.handle)
998
- end
999
1020
  function Unit.prototype.interruptCast(self, abilityId)
1000
1021
  local handle = self.handle
1001
1022
  unitDisableAbility(handle, abilityId, true, false)
@@ -1066,18 +1087,44 @@ function Unit.prototype.unpauseEx(self)
1066
1087
  end
1067
1088
  function Unit.prototype.incrementStunCounter(self)
1068
1089
  local stunCounter = self[102] or 0
1069
- if not self[101] or stunCounter >= 0 then
1090
+ if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
1070
1091
  BlzPauseUnitEx(self.handle, true)
1071
1092
  end
1072
1093
  self[102] = stunCounter + 1
1073
1094
  end
1074
1095
  function Unit.prototype.decrementStunCounter(self)
1075
1096
  local stunCounter = self[102] or 0
1076
- if not self[101] or stunCounter >= 1 then
1097
+ if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
1077
1098
  BlzPauseUnitEx(self.handle, false)
1078
1099
  end
1079
1100
  self[102] = stunCounter - 1
1080
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
1081
1128
  function Unit.create(self, owner, id, x, y, facing, skinId)
1082
1129
  local handle = skinId and BlzCreateUnitWithSkin(
1083
1130
  owner.handle,
@@ -1274,7 +1321,7 @@ __TS__SetDescriptor(
1274
1321
  Unit.prototype,
1275
1322
  "isStunned",
1276
1323
  {get = function(self)
1277
- return getUnitCurrentOrder(self.handle) == orderId("stunned")
1324
+ return getUnitCurrentOrder(self.handle) == 851973
1278
1325
  end},
1279
1326
  true
1280
1327
  )
@@ -1364,19 +1411,6 @@ __TS__SetDescriptor(
1364
1411
  },
1365
1412
  true
1366
1413
  )
1367
- __TS__SetDescriptor(
1368
- Unit.prototype,
1369
- "strengthBase",
1370
- {
1371
- get = function(self)
1372
- return getHeroStr(self.handle, false)
1373
- end,
1374
- set = function(self, strengthBase)
1375
- setHeroStr(self.handle, strengthBase, true)
1376
- end
1377
- },
1378
- true
1379
- )
1380
1414
  __TS__SetDescriptor(
1381
1415
  Unit.prototype,
1382
1416
  "strengthBonus",
@@ -1394,19 +1428,6 @@ __TS__SetDescriptor(
1394
1428
  end},
1395
1429
  true
1396
1430
  )
1397
- __TS__SetDescriptor(
1398
- Unit.prototype,
1399
- "agilityBase",
1400
- {
1401
- get = function(self)
1402
- return getHeroAgi(self.handle, false)
1403
- end,
1404
- set = function(self, agilityBase)
1405
- setHeroAgi(self.handle, agilityBase, true)
1406
- end
1407
- },
1408
- true
1409
- )
1410
1431
  __TS__SetDescriptor(
1411
1432
  Unit.prototype,
1412
1433
  "agilityBonus",
@@ -1424,19 +1445,6 @@ __TS__SetDescriptor(
1424
1445
  end},
1425
1446
  true
1426
1447
  )
1427
- __TS__SetDescriptor(
1428
- Unit.prototype,
1429
- "intelligenceBase",
1430
- {
1431
- get = function(self)
1432
- return getHeroInt(self.handle, false)
1433
- end,
1434
- set = function(self, intelligenceBase)
1435
- setHeroInt(self.handle, intelligenceBase, true)
1436
- end
1437
- },
1438
- true
1439
- )
1440
1448
  __TS__SetDescriptor(
1441
1449
  Unit.prototype,
1442
1450
  "intelligenceBonus",
@@ -1485,17 +1493,17 @@ __TS__SetDescriptor(
1485
1493
  "isTeamGlowVisible",
1486
1494
  {
1487
1495
  get = function(self)
1488
- return not self[106]
1496
+ return not self[107]
1489
1497
  end,
1490
1498
  set = function(self, isTeamGlowVisible)
1491
1499
  BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
1492
- local ____temp_7
1500
+ local ____temp_8
1493
1501
  if not isTeamGlowVisible then
1494
- ____temp_7 = true
1502
+ ____temp_8 = true
1495
1503
  else
1496
- ____temp_7 = nil
1504
+ ____temp_8 = nil
1497
1505
  end
1498
- self[106] = ____temp_7
1506
+ self[107] = ____temp_8
1499
1507
  end
1500
1508
  },
1501
1509
  true
@@ -1505,7 +1513,7 @@ __TS__SetDescriptor(
1505
1513
  "color",
1506
1514
  {set = function(self, color)
1507
1515
  SetUnitColor(self.handle, color.handle)
1508
- if self[106] then
1516
+ if self[107] then
1509
1517
  BlzShowUnitTeamGlow(self.handle, false)
1510
1518
  end
1511
1519
  end},
@@ -1529,14 +1537,14 @@ __TS__SetDescriptor(
1529
1537
  "maxHealth",
1530
1538
  {
1531
1539
  get = function(self)
1532
- 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)
1533
1541
  end,
1534
1542
  set = function(self, maxHealth)
1535
- if maxHealth < 1 and self[103] ~= nil then
1536
- 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)
1537
1545
  maxHealth = 1
1538
1546
  end
1539
- BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
1547
+ BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
1540
1548
  end
1541
1549
  },
1542
1550
  true
@@ -1578,10 +1586,10 @@ __TS__SetDescriptor(
1578
1586
  "health",
1579
1587
  {
1580
1588
  get = function(self)
1581
- return GetWidgetLife(self.handle) - (self[105] or 0)
1589
+ return GetWidgetLife(self.handle) - (self[106] or 0)
1582
1590
  end,
1583
1591
  set = function(self, health)
1584
- SetWidgetLife(self.handle, health + (self[105] or 0))
1592
+ SetWidgetLife(self.handle, health + (self[106] or 0))
1585
1593
  end
1586
1594
  },
1587
1595
  true
@@ -1657,25 +1665,12 @@ __TS__SetDescriptor(
1657
1665
  },
1658
1666
  true
1659
1667
  )
1660
- __TS__SetDescriptor(
1661
- Unit.prototype,
1662
- "flyHeight",
1663
- {
1664
- get = function(self)
1665
- return getUnitFlyHeight(self.handle)
1666
- end,
1667
- set = function(self, v)
1668
- SetUnitFlyHeight(self.handle, v, 100000)
1669
- end
1670
- },
1671
- true
1672
- )
1673
1668
  __TS__SetDescriptor(
1674
1669
  Unit.prototype,
1675
1670
  "x",
1676
1671
  {
1677
1672
  get = function(self)
1678
- return self[107] or getUnitX(self.handle)
1673
+ return self[108] or getUnitX(self.handle)
1679
1674
  end,
1680
1675
  set = function(self, v)
1681
1676
  SetUnitX(self.handle, v)
@@ -1688,7 +1683,7 @@ __TS__SetDescriptor(
1688
1683
  "y",
1689
1684
  {
1690
1685
  get = function(self)
1691
- return self[108] or getUnitY(self.handle)
1686
+ return self[109] or getUnitY(self.handle)
1692
1687
  end,
1693
1688
  set = function(self, v)
1694
1689
  SetUnitY(self.handle, v)
@@ -1793,14 +1788,18 @@ __TS__SetDescriptor(
1793
1788
  local handle = self.handle
1794
1789
  if isPaused and not IsUnitPaused(handle) then
1795
1790
  self[101] = true
1796
- for _ = self[102] or 0, -1 do
1797
- 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
1798
1795
  end
1799
1796
  PauseUnit(handle, true)
1800
1797
  elseif not isPaused and IsUnitPaused(handle) then
1801
1798
  PauseUnit(handle, false)
1802
- for _ = self[102] or 0, -1 do
1803
- 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
1804
1803
  end
1805
1804
  self[101] = nil
1806
1805
  end
@@ -1858,20 +1857,6 @@ __TS__SetDescriptor(
1858
1857
  },
1859
1858
  true
1860
1859
  )
1861
- __TS__SetDescriptor(
1862
- Unit.prototype,
1863
- "scale",
1864
- {
1865
- get = function(self)
1866
- return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
1867
- end,
1868
- set = function(self, v)
1869
- setUnitScale(self.handle, v, v, v)
1870
- setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
1871
- end
1872
- },
1873
- true
1874
- )
1875
1860
  __TS__SetDescriptor(
1876
1861
  Unit.prototype,
1877
1862
  "timeScale",
@@ -1898,7 +1883,7 @@ __TS__SetDescriptor(
1898
1883
  Unit.prototype,
1899
1884
  "pathingCollisionRange",
1900
1885
  {get = function(self)
1901
- return 16 * (min(
1886
+ return 16 * (math.min(
1902
1887
  getUnitCollisionSize(self.handle) // 16,
1903
1888
  3
1904
1889
  ) + 1)
@@ -2008,30 +1993,6 @@ __TS__SetDescriptor(
2008
1993
  end},
2009
1994
  true
2010
1995
  )
2011
- __TS__SetDescriptor(
2012
- Unit.prototype,
2013
- "onUnitInRange",
2014
- {get = function(self)
2015
- local handle = self.handle
2016
- local onUnitInRange = setmetatable(
2017
- {},
2018
- {__index = function(self, value)
2019
- local event = __TS__New(
2020
- TriggerEvent,
2021
- function(trigger)
2022
- TriggerRegisterUnitInRangeSimple(trigger, value, handle)
2023
- end,
2024
- function() return ____exports.Unit:of(handle) end
2025
- )
2026
- rawset(self, value, event)
2027
- return event
2028
- end}
2029
- )
2030
- rawset(self, "onUnitInRange", onUnitInRange)
2031
- return onUnitInRange
2032
- end},
2033
- true
2034
- )
2035
1996
  __TS__SetDescriptor(
2036
1997
  Unit.prototype,
2037
1998
  "onManaEqual",
@@ -2167,6 +2128,11 @@ __TS__SetDescriptor(
2167
2128
  end},
2168
2129
  true
2169
2130
  )
2131
+ Unit.levelChangedEvent = __TS__New(
2132
+ ____exports.UnitTriggerEvent,
2133
+ EVENT_PLAYER_HERO_LEVEL,
2134
+ function() return ____exports.Unit:of(getTriggerUnit()) end
2135
+ )
2170
2136
  Unit.deathEvent = __TS__New(
2171
2137
  ____exports.UnitTriggerEvent,
2172
2138
  EVENT_PLAYER_UNIT_DEATH,
@@ -2184,7 +2150,7 @@ Unit.onResurrect = __TS__New(
2184
2150
  ____exports.Unit.deathEvent:addListener(function(unit)
2185
2151
  dead[unit] = true
2186
2152
  end)
2187
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2153
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2188
2154
  if dead[unit] and not IsUnitType(unit.handle, UNIT_TYPE_DEAD) then
2189
2155
  dead[unit] = false
2190
2156
  invoke(event, unit)
@@ -2201,7 +2167,7 @@ Unit.morphEvent = __TS__New(
2201
2167
  invoke(event, unit)
2202
2168
  end
2203
2169
  end
2204
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2170
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2205
2171
  if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
2206
2172
  Timer:run(ifNotLeft, unit)
2207
2173
  end
@@ -2242,25 +2208,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
2242
2208
  InitializingEvent,
2243
2209
  function(event)
2244
2210
  local function listener(unit, id)
2245
- local ____GetSpellTargetUnit_result_10
2211
+ local ____GetSpellTargetUnit_result_11
2246
2212
  if GetSpellTargetUnit() then
2247
- ____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
2213
+ ____GetSpellTargetUnit_result_11 = ____exports.Unit:of(GetSpellTargetUnit())
2248
2214
  else
2249
- local ____GetSpellTargetItem_result_9
2215
+ local ____GetSpellTargetItem_result_10
2250
2216
  if GetSpellTargetItem() then
2251
- ____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
2217
+ ____GetSpellTargetItem_result_10 = Item:of(GetSpellTargetItem())
2252
2218
  else
2253
- local ____GetSpellTargetDestructable_result_8
2219
+ local ____GetSpellTargetDestructable_result_9
2254
2220
  if GetSpellTargetDestructable() then
2255
- ____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
2221
+ ____GetSpellTargetDestructable_result_9 = Destructable:of(GetSpellTargetDestructable())
2256
2222
  else
2257
- ____GetSpellTargetDestructable_result_8 = nil
2223
+ ____GetSpellTargetDestructable_result_9 = nil
2258
2224
  end
2259
- ____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
2225
+ ____GetSpellTargetItem_result_10 = ____GetSpellTargetDestructable_result_9
2260
2226
  end
2261
- ____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
2227
+ ____GetSpellTargetUnit_result_11 = ____GetSpellTargetItem_result_10
2262
2228
  end
2263
- local target = ____GetSpellTargetUnit_result_10
2229
+ local target = ____GetSpellTargetUnit_result_11
2264
2230
  if target then
2265
2231
  invoke(event, unit, id, target)
2266
2232
  end
@@ -2628,7 +2594,7 @@ Unit.onDamage = __TS__New(
2628
2594
  invoke(event, source, target, evData)
2629
2595
  if evData[0] ~= nil and target.health - evData.amount < 0.405 then
2630
2596
  local bonusHealth = math.ceil(evData.amount)
2631
- target[105] = (target[105] or 0) + bonusHealth
2597
+ target[106] = (target[106] or 0) + bonusHealth
2632
2598
  BlzSetUnitMaxHP(
2633
2599
  target.handle,
2634
2600
  BlzGetUnitMaxHP(target.handle) + bonusHealth
@@ -2642,7 +2608,7 @@ Unit.onDamage = __TS__New(
2642
2608
  evData[0],
2643
2609
  table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
2644
2610
  )
2645
- target[105] = (target[105] or 0) - bonusHealth
2611
+ target[106] = (target[106] or 0) - bonusHealth
2646
2612
  SetWidgetLife(
2647
2613
  target.handle,
2648
2614
  GetWidgetLife(target.handle) - bonusHealth
@@ -2668,7 +2634,7 @@ Unit.itemDroppedEvent = __TS__New(
2668
2634
  function()
2669
2635
  local unit = getTriggerUnit()
2670
2636
  local item = getManipulatedItem()
2671
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2637
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2672
2638
  return ____exports.Unit:of(unit), Item:of(item)
2673
2639
  end
2674
2640
  return IgnoreEvent
@@ -2680,10 +2646,10 @@ Unit.itemPickedUpEvent = __TS__New(
2680
2646
  function()
2681
2647
  local unitHandle = getTriggerUnit()
2682
2648
  local itemHandle = getManipulatedItem()
2683
- if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
2649
+ if getUnitTypeId(unitHandle) ~= dummyUnitId and not isItemIgnoredInEvents(itemHandle) then
2684
2650
  local unit = ____exports.Unit:of(unitHandle)
2685
2651
  local item = Item:of(itemHandle)
2686
- if item.owner ~= unit then
2652
+ if ownerByItem[item] ~= unit then
2687
2653
  return unit, item
2688
2654
  end
2689
2655
  end
@@ -2696,17 +2662,12 @@ Unit.itemUsedEvent = __TS__New(
2696
2662
  function()
2697
2663
  local unit = getTriggerUnit()
2698
2664
  local item = getManipulatedItem()
2699
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2665
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2700
2666
  return ____exports.Unit:of(unit), Item:of(item)
2701
2667
  end
2702
2668
  return IgnoreEvent
2703
2669
  end
2704
2670
  )
2705
- Unit.itemStackedEvent = __TS__New(
2706
- ____exports.UnitTriggerEvent,
2707
- EVENT_PLAYER_UNIT_STACK_ITEM,
2708
- function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
2709
- )
2710
2671
  __TS__ObjectDefineProperty(
2711
2672
  Unit,
2712
2673
  "itemChargesChangedEvent",
@@ -2722,51 +2683,6 @@ __TS__ObjectDefineProperty(
2722
2683
  return event
2723
2684
  end}
2724
2685
  )
2725
- __TS__ObjectDefineProperty(
2726
- Unit,
2727
- "itemUseOrderEvent",
2728
- {get = function(self)
2729
- local event = __TS__New(Event)
2730
- for order = orderId("useslot0"), orderId("useslot5") do
2731
- local slot = order - orderId("useslot0")
2732
- local function listener(unit)
2733
- local item = unit.items[slot + 1]
2734
- if item ~= nil then
2735
- invoke(event, unit, item)
2736
- end
2737
- end
2738
- self.onImmediateOrder[order]:addListener(listener)
2739
- self.onTargetOrder[order]:addListener(listener)
2740
- self.onPointOrder[order]:addListener(listener)
2741
- end
2742
- rawset(self, "itemUseOrderEvent", event)
2743
- return event
2744
- end}
2745
- )
2746
- __TS__ObjectDefineProperty(
2747
- Unit,
2748
- "itemMoveOrderEvent",
2749
- {get = function(self)
2750
- local event = __TS__New(Event)
2751
- for order = orderId("moveslot0"), orderId("moveslot5") do
2752
- local slotTo = order - orderId("moveslot0")
2753
- self.onTargetOrder[order]:addListener(function(unit, item)
2754
- local slotFrom = unit.items:findSlot(item)
2755
- if slotFrom ~= nil then
2756
- invoke(
2757
- event,
2758
- unit,
2759
- item,
2760
- slotFrom,
2761
- slotTo
2762
- )
2763
- end
2764
- end)
2765
- end
2766
- rawset(self, "itemMoveOrderEvent", event)
2767
- return event
2768
- end}
2769
- )
2770
2686
  __TS__ObjectDefineProperty(
2771
2687
  Unit,
2772
2688
  "onCreate",
@@ -2792,6 +2708,10 @@ __TS__ObjectDefineProperty(
2792
2708
  rawset(self, "destroyEvent", destroyEvent)
2793
2709
  return destroyEvent
2794
2710
  end}
2711
+ )
2712
+ Unit.synchronize = synchronizer(
2713
+ function(unit) return unit.syncId end,
2714
+ function(syncId) return unitBySyncId[syncId] end
2795
2715
  );
2796
2716
  (function(self)
2797
2717
  local leaveAbilityIds = postcompile(function()
@@ -2809,11 +2729,7 @@ __TS__ObjectDefineProperty(
2809
2729
  function(____, id) return fourCC(id) end
2810
2730
  )
2811
2731
  end)
2812
- for ____, leaveOrderId in ipairs({
2813
- orderId("undefend"),
2814
- orderId("magicundefense"),
2815
- orderId("unimmolation")
2816
- }) do
2732
+ for ____, leaveOrderId in ipairs({852056, 852479, 852178}) do
2817
2733
  ____exports.Unit.onImmediateOrder[leaveOrderId]:addListener(function(unit)
2818
2734
  local handle = unit.handle
2819
2735
  for i = 1, #leaveAbilityIds do
@@ -2821,7 +2737,8 @@ __TS__ObjectDefineProperty(
2821
2737
  return
2822
2738
  end
2823
2739
  end
2824
- unit:destroy()
2740
+ unit:saveData()
2741
+ Timer:run(unit, "destroy")
2825
2742
  end)
2826
2743
  end
2827
2744
  end)(Unit)