warscript 0.0.1-dev.9c98c3a → 0.0.1-dev.9d07b64

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 (345) 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 +18 -1
  10. package/core/types/player.lua +73 -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 +9 -3
  15. package/core/types/tileCell.lua +16 -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 +10 -2
  26. package/engine/behavior.lua +157 -76
  27. package/engine/behaviour/ability/apply-buff.lua +4 -4
  28. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  29. package/engine/behaviour/ability/damage.d.ts +4 -0
  30. package/engine/behaviour/ability/damage.lua +19 -15
  31. package/engine/behaviour/ability/emulate-impact.lua +5 -4
  32. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  33. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  34. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  35. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  36. package/engine/behaviour/ability.d.ts +13 -6
  37. package/engine/behaviour/ability.lua +102 -9
  38. package/engine/behaviour/unit/stun-immunity.d.ts +7 -5
  39. package/engine/behaviour/unit/stun-immunity.lua +6 -5
  40. package/engine/behaviour/unit.d.ts +8 -3
  41. package/engine/behaviour/unit.lua +102 -24
  42. package/engine/buff.d.ts +112 -54
  43. package/engine/buff.lua +559 -280
  44. package/engine/index.d.ts +2 -1
  45. package/engine/internal/ability.d.ts +7 -0
  46. package/engine/internal/ability.lua +65 -36
  47. package/engine/internal/item/fields.d.ts +12 -0
  48. package/engine/internal/item/fields.lua +33 -0
  49. package/engine/internal/item/owner-cache.d.ts +5 -0
  50. package/engine/internal/item/owner-cache.lua +4 -0
  51. package/engine/internal/item+owner.d.ts +2 -0
  52. package/engine/internal/item+owner.lua +27 -4
  53. package/engine/internal/item.d.ts +20 -5
  54. package/engine/internal/item.lua +146 -57
  55. package/engine/internal/mechanics/cast-ability.lua +6 -3
  56. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  57. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  58. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  59. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  60. package/engine/internal/object-data/health-bonus.lua +16 -0
  61. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  62. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  63. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  64. package/engine/internal/object-data/mana-bonus.lua +16 -0
  65. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  66. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  67. package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
  68. package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
  69. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  70. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  71. package/engine/internal/unit/appearance.d.ts +15 -0
  72. package/engine/internal/unit/appearance.lua +85 -0
  73. package/engine/internal/unit/attributes.d.ts +17 -0
  74. package/engine/internal/unit/attributes.lua +46 -0
  75. package/engine/internal/unit/bonus.d.ts +17 -0
  76. package/engine/internal/unit/bonus.lua +113 -8
  77. package/engine/internal/unit/buff.d.ts +2 -2
  78. package/engine/internal/unit/buff.lua +34 -19
  79. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  80. package/engine/internal/unit/equipment-inventory.lua +233 -0
  81. package/engine/internal/unit/expiration-timer.lua +1 -1
  82. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  83. package/engine/internal/unit/extended-inventory.lua +99 -0
  84. package/engine/internal/unit/fly-height.d.ts +7 -0
  85. package/engine/internal/unit/fly-height.lua +20 -0
  86. package/engine/internal/unit/ignore-events-items.lua +10 -1
  87. package/engine/internal/unit/interrupts.d.ts +12 -0
  88. package/engine/internal/unit/interrupts.lua +28 -0
  89. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  90. package/engine/internal/unit/inventory.lua +87 -0
  91. package/engine/internal/unit/item-container.d.ts +25 -0
  92. package/engine/internal/unit/item-container.lua +11 -0
  93. package/engine/internal/unit/item-order-events.d.ts +17 -0
  94. package/engine/internal/unit/item-order-events.lua +67 -0
  95. package/engine/internal/unit/item-slot.d.ts +27 -0
  96. package/engine/internal/unit/item-slot.lua +92 -0
  97. package/engine/internal/unit/main-selected.lua +12 -27
  98. package/engine/internal/unit/order.d.ts +3 -3
  99. package/engine/internal/unit/order.lua +10 -10
  100. package/engine/internal/unit/range-event.d.ts +12 -0
  101. package/engine/internal/unit/range-event.lua +90 -0
  102. package/engine/internal/unit/scale.d.ts +7 -0
  103. package/engine/internal/unit/scale.lua +20 -0
  104. package/engine/internal/unit+ability.d.ts +2 -1
  105. package/engine/internal/unit+ability.lua +63 -2
  106. package/engine/internal/unit+bonus.lua +3 -3
  107. package/engine/internal/unit+damage.d.ts +9 -0
  108. package/engine/internal/unit+damage.lua +33 -0
  109. package/engine/internal/unit+rally.lua +9 -31
  110. package/engine/internal/unit-missile-data.lua +58 -32
  111. package/engine/internal/unit-missile-launch.lua +29 -19
  112. package/engine/internal/unit.d.ts +15 -29
  113. package/engine/internal/unit.lua +192 -272
  114. package/engine/local-client.d.ts +28 -0
  115. package/engine/local-client.lua +324 -54
  116. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  117. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  118. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  119. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  120. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  121. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  122. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  123. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  124. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  125. package/engine/object-data/auxiliary/item-class.lua +2 -0
  126. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  127. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  128. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  129. package/engine/object-data/auxiliary/order-type.lua +2 -0
  130. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  131. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  132. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  133. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  134. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  135. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  136. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  137. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  138. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  139. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  140. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  141. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  142. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  143. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  144. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  145. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  146. package/engine/object-data/entry/ability-type/blank-configurable.lua +2 -2
  147. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  148. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  149. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  150. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  151. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  152. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  153. package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
  154. package/engine/object-data/entry/ability-type/channel.lua +3 -3
  155. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  156. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  157. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  158. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  159. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  160. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  161. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  162. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  163. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  164. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  165. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  166. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  167. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  168. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  169. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  170. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  171. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  172. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  173. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  174. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  175. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  176. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  177. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  178. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  179. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  180. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  181. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  182. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  183. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  184. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  185. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  186. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  187. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  188. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  189. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  190. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  191. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  192. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  193. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  194. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  195. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  196. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  197. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  198. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  199. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  200. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  201. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  202. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  203. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  204. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  205. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  206. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  207. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  208. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  209. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  210. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  211. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  212. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  213. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  214. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  215. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  216. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  217. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  218. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  219. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  220. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  221. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  222. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  223. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  224. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  225. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  226. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  227. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  228. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  229. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  230. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  231. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  232. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  233. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  234. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  235. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  236. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  237. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  238. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  239. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  240. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  241. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  242. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  243. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  244. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  245. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  246. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  247. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  248. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  249. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  250. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  251. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  252. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  253. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  254. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  255. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  256. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  257. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  258. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  259. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  260. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  261. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  262. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  263. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  264. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  265. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  266. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  267. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  268. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  269. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  270. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  271. package/engine/object-data/entry/ability-type.d.ts +33 -8
  272. package/engine/object-data/entry/ability-type.lua +286 -11
  273. package/engine/object-data/entry/buff-type/applicable.lua +122 -111
  274. package/engine/object-data/entry/buff-type.d.ts +6 -2
  275. package/engine/object-data/entry/buff-type.lua +26 -0
  276. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  277. package/engine/object-data/entry/destructible-type.lua +181 -0
  278. package/engine/object-data/entry/item-type.d.ts +18 -3
  279. package/engine/object-data/entry/item-type.lua +84 -0
  280. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  281. package/engine/object-data/entry/lightning-type.lua +1 -1
  282. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  283. package/engine/object-data/entry/unit-type.d.ts +61 -2
  284. package/engine/object-data/entry/unit-type.lua +444 -52
  285. package/engine/object-data/entry/upgrade.d.ts +2 -2
  286. package/engine/object-data/entry.d.ts +6 -1
  287. package/engine/object-data/entry.lua +8 -0
  288. package/engine/object-field/ability.lua +2 -2
  289. package/engine/object-field/item.d.ts +22 -0
  290. package/engine/object-field/item.lua +118 -0
  291. package/engine/object-field/unit.d.ts +20 -5
  292. package/engine/object-field/unit.lua +61 -0
  293. package/engine/object-field.d.ts +10 -2
  294. package/engine/object-field.lua +268 -123
  295. package/engine/random.d.ts +1 -0
  296. package/engine/random.lua +8 -0
  297. package/engine/standard/entries/ability-type.d.ts +3102 -7
  298. package/engine/standard/entries/ability-type.lua +0 -6
  299. package/engine/standard/entries/buff-type.d.ts +45 -0
  300. package/engine/standard/entries/buff-type.lua +43 -0
  301. package/engine/standard/entries/item-type.d.ts +1299 -0
  302. package/engine/standard/entries/item-type.lua +2 -0
  303. package/engine/standard/entries/lightning-type.d.ts +42 -15
  304. package/engine/standard/entries/lightning-type.lua +0 -14
  305. package/engine/standard/entries/unit-type.d.ts +5 -0
  306. package/engine/standard/entries/unit-type.lua +5 -0
  307. package/engine/standard/fields/ability.d.ts +4 -4
  308. package/engine/standard/fields/ability.lua +4 -4
  309. package/engine/standard/fields/item.d.ts +4 -0
  310. package/engine/standard/fields/item.lua +6 -0
  311. package/engine/standard/fields/unit.d.ts +11 -3
  312. package/engine/standard/fields/unit.lua +15 -2
  313. package/engine/synchronization.d.ts +11 -0
  314. package/engine/synchronization.lua +77 -0
  315. package/engine/text-tag.lua +2 -1
  316. package/engine/unit.d.ts +10 -1
  317. package/engine/unit.lua +10 -1
  318. package/event.d.ts +1 -1
  319. package/lualib_bundle.lua +1 -1
  320. package/math.d.ts +2 -0
  321. package/math.lua +14 -0
  322. package/net/socket.lua +1 -1
  323. package/network.lua +25 -1
  324. package/objutil/buff.lua +10 -8
  325. package/objutil/object.lua +1 -1
  326. package/operation.d.ts +8 -1
  327. package/operation.lua +38 -18
  328. package/package.json +3 -23
  329. package/patch-lua.lua +15 -0
  330. package/utility/arrays.d.ts +7 -1
  331. package/utility/arrays.lua +17 -0
  332. package/utility/linked-map.d.ts +35 -0
  333. package/utility/linked-map.lua +107 -0
  334. package/utility/linked-set.d.ts +3 -1
  335. package/utility/linked-set.lua +27 -0
  336. package/utility/random.d.ts +102 -0
  337. package/utility/random.lua +273 -0
  338. package/utility/records.lua +20 -1
  339. package/utility/unordered-map.d.ts +27 -0
  340. package/utility/unordered-map.lua +99 -0
  341. package/engine/internal/unit/item.lua +0 -78
  342. /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
  343. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  344. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  345. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/core/dummy.lua CHANGED
@@ -15,6 +15,8 @@ local ____preconditions = require("utility.preconditions")
15
15
  local checkNotNull = ____preconditions.checkNotNull
16
16
  local ____ability = require("engine.internal.ability")
17
17
  local getOrderIdByAbilityTypeId = ____ability.getOrderIdByAbilityTypeId
18
+ local ____unit_2Dability_2Dlevel_2Dnatives = require("engine.internal.misc.unit-ability-level-natives")
19
+ local rawSetUnitAbilityLevel = ____unit_2Dability_2Dlevel_2Dnatives.rawSetUnitAbilityLevel
18
20
  local neutralVictim = Player.neutralVictim.handle
19
21
  ____exports.InstantDummyCaster = __TS__Class()
20
22
  local InstantDummyCaster = ____exports.InstantDummyCaster
@@ -42,7 +44,7 @@ function InstantDummyCaster.prototype.prepare(self, owner, abilityId, level)
42
44
  if type(abilityId) == "number" then
43
45
  UnitAddAbility(dummy, abilityId)
44
46
  if type(level) == "number" then
45
- SetUnitAbilityLevel(dummy, abilityId, level + 1)
47
+ rawSetUnitAbilityLevel(dummy, abilityId, level + 1)
46
48
  else
47
49
  level(UnitAbility:of(
48
50
  checkNotNull(BlzGetUnitAbility(dummy, abilityId)),
@@ -56,7 +58,7 @@ function InstantDummyCaster.prototype.prepare(self, owner, abilityId, level)
56
58
  end
57
59
  if __TS__ArrayIsArray(level) then
58
60
  for i = 1, #abilityId do
59
- SetUnitAbilityLevel(dummy, abilityId[i], level[i] + 1)
61
+ rawSetUnitAbilityLevel(dummy, abilityId[i], level[i] + 1)
60
62
  end
61
63
  else
62
64
  local abilities = {}
@@ -5,7 +5,9 @@ import { PlayerColor } from "./playerColor";
5
5
  declare const enum EffectPropertyKey {
6
6
  COLOR = 100,
7
7
  PITCH = 101,
8
- ROLL = 102
8
+ ROLL = 102,
9
+ BLEND_TIME = 103,
10
+ TIME_SCALE = 104
9
11
  }
10
12
  export type EffectParameters = {
11
13
  readonly delay?: number;
@@ -21,7 +23,15 @@ export declare class Effect extends Handle<jeffect> {
21
23
  private [EffectPropertyKey.COLOR]?;
22
24
  private [EffectPropertyKey.PITCH]?;
23
25
  private [EffectPropertyKey.ROLL]?;
26
+ private [EffectPropertyKey.BLEND_TIME]?;
27
+ private [EffectPropertyKey.TIME_SCALE]?;
24
28
  protected onDestroy(): HandleDestructor;
29
+ setAnimation(animation: string): void;
30
+ queueAnimation(animation: string): void;
31
+ get blendTime(): number;
32
+ set blendTime(blendTime: number);
33
+ get timeScale(): number;
34
+ set timeScale(timeScale: number);
25
35
  get color(): PlayerColor;
26
36
  set color(color: PlayerColor);
27
37
  get scale(): number;
@@ -15,25 +15,22 @@ local ____timer = require("core.types.timer")
15
15
  local Timer = ____timer.Timer
16
16
  local ____unit = require("engine.internal.unit")
17
17
  local Unit = ____unit.Unit
18
- local ____pairs = _G.pairs
19
- local select = _G.select
20
- local mathRad = math.rad
21
18
  local addSpecialEffect = AddSpecialEffect
22
19
  local addSpecialEffectTarget = AddSpecialEffectTarget
23
20
  local destroyEffect = DestroyEffect
21
+ local getLocationZ = GetLocationZ
24
22
  local getSpecialEffectScale = BlzGetSpecialEffectScale
25
- local playSpecialEffect = BlzPlaySpecialEffect
26
- local setSpecialEffectScale = BlzSetSpecialEffectScale
23
+ local moveLocation = MoveLocation
24
+ local queueSpecialEffectAnimation = BlzQueueSpecialEffectAnimation
25
+ local setSpecialEffectAnimation = BlzSetSpecialEffectAnimation
26
+ local setSpecialEffectAnimationBlendTime = BlzSetSpecialEffectAnimationBlendTime
27
+ local setSpecialEffectTimeScale = BlzSetSpecialEffectTimeScale
28
+ local setSpecialEffectColorByPlayer = BlzSetSpecialEffectColorByPlayer
27
29
  local setSpecialEffectPitch = BlzSetSpecialEffectPitch
28
30
  local setSpecialEffectRoll = BlzSetSpecialEffectRoll
29
- local setSpecialEffectColorByPlayer = BlzSetSpecialEffectColorByPlayer
30
- local specialEffectAddSubAnimation = BlzSpecialEffectAddSubAnimation
31
- local specialEffectClearSubAnimations = BlzSpecialEffectClearSubAnimations
32
- local specialEffectRemoveSubAnimation = BlzSpecialEffectRemoveSubAnimation
31
+ local setSpecialEffectScale = BlzSetSpecialEffectScale
33
32
  local setSpecialEffectZ = BlzSetSpecialEffectZ
34
- local getLocationZ = GetLocationZ
35
- local getUnitZ = BlzGetUnitZ
36
- local moveLocation = MoveLocation
33
+ local mathRad = math.rad
37
34
  local location = Location(0, 0)
38
35
  local function setSpecialEffectPitchDegrees(effect, pitch)
39
36
  setSpecialEffectPitch(
@@ -47,71 +44,6 @@ local function setSpecialEffectRollDegrees(effect, roll)
47
44
  -mathRad(roll)
48
45
  )
49
46
  end
50
- local animTypeByAnimationName = {
51
- attack = ANIM_TYPE_ATTACK,
52
- birth = ANIM_TYPE_BIRTH,
53
- death = ANIM_TYPE_DEATH,
54
- decay = ANIM_TYPE_DECAY,
55
- dissipate = ANIM_TYPE_DISSIPATE,
56
- morph = ANIM_TYPE_MORPH,
57
- portrait = ANIM_TYPE_PORTRAIT,
58
- sleep = ANIM_TYPE_SLEEP,
59
- spell = ANIM_TYPE_SPELL,
60
- stand = ANIM_TYPE_STAND,
61
- walk = ANIM_TYPE_WALK
62
- }
63
- local subAnimTypeByAnimationQualifier = {
64
- alternate = SUBANIM_TYPE_ROOTED,
65
- alternateex = SUBANIM_TYPE_ALTERNATE_EX,
66
- chain = SUBANIM_TYPE_CHAINLIGHTNING,
67
- channel = SUBANIM_TYPE_CHANNEL,
68
- complete = SUBANIM_TYPE_COMPLETE,
69
- critical = SUBANIM_TYPE_CRITICAL,
70
- defend = SUBANIM_TYPE_DEFEND,
71
- drain = SUBANIM_TYPE_DRAIN,
72
- eattree = SUBANIM_TYPE_EATTREE,
73
- fast = SUBANIM_TYPE_FAST,
74
- fill = SUBANIM_TYPE_FILL,
75
- flail = SUBANIM_TYPE_FLAIL,
76
- flesh = SUBANIM_TYPE_FLESH,
77
- fifth = SUBANIM_TYPE_FIFTH,
78
- fire = SUBANIM_TYPE_FIRE,
79
- first = SUBANIM_TYPE_FIRST,
80
- five = SUBANIM_TYPE_FIVE,
81
- four = SUBANIM_TYPE_FOUR,
82
- fourth = SUBANIM_TYPE_FOURTH,
83
- gold = SUBANIM_TYPE_GOLD,
84
- hit = SUBANIM_TYPE_HIT,
85
- large = SUBANIM_TYPE_LARGE,
86
- left = SUBANIM_TYPE_LEFT,
87
- light = SUBANIM_TYPE_LIGHT,
88
- looping = SUBANIM_TYPE_LOOPING,
89
- lumber = SUBANIM_TYPE_LUMBER,
90
- medium = SUBANIM_TYPE_MEDIUM,
91
- moderate = SUBANIM_TYPE_MODERATE,
92
- off = SUBANIM_TYPE_OFF,
93
- one = SUBANIM_TYPE_ONE,
94
- puke = SUBANIM_TYPE_PUKE,
95
- ready = SUBANIM_TYPE_READY,
96
- right = SUBANIM_TYPE_RIGHT,
97
- second = SUBANIM_TYPE_SECOND,
98
- severe = SUBANIM_TYPE_SEVERE,
99
- slam = SUBANIM_TYPE_SLAM,
100
- small = SUBANIM_TYPE_SMALL,
101
- spiked = SUBANIM_TYPE_SPIKED,
102
- spin = SUBANIM_TYPE_SPIN,
103
- swim = SUBANIM_TYPE_SWIM,
104
- talk = SUBANIM_TYPE_TALK,
105
- third = SUBANIM_TYPE_THIRD,
106
- three = SUBANIM_TYPE_THREE,
107
- throw = SUBANIM_TYPE_THROW,
108
- two = SUBANIM_TYPE_TWO,
109
- turn = SUBANIM_TYPE_TURN,
110
- victory = SUBANIM_TYPE_VICTORY,
111
- work = SUBANIM_TYPE_WORK,
112
- wounded = SUBANIM_TYPE_WOUNDED,
113
- upgrade = SUBANIM_TYPE_UPGRADE
114
- }
115
47
  local function setSpecialEffectColor(effect, color)
116
48
  local dummyColor = dummyPlayer.color
117
49
  dummyPlayer.color = color
@@ -178,6 +110,12 @@ function Effect.prototype.onDestroy(self)
178
110
  destroyEffect(self.handle)
179
111
  return Handle.prototype.onDestroy(self)
180
112
  end
113
+ function Effect.prototype.setAnimation(self, animation)
114
+ setSpecialEffectAnimation(self.handle, animation)
115
+ end
116
+ function Effect.prototype.queueAnimation(self, animation)
117
+ queueSpecialEffectAnimation(self.handle, animation)
118
+ end
181
119
  function Effect.create(self, modelPath, xOrWidget, yOrAttachmentPoint, parameters)
182
120
  local effect = self:of(addSpecialEffectInternal(modelPath, xOrWidget, yOrAttachmentPoint, parameters))
183
121
  if parameters ~= nil then
@@ -210,6 +148,34 @@ function Effect.flash(self, modelPath, xOrWidget, yOrOrAttachmentPoint, paramete
210
148
  parameters
211
149
  )
212
150
  end
151
+ __TS__SetDescriptor(
152
+ Effect.prototype,
153
+ "blendTime",
154
+ {
155
+ get = function(self)
156
+ return self[103] or 0
157
+ end,
158
+ set = function(self, blendTime)
159
+ setSpecialEffectAnimationBlendTime(self.handle, blendTime)
160
+ self[103] = blendTime
161
+ end
162
+ },
163
+ true
164
+ )
165
+ __TS__SetDescriptor(
166
+ Effect.prototype,
167
+ "timeScale",
168
+ {
169
+ get = function(self)
170
+ return self[104] or 1
171
+ end,
172
+ set = function(self, timeScale)
173
+ setSpecialEffectTimeScale(self.handle, timeScale)
174
+ self[104] = timeScale
175
+ end
176
+ },
177
+ true
178
+ )
213
179
  __TS__SetDescriptor(
214
180
  Effect.prototype,
215
181
  "color",
@@ -80,6 +80,7 @@ export declare class Frame extends Handle<jframehandle> {
80
80
  get onMouseLeave(): FrameEvent;
81
81
  get onMouseUp(): FrameEvent;
82
82
  get onMouseWheel(): FrameEvent<[number]>;
83
+ private trackMouseLocally;
83
84
  get mouseEnterLocalEvent(): Event;
84
85
  get mouseLeaveLocalEvent(): Event;
85
86
  get popupMenuItemChangeEvent(): FrameEvent<[
@@ -136,8 +137,21 @@ export declare class Frame extends Handle<jframehandle> {
136
137
  static get onMouseUp(): Event<[Player, jmousebuttontype, number, number]>;
137
138
  private static onMouseDownEvent?;
138
139
  static get onMouseDown(): Event<[Player, jmousebuttontype, number, number]>;
139
- static get onMouseMove(): Event<[player: Player, x: number, y: number]>;
140
- static get onMouseMoveLocal(): Event<[x: number, y: number]>;
140
+ /**
141
+ * Synchronized native mouse movement of every player. Each movement of every player's
142
+ * cursor is sent over the network, so with several players moving their mice this floods
143
+ * the network and raises the latency for everyone. Prefer {@link mouseMoveLocalEvent} and
144
+ * synchronize the needed coordinates explicitly, only when they matter (e.g. on a click).
145
+ */
146
+ static get mouseMoveEvent(): Event<[player: Player, x: number, y: number]>;
147
+ /**
148
+ * Fires on the local client when the world point under the cursor changes, whether the
149
+ * cursor or the camera moved. Polls the local cursor position every 1/64 second and sends
150
+ * nothing over the network. The point is the camera ray's intersection with the terrain,
151
+ * so it ignores units and doodads under the cursor. It is also computed while the cursor
152
+ * is over the UI; check {@link isMouseOnWorld} where that matters.
153
+ */
154
+ static get mouseMoveLocalEvent(): Event<[x: number, y: number]>;
141
155
  static createSimple<T extends Frame>(this: FrameSubclass<T>, name: string, parent?: Frame, createContext?: number): T;
142
156
  static create<T extends Frame>(this: FrameSubclass<T>, name: string, parent: Frame, priority?: number, createContext?: number): T;
143
157
  static createByType<T extends Frame>(this: FrameSubclass<T>, typeName: "BACKDROP" | "BUTTON" | "CHATDISPLAY" | "CHECKBOX" | "CONTROL" | "DIALOG" | "EDITBOX" | "FRAME" | "GLUEBUTTON" | "GLUECHECKBOX" | "GLUETEXTBUTTON" | "HIGHLIGHT" | "LISTBOX" | "MENU" | "POPUPMENU" | "SCROLLBAR" | "SLIDER" | "TEXT" | "TEXTAREA" | "TEXTBUTTON", name: string, parent: Frame, inherits?: string, createContext?: number): T;
@@ -21,14 +21,28 @@ local FRAME_MIN_Y = ____frame_2Dcoordinates.FRAME_MIN_Y
21
21
  local getFrameMinXMaxX = ____frame_2Dcoordinates.getFrameMinXMaxX
22
22
  local ____playerCamera = require("core.types.playerCamera")
23
23
  local frameCoordinatesToWorld = ____playerCamera.frameCoordinatesToWorld
24
- local worldCoordinatesToFrame = ____playerCamera.worldCoordinatesToFrame
25
- local ____get_2Dterrain_2Dz = require("engine.internal.misc.get-terrain-z")
26
- local getTerrainZ = ____get_2Dterrain_2Dz.getTerrainZ
24
+ local ____lua_2Dsets = require("utility.lua-sets")
25
+ local mutableLuaSet = ____lua_2Dsets.mutableLuaSet
26
+ local ____socket = require("net.socket")
27
+ local Socket = ____socket.Socket
28
+ local ____lua_2Dmaps = require("utility.lua-maps")
29
+ local getOrPut = ____lua_2Dmaps.getOrPut
30
+ local luaMapInvert = ____lua_2Dmaps.luaMapInvert
31
+ local luaMapOf = ____lua_2Dmaps.luaMapOf
32
+ local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
27
33
  local frameClick = BlzFrameClick
28
34
  local frameGetEnable = BlzFrameGetEnable
29
35
  local frameIsVisible = BlzFrameIsVisible
30
36
  local frameSetEnable = BlzFrameSetEnable
31
37
  local frameSetScale = BlzFrameSetScale
38
+ local getHandleId = GetHandleId
39
+ local getLocalClientHeight = BlzGetLocalClientHeight
40
+ local getMouseScreenPosX = BlzGetMouseScreenPosX
41
+ local getMouseScreenPosY = BlzGetMouseScreenPosY
42
+ local getOriginFrame = BlzGetOriginFrame
43
+ local location = Location
44
+ local pixelToFrameX = BlzPixelToFrameX
45
+ local pixelToFrameY = BlzPixelToFrameY
32
46
  local ____rawget = _G.rawget
33
47
  local rawset = _G.rawset
34
48
  local invoke = Event.invoke
@@ -130,6 +144,79 @@ do
130
144
  FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
131
145
  end
132
146
  local tooltipByFrame = setmetatable({}, {__mode = "k"})
147
+ local isMouseInsideLocallyByFrame = mutableLuaMap()
148
+ local mouseEnterLocalEventByFrame = mutableLuaMap()
149
+ local mouseLeaveLocalEventByFrame = mutableLuaMap()
150
+ local isLocalMouseTrackingStarted = false
151
+ --- Reused across ticks to avoid per-tick allocations: only the first `leftFrameCount` /
152
+ -- `enteredFrameCount` entries are meaningful, stale entries beyond them are never read and are
153
+ -- kept collectable by the weak values mode.
154
+ local leftFrames = setmetatable({}, {__mode = "v"})
155
+ local enteredFrames = setmetatable({}, {__mode = "v"})
156
+ --- All frames share a single poll which invokes every mouse leave event before any mouse enter
157
+ -- event within the same tick. With a poll per event, the invocation order would depend on the
158
+ -- event creation order instead, breaking listeners relying on the natural "leave the old frame,
159
+ -- then enter the new frame" order.
160
+ local function startLocalMouseTracking()
161
+ if isLocalMouseTrackingStarted then
162
+ return
163
+ end
164
+ isLocalMouseTrackingStarted = true
165
+ Timer.onPeriod[1 / 64]:addListener(function()
166
+ local leftFrameCount = 0
167
+ local enteredFrameCount = 0
168
+ for frame, wasMouseInside in pairs(isMouseInsideLocallyByFrame) do
169
+ local tooltip = tooltipByFrame[frame]
170
+ local isMouseInside = tooltip ~= nil and tooltip.visible
171
+ if isMouseInside ~= wasMouseInside then
172
+ isMouseInsideLocallyByFrame[frame] = isMouseInside
173
+ if isMouseInside then
174
+ enteredFrames[enteredFrameCount + 1] = frame
175
+ enteredFrameCount = enteredFrameCount + 1
176
+ else
177
+ leftFrames[leftFrameCount + 1] = frame
178
+ leftFrameCount = leftFrameCount + 1
179
+ end
180
+ end
181
+ end
182
+ for i = 1, leftFrameCount do
183
+ local event = mouseLeaveLocalEventByFrame[leftFrames[i]]
184
+ if event ~= nil then
185
+ Event.invoke(event)
186
+ end
187
+ end
188
+ for i = 1, enteredFrameCount do
189
+ local event = mouseEnterLocalEventByFrame[enteredFrames[i]]
190
+ if event ~= nil then
191
+ Event.invoke(event)
192
+ end
193
+ end
194
+ end)
195
+ end
196
+ local keyByAsyncInitOriginFrameType = luaMapOf(ORIGIN_FRAME_PORTRAIT_HP_TEXT, "hp", ORIGIN_FRAME_PORTRAIT_MANA_TEXT, "mana")
197
+ local asyncInitOriginFrameTypeByKey = luaMapInvert(keyByAsyncInitOriginFrameType)
198
+ local seenAsyncInitOriginFrameTypes = mutableLuaSet()
199
+ local seenAsyncInitOriginFrameTypesSocket = __TS__New(Socket)
200
+ local seenPlayersByAsyncInitOriginFrameType = mutableLuaMap()
201
+ seenAsyncInitOriginFrameTypesSocket.onMessage:addListener(function(player, key)
202
+ local asyncInitOriginFrameType = asyncInitOriginFrameTypeByKey[key]
203
+ if asyncInitOriginFrameType ~= nil then
204
+ getOrPut(seenPlayersByAsyncInitOriginFrameType, asyncInitOriginFrameType, mutableLuaSet)[player] = true
205
+ end
206
+ end)
207
+ local function haveAllPlayersSeenAsyncInitOriginFrameType(frame)
208
+ local players = seenPlayersByAsyncInitOriginFrameType[frame]
209
+ if players == nil then
210
+ return false
211
+ end
212
+ for ____, player in ipairs(Player.all) do
213
+ if player.isUser and player.isPlaying and not (players[player] ~= nil) then
214
+ return false
215
+ end
216
+ end
217
+ keyByAsyncInitOriginFrameType[frame] = nil
218
+ return true
219
+ end
133
220
  ____exports.Frame = __TS__Class()
134
221
  local Frame = ____exports.Frame
135
222
  Frame.name = "Frame"
@@ -162,6 +249,18 @@ function Frame.prototype.getEvent(self, eventType, c)
162
249
  end
163
250
  return self.events[eventId]
164
251
  end
252
+ function Frame.prototype.trackMouseLocally(self)
253
+ if not (tooltipByFrame[self] ~= nil) then
254
+ ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
255
+ local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
256
+ ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
257
+ self:setTooltip(tooltip)
258
+ end
259
+ if not (isMouseInsideLocallyByFrame[self] ~= nil) then
260
+ isMouseInsideLocallyByFrame[self] = false
261
+ startLocalMouseTracking()
262
+ end
263
+ end
165
264
  function Frame.prototype.hide(self)
166
265
  self.hideCounter = self.hideCounter + 1
167
266
  if self.hideCounter > 0 then
@@ -308,7 +407,17 @@ function Frame.byOrigin(self, frameType, index)
308
407
  if index == nil then
309
408
  index = 0
310
409
  end
311
- return self:of(BlzGetOriginFrame(frameType, index))
410
+ local frame = getOriginFrame(frameType, index)
411
+ local asyncInitOriginFrameTypeKey = keyByAsyncInitOriginFrameType[frameType]
412
+ if index == 0 and asyncInitOriginFrameTypeKey ~= nil and not haveAllPlayersSeenAsyncInitOriginFrameType(frameType) then
413
+ if getHandleId(frame) == 0 or seenAsyncInitOriginFrameTypes[frameType] ~= nil then
414
+ location(0, 0)
415
+ else
416
+ seenAsyncInitOriginFrameTypes[frameType] = true
417
+ seenAsyncInitOriginFrameTypesSocket:send(asyncInitOriginFrameTypeKey)
418
+ end
419
+ end
420
+ return self:of(frame)
312
421
  end
313
422
  Frame.GAME_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_GAME_UI)
314
423
  Frame.CONSOLE_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_SIMPLE_UI_PARENT)
@@ -627,24 +736,8 @@ __TS__SetDescriptor(
627
736
  "mouseEnterLocalEvent",
628
737
  {get = function(self)
629
738
  local event = __TS__New(Event)
630
- if not (tooltipByFrame[self] ~= nil) then
631
- ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
632
- local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
633
- ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
634
- self:setTooltip(tooltip)
635
- end
636
- local isMouseInside = false
637
- Timer.onPeriod[1 / 64]:addListener(function()
638
- local tooltip = tooltipByFrame[self]
639
- if tooltip and tooltip.visible then
640
- if not isMouseInside then
641
- isMouseInside = true
642
- Event.invoke(event)
643
- end
644
- else
645
- isMouseInside = false
646
- end
647
- end)
739
+ self:trackMouseLocally()
740
+ mouseEnterLocalEventByFrame[self] = event
648
741
  rawset(self, "mouseEnterLocalEvent", event)
649
742
  return event
650
743
  end},
@@ -655,24 +748,8 @@ __TS__SetDescriptor(
655
748
  "mouseLeaveLocalEvent",
656
749
  {get = function(self)
657
750
  local event = __TS__New(Event)
658
- if not (tooltipByFrame[self] ~= nil) then
659
- ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
660
- local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
661
- ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
662
- self:setTooltip(tooltip)
663
- end
664
- local isMouseInside = false
665
- Timer.onPeriod[1 / 64]:addListener(function()
666
- local tooltip = tooltipByFrame[self]
667
- if tooltip and tooltip.visible then
668
- isMouseInside = true
669
- else
670
- if isMouseInside then
671
- isMouseInside = false
672
- Event.invoke(event)
673
- end
674
- end
675
- end)
751
+ self:trackMouseLocally()
752
+ mouseLeaveLocalEventByFrame[self] = event
676
753
  rawset(self, "mouseLeaveLocalEvent", event)
677
754
  return event
678
755
  end},
@@ -913,7 +990,7 @@ __TS__ObjectDefineProperty(
913
990
  )
914
991
  __TS__ObjectDefineProperty(
915
992
  Frame,
916
- "onMouseMove",
993
+ "mouseMoveEvent",
917
994
  {get = function(self)
918
995
  local event = __TS__New(
919
996
  TriggerEvent,
@@ -927,48 +1004,32 @@ __TS__ObjectDefineProperty(
927
1004
  ) end,
928
1005
  function() return Player:of(GetTriggerPlayer()), BlzGetTriggerPlayerMouseX(), BlzGetTriggerPlayerMouseY() end
929
1006
  )
930
- rawset(____exports.Frame, "onMouseMove", event)
1007
+ rawset(____exports.Frame, "mouseMoveEvent", event)
931
1008
  return event
932
1009
  end}
933
1010
  )
934
1011
  __TS__ObjectDefineProperty(
935
1012
  Frame,
936
- "onMouseMoveLocal",
1013
+ "mouseMoveLocalEvent",
937
1014
  {get = function(self)
938
- local invoke = Event.invoke
939
1015
  local event = __TS__New(Event)
940
- local syncX = 0
941
- local syncY = 0
942
- local syncFrameX = 0
943
- local syncFrameY = 0
944
- local lastX = syncX
945
- local lastY = syncY
946
- self.onMouseMove:addListener(function(player, x, y)
947
- if player.isLocal then
948
- syncX = x
949
- syncY = y
950
- syncFrameX, syncFrameY = worldCoordinatesToFrame(
951
- x,
952
- y,
953
- getTerrainZ(x, y)
954
- )
955
- lastX = x
956
- lastY = y
957
- invoke(event, x, y)
958
- end
959
- end)
1016
+ local lastX = 0
1017
+ local lastY = 0
960
1018
  Timer.onPeriod[1 / 64]:addListener(function()
961
- if syncX == 0 and syncY == 0 then
1019
+ if getLocalClientHeight() == 0 then
962
1020
  return
963
1021
  end
964
- local x, y, ____, isDefinite = frameCoordinatesToWorld(syncFrameX, syncFrameY)
1022
+ local x, y, ____, isDefinite = frameCoordinatesToWorld(
1023
+ pixelToFrameX(getMouseScreenPosX()),
1024
+ pixelToFrameY(getMouseScreenPosY())
1025
+ )
965
1026
  if isDefinite and (x ~= lastX or y ~= lastY) then
966
1027
  lastX = x
967
1028
  lastY = y
968
1029
  invoke(event, x, y)
969
1030
  end
970
1031
  end)
971
- rawset(____exports.Frame, "onMouseMoveLocal", event)
1032
+ rawset(____exports.Frame, "mouseMoveLocalEvent", event)
972
1033
  return event
973
1034
  end}
974
1035
  )
@@ -15,6 +15,8 @@ local ____exception = require("exception")
15
15
  local IllegalStateException = ____exception.IllegalStateException
16
16
  local ____attributes = require("attributes")
17
17
  local AttributesHolder = ____attributes.AttributesHolder
18
+ local ____preconditions = require("utility.preconditions")
19
+ local checkNotNull = ____preconditions.checkNotNull
18
20
  local getHandleId = GetHandleId
19
21
  local onCreateEventByHandleConstructor = {}
20
22
  local onDestroyEventByHandleConstructor = {}
@@ -58,6 +60,9 @@ function Handle.invokeOnCreateEvent(self, clazz, handle)
58
60
  Event.invoke(onCreateEvent, handle)
59
61
  end
60
62
  end
63
+ function Handle.isWrapped(self, handle)
64
+ return self.memoized[getHandleId(handle)] ~= nil
65
+ end
61
66
  function Handle.prototype.__tostring(self)
62
67
  return (self.constructor.name .. "@") .. tostring(getHandleId(self.handle))
63
68
  end
@@ -66,17 +71,12 @@ function Handle.prototype.onDestroy(self, ...)
66
71
  return nil
67
72
  end
68
73
  function Handle.prototype.destroy(self, ...)
74
+ if self[0] == 2 or self[0] == 3 then
75
+ return nil
76
+ end
69
77
  local clazz = self.constructor
70
78
  local id = getHandleId(self.handle)
71
- if not clazz.memoized[id] then
72
- error(
73
- __TS__New(
74
- IllegalStateException,
75
- "Double-destroy run for handle " .. tostring(id)
76
- ),
77
- 0
78
- )
79
- end
79
+ checkNotNull(clazz.memoized[id])
80
80
  self[0] = 2
81
81
  if self.onDestroyEvent then
82
82
  Event.invoke(self.onDestroyEvent)
@@ -1,4 +1,5 @@
1
1
  /** @noSelfInFile */
2
2
  import { Item } from "../../engine/internal/item";
3
3
  import "../../engine/internal/item+owner";
4
+ import "../../engine/internal/item/fields";
4
5
  export { Item };
@@ -2,5 +2,6 @@ local ____exports = {}
2
2
  local ____item = require("engine.internal.item")
3
3
  local Item = ____item.Item
4
4
  require("engine.internal.item+owner")
5
+ require("engine.internal.item.fields")
5
6
  ____exports.Item = Item
6
7
  return ____exports
@@ -7,6 +7,18 @@ import { UpgradeId } from "../../engine/object-data/entry/upgrade";
7
7
  interface Unit {
8
8
  handle: junit;
9
9
  }
10
+ export declare const enum PlayerAllianceType {
11
+ PASSIVE = 0,
12
+ RESCUABLE = 1,
13
+ HELP_REQUEST = 2,
14
+ HELP_RESPONSE = 3,
15
+ SHARED_XP = 4,
16
+ SHARED_SPELLS = 5,
17
+ SHARED_VISION = 6,
18
+ SHARED_VISION_FORCED = 7,
19
+ SHARED_CONTROL = 8,
20
+ SHARED_ADVANCED_CONTROL = 9
21
+ }
10
22
  export declare class Player extends Handle<jplayer> {
11
23
  static readonly all: Player[];
12
24
  static readonly local: Player;
@@ -16,6 +28,7 @@ export declare class Player extends Handle<jplayer> {
16
28
  static readonly neutralExtra: Player;
17
29
  private static events;
18
30
  readonly id: number;
31
+ readonly slotState: jplayerslotstate;
19
32
  constructor(handle: jplayer);
20
33
  onDestroy(): HandleDestructor;
21
34
  toString(): string;
@@ -33,15 +46,17 @@ export declare class Player extends Handle<jplayer> {
33
46
  get isUser(): boolean;
34
47
  get isPlaying(): boolean;
35
48
  get controller(): jmapcontrol;
36
- get slotState(): jplayerslotstate;
37
49
  clearSelection(): void;
38
50
  selectSingle(unit: Unit): void;
39
51
  select(unit: Unit): void;
40
52
  deselect(unit: Unit): void;
53
+ setRaceSkin(racePreference: jracepreference): void;
41
54
  forceUIKey(key: string): void;
42
55
  forceUICancel(): void;
43
56
  isAllyOf(other: Player): boolean;
44
57
  isEnemyOf(other: Player): boolean;
58
+ setAlliance(other: Player, type: PlayerAllianceType, value: boolean): void;
59
+ getAlliance(other: Player, type: PlayerAllianceType): boolean;
45
60
  setAbilityAvailable(abilityId: number, available: boolean): void;
46
61
  getMaximumUpgradeLevel(upgradeId: UpgradeId): number;
47
62
  setMaximumUpgradeLevel(upgradeId: UpgradeId, maximumLevel: number): void;
@@ -50,6 +65,7 @@ export declare class Player extends Handle<jplayer> {
50
65
  setUpgradeLevel(upgradeId: UpgradeId, level: number): void;
51
66
  private static getEvent;
52
67
  private static getMouseEvent;
68
+ static get allianceChangedEvent(): Readonly<Record<PlayerAllianceType, Event<[Player]>>>;
53
69
  static get onLeave(): Event<[Player]>;
54
70
  static get onMouseDown(): Event<[Player, jmousebuttontype]>;
55
71
  static get onMouseUp(): Event<[Player, jmousebuttontype]>;
@@ -66,6 +82,7 @@ export declare class Player extends Handle<jplayer> {
66
82
  };
67
83
  };
68
84
  static get onChat(): Event<[player: Player, message: string]>;
85
+ static readonly colorChangedEvent: Event<[Player]>;
69
86
  static byId(id: number): Player | undefined;
70
87
  }
71
88
  export {};