warscript 0.0.1-dev.d6e2c10 → 0.0.1-dev.d77b529

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 (303) 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 +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/unit.d.ts +5 -0
  15. package/core/types/unit.lua +5 -0
  16. package/core/util.d.ts +3 -1
  17. package/core/util.lua +109 -3
  18. package/decl/native.d.ts +705 -7
  19. package/engine/behavior.d.ts +4 -2
  20. package/engine/behavior.lua +69 -11
  21. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  22. package/engine/behaviour/ability/damage.d.ts +4 -0
  23. package/engine/behaviour/ability/damage.lua +19 -15
  24. package/engine/behaviour/ability/emulate-impact.lua +5 -4
  25. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  26. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  27. package/engine/behaviour/ability.d.ts +11 -5
  28. package/engine/behaviour/ability.lua +54 -0
  29. package/engine/behaviour/unit/stun-immunity.d.ts +1 -1
  30. package/engine/behaviour/unit/stun-immunity.lua +5 -4
  31. package/engine/behaviour/unit.d.ts +1 -0
  32. package/engine/behaviour/unit.lua +14 -3
  33. package/engine/buff.d.ts +64 -25
  34. package/engine/buff.lua +345 -156
  35. package/engine/index.d.ts +2 -1
  36. package/engine/internal/ability.d.ts +4 -0
  37. package/engine/internal/ability.lua +56 -36
  38. package/engine/internal/item/fields.d.ts +12 -0
  39. package/engine/internal/item/fields.lua +33 -0
  40. package/engine/internal/item/owner-cache.d.ts +5 -0
  41. package/engine/internal/item/owner-cache.lua +4 -0
  42. package/engine/internal/item+owner.d.ts +2 -0
  43. package/engine/internal/item+owner.lua +27 -4
  44. package/engine/internal/item.d.ts +20 -5
  45. package/engine/internal/item.lua +146 -57
  46. package/engine/internal/mechanics/cast-ability.lua +6 -3
  47. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  48. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  49. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  50. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  51. package/engine/internal/object-data/health-bonus.lua +16 -0
  52. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  53. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  54. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  55. package/engine/internal/object-data/mana-bonus.lua +16 -0
  56. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  57. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  58. package/engine/internal/unit/ability.lua +15 -3
  59. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  60. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  61. package/engine/internal/unit/appearance.d.ts +15 -0
  62. package/engine/internal/unit/appearance.lua +85 -0
  63. package/engine/internal/unit/attributes.d.ts +17 -0
  64. package/engine/internal/unit/attributes.lua +46 -0
  65. package/engine/internal/unit/bonus.d.ts +14 -0
  66. package/engine/internal/unit/bonus.lua +102 -8
  67. package/engine/internal/unit/buff.d.ts +2 -2
  68. package/engine/internal/unit/buff.lua +34 -19
  69. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  70. package/engine/internal/unit/equipment-inventory.lua +233 -0
  71. package/engine/internal/unit/expiration-timer.lua +1 -1
  72. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  73. package/engine/internal/unit/extended-inventory.lua +99 -0
  74. package/engine/internal/unit/fly-height.lua +3 -3
  75. package/engine/internal/unit/ignore-events-items.lua +10 -1
  76. package/engine/internal/unit/interrupts.d.ts +12 -0
  77. package/engine/internal/unit/interrupts.lua +28 -0
  78. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  79. package/engine/internal/unit/inventory.lua +87 -0
  80. package/engine/internal/unit/item-container.d.ts +25 -0
  81. package/engine/internal/unit/item-container.lua +11 -0
  82. package/engine/internal/unit/item-order-events.d.ts +17 -0
  83. package/engine/internal/unit/item-order-events.lua +67 -0
  84. package/engine/internal/unit/item-slot.d.ts +27 -0
  85. package/engine/internal/unit/item-slot.lua +92 -0
  86. package/engine/internal/unit/order.d.ts +3 -3
  87. package/engine/internal/unit/order.lua +10 -10
  88. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  89. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  90. package/engine/internal/unit/range-event.d.ts +12 -0
  91. package/engine/internal/unit/range-event.lua +90 -0
  92. package/engine/internal/unit/scale.lua +3 -3
  93. package/engine/internal/unit+ability.d.ts +2 -1
  94. package/engine/internal/unit+ability.lua +63 -2
  95. package/engine/internal/unit+bonus.lua +3 -3
  96. package/engine/internal/unit+damage.d.ts +9 -0
  97. package/engine/internal/unit+damage.lua +33 -0
  98. package/engine/internal/unit+rally.lua +9 -31
  99. package/engine/internal/unit-missile-data.lua +58 -32
  100. package/engine/internal/unit-missile-launch.lua +25 -18
  101. package/engine/internal/unit.d.ts +3 -18
  102. package/engine/internal/unit.lua +97 -195
  103. package/engine/local-client.d.ts +27 -1
  104. package/engine/local-client.lua +298 -58
  105. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  106. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  107. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  108. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  109. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  110. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  111. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  112. package/engine/object-data/auxiliary/item-class.lua +2 -0
  113. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  114. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  115. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  116. package/engine/object-data/auxiliary/order-type.lua +2 -0
  117. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  118. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  119. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  120. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  121. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  122. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  123. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  124. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  125. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  126. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  127. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  128. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  129. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  130. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  131. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  132. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  133. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  134. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  135. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  136. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  137. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  138. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  139. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  140. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  141. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  142. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  143. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  144. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  145. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  146. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  147. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  148. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  149. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  150. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  151. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  152. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  153. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  154. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  155. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  156. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  157. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  158. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  159. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  160. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  161. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  162. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  163. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  164. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  165. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  166. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  167. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  168. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  169. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  170. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  171. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  172. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  173. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  174. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  175. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  176. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  177. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  178. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  179. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  180. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  181. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  182. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  183. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  184. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  185. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  186. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  187. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  188. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  189. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  190. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  191. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  192. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  193. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  194. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  195. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  196. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  197. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  198. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  199. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  200. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  201. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  202. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  203. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  204. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  205. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  206. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  207. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  208. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  209. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  210. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  211. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  212. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  213. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  214. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  215. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  216. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  217. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  218. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  219. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  220. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  221. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  222. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  223. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  224. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  225. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  226. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  227. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  228. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  229. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  230. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  231. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  232. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  233. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  234. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  235. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  236. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  237. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  238. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  239. package/engine/object-data/entry/ability-type.d.ts +18 -3
  240. package/engine/object-data/entry/ability-type.lua +222 -5
  241. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  242. package/engine/object-data/entry/buff-type.d.ts +6 -2
  243. package/engine/object-data/entry/buff-type.lua +26 -0
  244. package/engine/object-data/entry/destructible-type.d.ts +16 -2
  245. package/engine/object-data/entry/destructible-type.lua +91 -0
  246. package/engine/object-data/entry/item-type.d.ts +18 -3
  247. package/engine/object-data/entry/item-type.lua +84 -0
  248. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  249. package/engine/object-data/entry/lightning-type.lua +1 -1
  250. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  251. package/engine/object-data/entry/unit-type.d.ts +47 -2
  252. package/engine/object-data/entry/unit-type.lua +383 -49
  253. package/engine/object-data/entry/upgrade.d.ts +2 -2
  254. package/engine/object-data/entry.d.ts +6 -1
  255. package/engine/object-data/entry.lua +8 -0
  256. package/engine/object-field/ability.lua +2 -2
  257. package/engine/object-field/item.d.ts +22 -0
  258. package/engine/object-field/item.lua +118 -0
  259. package/engine/object-field/unit.d.ts +7 -4
  260. package/engine/object-field/unit.lua +4 -0
  261. package/engine/object-field.d.ts +3 -1
  262. package/engine/object-field.lua +177 -119
  263. package/engine/random.d.ts +1 -0
  264. package/engine/random.lua +8 -0
  265. package/engine/standard/entries/ability-type.d.ts +3102 -7
  266. package/engine/standard/entries/ability-type.lua +0 -6
  267. package/engine/standard/entries/item-type.d.ts +1299 -0
  268. package/engine/standard/entries/item-type.lua +2 -0
  269. package/engine/standard/entries/lightning-type.d.ts +42 -15
  270. package/engine/standard/entries/lightning-type.lua +0 -14
  271. package/engine/standard/entries/unit-type.d.ts +5 -0
  272. package/engine/standard/entries/unit-type.lua +5 -0
  273. package/engine/standard/fields/item.d.ts +4 -0
  274. package/engine/standard/fields/item.lua +6 -0
  275. package/engine/standard/fields/unit.d.ts +11 -5
  276. package/engine/standard/fields/unit.lua +13 -4
  277. package/engine/unit.d.ts +8 -1
  278. package/engine/unit.lua +8 -1
  279. package/event.d.ts +1 -1
  280. package/lualib_bundle.lua +1 -1
  281. package/math.d.ts +2 -0
  282. package/math.lua +14 -0
  283. package/network.lua +25 -1
  284. package/objutil/buff.lua +10 -8
  285. package/objutil/object.lua +1 -1
  286. package/operation.d.ts +8 -1
  287. package/operation.lua +38 -18
  288. package/package.json +3 -23
  289. package/patch-lua.lua +15 -0
  290. package/utility/linked-map.d.ts +35 -0
  291. package/utility/linked-map.lua +107 -0
  292. package/utility/linked-set.d.ts +3 -1
  293. package/utility/linked-set.lua +27 -0
  294. package/utility/random.d.ts +102 -0
  295. package/utility/random.lua +273 -0
  296. package/utility/records.lua +20 -1
  297. package/utility/unordered-map.d.ts +27 -0
  298. package/utility/unordered-map.lua +99 -0
  299. package/engine/internal/unit/item.lua +0 -78
  300. /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
  301. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  302. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  303. /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
@@ -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
@@ -926,7 +957,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
926
957
  return UnitDropItemSlot(self.handle, item.handle, slot)
927
958
  end
928
959
  function Unit.prototype.itemInSlot(self, slot)
929
- return Item:of(unitItemInSlot(self.handle, slot))
960
+ return Item:of(UnitItemInSlot(self.handle, slot))
930
961
  end
931
962
  function Unit.prototype.addAbility(self, abilityId)
932
963
  local ability = UnitAbility:of(
@@ -980,24 +1011,6 @@ end
980
1011
  function Unit.prototype.endAbilityCooldown(self, abilityId)
981
1012
  BlzEndUnitAbilityCooldown(self.handle, abilityId)
982
1013
  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
1014
  function Unit.prototype.interruptCast(self, abilityId)
1002
1015
  local handle = self.handle
1003
1016
  unitDisableAbility(handle, abilityId, true, false)
@@ -1302,7 +1315,7 @@ __TS__SetDescriptor(
1302
1315
  Unit.prototype,
1303
1316
  "isStunned",
1304
1317
  {get = function(self)
1305
- return getUnitCurrentOrder(self.handle) == orderId("stunned")
1318
+ return getUnitCurrentOrder(self.handle) == 851973
1306
1319
  end},
1307
1320
  true
1308
1321
  )
@@ -1392,19 +1405,6 @@ __TS__SetDescriptor(
1392
1405
  },
1393
1406
  true
1394
1407
  )
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
1408
  __TS__SetDescriptor(
1409
1409
  Unit.prototype,
1410
1410
  "strengthBonus",
@@ -1422,19 +1422,6 @@ __TS__SetDescriptor(
1422
1422
  end},
1423
1423
  true
1424
1424
  )
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
1425
  __TS__SetDescriptor(
1439
1426
  Unit.prototype,
1440
1427
  "agilityBonus",
@@ -1452,19 +1439,6 @@ __TS__SetDescriptor(
1452
1439
  end},
1453
1440
  true
1454
1441
  )
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
1442
  __TS__SetDescriptor(
1469
1443
  Unit.prototype,
1470
1444
  "intelligenceBonus",
@@ -1903,7 +1877,7 @@ __TS__SetDescriptor(
1903
1877
  Unit.prototype,
1904
1878
  "pathingCollisionRange",
1905
1879
  {get = function(self)
1906
- return 16 * (min(
1880
+ return 16 * (math.min(
1907
1881
  getUnitCollisionSize(self.handle) // 16,
1908
1882
  3
1909
1883
  ) + 1)
@@ -2013,30 +1987,6 @@ __TS__SetDescriptor(
2013
1987
  end},
2014
1988
  true
2015
1989
  )
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
1990
  __TS__SetDescriptor(
2041
1991
  Unit.prototype,
2042
1992
  "onManaEqual",
@@ -2172,6 +2122,11 @@ __TS__SetDescriptor(
2172
2122
  end},
2173
2123
  true
2174
2124
  )
2125
+ Unit.levelChangedEvent = __TS__New(
2126
+ ____exports.UnitTriggerEvent,
2127
+ EVENT_PLAYER_HERO_LEVEL,
2128
+ function() return ____exports.Unit:of(getTriggerUnit()) end
2129
+ )
2175
2130
  Unit.deathEvent = __TS__New(
2176
2131
  ____exports.UnitTriggerEvent,
2177
2132
  EVENT_PLAYER_UNIT_DEATH,
@@ -2189,7 +2144,7 @@ Unit.onResurrect = __TS__New(
2189
2144
  ____exports.Unit.deathEvent:addListener(function(unit)
2190
2145
  dead[unit] = true
2191
2146
  end)
2192
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2147
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2193
2148
  if dead[unit] and not IsUnitType(unit.handle, UNIT_TYPE_DEAD) then
2194
2149
  dead[unit] = false
2195
2150
  invoke(event, unit)
@@ -2206,7 +2161,7 @@ Unit.morphEvent = __TS__New(
2206
2161
  invoke(event, unit)
2207
2162
  end
2208
2163
  end
2209
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2164
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2210
2165
  if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
2211
2166
  Timer:run(ifNotLeft, unit)
2212
2167
  end
@@ -2673,7 +2628,7 @@ Unit.itemDroppedEvent = __TS__New(
2673
2628
  function()
2674
2629
  local unit = getTriggerUnit()
2675
2630
  local item = getManipulatedItem()
2676
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2631
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2677
2632
  return ____exports.Unit:of(unit), Item:of(item)
2678
2633
  end
2679
2634
  return IgnoreEvent
@@ -2685,10 +2640,10 @@ Unit.itemPickedUpEvent = __TS__New(
2685
2640
  function()
2686
2641
  local unitHandle = getTriggerUnit()
2687
2642
  local itemHandle = getManipulatedItem()
2688
- if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
2643
+ if getUnitTypeId(unitHandle) ~= dummyUnitId and not isItemIgnoredInEvents(itemHandle) then
2689
2644
  local unit = ____exports.Unit:of(unitHandle)
2690
2645
  local item = Item:of(itemHandle)
2691
- if item.owner ~= unit then
2646
+ if ownerByItem[item] ~= unit then
2692
2647
  return unit, item
2693
2648
  end
2694
2649
  end
@@ -2701,17 +2656,12 @@ Unit.itemUsedEvent = __TS__New(
2701
2656
  function()
2702
2657
  local unit = getTriggerUnit()
2703
2658
  local item = getManipulatedItem()
2704
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2659
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2705
2660
  return ____exports.Unit:of(unit), Item:of(item)
2706
2661
  end
2707
2662
  return IgnoreEvent
2708
2663
  end
2709
2664
  )
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
2665
  __TS__ObjectDefineProperty(
2716
2666
  Unit,
2717
2667
  "itemChargesChangedEvent",
@@ -2727,51 +2677,6 @@ __TS__ObjectDefineProperty(
2727
2677
  return event
2728
2678
  end}
2729
2679
  )
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
2680
  __TS__ObjectDefineProperty(
2776
2681
  Unit,
2777
2682
  "onCreate",
@@ -2818,11 +2723,7 @@ Unit.synchronize = synchronizer(
2818
2723
  function(____, id) return fourCC(id) end
2819
2724
  )
2820
2725
  end)
2821
- for ____, leaveOrderId in ipairs({
2822
- orderId("undefend"),
2823
- orderId("magicundefense"),
2824
- orderId("unimmolation")
2825
- }) do
2726
+ for ____, leaveOrderId in ipairs({852056, 852479, 852178}) do
2826
2727
  ____exports.Unit.onImmediateOrder[leaveOrderId]:addListener(function(unit)
2827
2728
  local handle = unit.handle
2828
2729
  for i = 1, #leaveAbilityIds do
@@ -2830,7 +2731,8 @@ Unit.synchronize = synchronizer(
2830
2731
  return
2831
2732
  end
2832
2733
  end
2833
- unit:destroy()
2734
+ unit:saveData()
2735
+ Timer:run(unit, "destroy")
2834
2736
  end)
2835
2737
  end
2836
2738
  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
  }