warscript 0.0.1-dev.91a4dce → 0.0.1-dev.9381e62

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 +1 -0
  5. package/core/types/frame.lua +112 -37
  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 +4 -2
  10. package/core/types/player.lua +42 -25
  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 +2 -1
  15. package/core/types/tileCell.lua +5 -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/behavior.d.ts +10 -2
  24. package/engine/behavior.lua +157 -76
  25. package/engine/behaviour/ability/apply-buff.lua +4 -4
  26. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  27. package/engine/behaviour/ability/damage.d.ts +4 -0
  28. package/engine/behaviour/ability/damage.lua +19 -15
  29. package/engine/behaviour/ability/emulate-impact.lua +5 -4
  30. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  31. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  32. package/engine/behaviour/ability.d.ts +13 -6
  33. package/engine/behaviour/ability.lua +56 -1
  34. package/engine/behaviour/unit/stun-immunity.d.ts +7 -5
  35. package/engine/behaviour/unit/stun-immunity.lua +6 -5
  36. package/engine/behaviour/unit.d.ts +8 -3
  37. package/engine/behaviour/unit.lua +102 -24
  38. package/engine/buff.d.ts +73 -24
  39. package/engine/buff.lua +418 -166
  40. package/engine/index.d.ts +2 -1
  41. package/engine/internal/ability.d.ts +4 -0
  42. package/engine/internal/ability.lua +56 -36
  43. package/engine/internal/item/fields.d.ts +12 -0
  44. package/engine/internal/item/fields.lua +33 -0
  45. package/engine/internal/item/owner-cache.d.ts +5 -0
  46. package/engine/internal/item/owner-cache.lua +4 -0
  47. package/engine/internal/item+owner.d.ts +2 -0
  48. package/engine/internal/item+owner.lua +27 -4
  49. package/engine/internal/item.d.ts +20 -5
  50. package/engine/internal/item.lua +146 -57
  51. package/engine/internal/mechanics/cast-ability.lua +6 -3
  52. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  53. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  54. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  55. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  56. package/engine/internal/object-data/health-bonus.lua +16 -0
  57. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  58. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  59. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  60. package/engine/internal/object-data/mana-bonus.lua +16 -0
  61. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  62. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  63. package/engine/internal/unit/ability.lua +15 -3
  64. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  65. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  66. package/engine/internal/unit/appearance.d.ts +15 -0
  67. package/engine/internal/unit/appearance.lua +85 -0
  68. package/engine/internal/unit/attributes.d.ts +17 -0
  69. package/engine/internal/unit/attributes.lua +46 -0
  70. package/engine/internal/unit/bonus.d.ts +14 -0
  71. package/engine/internal/unit/bonus.lua +102 -8
  72. package/engine/internal/unit/buff.d.ts +2 -2
  73. package/engine/internal/unit/buff.lua +34 -19
  74. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  75. package/engine/internal/unit/equipment-inventory.lua +233 -0
  76. package/engine/internal/unit/expiration-timer.lua +1 -1
  77. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  78. package/engine/internal/unit/extended-inventory.lua +99 -0
  79. package/engine/internal/unit/fly-height.d.ts +7 -0
  80. package/engine/internal/unit/fly-height.lua +20 -0
  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/pseudo-passive-abilities.d.ts +2 -0
  95. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  96. package/engine/internal/unit/range-event.d.ts +12 -0
  97. package/engine/internal/unit/range-event.lua +90 -0
  98. package/engine/internal/unit/scale.d.ts +7 -0
  99. package/engine/internal/unit/scale.lua +20 -0
  100. package/engine/internal/unit+ability.d.ts +2 -1
  101. package/engine/internal/unit+ability.lua +63 -2
  102. package/engine/internal/unit+bonus.lua +3 -3
  103. package/engine/internal/unit+damage.d.ts +9 -0
  104. package/engine/internal/unit+damage.lua +33 -0
  105. package/engine/internal/unit+rally.lua +9 -31
  106. package/engine/internal/unit-missile-data.lua +58 -32
  107. package/engine/internal/unit-missile-launch.lua +29 -19
  108. package/engine/internal/unit.d.ts +14 -28
  109. package/engine/internal/unit.lua +158 -247
  110. package/engine/local-client.d.ts +28 -0
  111. package/engine/local-client.lua +324 -54
  112. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  113. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  114. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  115. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  116. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  117. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  118. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  119. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  120. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  121. package/engine/object-data/auxiliary/item-class.lua +2 -0
  122. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  123. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  124. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  125. package/engine/object-data/auxiliary/order-type.lua +2 -0
  126. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  127. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  128. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  129. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  130. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  131. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  132. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  133. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  134. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  135. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  136. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  137. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  138. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  139. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  140. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  141. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  142. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  143. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  144. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  145. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  146. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  147. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  148. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  149. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  150. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  151. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  152. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  153. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  154. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  155. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  156. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  157. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  158. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  159. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  160. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  161. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  162. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  163. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  164. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  165. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  166. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  167. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  168. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  169. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  170. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  171. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  172. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  173. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  174. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  175. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  176. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  177. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  178. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  179. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  180. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  181. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  182. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  183. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  184. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  185. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  186. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  187. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  188. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  189. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  190. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  191. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  192. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  193. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  194. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  195. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  196. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  197. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  198. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  199. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  200. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  201. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  202. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  203. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  204. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  205. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  206. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  207. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  208. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  209. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  210. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  211. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  212. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  213. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  214. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  215. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  216. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  217. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  218. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  219. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  220. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  221. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  222. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  223. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  224. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  225. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  226. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  227. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  228. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  229. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  230. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  231. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  232. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  233. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  234. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  235. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  236. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  237. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  238. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  239. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  240. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  241. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  242. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  243. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  244. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  245. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  246. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  247. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  248. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  249. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  250. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  251. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  252. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  253. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  254. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  255. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  256. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  257. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  258. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  259. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  260. package/engine/object-data/entry/ability-type.d.ts +25 -6
  261. package/engine/object-data/entry/ability-type.lua +244 -8
  262. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  263. package/engine/object-data/entry/buff-type.d.ts +6 -2
  264. package/engine/object-data/entry/buff-type.lua +26 -0
  265. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  266. package/engine/object-data/entry/destructible-type.lua +181 -0
  267. package/engine/object-data/entry/item-type.d.ts +18 -3
  268. package/engine/object-data/entry/item-type.lua +84 -0
  269. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  270. package/engine/object-data/entry/lightning-type.lua +1 -1
  271. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  272. package/engine/object-data/entry/unit-type.d.ts +51 -2
  273. package/engine/object-data/entry/unit-type.lua +415 -37
  274. package/engine/object-data/entry/upgrade.d.ts +2 -2
  275. package/engine/object-data/entry.d.ts +6 -1
  276. package/engine/object-data/entry.lua +8 -0
  277. package/engine/object-field/ability.lua +2 -2
  278. package/engine/object-field/item.d.ts +22 -0
  279. package/engine/object-field/item.lua +118 -0
  280. package/engine/object-field/unit.d.ts +20 -5
  281. package/engine/object-field/unit.lua +61 -0
  282. package/engine/object-field.d.ts +10 -2
  283. package/engine/object-field.lua +268 -123
  284. package/engine/random.d.ts +1 -0
  285. package/engine/random.lua +8 -0
  286. package/engine/standard/entries/ability-type.d.ts +3102 -7
  287. package/engine/standard/entries/ability-type.lua +0 -6
  288. package/engine/standard/entries/buff-type.d.ts +45 -0
  289. package/engine/standard/entries/buff-type.lua +43 -0
  290. package/engine/standard/entries/item-type.d.ts +1299 -0
  291. package/engine/standard/entries/item-type.lua +2 -0
  292. package/engine/standard/entries/lightning-type.d.ts +42 -15
  293. package/engine/standard/entries/lightning-type.lua +0 -14
  294. package/engine/standard/entries/unit-type.d.ts +5 -0
  295. package/engine/standard/entries/unit-type.lua +5 -0
  296. package/engine/standard/fields/ability.d.ts +2 -2
  297. package/engine/standard/fields/ability.lua +2 -2
  298. package/engine/standard/fields/item.d.ts +4 -0
  299. package/engine/standard/fields/item.lua +6 -0
  300. package/engine/standard/fields/unit.d.ts +11 -3
  301. package/engine/standard/fields/unit.lua +15 -2
  302. package/engine/text-tag.lua +2 -1
  303. package/engine/unit.d.ts +10 -1
  304. package/engine/unit.lua +10 -1
  305. package/event.d.ts +1 -1
  306. package/lualib_bundle.lua +1 -1
  307. package/math.d.ts +2 -0
  308. package/math.lua +14 -0
  309. package/network.lua +25 -1
  310. package/objutil/buff.lua +10 -8
  311. package/objutil/object.lua +1 -1
  312. package/operation.d.ts +8 -1
  313. package/operation.lua +38 -18
  314. package/package.json +3 -23
  315. package/patch-lua.lua +15 -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
@@ -47,12 +47,10 @@ local checkNotNull = ____preconditions.checkNotNull
47
47
  local ____constants = require("engine.constants")
48
48
  local HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT = ____constants.HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT
49
49
  local MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT = ____constants.MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT
50
- local ____arrays = require("utility.arrays")
51
- local forEach = ____arrays.forEach
52
- local ____math = require("math")
53
- local min = ____math.min
54
50
  local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
55
- local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
51
+ local isItemIgnoredInEvents = ____ignore_2Devents_2Ditems.isItemIgnoredInEvents
52
+ local ____owner_2Dcache = require("engine.internal.item.owner-cache")
53
+ local ownerByItem = ____owner_2Dcache.ownerByItem
56
54
  local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
57
55
  local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
58
56
  local nativeToAttackType = ____attack_2Dtype.nativeToAttackType
@@ -62,6 +60,10 @@ local ____attributes = require("attributes")
62
60
  local isAttribute = ____attributes.isAttribute
63
61
  local ____ability = require("engine.internal.item.ability")
64
62
  local doUnitAbilityAction = ____ability.doUnitAbilityAction
63
+ local ____synchronization = require("engine.synchronization")
64
+ local synchronizer = ____synchronization.synchronizer
65
+ local ____linked_2Dmap = require("utility.linked-map")
66
+ local LinkedMap = ____linked_2Dmap.LinkedMap
65
67
  local match = string.match
66
68
  local ____tostring = _G.tostring
67
69
  local setUnitAnimation = SetUnitAnimation
@@ -71,16 +73,12 @@ local getUnitRealField = BlzGetUnitRealField
71
73
  local getHeroStr = GetHeroStr
72
74
  local getHeroAgi = GetHeroAgi
73
75
  local getHeroInt = GetHeroInt
74
- local setHeroStr = SetHeroStr
75
- local setHeroAgi = SetHeroAgi
76
- local setHeroInt = SetHeroInt
77
76
  local getUnitBooleanField = BlzGetUnitBooleanField
78
77
  local getUnitStringField = BlzGetUnitStringField
79
78
  local setUnitIntegerField = BlzSetUnitIntegerField
80
79
  local setUnitRealField = BlzSetUnitRealField
81
80
  local setUnitBooleanField = BlzSetUnitBooleanField
82
81
  local setUnitStringField = BlzSetUnitStringField
83
- local setUnitScale = SetUnitScale
84
82
  local setUnitPosition = SetUnitPosition
85
83
  local setUnitTimeScale = SetUnitTimeScale
86
84
  local getHandleId = GetHandleId
@@ -108,7 +106,6 @@ local getUnitWeaponStringField = BlzGetUnitWeaponStringField
108
106
  local setUnitWeaponStringField = BlzSetUnitWeaponStringField
109
107
  local getUnitAbilityLevel = GetUnitAbilityLevel
110
108
  local unitDisableAbility = BlzUnitDisableAbility
111
- local unitInterruptAttack = BlzUnitInterruptAttack
112
109
  local isUnitInvisible = IsUnitInvisible
113
110
  local isUnitVisible = IsUnitVisible
114
111
  local getUnitX = GetUnitX
@@ -384,15 +381,27 @@ local modifiers = {
384
381
  end,
385
382
  armor = function(unit, value)
386
383
  if UnitAddAbility(unit, armorBonusAbilityId) then
387
- assert(UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId))
384
+ assert(
385
+ UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
386
+ "armor bonus ability must be made permanent",
387
+ unit
388
+ )
388
389
  end
389
- local ability = assert(BlzGetUnitAbility(unit, armorBonusAbilityId))
390
- assert(BlzSetAbilityRealLevelField(
391
- ability,
392
- armorBonusField,
393
- 0,
394
- BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
395
- ))
390
+ local ability = assert(
391
+ BlzGetUnitAbility(unit, armorBonusAbilityId),
392
+ "armor bonus ability must be existing",
393
+ unit
394
+ )
395
+ assert(
396
+ BlzSetAbilityRealLevelField(
397
+ ability,
398
+ armorBonusField,
399
+ 0,
400
+ BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
401
+ ),
402
+ "armor bonus ability field must be set",
403
+ unit
404
+ )
396
405
  end
397
406
  }
398
407
  local getters = {
@@ -581,8 +590,6 @@ __TS__SetDescriptor(
581
590
  },
582
591
  true
583
592
  )
584
- local unitInventorySize = UnitInventorySize
585
- local unitItemInSlot = UnitItemInSlot
586
593
  local getItemAbility = BlzGetItemAbility
587
594
  local getUnitAbility = BlzGetUnitAbility
588
595
  local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
@@ -600,8 +607,8 @@ local function retrieveAbility(unit, ability, abilityId)
600
607
  ____exports.Unit:of(unit)
601
608
  )
602
609
  end
603
- for i = 0, unitInventorySize(unit) - 1 do
604
- local item = unitItemInSlot(unit, i)
610
+ for i = 0, UnitInventorySize(unit) - 1 do
611
+ local item = UnitItemInSlot(unit, i)
605
612
  if getItemAbility(item, abilityId) == ability then
606
613
  return ItemAbility:of(
607
614
  ability,
@@ -646,26 +653,30 @@ local fieldSetters = {
646
653
  }
647
654
  local dummies = {}
648
655
  for ____, player in ipairs(Player.all) do
649
- local dummy = assert(createUnit(
650
- player.handle,
651
- dummyUnitId,
652
- 0,
653
- 0,
654
- 270
655
- ))
656
+ local dummy = assert(
657
+ createUnit(
658
+ player.handle,
659
+ dummyUnitId,
660
+ 0,
661
+ 0,
662
+ 270
663
+ ),
664
+ "dummy must be created",
665
+ player
666
+ )
656
667
  ShowUnit(dummy, false)
657
668
  dummies[player] = dummy
658
669
  end
659
670
  local function delayHealthChecksCallback(unit)
660
- local counter = (unit[103] or 0) - 1
671
+ local counter = (unit[104] or 0) - 1
661
672
  if counter ~= 0 then
662
- unit[103] = counter
673
+ unit[104] = counter
663
674
  return
664
675
  end
665
- unit[103] = nil
666
- local healthBonus = unit[104]
676
+ unit[104] = nil
677
+ local healthBonus = unit[105]
667
678
  if healthBonus ~= nil then
668
- unit[104] = nil
679
+ unit[105] = nil
669
680
  local handle = unit.handle
670
681
  BlzSetUnitMaxHP(
671
682
  handle,
@@ -695,41 +706,57 @@ function Unit.prototype.____constructor(self, handle)
695
706
  nextSyncId = ____nextSyncId_1 + 1
696
707
  self.syncId = ____nextSyncId_1
697
708
  self._owner = Player:of(getOwningPlayer(handle))
698
- assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
699
- assert(unitAddAbility(handle, morphDetectAbilityId))
709
+ assert(
710
+ unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId),
711
+ "leave detection ability must be added",
712
+ self
713
+ )
714
+ assert(
715
+ unitAddAbility(handle, morphDetectAbilityId),
716
+ "morph detection ability must be added",
717
+ self
718
+ )
700
719
  if unitAddAbility(
701
720
  handle,
702
721
  fourCC("Amrf")
703
722
  ) then
704
- assert(unitRemoveAbility(
705
- handle,
706
- fourCC("Amrf")
707
- ))
723
+ assert(
724
+ unitRemoveAbility(
725
+ handle,
726
+ fourCC("Amrf")
727
+ ),
728
+ "fly ability must be removed after addition",
729
+ self
730
+ )
708
731
  end
709
732
  unitBySyncId[self.syncId] = self
710
733
  local ____ = self.abilities
711
734
  end
712
- function Unit.prototype.getEvent(self, event, collector)
713
- self.events = self.events or ({})
714
- local eventId = GetHandleId(event)
715
- if not self.events[eventId] then
716
- self.events[eventId] = __TS__New(
735
+ function Unit.prototype.getEvent(self, jevent, collector)
736
+ self.events = self.events or __TS__New(LinkedMap)
737
+ local eventId = GetHandleId(jevent)
738
+ local event = self.events:get(eventId)
739
+ if event == nil then
740
+ event = __TS__New(
717
741
  TriggerEvent,
718
742
  function(trigger)
719
- TriggerRegisterUnitEvent(trigger, self.handle, event)
743
+ TriggerRegisterUnitEvent(trigger, self.handle, jevent)
720
744
  end,
721
745
  collector or (function() return {} end)
722
746
  )
747
+ self.events:put(eventId, event)
723
748
  end
724
- return self.events[eventId]
749
+ return event
750
+ end
751
+ function Unit.prototype.saveData(self)
752
+ local handle = self.handle
753
+ self[108] = self[108] or getUnitX(handle)
754
+ self[109] = self[109] or getUnitY(handle)
755
+ self._owner = self._owner or Player:of(getOwningPlayer(handle))
725
756
  end
726
757
  function Unit.prototype.onDestroy(self)
727
758
  local handle = self.handle
728
- self[107] = getUnitX(handle)
729
- self[108] = getUnitY(handle)
730
- if not self._owner then
731
- self._owner = Player:of(getOwningPlayer(handle))
732
- end
759
+ self:saveData()
733
760
  local abilities = self.abilities
734
761
  for ____, ability in ipairs(abilities) do
735
762
  ability:destroy()
@@ -747,7 +774,9 @@ function Unit.prototype.onDestroy(self)
747
774
  end
748
775
  local eventsToDestroy = self._eventsToDestroy
749
776
  if eventsToDestroy ~= nil then
750
- forEach(eventsToDestroy, "destroy")
777
+ for ____, event in ipairs(eventsToDestroy) do
778
+ event:destroy()
779
+ end
751
780
  end
752
781
  if getUnitAbilityLevel(handle, leaveDetectAbilityId) > 0 then
753
782
  unitRemoveAbility(handle, leaveDetectAbilityId)
@@ -765,7 +794,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
765
794
  self._attackHandlers = handlers
766
795
  if #handlers == 1 then
767
796
  local handle = self.handle
768
- assert(unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId))
797
+ assert(
798
+ unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
799
+ "attack handler ability must be added",
800
+ self
801
+ )
769
802
  end
770
803
  return handler
771
804
  end
@@ -860,7 +893,7 @@ function Unit.prototype.chooseWeapon(self, target)
860
893
  return nil
861
894
  end
862
895
  function Unit.prototype.delayHealthChecks(self)
863
- self[103] = (self[103] or 0) + 1
896
+ self[104] = (self[104] or 0) + 1
864
897
  Timer:run(delayHealthChecksCallback, self)
865
898
  end
866
899
  function Unit.prototype.setPosition(self, x, y)
@@ -924,7 +957,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
924
957
  return UnitDropItemSlot(self.handle, item.handle, slot)
925
958
  end
926
959
  function Unit.prototype.itemInSlot(self, slot)
927
- return Item:of(unitItemInSlot(self.handle, slot))
960
+ return Item:of(UnitItemInSlot(self.handle, slot))
928
961
  end
929
962
  function Unit.prototype.addAbility(self, abilityId)
930
963
  local ability = UnitAbility:of(
@@ -978,24 +1011,6 @@ end
978
1011
  function Unit.prototype.endAbilityCooldown(self, abilityId)
979
1012
  BlzEndUnitAbilityCooldown(self.handle, abilityId)
980
1013
  end
981
- function Unit.prototype.interruptMovement(self)
982
- local handle = self.handle
983
- unitDisableAbility(
984
- handle,
985
- fourCC("Amov"),
986
- true,
987
- false
988
- )
989
- unitDisableAbility(
990
- handle,
991
- fourCC("Amov"),
992
- false,
993
- false
994
- )
995
- end
996
- function Unit.prototype.interruptAttack(self)
997
- unitInterruptAttack(self.handle)
998
- end
999
1014
  function Unit.prototype.interruptCast(self, abilityId)
1000
1015
  local handle = self.handle
1001
1016
  unitDisableAbility(handle, abilityId, true, false)
@@ -1066,18 +1081,44 @@ function Unit.prototype.unpauseEx(self)
1066
1081
  end
1067
1082
  function Unit.prototype.incrementStunCounter(self)
1068
1083
  local stunCounter = self[102] or 0
1069
- if not self[101] or stunCounter >= 0 then
1084
+ if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
1070
1085
  BlzPauseUnitEx(self.handle, true)
1071
1086
  end
1072
1087
  self[102] = stunCounter + 1
1073
1088
  end
1074
1089
  function Unit.prototype.decrementStunCounter(self)
1075
1090
  local stunCounter = self[102] or 0
1076
- if not self[101] or stunCounter >= 1 then
1091
+ if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
1077
1092
  BlzPauseUnitEx(self.handle, false)
1078
1093
  end
1079
1094
  self[102] = stunCounter - 1
1080
1095
  end
1096
+ function Unit.prototype.incrementForceStunCounter(self)
1097
+ local forceStunCounter = self[103] or 0
1098
+ if forceStunCounter == 0 then
1099
+ local handle = self.handle
1100
+ if not self[101] then
1101
+ for _ = self[102] or 0, -1 do
1102
+ BlzPauseUnitEx(handle, true)
1103
+ end
1104
+ end
1105
+ BlzPauseUnitEx(handle, true)
1106
+ end
1107
+ self[103] = forceStunCounter + 1
1108
+ end
1109
+ function Unit.prototype.decrementForceStunCounter(self)
1110
+ local forceStunCounter = self[103] or 0
1111
+ if forceStunCounter == 1 then
1112
+ local handle = self.handle
1113
+ if not self[101] then
1114
+ for _ = self[102] or 0, -1 do
1115
+ BlzPauseUnitEx(handle, false)
1116
+ end
1117
+ end
1118
+ BlzPauseUnitEx(handle, false)
1119
+ end
1120
+ self[103] = forceStunCounter - 1
1121
+ end
1081
1122
  function Unit.create(self, owner, id, x, y, facing, skinId)
1082
1123
  local handle = skinId and BlzCreateUnitWithSkin(
1083
1124
  owner.handle,
@@ -1274,7 +1315,7 @@ __TS__SetDescriptor(
1274
1315
  Unit.prototype,
1275
1316
  "isStunned",
1276
1317
  {get = function(self)
1277
- return getUnitCurrentOrder(self.handle) == orderId("stunned")
1318
+ return getUnitCurrentOrder(self.handle) == 851973
1278
1319
  end},
1279
1320
  true
1280
1321
  )
@@ -1364,19 +1405,6 @@ __TS__SetDescriptor(
1364
1405
  },
1365
1406
  true
1366
1407
  )
1367
- __TS__SetDescriptor(
1368
- Unit.prototype,
1369
- "strengthBase",
1370
- {
1371
- get = function(self)
1372
- return getHeroStr(self.handle, false)
1373
- end,
1374
- set = function(self, strengthBase)
1375
- setHeroStr(self.handle, strengthBase, true)
1376
- end
1377
- },
1378
- true
1379
- )
1380
1408
  __TS__SetDescriptor(
1381
1409
  Unit.prototype,
1382
1410
  "strengthBonus",
@@ -1394,19 +1422,6 @@ __TS__SetDescriptor(
1394
1422
  end},
1395
1423
  true
1396
1424
  )
1397
- __TS__SetDescriptor(
1398
- Unit.prototype,
1399
- "agilityBase",
1400
- {
1401
- get = function(self)
1402
- return getHeroAgi(self.handle, false)
1403
- end,
1404
- set = function(self, agilityBase)
1405
- setHeroAgi(self.handle, agilityBase, true)
1406
- end
1407
- },
1408
- true
1409
- )
1410
1425
  __TS__SetDescriptor(
1411
1426
  Unit.prototype,
1412
1427
  "agilityBonus",
@@ -1424,19 +1439,6 @@ __TS__SetDescriptor(
1424
1439
  end},
1425
1440
  true
1426
1441
  )
1427
- __TS__SetDescriptor(
1428
- Unit.prototype,
1429
- "intelligenceBase",
1430
- {
1431
- get = function(self)
1432
- return getHeroInt(self.handle, false)
1433
- end,
1434
- set = function(self, intelligenceBase)
1435
- setHeroInt(self.handle, intelligenceBase, true)
1436
- end
1437
- },
1438
- true
1439
- )
1440
1442
  __TS__SetDescriptor(
1441
1443
  Unit.prototype,
1442
1444
  "intelligenceBonus",
@@ -1485,7 +1487,7 @@ __TS__SetDescriptor(
1485
1487
  "isTeamGlowVisible",
1486
1488
  {
1487
1489
  get = function(self)
1488
- return not self[106]
1490
+ return not self[107]
1489
1491
  end,
1490
1492
  set = function(self, isTeamGlowVisible)
1491
1493
  BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
@@ -1495,7 +1497,7 @@ __TS__SetDescriptor(
1495
1497
  else
1496
1498
  ____temp_7 = nil
1497
1499
  end
1498
- self[106] = ____temp_7
1500
+ self[107] = ____temp_7
1499
1501
  end
1500
1502
  },
1501
1503
  true
@@ -1505,7 +1507,7 @@ __TS__SetDescriptor(
1505
1507
  "color",
1506
1508
  {set = function(self, color)
1507
1509
  SetUnitColor(self.handle, color.handle)
1508
- if self[106] then
1510
+ if self[107] then
1509
1511
  BlzShowUnitTeamGlow(self.handle, false)
1510
1512
  end
1511
1513
  end},
@@ -1529,14 +1531,14 @@ __TS__SetDescriptor(
1529
1531
  "maxHealth",
1530
1532
  {
1531
1533
  get = function(self)
1532
- return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
1534
+ return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
1533
1535
  end,
1534
1536
  set = function(self, maxHealth)
1535
- if maxHealth < 1 and self[103] ~= nil then
1536
- self[104] = (self[104] or 0) + (1 - maxHealth)
1537
+ if maxHealth < 1 and self[104] ~= nil then
1538
+ self[105] = (self[105] or 0) + (1 - maxHealth)
1537
1539
  maxHealth = 1
1538
1540
  end
1539
- BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
1541
+ BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
1540
1542
  end
1541
1543
  },
1542
1544
  true
@@ -1578,10 +1580,10 @@ __TS__SetDescriptor(
1578
1580
  "health",
1579
1581
  {
1580
1582
  get = function(self)
1581
- return GetWidgetLife(self.handle) - (self[105] or 0)
1583
+ return GetWidgetLife(self.handle) - (self[106] or 0)
1582
1584
  end,
1583
1585
  set = function(self, health)
1584
- SetWidgetLife(self.handle, health + (self[105] or 0))
1586
+ SetWidgetLife(self.handle, health + (self[106] or 0))
1585
1587
  end
1586
1588
  },
1587
1589
  true
@@ -1657,25 +1659,12 @@ __TS__SetDescriptor(
1657
1659
  },
1658
1660
  true
1659
1661
  )
1660
- __TS__SetDescriptor(
1661
- Unit.prototype,
1662
- "flyHeight",
1663
- {
1664
- get = function(self)
1665
- return getUnitFlyHeight(self.handle)
1666
- end,
1667
- set = function(self, v)
1668
- SetUnitFlyHeight(self.handle, v, 100000)
1669
- end
1670
- },
1671
- true
1672
- )
1673
1662
  __TS__SetDescriptor(
1674
1663
  Unit.prototype,
1675
1664
  "x",
1676
1665
  {
1677
1666
  get = function(self)
1678
- return self[107] or getUnitX(self.handle)
1667
+ return self[108] or getUnitX(self.handle)
1679
1668
  end,
1680
1669
  set = function(self, v)
1681
1670
  SetUnitX(self.handle, v)
@@ -1688,7 +1677,7 @@ __TS__SetDescriptor(
1688
1677
  "y",
1689
1678
  {
1690
1679
  get = function(self)
1691
- return self[108] or getUnitY(self.handle)
1680
+ return self[109] or getUnitY(self.handle)
1692
1681
  end,
1693
1682
  set = function(self, v)
1694
1683
  SetUnitY(self.handle, v)
@@ -1793,14 +1782,18 @@ __TS__SetDescriptor(
1793
1782
  local handle = self.handle
1794
1783
  if isPaused and not IsUnitPaused(handle) then
1795
1784
  self[101] = true
1796
- for _ = self[102] or 0, -1 do
1797
- BlzPauseUnitEx(handle, true)
1785
+ if (self[103] or 0) <= 0 then
1786
+ for _ = self[102] or 0, -1 do
1787
+ BlzPauseUnitEx(handle, true)
1788
+ end
1798
1789
  end
1799
1790
  PauseUnit(handle, true)
1800
1791
  elseif not isPaused and IsUnitPaused(handle) then
1801
1792
  PauseUnit(handle, false)
1802
- for _ = self[102] or 0, -1 do
1803
- BlzPauseUnitEx(handle, false)
1793
+ if (self[103] or 0) <= 0 then
1794
+ for _ = self[102] or 0, -1 do
1795
+ BlzPauseUnitEx(handle, false)
1796
+ end
1804
1797
  end
1805
1798
  self[101] = nil
1806
1799
  end
@@ -1858,20 +1851,6 @@ __TS__SetDescriptor(
1858
1851
  },
1859
1852
  true
1860
1853
  )
1861
- __TS__SetDescriptor(
1862
- Unit.prototype,
1863
- "scale",
1864
- {
1865
- get = function(self)
1866
- return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
1867
- end,
1868
- set = function(self, v)
1869
- setUnitScale(self.handle, v, v, v)
1870
- setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
1871
- end
1872
- },
1873
- true
1874
- )
1875
1854
  __TS__SetDescriptor(
1876
1855
  Unit.prototype,
1877
1856
  "timeScale",
@@ -1898,7 +1877,7 @@ __TS__SetDescriptor(
1898
1877
  Unit.prototype,
1899
1878
  "pathingCollisionRange",
1900
1879
  {get = function(self)
1901
- return 16 * (min(
1880
+ return 16 * (math.min(
1902
1881
  getUnitCollisionSize(self.handle) // 16,
1903
1882
  3
1904
1883
  ) + 1)
@@ -2008,30 +1987,6 @@ __TS__SetDescriptor(
2008
1987
  end},
2009
1988
  true
2010
1989
  )
2011
- __TS__SetDescriptor(
2012
- Unit.prototype,
2013
- "onUnitInRange",
2014
- {get = function(self)
2015
- local handle = self.handle
2016
- local onUnitInRange = setmetatable(
2017
- {},
2018
- {__index = function(self, value)
2019
- local event = __TS__New(
2020
- TriggerEvent,
2021
- function(trigger)
2022
- TriggerRegisterUnitInRangeSimple(trigger, value, handle)
2023
- end,
2024
- function() return ____exports.Unit:of(handle) end
2025
- )
2026
- rawset(self, value, event)
2027
- return event
2028
- end}
2029
- )
2030
- rawset(self, "onUnitInRange", onUnitInRange)
2031
- return onUnitInRange
2032
- end},
2033
- true
2034
- )
2035
1990
  __TS__SetDescriptor(
2036
1991
  Unit.prototype,
2037
1992
  "onManaEqual",
@@ -2167,6 +2122,11 @@ __TS__SetDescriptor(
2167
2122
  end},
2168
2123
  true
2169
2124
  )
2125
+ Unit.levelChangedEvent = __TS__New(
2126
+ ____exports.UnitTriggerEvent,
2127
+ EVENT_PLAYER_HERO_LEVEL,
2128
+ function() return ____exports.Unit:of(getTriggerUnit()) end
2129
+ )
2170
2130
  Unit.deathEvent = __TS__New(
2171
2131
  ____exports.UnitTriggerEvent,
2172
2132
  EVENT_PLAYER_UNIT_DEATH,
@@ -2184,7 +2144,7 @@ Unit.onResurrect = __TS__New(
2184
2144
  ____exports.Unit.deathEvent:addListener(function(unit)
2185
2145
  dead[unit] = true
2186
2146
  end)
2187
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2147
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2188
2148
  if dead[unit] and not IsUnitType(unit.handle, UNIT_TYPE_DEAD) then
2189
2149
  dead[unit] = false
2190
2150
  invoke(event, unit)
@@ -2201,7 +2161,7 @@ Unit.morphEvent = __TS__New(
2201
2161
  invoke(event, unit)
2202
2162
  end
2203
2163
  end
2204
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2164
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2205
2165
  if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
2206
2166
  Timer:run(ifNotLeft, unit)
2207
2167
  end
@@ -2628,7 +2588,7 @@ Unit.onDamage = __TS__New(
2628
2588
  invoke(event, source, target, evData)
2629
2589
  if evData[0] ~= nil and target.health - evData.amount < 0.405 then
2630
2590
  local bonusHealth = math.ceil(evData.amount)
2631
- target[105] = (target[105] or 0) + bonusHealth
2591
+ target[106] = (target[106] or 0) + bonusHealth
2632
2592
  BlzSetUnitMaxHP(
2633
2593
  target.handle,
2634
2594
  BlzGetUnitMaxHP(target.handle) + bonusHealth
@@ -2642,7 +2602,7 @@ Unit.onDamage = __TS__New(
2642
2602
  evData[0],
2643
2603
  table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
2644
2604
  )
2645
- target[105] = (target[105] or 0) - bonusHealth
2605
+ target[106] = (target[106] or 0) - bonusHealth
2646
2606
  SetWidgetLife(
2647
2607
  target.handle,
2648
2608
  GetWidgetLife(target.handle) - bonusHealth
@@ -2668,7 +2628,7 @@ Unit.itemDroppedEvent = __TS__New(
2668
2628
  function()
2669
2629
  local unit = getTriggerUnit()
2670
2630
  local item = getManipulatedItem()
2671
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2631
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2672
2632
  return ____exports.Unit:of(unit), Item:of(item)
2673
2633
  end
2674
2634
  return IgnoreEvent
@@ -2680,10 +2640,10 @@ Unit.itemPickedUpEvent = __TS__New(
2680
2640
  function()
2681
2641
  local unitHandle = getTriggerUnit()
2682
2642
  local itemHandle = getManipulatedItem()
2683
- if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
2643
+ if getUnitTypeId(unitHandle) ~= dummyUnitId and not isItemIgnoredInEvents(itemHandle) then
2684
2644
  local unit = ____exports.Unit:of(unitHandle)
2685
2645
  local item = Item:of(itemHandle)
2686
- if item.owner ~= unit then
2646
+ if ownerByItem[item] ~= unit then
2687
2647
  return unit, item
2688
2648
  end
2689
2649
  end
@@ -2696,17 +2656,12 @@ Unit.itemUsedEvent = __TS__New(
2696
2656
  function()
2697
2657
  local unit = getTriggerUnit()
2698
2658
  local item = getManipulatedItem()
2699
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2659
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2700
2660
  return ____exports.Unit:of(unit), Item:of(item)
2701
2661
  end
2702
2662
  return IgnoreEvent
2703
2663
  end
2704
2664
  )
2705
- Unit.itemStackedEvent = __TS__New(
2706
- ____exports.UnitTriggerEvent,
2707
- EVENT_PLAYER_UNIT_STACK_ITEM,
2708
- function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
2709
- )
2710
2665
  __TS__ObjectDefineProperty(
2711
2666
  Unit,
2712
2667
  "itemChargesChangedEvent",
@@ -2722,51 +2677,6 @@ __TS__ObjectDefineProperty(
2722
2677
  return event
2723
2678
  end}
2724
2679
  )
2725
- __TS__ObjectDefineProperty(
2726
- Unit,
2727
- "itemUseOrderEvent",
2728
- {get = function(self)
2729
- local event = __TS__New(Event)
2730
- for order = orderId("useslot0"), orderId("useslot5") do
2731
- local slot = order - orderId("useslot0")
2732
- local function listener(unit)
2733
- local item = unit.items[slot + 1]
2734
- if item ~= nil then
2735
- invoke(event, unit, item)
2736
- end
2737
- end
2738
- self.onImmediateOrder[order]:addListener(listener)
2739
- self.onTargetOrder[order]:addListener(listener)
2740
- self.onPointOrder[order]:addListener(listener)
2741
- end
2742
- rawset(self, "itemUseOrderEvent", event)
2743
- return event
2744
- end}
2745
- )
2746
- __TS__ObjectDefineProperty(
2747
- Unit,
2748
- "itemMoveOrderEvent",
2749
- {get = function(self)
2750
- local event = __TS__New(Event)
2751
- for order = orderId("moveslot0"), orderId("moveslot5") do
2752
- local slotTo = order - orderId("moveslot0")
2753
- self.onTargetOrder[order]:addListener(function(unit, item)
2754
- local slotFrom = unit.items:findSlot(item)
2755
- if slotFrom ~= nil then
2756
- invoke(
2757
- event,
2758
- unit,
2759
- item,
2760
- slotFrom,
2761
- slotTo
2762
- )
2763
- end
2764
- end)
2765
- end
2766
- rawset(self, "itemMoveOrderEvent", event)
2767
- return event
2768
- end}
2769
- )
2770
2680
  __TS__ObjectDefineProperty(
2771
2681
  Unit,
2772
2682
  "onCreate",
@@ -2792,6 +2702,10 @@ __TS__ObjectDefineProperty(
2792
2702
  rawset(self, "destroyEvent", destroyEvent)
2793
2703
  return destroyEvent
2794
2704
  end}
2705
+ )
2706
+ Unit.synchronize = synchronizer(
2707
+ function(unit) return unit.syncId end,
2708
+ function(syncId) return unitBySyncId[syncId] end
2795
2709
  );
2796
2710
  (function(self)
2797
2711
  local leaveAbilityIds = postcompile(function()
@@ -2809,11 +2723,7 @@ __TS__ObjectDefineProperty(
2809
2723
  function(____, id) return fourCC(id) end
2810
2724
  )
2811
2725
  end)
2812
- for ____, leaveOrderId in ipairs({
2813
- orderId("undefend"),
2814
- orderId("magicundefense"),
2815
- orderId("unimmolation")
2816
- }) do
2726
+ for ____, leaveOrderId in ipairs({852056, 852479, 852178}) do
2817
2727
  ____exports.Unit.onImmediateOrder[leaveOrderId]:addListener(function(unit)
2818
2728
  local handle = unit.handle
2819
2729
  for i = 1, #leaveAbilityIds do
@@ -2821,7 +2731,8 @@ __TS__ObjectDefineProperty(
2821
2731
  return
2822
2732
  end
2823
2733
  end
2824
- unit:destroy()
2734
+ unit:saveData()
2735
+ Timer:run(unit, "destroy")
2825
2736
  end)
2826
2737
  end
2827
2738
  end)(Unit)