warscript 0.0.1-dev.545d6cc → 0.0.1-dev.54c2a71

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 (329) 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/player.d.ts +2 -1
  10. package/core/types/player.lua +18 -13
  11. package/core/types/playerColor.lua +4 -3
  12. package/core/types/sound.d.ts +1 -1
  13. package/core/types/sound.lua +14 -9
  14. package/core/types/tileCell.d.ts +7 -2
  15. package/core/types/tileCell.lua +11 -0
  16. package/core/types/unit.d.ts +5 -0
  17. package/core/types/unit.lua +5 -0
  18. package/core/util.d.ts +3 -1
  19. package/core/util.lua +109 -3
  20. package/decl/native.d.ts +705 -7
  21. package/destroyable.d.ts +1 -0
  22. package/destroyable.lua +9 -0
  23. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  24. package/engine/ability-type-extended-tooltip.lua +44 -0
  25. package/engine/behavior.d.ts +4 -2
  26. package/engine/behavior.lua +69 -11
  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.d.ts +11 -5
  35. package/engine/behaviour/ability.lua +54 -0
  36. package/engine/behaviour/unit/stun-immunity.d.ts +1 -1
  37. package/engine/behaviour/unit/stun-immunity.lua +5 -4
  38. package/engine/behaviour/unit.d.ts +1 -0
  39. package/engine/behaviour/unit.lua +14 -3
  40. package/engine/buff.d.ts +64 -25
  41. package/engine/buff.lua +345 -156
  42. package/engine/index.d.ts +2 -1
  43. package/engine/internal/ability.d.ts +7 -0
  44. package/engine/internal/ability.lua +65 -36
  45. package/engine/internal/item/fields.d.ts +12 -0
  46. package/engine/internal/item/fields.lua +33 -0
  47. package/engine/internal/item/owner-cache.d.ts +5 -0
  48. package/engine/internal/item/owner-cache.lua +4 -0
  49. package/engine/internal/item+owner.d.ts +2 -0
  50. package/engine/internal/item+owner.lua +27 -4
  51. package/engine/internal/item.d.ts +20 -5
  52. package/engine/internal/item.lua +146 -57
  53. package/engine/internal/mechanics/cast-ability.lua +6 -3
  54. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  55. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  56. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  57. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  58. package/engine/internal/object-data/health-bonus.lua +16 -0
  59. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  60. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  61. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  62. package/engine/internal/object-data/mana-bonus.lua +16 -0
  63. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  64. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  65. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  66. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  67. package/engine/internal/unit/appearance.d.ts +15 -0
  68. package/engine/internal/unit/appearance.lua +85 -0
  69. package/engine/internal/unit/attributes.d.ts +17 -0
  70. package/engine/internal/unit/attributes.lua +46 -0
  71. package/engine/internal/unit/bonus.d.ts +14 -0
  72. package/engine/internal/unit/bonus.lua +102 -8
  73. package/engine/internal/unit/buff.d.ts +2 -2
  74. package/engine/internal/unit/buff.lua +34 -19
  75. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  76. package/engine/internal/unit/equipment-inventory.lua +233 -0
  77. package/engine/internal/unit/expiration-timer.lua +1 -1
  78. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  79. package/engine/internal/unit/extended-inventory.lua +99 -0
  80. package/engine/internal/unit/fly-height.lua +3 -3
  81. package/engine/internal/unit/ignore-events-items.lua +10 -1
  82. package/engine/internal/unit/interrupts.d.ts +12 -0
  83. package/engine/internal/unit/interrupts.lua +28 -0
  84. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  85. package/engine/internal/unit/inventory.lua +87 -0
  86. package/engine/internal/unit/item-container.d.ts +25 -0
  87. package/engine/internal/unit/item-container.lua +11 -0
  88. package/engine/internal/unit/item-order-events.d.ts +17 -0
  89. package/engine/internal/unit/item-order-events.lua +67 -0
  90. package/engine/internal/unit/item-slot.d.ts +27 -0
  91. package/engine/internal/unit/item-slot.lua +92 -0
  92. package/engine/internal/unit/order.d.ts +3 -3
  93. package/engine/internal/unit/order.lua +10 -10
  94. package/engine/internal/unit/range-event.d.ts +12 -0
  95. package/engine/internal/unit/range-event.lua +90 -0
  96. package/engine/internal/unit/scale.lua +3 -3
  97. package/engine/internal/unit+ability.d.ts +2 -1
  98. package/engine/internal/unit+ability.lua +63 -2
  99. package/engine/internal/unit+bonus.lua +3 -3
  100. package/engine/internal/unit+damage.d.ts +9 -0
  101. package/engine/internal/unit+damage.lua +33 -0
  102. package/engine/internal/unit+rally.lua +9 -31
  103. package/engine/internal/unit-missile-data.lua +58 -32
  104. package/engine/internal/unit-missile-launch.lua +25 -18
  105. package/engine/internal/unit.d.ts +4 -19
  106. package/engine/internal/unit.lua +129 -221
  107. package/engine/local-client.d.ts +27 -1
  108. package/engine/local-client.lua +298 -58
  109. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  110. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  111. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  112. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  113. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  114. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  115. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  116. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  117. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  118. package/engine/object-data/auxiliary/item-class.lua +2 -0
  119. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  120. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  121. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  122. package/engine/object-data/auxiliary/order-type.lua +2 -0
  123. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  124. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  125. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  126. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  127. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  128. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  129. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  130. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  131. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  132. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  133. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  134. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  135. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  136. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  137. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  138. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  139. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  140. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  141. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  142. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  143. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  144. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  145. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  146. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  147. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  148. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  149. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  150. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  151. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  152. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  153. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  154. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  155. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  156. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  157. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  158. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  159. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  160. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  161. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  162. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  163. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  164. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  165. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  166. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  167. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  168. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  169. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  170. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  171. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  172. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  173. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  174. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  175. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  176. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  177. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  178. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  179. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  180. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  181. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  182. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  183. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  184. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  185. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  186. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  187. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  188. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  189. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  190. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  191. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  192. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  193. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  194. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  195. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  196. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  197. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  198. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  199. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  200. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  201. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  202. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  203. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  204. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  205. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  206. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  207. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  208. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  209. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  210. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  211. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  212. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  213. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  214. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  215. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  216. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  217. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  218. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  219. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  220. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  221. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  222. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  223. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  224. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  225. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  226. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  227. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  228. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  229. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  230. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  231. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  232. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  233. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  234. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  235. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  236. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  237. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  238. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  239. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  240. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  241. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  242. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  243. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  244. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  245. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  246. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  247. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  248. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  249. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  250. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  251. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  252. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  253. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  254. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  255. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  256. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  257. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  258. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  259. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  260. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  261. package/engine/object-data/entry/ability-type.d.ts +31 -6
  262. package/engine/object-data/entry/ability-type.lua +283 -8
  263. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  264. package/engine/object-data/entry/buff-type.d.ts +6 -2
  265. package/engine/object-data/entry/buff-type.lua +26 -0
  266. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  267. package/engine/object-data/entry/destructible-type.lua +181 -0
  268. package/engine/object-data/entry/item-type.d.ts +18 -3
  269. package/engine/object-data/entry/item-type.lua +84 -0
  270. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  271. package/engine/object-data/entry/lightning-type.lua +1 -1
  272. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  273. package/engine/object-data/entry/unit-type.d.ts +57 -2
  274. package/engine/object-data/entry/unit-type.lua +412 -64
  275. package/engine/object-data/entry/upgrade.d.ts +2 -2
  276. package/engine/object-data/entry.d.ts +6 -1
  277. package/engine/object-data/entry.lua +8 -0
  278. package/engine/object-field/ability.lua +2 -2
  279. package/engine/object-field/item.d.ts +22 -0
  280. package/engine/object-field/item.lua +118 -0
  281. package/engine/object-field/unit.d.ts +7 -4
  282. package/engine/object-field/unit.lua +4 -0
  283. package/engine/object-field.d.ts +3 -1
  284. package/engine/object-field.lua +177 -119
  285. package/engine/random.d.ts +1 -0
  286. package/engine/random.lua +8 -0
  287. package/engine/standard/entries/ability-type.d.ts +3102 -7
  288. package/engine/standard/entries/ability-type.lua +0 -6
  289. package/engine/standard/entries/buff-type.d.ts +45 -0
  290. package/engine/standard/entries/buff-type.lua +43 -0
  291. package/engine/standard/entries/item-type.d.ts +1299 -0
  292. package/engine/standard/entries/item-type.lua +2 -0
  293. package/engine/standard/entries/lightning-type.d.ts +42 -15
  294. package/engine/standard/entries/lightning-type.lua +0 -14
  295. package/engine/standard/entries/unit-type.d.ts +5 -0
  296. package/engine/standard/entries/unit-type.lua +5 -0
  297. package/engine/standard/fields/item.d.ts +4 -0
  298. package/engine/standard/fields/item.lua +6 -0
  299. package/engine/standard/fields/unit.d.ts +11 -5
  300. package/engine/standard/fields/unit.lua +13 -4
  301. package/engine/unit.d.ts +8 -1
  302. package/engine/unit.lua +8 -1
  303. package/event.d.ts +1 -1
  304. package/lualib_bundle.lua +1 -1
  305. package/math.d.ts +2 -0
  306. package/math.lua +14 -0
  307. package/network.lua +25 -1
  308. package/objutil/buff.lua +10 -8
  309. package/objutil/object.lua +1 -1
  310. package/operation.d.ts +8 -1
  311. package/operation.lua +38 -18
  312. package/package.json +3 -23
  313. package/patch-lua.lua +15 -0
  314. package/utility/arrays.d.ts +7 -1
  315. package/utility/arrays.lua +17 -0
  316. package/utility/linked-map.d.ts +35 -0
  317. package/utility/linked-map.lua +107 -0
  318. package/utility/linked-set.d.ts +3 -1
  319. package/utility/linked-set.lua +27 -0
  320. package/utility/random.d.ts +102 -0
  321. package/utility/random.lua +273 -0
  322. package/utility/records.lua +20 -1
  323. package/utility/unordered-map.d.ts +27 -0
  324. package/utility/unordered-map.lua +99 -0
  325. package/engine/internal/unit/item.lua +0 -78
  326. /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
  327. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  328. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  329. /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(
@@ -980,24 +1017,6 @@ end
980
1017
  function Unit.prototype.endAbilityCooldown(self, abilityId)
981
1018
  BlzEndUnitAbilityCooldown(self.handle, abilityId)
982
1019
  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
1020
  function Unit.prototype.interruptCast(self, abilityId)
1002
1021
  local handle = self.handle
1003
1022
  unitDisableAbility(handle, abilityId, true, false)
@@ -1302,7 +1321,7 @@ __TS__SetDescriptor(
1302
1321
  Unit.prototype,
1303
1322
  "isStunned",
1304
1323
  {get = function(self)
1305
- return getUnitCurrentOrder(self.handle) == orderId("stunned")
1324
+ return getUnitCurrentOrder(self.handle) == 851973
1306
1325
  end},
1307
1326
  true
1308
1327
  )
@@ -1392,19 +1411,6 @@ __TS__SetDescriptor(
1392
1411
  },
1393
1412
  true
1394
1413
  )
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
1414
  __TS__SetDescriptor(
1409
1415
  Unit.prototype,
1410
1416
  "strengthBonus",
@@ -1422,19 +1428,6 @@ __TS__SetDescriptor(
1422
1428
  end},
1423
1429
  true
1424
1430
  )
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
1431
  __TS__SetDescriptor(
1439
1432
  Unit.prototype,
1440
1433
  "agilityBonus",
@@ -1452,19 +1445,6 @@ __TS__SetDescriptor(
1452
1445
  end},
1453
1446
  true
1454
1447
  )
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
1448
  __TS__SetDescriptor(
1469
1449
  Unit.prototype,
1470
1450
  "intelligenceBonus",
@@ -1517,13 +1497,13 @@ __TS__SetDescriptor(
1517
1497
  end,
1518
1498
  set = function(self, isTeamGlowVisible)
1519
1499
  BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
1520
- local ____temp_7
1500
+ local ____temp_8
1521
1501
  if not isTeamGlowVisible then
1522
- ____temp_7 = true
1502
+ ____temp_8 = true
1523
1503
  else
1524
- ____temp_7 = nil
1504
+ ____temp_8 = nil
1525
1505
  end
1526
- self[107] = ____temp_7
1506
+ self[107] = ____temp_8
1527
1507
  end
1528
1508
  },
1529
1509
  true
@@ -1903,7 +1883,7 @@ __TS__SetDescriptor(
1903
1883
  Unit.prototype,
1904
1884
  "pathingCollisionRange",
1905
1885
  {get = function(self)
1906
- return 16 * (min(
1886
+ return 16 * (math.min(
1907
1887
  getUnitCollisionSize(self.handle) // 16,
1908
1888
  3
1909
1889
  ) + 1)
@@ -2013,30 +1993,6 @@ __TS__SetDescriptor(
2013
1993
  end},
2014
1994
  true
2015
1995
  )
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
1996
  __TS__SetDescriptor(
2041
1997
  Unit.prototype,
2042
1998
  "onManaEqual",
@@ -2172,6 +2128,11 @@ __TS__SetDescriptor(
2172
2128
  end},
2173
2129
  true
2174
2130
  )
2131
+ Unit.levelChangedEvent = __TS__New(
2132
+ ____exports.UnitTriggerEvent,
2133
+ EVENT_PLAYER_HERO_LEVEL,
2134
+ function() return ____exports.Unit:of(getTriggerUnit()) end
2135
+ )
2175
2136
  Unit.deathEvent = __TS__New(
2176
2137
  ____exports.UnitTriggerEvent,
2177
2138
  EVENT_PLAYER_UNIT_DEATH,
@@ -2189,7 +2150,7 @@ Unit.onResurrect = __TS__New(
2189
2150
  ____exports.Unit.deathEvent:addListener(function(unit)
2190
2151
  dead[unit] = true
2191
2152
  end)
2192
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2153
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2193
2154
  if dead[unit] and not IsUnitType(unit.handle, UNIT_TYPE_DEAD) then
2194
2155
  dead[unit] = false
2195
2156
  invoke(event, unit)
@@ -2206,7 +2167,7 @@ Unit.morphEvent = __TS__New(
2206
2167
  invoke(event, unit)
2207
2168
  end
2208
2169
  end
2209
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2170
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2210
2171
  if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
2211
2172
  Timer:run(ifNotLeft, unit)
2212
2173
  end
@@ -2247,25 +2208,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
2247
2208
  InitializingEvent,
2248
2209
  function(event)
2249
2210
  local function listener(unit, id)
2250
- local ____GetSpellTargetUnit_result_10
2211
+ local ____GetSpellTargetUnit_result_11
2251
2212
  if GetSpellTargetUnit() then
2252
- ____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
2213
+ ____GetSpellTargetUnit_result_11 = ____exports.Unit:of(GetSpellTargetUnit())
2253
2214
  else
2254
- local ____GetSpellTargetItem_result_9
2215
+ local ____GetSpellTargetItem_result_10
2255
2216
  if GetSpellTargetItem() then
2256
- ____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
2217
+ ____GetSpellTargetItem_result_10 = Item:of(GetSpellTargetItem())
2257
2218
  else
2258
- local ____GetSpellTargetDestructable_result_8
2219
+ local ____GetSpellTargetDestructable_result_9
2259
2220
  if GetSpellTargetDestructable() then
2260
- ____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
2221
+ ____GetSpellTargetDestructable_result_9 = Destructable:of(GetSpellTargetDestructable())
2261
2222
  else
2262
- ____GetSpellTargetDestructable_result_8 = nil
2223
+ ____GetSpellTargetDestructable_result_9 = nil
2263
2224
  end
2264
- ____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
2225
+ ____GetSpellTargetItem_result_10 = ____GetSpellTargetDestructable_result_9
2265
2226
  end
2266
- ____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
2227
+ ____GetSpellTargetUnit_result_11 = ____GetSpellTargetItem_result_10
2267
2228
  end
2268
- local target = ____GetSpellTargetUnit_result_10
2229
+ local target = ____GetSpellTargetUnit_result_11
2269
2230
  if target then
2270
2231
  invoke(event, unit, id, target)
2271
2232
  end
@@ -2673,7 +2634,7 @@ Unit.itemDroppedEvent = __TS__New(
2673
2634
  function()
2674
2635
  local unit = getTriggerUnit()
2675
2636
  local item = getManipulatedItem()
2676
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2637
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2677
2638
  return ____exports.Unit:of(unit), Item:of(item)
2678
2639
  end
2679
2640
  return IgnoreEvent
@@ -2685,10 +2646,10 @@ Unit.itemPickedUpEvent = __TS__New(
2685
2646
  function()
2686
2647
  local unitHandle = getTriggerUnit()
2687
2648
  local itemHandle = getManipulatedItem()
2688
- if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
2649
+ if getUnitTypeId(unitHandle) ~= dummyUnitId and not isItemIgnoredInEvents(itemHandle) then
2689
2650
  local unit = ____exports.Unit:of(unitHandle)
2690
2651
  local item = Item:of(itemHandle)
2691
- if item.owner ~= unit then
2652
+ if ownerByItem[item] ~= unit then
2692
2653
  return unit, item
2693
2654
  end
2694
2655
  end
@@ -2701,17 +2662,12 @@ Unit.itemUsedEvent = __TS__New(
2701
2662
  function()
2702
2663
  local unit = getTriggerUnit()
2703
2664
  local item = getManipulatedItem()
2704
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2665
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2705
2666
  return ____exports.Unit:of(unit), Item:of(item)
2706
2667
  end
2707
2668
  return IgnoreEvent
2708
2669
  end
2709
2670
  )
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
2671
  __TS__ObjectDefineProperty(
2716
2672
  Unit,
2717
2673
  "itemChargesChangedEvent",
@@ -2727,51 +2683,6 @@ __TS__ObjectDefineProperty(
2727
2683
  return event
2728
2684
  end}
2729
2685
  )
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
2686
  __TS__ObjectDefineProperty(
2776
2687
  Unit,
2777
2688
  "onCreate",
@@ -2818,11 +2729,7 @@ Unit.synchronize = synchronizer(
2818
2729
  function(____, id) return fourCC(id) end
2819
2730
  )
2820
2731
  end)
2821
- for ____, leaveOrderId in ipairs({
2822
- orderId("undefend"),
2823
- orderId("magicundefense"),
2824
- orderId("unimmolation")
2825
- }) do
2732
+ for ____, leaveOrderId in ipairs({852056, 852479, 852178}) do
2826
2733
  ____exports.Unit.onImmediateOrder[leaveOrderId]:addListener(function(unit)
2827
2734
  local handle = unit.handle
2828
2735
  for i = 1, #leaveAbilityIds do
@@ -2830,7 +2737,8 @@ Unit.synchronize = synchronizer(
2830
2737
  return
2831
2738
  end
2832
2739
  end
2833
- unit:destroy()
2740
+ unit:saveData()
2741
+ Timer:run(unit, "destroy")
2834
2742
  end)
2835
2743
  end
2836
2744
  end)(Unit)
@@ -9,15 +9,41 @@ export declare class LocalClient {
9
9
  static readonly locale: string;
10
10
  static get width(): number;
11
11
  static get height(): number;
12
+ static get isSD(): boolean;
12
13
  static get isHD(): boolean;
14
+ static get isDE(): boolean;
13
15
  static get graphicsMode(): GraphicsMode;
14
16
  static get isActive(): boolean;
15
- static pingMinimap(x: number, y: number, duration: number, ...parameters: [] | [red: number, green: number, blue: number, extraEffects?: boolean] | [color: Color, extraEffects?: boolean]): void;
17
+ static get isMinimized(): boolean;
18
+ static pingMinimap(x: number, y: number, duration: number, ...parameters: [] | [red: number, green: number, blue: number, flashy?: boolean] | [color: Color, flashy?: boolean]): void;
19
+ /** Local input state; do not use to branch synchronized game logic. */
20
+ static isKeyPressed(key: joskeytype): boolean;
21
+ /** Local input state. Uses the same modifier mask as Player key events. */
22
+ static isMetaKeyPressed(key: oskeymeta): boolean;
23
+ /** Local input state. */
24
+ static isMouseButtonPressed(button: jmousebuttontype): boolean;
25
+ static get mouseScreenX(): number;
26
+ static get mouseScreenY(): number;
27
+ static screenToFrameX(x: number): number;
28
+ static screenToFrameY(y: number): number;
29
+ static frameToScreenX(x: number): number;
30
+ static frameToScreenY(y: number): number;
31
+ static get mouseFrameX(): number;
32
+ static get mouseFrameY(): number;
16
33
  static get mouseFocusUnit(): Async<Unit> | undefined;
34
+ /**
35
+ * Local selection sampled every 1/64 second; undefined before the first tick. Among
36
+ * several selected units, the one the portrait shows, identified by its health and
37
+ * mana; units with identical values cannot be told apart.
38
+ */
17
39
  static get mainSelectedUnit(): Async<Unit> | undefined;
18
40
  static get mainSelectedUnitChangeEvent(): Event<[
19
41
  previousMainSelectedUnit: Unit | undefined,
20
42
  newMainSelectedUnit: Unit | undefined
21
43
  ]>;
44
+ static get isInTargetingMode(): boolean;
45
+ static readonly targetingModeEnterEvent: Event<[]>;
46
+ static readonly targetingModeLeaveEvent: Event<[]>;
47
+ static readonly targetingModeStateChangeEvent: Event<[]>;
22
48
  static readonly onDisconnect: TriggerEvent<[]>;
23
49
  }