warscript 0.0.1-dev.3eed609 → 0.0.1-dev.3f0a5ea

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 (346) hide show
  1. package/core/dummy.lua +4 -2
  2. package/core/types/effect.d.ts +11 -1
  3. package/core/types/effect.lua +43 -77
  4. package/core/types/frame.d.ts +16 -2
  5. package/core/types/frame.lua +128 -67
  6. package/core/types/handle.lua +9 -9
  7. package/core/types/item.d.ts +1 -0
  8. package/core/types/item.lua +1 -0
  9. package/core/types/missile.lua +8 -7
  10. package/core/types/player.d.ts +2 -1
  11. package/core/types/player.lua +18 -13
  12. package/core/types/playerColor.lua +4 -3
  13. package/core/types/sound.d.ts +1 -1
  14. package/core/types/sound.lua +14 -9
  15. package/core/types/tileCell.d.ts +7 -2
  16. package/core/types/tileCell.lua +11 -0
  17. package/core/types/unit.d.ts +5 -0
  18. package/core/types/unit.lua +5 -0
  19. package/core/util.d.ts +3 -1
  20. package/core/util.lua +109 -3
  21. package/decl/native.d.ts +706 -7
  22. package/destroyable.d.ts +1 -0
  23. package/destroyable.lua +9 -0
  24. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  25. package/engine/ability-type-extended-tooltip.lua +44 -0
  26. package/engine/behavior.d.ts +4 -2
  27. package/engine/behavior.lua +69 -11
  28. package/engine/behaviour/ability/apply-buff.lua +4 -4
  29. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  30. package/engine/behaviour/ability/damage.d.ts +4 -0
  31. package/engine/behaviour/ability/damage.lua +19 -15
  32. package/engine/behaviour/ability/emulate-impact.d.ts +14 -0
  33. package/engine/behaviour/ability/emulate-impact.lua +79 -5
  34. package/engine/behaviour/ability/instant-impact.d.ts +12 -1
  35. package/engine/behaviour/ability/instant-impact.lua +17 -2
  36. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  37. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  38. package/engine/behaviour/ability.d.ts +19 -6
  39. package/engine/behaviour/ability.lua +120 -9
  40. package/engine/behaviour/unit/stun-immunity.d.ts +1 -1
  41. package/engine/behaviour/unit/stun-immunity.lua +5 -4
  42. package/engine/behaviour/unit.d.ts +1 -0
  43. package/engine/behaviour/unit.lua +14 -3
  44. package/engine/buff.d.ts +103 -55
  45. package/engine/buff.lua +486 -270
  46. package/engine/index.d.ts +2 -1
  47. package/engine/internal/ability.d.ts +7 -0
  48. package/engine/internal/ability.lua +65 -36
  49. package/engine/internal/item/fields.d.ts +12 -0
  50. package/engine/internal/item/fields.lua +33 -0
  51. package/engine/internal/item/owner-cache.d.ts +5 -0
  52. package/engine/internal/item/owner-cache.lua +4 -0
  53. package/engine/internal/item+owner.d.ts +2 -0
  54. package/engine/internal/item+owner.lua +27 -4
  55. package/engine/internal/item.d.ts +20 -5
  56. package/engine/internal/item.lua +146 -57
  57. package/engine/internal/mechanics/cast-ability.lua +6 -3
  58. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  59. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  60. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  61. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  62. package/engine/internal/object-data/health-bonus.lua +16 -0
  63. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  64. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  65. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  66. package/engine/internal/object-data/mana-bonus.lua +16 -0
  67. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  68. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  69. package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
  70. package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
  71. package/engine/internal/unit/ability.lua +16 -0
  72. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  73. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  74. package/engine/internal/unit/appearance.d.ts +15 -0
  75. package/engine/internal/unit/appearance.lua +85 -0
  76. package/engine/internal/unit/attributes.d.ts +17 -0
  77. package/engine/internal/unit/attributes.lua +46 -0
  78. package/engine/internal/unit/bonus.d.ts +17 -0
  79. package/engine/internal/unit/bonus.lua +113 -8
  80. package/engine/internal/unit/buff.d.ts +2 -2
  81. package/engine/internal/unit/buff.lua +34 -19
  82. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  83. package/engine/internal/unit/equipment-inventory.lua +233 -0
  84. package/engine/internal/unit/expiration-timer.lua +1 -1
  85. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  86. package/engine/internal/unit/extended-inventory.lua +99 -0
  87. package/engine/internal/unit/fly-height.lua +3 -3
  88. package/engine/internal/unit/ignore-events-items.lua +10 -1
  89. package/engine/internal/unit/interrupts.d.ts +12 -0
  90. package/engine/internal/unit/interrupts.lua +28 -0
  91. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  92. package/engine/internal/unit/inventory.lua +87 -0
  93. package/engine/internal/unit/item-container.d.ts +25 -0
  94. package/engine/internal/unit/item-container.lua +11 -0
  95. package/engine/internal/unit/item-order-events.d.ts +17 -0
  96. package/engine/internal/unit/item-order-events.lua +67 -0
  97. package/engine/internal/unit/item-slot.d.ts +27 -0
  98. package/engine/internal/unit/item-slot.lua +92 -0
  99. package/engine/internal/unit/order.d.ts +3 -3
  100. package/engine/internal/unit/order.lua +10 -10
  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.lua +3 -3
  104. package/engine/internal/unit+ability.d.ts +2 -1
  105. package/engine/internal/unit+ability.lua +73 -2
  106. package/engine/internal/unit+bonus.lua +3 -3
  107. package/engine/internal/unit+damage.d.ts +9 -0
  108. package/engine/internal/unit+damage.lua +33 -0
  109. package/engine/internal/unit+rally.lua +9 -31
  110. package/engine/internal/unit-missile-data.lua +96 -68
  111. package/engine/internal/unit-missile-launch.lua +25 -18
  112. package/engine/internal/unit.d.ts +4 -19
  113. package/engine/internal/unit.lua +132 -221
  114. package/engine/lightning.lua +4 -4
  115. package/engine/local-client.d.ts +27 -1
  116. package/engine/local-client.lua +298 -58
  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/barrage.d.ts +12 -0
  146. package/engine/object-data/entry/ability-type/barrage.lua +52 -0
  147. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  148. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  149. package/engine/object-data/entry/ability-type/blank-configurable.lua +2 -2
  150. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  151. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  152. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  153. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  154. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  155. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  156. package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
  157. package/engine/object-data/entry/ability-type/channel.lua +3 -3
  158. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  159. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  160. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  161. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  162. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  163. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  164. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  165. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  166. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  167. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  168. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  169. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  170. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  171. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  172. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  173. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  174. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  175. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  176. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  177. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  178. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  179. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  180. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  181. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  182. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  183. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  184. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  185. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  186. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  187. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  188. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  189. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  190. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  191. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  192. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  193. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  194. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  195. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  196. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  197. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  198. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  199. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  200. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  201. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  202. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  203. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  204. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  205. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  206. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  207. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  208. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  209. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  210. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  211. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  212. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  213. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  214. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  215. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  216. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  217. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  218. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  219. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  220. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  221. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  222. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  223. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  224. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  225. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  226. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  227. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  228. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  229. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  230. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  231. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  232. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  233. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  234. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  235. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  236. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  237. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  238. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  239. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  240. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  241. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  242. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  243. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  244. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  245. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  246. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  247. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  248. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  249. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  250. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  251. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  252. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  253. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  254. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  255. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  256. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  257. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  258. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  259. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  260. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  261. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  262. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  263. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  264. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  265. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  266. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  267. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  268. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  269. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  270. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  271. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  272. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  273. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  274. package/engine/object-data/entry/ability-type.d.ts +35 -8
  275. package/engine/object-data/entry/ability-type.lua +299 -11
  276. package/engine/object-data/entry/buff-type/applicable.lua +122 -111
  277. package/engine/object-data/entry/buff-type.d.ts +6 -2
  278. package/engine/object-data/entry/buff-type.lua +26 -0
  279. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  280. package/engine/object-data/entry/destructible-type.lua +181 -0
  281. package/engine/object-data/entry/item-type.d.ts +18 -3
  282. package/engine/object-data/entry/item-type.lua +84 -0
  283. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  284. package/engine/object-data/entry/lightning-type.lua +1 -1
  285. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  286. package/engine/object-data/entry/unit-type.d.ts +57 -2
  287. package/engine/object-data/entry/unit-type.lua +412 -64
  288. package/engine/object-data/entry/upgrade.d.ts +2 -2
  289. package/engine/object-data/entry.d.ts +6 -1
  290. package/engine/object-data/entry.lua +8 -0
  291. package/engine/object-field/ability.lua +2 -2
  292. package/engine/object-field/item.d.ts +22 -0
  293. package/engine/object-field/item.lua +118 -0
  294. package/engine/object-field/unit.d.ts +7 -4
  295. package/engine/object-field/unit.lua +4 -0
  296. package/engine/object-field.d.ts +3 -1
  297. package/engine/object-field.lua +177 -119
  298. package/engine/random.d.ts +1 -0
  299. package/engine/random.lua +8 -0
  300. package/engine/standard/entries/ability-type.d.ts +3102 -7
  301. package/engine/standard/entries/ability-type.lua +0 -6
  302. package/engine/standard/entries/buff-type.d.ts +45 -0
  303. package/engine/standard/entries/buff-type.lua +43 -0
  304. package/engine/standard/entries/item-type.d.ts +1299 -0
  305. package/engine/standard/entries/item-type.lua +2 -0
  306. package/engine/standard/entries/lightning-type.d.ts +42 -15
  307. package/engine/standard/entries/lightning-type.lua +0 -14
  308. package/engine/standard/entries/unit-type.d.ts +5 -0
  309. package/engine/standard/entries/unit-type.lua +5 -0
  310. package/engine/standard/fields/ability.d.ts +2 -2
  311. package/engine/standard/fields/ability.lua +2 -2
  312. package/engine/standard/fields/item.d.ts +4 -0
  313. package/engine/standard/fields/item.lua +6 -0
  314. package/engine/standard/fields/unit.d.ts +11 -5
  315. package/engine/standard/fields/unit.lua +13 -4
  316. package/engine/text-tag.d.ts +17 -1
  317. package/engine/text-tag.lua +77 -40
  318. package/engine/unit.d.ts +8 -1
  319. package/engine/unit.lua +8 -1
  320. package/event.d.ts +1 -1
  321. package/lualib_bundle.lua +1 -1
  322. package/math.d.ts +2 -0
  323. package/math.lua +14 -0
  324. package/network.lua +25 -1
  325. package/objutil/buff.lua +10 -8
  326. package/objutil/object.lua +1 -1
  327. package/operation.d.ts +8 -1
  328. package/operation.lua +38 -18
  329. package/package.json +3 -23
  330. package/patch-lua.lua +15 -0
  331. package/utility/arrays.d.ts +7 -1
  332. package/utility/arrays.lua +17 -0
  333. package/utility/linked-map.d.ts +35 -0
  334. package/utility/linked-map.lua +107 -0
  335. package/utility/linked-set.d.ts +3 -1
  336. package/utility/linked-set.lua +27 -0
  337. package/utility/random.d.ts +102 -0
  338. package/utility/random.lua +273 -0
  339. package/utility/records.lua +20 -1
  340. package/utility/unordered-map.d.ts +27 -0
  341. package/utility/unordered-map.lua +99 -0
  342. package/engine/internal/unit/item.lua +0 -78
  343. /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
  344. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  345. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  346. /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
@@ -64,6 +62,8 @@ local ____ability = require("engine.internal.item.ability")
64
62
  local doUnitAbilityAction = ____ability.doUnitAbilityAction
65
63
  local ____synchronization = require("engine.synchronization")
66
64
  local synchronizer = ____synchronization.synchronizer
65
+ local ____linked_2Dmap = require("utility.linked-map")
66
+ local LinkedMap = ____linked_2Dmap.LinkedMap
67
67
  local match = string.match
68
68
  local ____tostring = _G.tostring
69
69
  local setUnitAnimation = SetUnitAnimation
@@ -73,16 +73,12 @@ local getUnitRealField = BlzGetUnitRealField
73
73
  local getHeroStr = GetHeroStr
74
74
  local getHeroAgi = GetHeroAgi
75
75
  local getHeroInt = GetHeroInt
76
- local setHeroStr = SetHeroStr
77
- local setHeroAgi = SetHeroAgi
78
- local setHeroInt = SetHeroInt
79
76
  local getUnitBooleanField = BlzGetUnitBooleanField
80
77
  local getUnitStringField = BlzGetUnitStringField
81
78
  local setUnitIntegerField = BlzSetUnitIntegerField
82
79
  local setUnitRealField = BlzSetUnitRealField
83
80
  local setUnitBooleanField = BlzSetUnitBooleanField
84
81
  local setUnitStringField = BlzSetUnitStringField
85
- local setUnitScale = SetUnitScale
86
82
  local setUnitPosition = SetUnitPosition
87
83
  local setUnitTimeScale = SetUnitTimeScale
88
84
  local getHandleId = GetHandleId
@@ -110,7 +106,6 @@ local getUnitWeaponStringField = BlzGetUnitWeaponStringField
110
106
  local setUnitWeaponStringField = BlzSetUnitWeaponStringField
111
107
  local getUnitAbilityLevel = GetUnitAbilityLevel
112
108
  local unitDisableAbility = BlzUnitDisableAbility
113
- local unitInterruptAttack = BlzUnitInterruptAttack
114
109
  local isUnitInvisible = IsUnitInvisible
115
110
  local isUnitVisible = IsUnitVisible
116
111
  local getUnitX = GetUnitX
@@ -386,15 +381,27 @@ local modifiers = {
386
381
  end,
387
382
  armor = function(unit, value)
388
383
  if UnitAddAbility(unit, armorBonusAbilityId) then
389
- assert(UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId))
384
+ assert(
385
+ UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
386
+ "armor bonus ability must be made permanent",
387
+ unit
388
+ )
390
389
  end
391
- local ability = assert(BlzGetUnitAbility(unit, armorBonusAbilityId))
392
- assert(BlzSetAbilityRealLevelField(
393
- ability,
394
- armorBonusField,
395
- 0,
396
- BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
397
- ))
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
+ )
398
405
  end
399
406
  }
400
407
  local getters = {
@@ -583,8 +590,6 @@ __TS__SetDescriptor(
583
590
  },
584
591
  true
585
592
  )
586
- local unitInventorySize = UnitInventorySize
587
- local unitItemInSlot = UnitItemInSlot
588
593
  local getItemAbility = BlzGetItemAbility
589
594
  local getUnitAbility = BlzGetUnitAbility
590
595
  local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
@@ -602,8 +607,8 @@ local function retrieveAbility(unit, ability, abilityId)
602
607
  ____exports.Unit:of(unit)
603
608
  )
604
609
  end
605
- for i = 0, unitInventorySize(unit) - 1 do
606
- local item = unitItemInSlot(unit, i)
610
+ for i = 0, UnitInventorySize(unit) - 1 do
611
+ local item = UnitItemInSlot(unit, i)
607
612
  if getItemAbility(item, abilityId) == ability then
608
613
  return ItemAbility:of(
609
614
  ability,
@@ -648,13 +653,17 @@ local fieldSetters = {
648
653
  }
649
654
  local dummies = {}
650
655
  for ____, player in ipairs(Player.all) do
651
- local dummy = assert(createUnit(
652
- player.handle,
653
- dummyUnitId,
654
- 0,
655
- 0,
656
- 270
657
- ))
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
+ )
658
667
  ShowUnit(dummy, false)
659
668
  dummies[player] = dummy
660
669
  end
@@ -697,41 +706,57 @@ function Unit.prototype.____constructor(self, handle)
697
706
  nextSyncId = ____nextSyncId_1 + 1
698
707
  self.syncId = ____nextSyncId_1
699
708
  self._owner = Player:of(getOwningPlayer(handle))
700
- assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
701
- 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
+ )
702
719
  if unitAddAbility(
703
720
  handle,
704
721
  fourCC("Amrf")
705
722
  ) then
706
- assert(unitRemoveAbility(
707
- handle,
708
- fourCC("Amrf")
709
- ))
723
+ assert(
724
+ unitRemoveAbility(
725
+ handle,
726
+ fourCC("Amrf")
727
+ ),
728
+ "fly ability must be removed after addition",
729
+ self
730
+ )
710
731
  end
711
732
  unitBySyncId[self.syncId] = self
712
733
  local ____ = self.abilities
713
734
  end
714
- function Unit.prototype.getEvent(self, event, collector)
715
- self.events = self.events or ({})
716
- local eventId = GetHandleId(event)
717
- if not self.events[eventId] then
718
- 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(
719
741
  TriggerEvent,
720
742
  function(trigger)
721
- TriggerRegisterUnitEvent(trigger, self.handle, event)
743
+ TriggerRegisterUnitEvent(trigger, self.handle, jevent)
722
744
  end,
723
745
  collector or (function() return {} end)
724
746
  )
747
+ self.events:put(eventId, event)
725
748
  end
726
- 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))
727
756
  end
728
757
  function Unit.prototype.onDestroy(self)
729
758
  local handle = self.handle
730
- self[108] = getUnitX(handle)
731
- self[109] = getUnitY(handle)
732
- if not self._owner then
733
- self._owner = Player:of(getOwningPlayer(handle))
734
- end
759
+ self:saveData()
735
760
  local abilities = self.abilities
736
761
  for ____, ability in ipairs(abilities) do
737
762
  ability:destroy()
@@ -749,7 +774,9 @@ function Unit.prototype.onDestroy(self)
749
774
  end
750
775
  local eventsToDestroy = self._eventsToDestroy
751
776
  if eventsToDestroy ~= nil then
752
- forEach(eventsToDestroy, "destroy")
777
+ for ____, event in ipairs(eventsToDestroy) do
778
+ event:destroy()
779
+ end
753
780
  end
754
781
  if getUnitAbilityLevel(handle, leaveDetectAbilityId) > 0 then
755
782
  unitRemoveAbility(handle, leaveDetectAbilityId)
@@ -767,7 +794,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
767
794
  self._attackHandlers = handlers
768
795
  if #handlers == 1 then
769
796
  local handle = self.handle
770
- 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
+ )
771
802
  end
772
803
  return handler
773
804
  end
@@ -815,13 +846,19 @@ function Unit.prototype.isInvisibleTo(self, player)
815
846
  return isUnitInvisible(self.handle, player.handle)
816
847
  end
817
848
  function Unit.prototype.isInRangeOf(self, x, y, range)
818
- local ____temp_3
849
+ local ____temp_4
819
850
  if type(x) == "number" then
820
- ____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
851
+ ____temp_4 = isUnitInRangeXY(self.handle, x, y, range)
821
852
  else
822
- ____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
823
860
  end
824
- return ____temp_3
861
+ return ____temp_4
825
862
  end
826
863
  function Unit.prototype.isAllyOf(self, unit)
827
864
  return isUnitAlly(
@@ -879,14 +916,14 @@ function Unit.prototype.kill(self)
879
916
  killUnit(self.handle)
880
917
  end
881
918
  function Unit.prototype.revive(self, x, y, doEffect)
882
- local ____ReviveHero_6 = ReviveHero
883
- local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
884
- local ____doEffect_4 = doEffect
885
- if ____doEffect_4 == nil then
886
- ____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
887
924
  end
888
- __TS__SparseArrayPush(____array_5, ____doEffect_4)
889
- ____ReviveHero_6(__TS__SparseArraySpread(____array_5))
925
+ __TS__SparseArrayPush(____array_6, ____doEffect_5)
926
+ ____ReviveHero_7(__TS__SparseArraySpread(____array_6))
890
927
  end
891
928
  function Unit.prototype.healTarget(self, target, amount)
892
929
  if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
@@ -926,7 +963,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
926
963
  return UnitDropItemSlot(self.handle, item.handle, slot)
927
964
  end
928
965
  function Unit.prototype.itemInSlot(self, slot)
929
- return Item:of(unitItemInSlot(self.handle, slot))
966
+ return Item:of(UnitItemInSlot(self.handle, slot))
930
967
  end
931
968
  function Unit.prototype.addAbility(self, abilityId)
932
969
  local ability = UnitAbility:of(
@@ -962,6 +999,9 @@ function Unit.prototype.removeAbility(self, abilityTypeId)
962
999
  if abilities[i].typeId == abilityTypeId then
963
1000
  local ability = abilities[i]
964
1001
  tremove(abilities, i)
1002
+ if ability.state == 2 then
1003
+ break
1004
+ end
965
1005
  ability:destroy()
966
1006
  return true
967
1007
  end
@@ -980,24 +1020,6 @@ end
980
1020
  function Unit.prototype.endAbilityCooldown(self, abilityId)
981
1021
  BlzEndUnitAbilityCooldown(self.handle, abilityId)
982
1022
  end
983
- function Unit.prototype.interruptMovement(self)
984
- local handle = self.handle
985
- unitDisableAbility(
986
- handle,
987
- fourCC("Amov"),
988
- true,
989
- false
990
- )
991
- unitDisableAbility(
992
- handle,
993
- fourCC("Amov"),
994
- false,
995
- false
996
- )
997
- end
998
- function Unit.prototype.interruptAttack(self)
999
- unitInterruptAttack(self.handle)
1000
- end
1001
1023
  function Unit.prototype.interruptCast(self, abilityId)
1002
1024
  local handle = self.handle
1003
1025
  unitDisableAbility(handle, abilityId, true, false)
@@ -1302,7 +1324,7 @@ __TS__SetDescriptor(
1302
1324
  Unit.prototype,
1303
1325
  "isStunned",
1304
1326
  {get = function(self)
1305
- return getUnitCurrentOrder(self.handle) == orderId("stunned")
1327
+ return getUnitCurrentOrder(self.handle) == 851973
1306
1328
  end},
1307
1329
  true
1308
1330
  )
@@ -1392,19 +1414,6 @@ __TS__SetDescriptor(
1392
1414
  },
1393
1415
  true
1394
1416
  )
1395
- __TS__SetDescriptor(
1396
- Unit.prototype,
1397
- "strengthBase",
1398
- {
1399
- get = function(self)
1400
- return getHeroStr(self.handle, false)
1401
- end,
1402
- set = function(self, strengthBase)
1403
- setHeroStr(self.handle, strengthBase, true)
1404
- end
1405
- },
1406
- true
1407
- )
1408
1417
  __TS__SetDescriptor(
1409
1418
  Unit.prototype,
1410
1419
  "strengthBonus",
@@ -1422,19 +1431,6 @@ __TS__SetDescriptor(
1422
1431
  end},
1423
1432
  true
1424
1433
  )
1425
- __TS__SetDescriptor(
1426
- Unit.prototype,
1427
- "agilityBase",
1428
- {
1429
- get = function(self)
1430
- return getHeroAgi(self.handle, false)
1431
- end,
1432
- set = function(self, agilityBase)
1433
- setHeroAgi(self.handle, agilityBase, true)
1434
- end
1435
- },
1436
- true
1437
- )
1438
1434
  __TS__SetDescriptor(
1439
1435
  Unit.prototype,
1440
1436
  "agilityBonus",
@@ -1452,19 +1448,6 @@ __TS__SetDescriptor(
1452
1448
  end},
1453
1449
  true
1454
1450
  )
1455
- __TS__SetDescriptor(
1456
- Unit.prototype,
1457
- "intelligenceBase",
1458
- {
1459
- get = function(self)
1460
- return getHeroInt(self.handle, false)
1461
- end,
1462
- set = function(self, intelligenceBase)
1463
- setHeroInt(self.handle, intelligenceBase, true)
1464
- end
1465
- },
1466
- true
1467
- )
1468
1451
  __TS__SetDescriptor(
1469
1452
  Unit.prototype,
1470
1453
  "intelligenceBonus",
@@ -1517,13 +1500,13 @@ __TS__SetDescriptor(
1517
1500
  end,
1518
1501
  set = function(self, isTeamGlowVisible)
1519
1502
  BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
1520
- local ____temp_7
1503
+ local ____temp_8
1521
1504
  if not isTeamGlowVisible then
1522
- ____temp_7 = true
1505
+ ____temp_8 = true
1523
1506
  else
1524
- ____temp_7 = nil
1507
+ ____temp_8 = nil
1525
1508
  end
1526
- self[107] = ____temp_7
1509
+ self[107] = ____temp_8
1527
1510
  end
1528
1511
  },
1529
1512
  true
@@ -1903,7 +1886,7 @@ __TS__SetDescriptor(
1903
1886
  Unit.prototype,
1904
1887
  "pathingCollisionRange",
1905
1888
  {get = function(self)
1906
- return 16 * (min(
1889
+ return 16 * (math.min(
1907
1890
  getUnitCollisionSize(self.handle) // 16,
1908
1891
  3
1909
1892
  ) + 1)
@@ -2013,30 +1996,6 @@ __TS__SetDescriptor(
2013
1996
  end},
2014
1997
  true
2015
1998
  )
2016
- __TS__SetDescriptor(
2017
- Unit.prototype,
2018
- "onUnitInRange",
2019
- {get = function(self)
2020
- local handle = self.handle
2021
- local onUnitInRange = setmetatable(
2022
- {},
2023
- {__index = function(self, value)
2024
- local event = __TS__New(
2025
- TriggerEvent,
2026
- function(trigger)
2027
- TriggerRegisterUnitInRangeSimple(trigger, value, handle)
2028
- end,
2029
- function() return ____exports.Unit:of(handle) end
2030
- )
2031
- rawset(self, value, event)
2032
- return event
2033
- end}
2034
- )
2035
- rawset(self, "onUnitInRange", onUnitInRange)
2036
- return onUnitInRange
2037
- end},
2038
- true
2039
- )
2040
1999
  __TS__SetDescriptor(
2041
2000
  Unit.prototype,
2042
2001
  "onManaEqual",
@@ -2172,6 +2131,11 @@ __TS__SetDescriptor(
2172
2131
  end},
2173
2132
  true
2174
2133
  )
2134
+ Unit.levelChangedEvent = __TS__New(
2135
+ ____exports.UnitTriggerEvent,
2136
+ EVENT_PLAYER_HERO_LEVEL,
2137
+ function() return ____exports.Unit:of(getTriggerUnit()) end
2138
+ )
2175
2139
  Unit.deathEvent = __TS__New(
2176
2140
  ____exports.UnitTriggerEvent,
2177
2141
  EVENT_PLAYER_UNIT_DEATH,
@@ -2189,7 +2153,7 @@ Unit.onResurrect = __TS__New(
2189
2153
  ____exports.Unit.deathEvent:addListener(function(unit)
2190
2154
  dead[unit] = true
2191
2155
  end)
2192
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2156
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2193
2157
  if dead[unit] and not IsUnitType(unit.handle, UNIT_TYPE_DEAD) then
2194
2158
  dead[unit] = false
2195
2159
  invoke(event, unit)
@@ -2206,7 +2170,7 @@ Unit.morphEvent = __TS__New(
2206
2170
  invoke(event, unit)
2207
2171
  end
2208
2172
  end
2209
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2173
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2210
2174
  if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
2211
2175
  Timer:run(ifNotLeft, unit)
2212
2176
  end
@@ -2247,25 +2211,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
2247
2211
  InitializingEvent,
2248
2212
  function(event)
2249
2213
  local function listener(unit, id)
2250
- local ____GetSpellTargetUnit_result_10
2214
+ local ____GetSpellTargetUnit_result_11
2251
2215
  if GetSpellTargetUnit() then
2252
- ____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
2216
+ ____GetSpellTargetUnit_result_11 = ____exports.Unit:of(GetSpellTargetUnit())
2253
2217
  else
2254
- local ____GetSpellTargetItem_result_9
2218
+ local ____GetSpellTargetItem_result_10
2255
2219
  if GetSpellTargetItem() then
2256
- ____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
2220
+ ____GetSpellTargetItem_result_10 = Item:of(GetSpellTargetItem())
2257
2221
  else
2258
- local ____GetSpellTargetDestructable_result_8
2222
+ local ____GetSpellTargetDestructable_result_9
2259
2223
  if GetSpellTargetDestructable() then
2260
- ____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
2224
+ ____GetSpellTargetDestructable_result_9 = Destructable:of(GetSpellTargetDestructable())
2261
2225
  else
2262
- ____GetSpellTargetDestructable_result_8 = nil
2226
+ ____GetSpellTargetDestructable_result_9 = nil
2263
2227
  end
2264
- ____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
2228
+ ____GetSpellTargetItem_result_10 = ____GetSpellTargetDestructable_result_9
2265
2229
  end
2266
- ____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
2230
+ ____GetSpellTargetUnit_result_11 = ____GetSpellTargetItem_result_10
2267
2231
  end
2268
- local target = ____GetSpellTargetUnit_result_10
2232
+ local target = ____GetSpellTargetUnit_result_11
2269
2233
  if target then
2270
2234
  invoke(event, unit, id, target)
2271
2235
  end
@@ -2673,7 +2637,7 @@ Unit.itemDroppedEvent = __TS__New(
2673
2637
  function()
2674
2638
  local unit = getTriggerUnit()
2675
2639
  local item = getManipulatedItem()
2676
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2640
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2677
2641
  return ____exports.Unit:of(unit), Item:of(item)
2678
2642
  end
2679
2643
  return IgnoreEvent
@@ -2685,10 +2649,10 @@ Unit.itemPickedUpEvent = __TS__New(
2685
2649
  function()
2686
2650
  local unitHandle = getTriggerUnit()
2687
2651
  local itemHandle = getManipulatedItem()
2688
- if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
2652
+ if getUnitTypeId(unitHandle) ~= dummyUnitId and not isItemIgnoredInEvents(itemHandle) then
2689
2653
  local unit = ____exports.Unit:of(unitHandle)
2690
2654
  local item = Item:of(itemHandle)
2691
- if item.owner ~= unit then
2655
+ if ownerByItem[item] ~= unit then
2692
2656
  return unit, item
2693
2657
  end
2694
2658
  end
@@ -2701,17 +2665,12 @@ Unit.itemUsedEvent = __TS__New(
2701
2665
  function()
2702
2666
  local unit = getTriggerUnit()
2703
2667
  local item = getManipulatedItem()
2704
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2668
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2705
2669
  return ____exports.Unit:of(unit), Item:of(item)
2706
2670
  end
2707
2671
  return IgnoreEvent
2708
2672
  end
2709
2673
  )
2710
- Unit.itemStackedEvent = __TS__New(
2711
- ____exports.UnitTriggerEvent,
2712
- EVENT_PLAYER_UNIT_STACK_ITEM,
2713
- function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
2714
- )
2715
2674
  __TS__ObjectDefineProperty(
2716
2675
  Unit,
2717
2676
  "itemChargesChangedEvent",
@@ -2727,51 +2686,6 @@ __TS__ObjectDefineProperty(
2727
2686
  return event
2728
2687
  end}
2729
2688
  )
2730
- __TS__ObjectDefineProperty(
2731
- Unit,
2732
- "itemUseOrderEvent",
2733
- {get = function(self)
2734
- local event = __TS__New(Event)
2735
- for order = orderId("useslot0"), orderId("useslot5") do
2736
- local slot = order - orderId("useslot0")
2737
- local function listener(unit)
2738
- local item = unit.items[slot + 1]
2739
- if item ~= nil then
2740
- invoke(event, unit, item)
2741
- end
2742
- end
2743
- self.onImmediateOrder[order]:addListener(listener)
2744
- self.onTargetOrder[order]:addListener(listener)
2745
- self.onPointOrder[order]:addListener(listener)
2746
- end
2747
- rawset(self, "itemUseOrderEvent", event)
2748
- return event
2749
- end}
2750
- )
2751
- __TS__ObjectDefineProperty(
2752
- Unit,
2753
- "itemMoveOrderEvent",
2754
- {get = function(self)
2755
- local event = __TS__New(Event)
2756
- for order = orderId("moveslot0"), orderId("moveslot5") do
2757
- local slotTo = order - orderId("moveslot0")
2758
- self.onTargetOrder[order]:addListener(function(unit, item)
2759
- local slotFrom = unit.items:findSlot(item)
2760
- if slotFrom ~= nil then
2761
- invoke(
2762
- event,
2763
- unit,
2764
- item,
2765
- slotFrom,
2766
- slotTo
2767
- )
2768
- end
2769
- end)
2770
- end
2771
- rawset(self, "itemMoveOrderEvent", event)
2772
- return event
2773
- end}
2774
- )
2775
2689
  __TS__ObjectDefineProperty(
2776
2690
  Unit,
2777
2691
  "onCreate",
@@ -2818,11 +2732,7 @@ Unit.synchronize = synchronizer(
2818
2732
  function(____, id) return fourCC(id) end
2819
2733
  )
2820
2734
  end)
2821
- for ____, leaveOrderId in ipairs({
2822
- orderId("undefend"),
2823
- orderId("magicundefense"),
2824
- orderId("unimmolation")
2825
- }) do
2735
+ for ____, leaveOrderId in ipairs({852056, 852479, 852178}) do
2826
2736
  ____exports.Unit.onImmediateOrder[leaveOrderId]:addListener(function(unit)
2827
2737
  local handle = unit.handle
2828
2738
  for i = 1, #leaveAbilityIds do
@@ -2830,7 +2740,8 @@ Unit.synchronize = synchronizer(
2830
2740
  return
2831
2741
  end
2832
2742
  end
2833
- unit:destroy()
2743
+ unit:saveData()
2744
+ Timer:run(unit, "destroy")
2834
2745
  end)
2835
2746
  end
2836
2747
  end)(Unit)
@@ -264,8 +264,8 @@ Timer.onPeriod[UPDATE_PERIOD]:addListener(function()
264
264
  local sourceUnitFacing = rad(getUnitFacing(sourceUnit) - 90)
265
265
  local sourceUnitFacingCos = cos(sourceUnitFacing)
266
266
  local sourceUnitFacingSin = sin(sourceUnitFacing)
267
- local sourceUnitOffsetX = sourceUnitMissileData.launchOffsetX + sourceUnitMissileData.launchVisualOffsetX + lightning[103]
268
- local sourceUnitOffsetY = sourceUnitMissileData.launchOffsetY + sourceUnitMissileData.launchVisualOffsetY + lightning[104]
267
+ local sourceUnitOffsetX = sourceUnitMissileData.launchOffsetX + sourceUnitMissileData.launchVisualOffsetY + lightning[103]
268
+ local sourceUnitOffsetY = sourceUnitMissileData.launchOffsetY + sourceUnitMissileData.launchVisualOffsetX + lightning[104]
269
269
  moveLightningEx(
270
270
  lightning.handle,
271
271
  lightning[100],
@@ -283,8 +283,8 @@ Timer.onPeriod[UPDATE_PERIOD]:addListener(function()
283
283
  local sourceUnitFacing = rad(getUnitFacing(sourceUnit) - 90)
284
284
  local sourceUnitFacingCos = cos(sourceUnitFacing)
285
285
  local sourceUnitFacingSin = sin(sourceUnitFacing)
286
- local sourceUnitOffsetX = sourceUnitMissileData.launchOffsetX + sourceUnitMissileData.launchVisualOffsetX + lightning[103]
287
- local sourceUnitOffsetY = sourceUnitMissileData.launchOffsetY + sourceUnitMissileData.launchVisualOffsetY + lightning[104]
286
+ local sourceUnitOffsetX = sourceUnitMissileData.launchOffsetX + sourceUnitMissileData.launchVisualOffsetY + lightning[103]
287
+ local sourceUnitOffsetY = sourceUnitMissileData.launchOffsetY + sourceUnitMissileData.launchVisualOffsetX + lightning[104]
288
288
  moveLightningEx(
289
289
  lightning.handle,
290
290
  lightning[100],