warscript 0.0.1-dev.bad60be → 0.0.1-dev.bc4cd10

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 (368) hide show
  1. package/attributes.d.ts +1 -0
  2. package/attributes.lua +9 -0
  3. package/core/dummy.lua +4 -2
  4. package/core/types/effect.d.ts +11 -1
  5. package/core/types/effect.lua +43 -77
  6. package/core/types/frame.d.ts +1 -0
  7. package/core/types/frame.lua +136 -58
  8. package/core/types/handle.lua +9 -9
  9. package/core/types/item.d.ts +1 -0
  10. package/core/types/item.lua +1 -0
  11. package/core/types/player.d.ts +18 -1
  12. package/core/types/player.lua +76 -26
  13. package/core/types/playerCamera.d.ts +2 -0
  14. package/core/types/playerCamera.lua +123 -5
  15. package/core/types/playerColor.lua +4 -3
  16. package/core/types/sound.d.ts +1 -1
  17. package/core/types/sound.lua +14 -9
  18. package/core/types/tileCell.d.ts +11 -1
  19. package/core/types/tileCell.lua +97 -0
  20. package/core/types/timer.d.ts +3 -1
  21. package/core/types/timer.lua +27 -2
  22. package/core/types/unit.d.ts +5 -0
  23. package/core/types/unit.lua +5 -0
  24. package/core/util.d.ts +3 -1
  25. package/core/util.lua +109 -3
  26. package/decl/native.d.ts +711 -11
  27. package/destroyable.d.ts +1 -0
  28. package/destroyable.lua +9 -0
  29. package/engine/behavior.d.ts +14 -1
  30. package/engine/behavior.lua +230 -70
  31. package/engine/behaviour/ability/apply-buff.lua +4 -4
  32. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  33. package/engine/behaviour/ability/damage.d.ts +4 -0
  34. package/engine/behaviour/ability/damage.lua +19 -15
  35. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  36. package/engine/behaviour/ability/emulate-impact.lua +7 -5
  37. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  38. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  39. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  40. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  41. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  42. package/engine/behaviour/ability/restore-mana.lua +6 -6
  43. package/engine/behaviour/ability.d.ts +13 -6
  44. package/engine/behaviour/ability.lua +56 -1
  45. package/engine/behaviour/unit/stun-immunity.d.ts +9 -5
  46. package/engine/behaviour/unit/stun-immunity.lua +17 -7
  47. package/engine/behaviour/unit.d.ts +16 -5
  48. package/engine/behaviour/unit.lua +135 -27
  49. package/engine/buff.d.ts +73 -27
  50. package/engine/buff.lua +424 -193
  51. package/engine/index.d.ts +2 -1
  52. package/engine/internal/ability.d.ts +7 -1
  53. package/engine/internal/ability.lua +90 -47
  54. package/engine/internal/item/ability.lua +2 -1
  55. package/engine/internal/item/fields.d.ts +12 -0
  56. package/engine/internal/item/fields.lua +33 -0
  57. package/engine/internal/item/owner-cache.d.ts +5 -0
  58. package/engine/internal/item/owner-cache.lua +4 -0
  59. package/engine/internal/item+owner.d.ts +2 -0
  60. package/engine/internal/item+owner.lua +37 -8
  61. package/engine/internal/item.d.ts +27 -14
  62. package/engine/internal/item.lua +185 -82
  63. package/engine/internal/mechanics/cast-ability.lua +6 -3
  64. package/engine/internal/misc/frame-coordinates.lua +21 -0
  65. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  66. package/engine/internal/misc/get-terrain-z.lua +11 -0
  67. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  68. package/engine/internal/misc/player-local-handle.lua +5 -0
  69. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  70. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  71. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  72. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  73. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  74. package/engine/internal/object-data/health-bonus.lua +16 -0
  75. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  76. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  77. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  78. package/engine/internal/object-data/mana-bonus.lua +16 -0
  79. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  80. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  81. package/engine/internal/unit/ability.d.ts +14 -14
  82. package/engine/internal/unit/ability.lua +86 -47
  83. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  84. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  85. package/engine/internal/unit/appearance.d.ts +15 -0
  86. package/engine/internal/unit/appearance.lua +85 -0
  87. package/engine/internal/unit/attributes.d.ts +17 -0
  88. package/engine/internal/unit/attributes.lua +46 -0
  89. package/engine/internal/unit/bonus.d.ts +14 -0
  90. package/engine/internal/unit/bonus.lua +102 -8
  91. package/engine/internal/unit/buff.d.ts +2 -2
  92. package/engine/internal/unit/buff.lua +34 -19
  93. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  94. package/engine/internal/unit/equipment-inventory.lua +233 -0
  95. package/engine/internal/unit/expiration-timer.lua +1 -1
  96. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  97. package/engine/internal/unit/extended-inventory.lua +99 -0
  98. package/engine/internal/unit/fly-height.d.ts +7 -0
  99. package/engine/internal/unit/fly-height.lua +20 -0
  100. package/engine/internal/unit/ignore-events-items.lua +10 -1
  101. package/engine/internal/unit/interrupts.d.ts +12 -0
  102. package/engine/internal/unit/interrupts.lua +28 -0
  103. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  104. package/engine/internal/unit/inventory.lua +87 -0
  105. package/engine/internal/unit/item-container.d.ts +25 -0
  106. package/engine/internal/unit/item-container.lua +11 -0
  107. package/engine/internal/unit/item-order-events.d.ts +17 -0
  108. package/engine/internal/unit/item-order-events.lua +67 -0
  109. package/engine/internal/unit/item-slot.d.ts +27 -0
  110. package/engine/internal/unit/item-slot.lua +92 -0
  111. package/engine/internal/unit/main-selected.lua +12 -27
  112. package/engine/internal/unit/order.d.ts +3 -3
  113. package/engine/internal/unit/order.lua +10 -10
  114. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  115. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  116. package/engine/internal/unit/range-event.d.ts +12 -0
  117. package/engine/internal/unit/range-event.lua +90 -0
  118. package/engine/internal/unit/scale.d.ts +7 -0
  119. package/engine/internal/unit/scale.lua +20 -0
  120. package/engine/internal/unit+ability.d.ts +2 -1
  121. package/engine/internal/unit+ability.lua +73 -3
  122. package/engine/internal/unit+bonus.lua +3 -3
  123. package/engine/internal/unit+damage.d.ts +9 -0
  124. package/engine/internal/unit+damage.lua +33 -0
  125. package/engine/internal/unit+rally.lua +9 -31
  126. package/engine/internal/unit-missile-data.lua +58 -32
  127. package/engine/internal/unit-missile-launch.lua +65 -27
  128. package/engine/internal/unit.d.ts +19 -32
  129. package/engine/internal/unit.lua +241 -341
  130. package/engine/local-client.d.ts +28 -0
  131. package/engine/local-client.lua +324 -54
  132. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  133. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  134. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  135. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  136. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  137. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  138. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  139. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  140. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  141. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  142. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  143. package/engine/object-data/auxiliary/item-class.lua +2 -0
  144. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  145. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  146. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  147. package/engine/object-data/auxiliary/order-type.lua +2 -0
  148. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  149. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  150. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  151. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  152. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  153. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  154. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  155. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  156. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  157. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  158. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  159. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  160. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  161. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  162. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  163. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  164. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  165. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  166. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  167. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  168. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  169. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  170. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  171. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  172. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  173. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  174. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  175. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  176. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  177. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  178. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  179. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  180. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  181. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  182. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  183. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  184. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  185. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  186. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  187. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  188. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  189. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  190. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  191. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  192. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  193. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  194. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  195. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  196. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  197. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  198. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  199. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  200. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  201. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  202. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  203. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  204. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  205. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  206. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  207. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  208. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  209. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  210. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  211. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  212. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  213. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  214. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  215. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  216. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  217. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  218. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  219. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  220. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  221. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  222. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  223. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  224. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  225. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  226. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  227. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  228. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  229. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  230. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  231. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  232. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  233. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  234. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  235. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  236. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  237. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  238. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  239. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  240. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  241. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  242. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  243. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  244. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  245. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  246. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  247. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  248. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  249. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  250. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  251. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  252. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  253. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  254. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  255. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  256. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  257. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  258. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  259. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  260. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  261. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  262. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  263. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  264. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  265. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  266. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  267. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  268. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  269. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  270. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  271. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  272. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  273. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  274. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  275. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  276. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  277. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  278. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  279. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  280. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  281. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  282. package/engine/object-data/entry/ability-type.d.ts +25 -6
  283. package/engine/object-data/entry/ability-type.lua +249 -12
  284. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  285. package/engine/object-data/entry/buff-type.d.ts +6 -2
  286. package/engine/object-data/entry/buff-type.lua +26 -0
  287. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  288. package/engine/object-data/entry/destructible-type.lua +181 -0
  289. package/engine/object-data/entry/item-type.d.ts +18 -3
  290. package/engine/object-data/entry/item-type.lua +84 -0
  291. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  292. package/engine/object-data/entry/lightning-type.lua +1 -1
  293. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  294. package/engine/object-data/entry/unit-type.d.ts +62 -4
  295. package/engine/object-data/entry/unit-type.lua +474 -38
  296. package/engine/object-data/entry/upgrade.d.ts +2 -2
  297. package/engine/object-data/entry.d.ts +6 -1
  298. package/engine/object-data/entry.lua +8 -0
  299. package/engine/object-field/ability.d.ts +3 -3
  300. package/engine/object-field/ability.lua +9 -8
  301. package/engine/object-field/item.d.ts +22 -0
  302. package/engine/object-field/item.lua +118 -0
  303. package/engine/object-field/unit.d.ts +27 -5
  304. package/engine/object-field/unit.lua +82 -0
  305. package/engine/object-field.d.ts +12 -4
  306. package/engine/object-field.lua +273 -126
  307. package/engine/random.d.ts +10 -0
  308. package/engine/random.lua +21 -0
  309. package/engine/standard/entries/ability-type.d.ts +3102 -7
  310. package/engine/standard/entries/ability-type.lua +0 -6
  311. package/engine/standard/entries/buff-type.d.ts +45 -0
  312. package/engine/standard/entries/buff-type.lua +43 -0
  313. package/engine/standard/entries/item-type.d.ts +1299 -0
  314. package/engine/standard/entries/item-type.lua +2 -0
  315. package/engine/standard/entries/lightning-type.d.ts +42 -15
  316. package/engine/standard/entries/lightning-type.lua +0 -14
  317. package/engine/standard/entries/unit-type.d.ts +5 -0
  318. package/engine/standard/entries/unit-type.lua +5 -0
  319. package/engine/standard/fields/ability.d.ts +2 -2
  320. package/engine/standard/fields/ability.lua +2 -2
  321. package/engine/standard/fields/item.d.ts +4 -0
  322. package/engine/standard/fields/item.lua +6 -0
  323. package/engine/standard/fields/unit.d.ts +11 -2
  324. package/engine/standard/fields/unit.lua +16 -1
  325. package/engine/synchronization.d.ts +11 -0
  326. package/engine/synchronization.lua +77 -0
  327. package/engine/text-tag.d.ts +1 -1
  328. package/engine/text-tag.lua +92 -17
  329. package/engine/unit.d.ts +10 -1
  330. package/engine/unit.lua +10 -1
  331. package/event.d.ts +1 -1
  332. package/lualib_bundle.lua +1 -1
  333. package/math.d.ts +2 -0
  334. package/math.lua +14 -0
  335. package/net/socket.lua +1 -1
  336. package/network.lua +25 -1
  337. package/objutil/buff.lua +11 -9
  338. package/objutil/object.lua +1 -1
  339. package/operation.d.ts +8 -1
  340. package/operation.lua +38 -18
  341. package/package.json +3 -23
  342. package/patch-lua.lua +15 -0
  343. package/patch-lualib.lua +1 -1
  344. package/utility/arrays.d.ts +2 -0
  345. package/utility/arrays.lua +20 -0
  346. package/utility/callback-array.d.ts +17 -0
  347. package/utility/callback-array.lua +61 -0
  348. package/utility/functions.d.ts +7 -0
  349. package/utility/functions.lua +12 -0
  350. package/utility/linked-map.d.ts +35 -0
  351. package/utility/linked-map.lua +107 -0
  352. package/utility/linked-set.d.ts +4 -1
  353. package/utility/linked-set.lua +46 -1
  354. package/utility/lua-maps.d.ts +11 -2
  355. package/utility/lua-maps.lua +33 -2
  356. package/utility/lua-sets.d.ts +1 -0
  357. package/utility/lua-sets.lua +4 -0
  358. package/utility/random.d.ts +102 -0
  359. package/utility/random.lua +273 -0
  360. package/utility/records.lua +20 -1
  361. package/utility/types.d.ts +3 -0
  362. package/utility/unordered-map.d.ts +27 -0
  363. package/utility/unordered-map.lua +99 -0
  364. package/engine/internal/unit/item.lua +0 -78
  365. /package/engine/internal/{object-data/armor-increase.d.ts → misc/frame-coordinates.d.ts} +0 -0
  366. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  367. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  368. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/attributes.d.ts CHANGED
@@ -13,5 +13,6 @@ export declare namespace Attribute {
13
13
  export declare class AttributesHolder {
14
14
  readonly get: (<T>(attribute: Attribute<T>) => T | undefined) & LuaExtension<"TableGetMethod">;
15
15
  readonly set: (<T>(attribute: Attribute<T>, value: T | undefined) => void) & LuaExtension<"TableSetMethod">;
16
+ getOrPut<T>(attribute: Attribute<T>, defaultValue: () => T): T;
16
17
  }
17
18
  export {};
package/attributes.lua CHANGED
@@ -20,4 +20,13 @@ local AttributesHolder = ____exports.AttributesHolder
20
20
  AttributesHolder.name = "AttributesHolder"
21
21
  function AttributesHolder.prototype.____constructor(self)
22
22
  end
23
+ function AttributesHolder.prototype.getOrPut(self, attribute, defaultValue)
24
+ local value = self[attribute]
25
+ if value ~= nil then
26
+ return value
27
+ end
28
+ value = defaultValue()
29
+ self[attribute] = value
30
+ return value
31
+ end
23
32
  return ____exports
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<[
@@ -15,13 +15,32 @@ local Event = ____event.Event
15
15
  local TriggerEvent = ____event.TriggerEvent
16
16
  local ____timer = require("core.types.timer")
17
17
  local Timer = ____timer.Timer
18
+ local ____frame_2Dcoordinates = require("engine.internal.misc.frame-coordinates")
19
+ local FRAME_MAX_Y = ____frame_2Dcoordinates.FRAME_MAX_Y
20
+ local FRAME_MIN_Y = ____frame_2Dcoordinates.FRAME_MIN_Y
21
+ local getFrameMinXMaxX = ____frame_2Dcoordinates.getFrameMinXMaxX
22
+ local ____playerCamera = require("core.types.playerCamera")
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
27
+ local ____lua_2Dsets = require("utility.lua-sets")
28
+ local mutableLuaSet = ____lua_2Dsets.mutableLuaSet
29
+ local ____socket = require("net.socket")
30
+ local Socket = ____socket.Socket
31
+ local ____lua_2Dmaps = require("utility.lua-maps")
32
+ local getOrPut = ____lua_2Dmaps.getOrPut
33
+ local luaMapInvert = ____lua_2Dmaps.luaMapInvert
34
+ local luaMapOf = ____lua_2Dmaps.luaMapOf
35
+ local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
18
36
  local frameClick = BlzFrameClick
19
37
  local frameGetEnable = BlzFrameGetEnable
20
38
  local frameIsVisible = BlzFrameIsVisible
21
39
  local frameSetEnable = BlzFrameSetEnable
22
40
  local frameSetScale = BlzFrameSetScale
23
- local getCameraTargetPositionX = GetCameraTargetPositionX
24
- local getCameraTargetPositionY = GetCameraTargetPositionY
41
+ local getHandleId = GetHandleId
42
+ local getOriginFrame = BlzGetOriginFrame
43
+ local location = Location
25
44
  local ____rawget = _G.rawget
26
45
  local rawset = _G.rawset
27
46
  local invoke = Event.invoke
@@ -123,6 +142,79 @@ do
123
142
  FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
124
143
  end
125
144
  local tooltipByFrame = setmetatable({}, {__mode = "k"})
145
+ local isMouseInsideLocallyByFrame = mutableLuaMap()
146
+ local mouseEnterLocalEventByFrame = mutableLuaMap()
147
+ local mouseLeaveLocalEventByFrame = mutableLuaMap()
148
+ local isLocalMouseTrackingStarted = false
149
+ --- Reused across ticks to avoid per-tick allocations: only the first `leftFrameCount` /
150
+ -- `enteredFrameCount` entries are meaningful, stale entries beyond them are never read and are
151
+ -- kept collectable by the weak values mode.
152
+ local leftFrames = setmetatable({}, {__mode = "v"})
153
+ local enteredFrames = setmetatable({}, {__mode = "v"})
154
+ --- All frames share a single poll which invokes every mouse leave event before any mouse enter
155
+ -- event within the same tick. With a poll per event, the invocation order would depend on the
156
+ -- event creation order instead, breaking listeners relying on the natural "leave the old frame,
157
+ -- then enter the new frame" order.
158
+ local function startLocalMouseTracking()
159
+ if isLocalMouseTrackingStarted then
160
+ return
161
+ end
162
+ isLocalMouseTrackingStarted = true
163
+ Timer.onPeriod[1 / 64]:addListener(function()
164
+ local leftFrameCount = 0
165
+ local enteredFrameCount = 0
166
+ for frame, wasMouseInside in pairs(isMouseInsideLocallyByFrame) do
167
+ local tooltip = tooltipByFrame[frame]
168
+ local isMouseInside = tooltip ~= nil and tooltip.visible
169
+ if isMouseInside ~= wasMouseInside then
170
+ isMouseInsideLocallyByFrame[frame] = isMouseInside
171
+ if isMouseInside then
172
+ enteredFrames[enteredFrameCount + 1] = frame
173
+ enteredFrameCount = enteredFrameCount + 1
174
+ else
175
+ leftFrames[leftFrameCount + 1] = frame
176
+ leftFrameCount = leftFrameCount + 1
177
+ end
178
+ end
179
+ end
180
+ for i = 1, leftFrameCount do
181
+ local event = mouseLeaveLocalEventByFrame[leftFrames[i]]
182
+ if event ~= nil then
183
+ Event.invoke(event)
184
+ end
185
+ end
186
+ for i = 1, enteredFrameCount do
187
+ local event = mouseEnterLocalEventByFrame[enteredFrames[i]]
188
+ if event ~= nil then
189
+ Event.invoke(event)
190
+ end
191
+ end
192
+ end)
193
+ end
194
+ local keyByAsyncInitOriginFrameType = luaMapOf(ORIGIN_FRAME_PORTRAIT_HP_TEXT, "hp", ORIGIN_FRAME_PORTRAIT_MANA_TEXT, "mana")
195
+ local asyncInitOriginFrameTypeByKey = luaMapInvert(keyByAsyncInitOriginFrameType)
196
+ local seenAsyncInitOriginFrameTypes = mutableLuaSet()
197
+ local seenAsyncInitOriginFrameTypesSocket = __TS__New(Socket)
198
+ local seenPlayersByAsyncInitOriginFrameType = mutableLuaMap()
199
+ seenAsyncInitOriginFrameTypesSocket.onMessage:addListener(function(player, key)
200
+ local asyncInitOriginFrameType = asyncInitOriginFrameTypeByKey[key]
201
+ if asyncInitOriginFrameType ~= nil then
202
+ getOrPut(seenPlayersByAsyncInitOriginFrameType, asyncInitOriginFrameType, mutableLuaSet)[player] = true
203
+ end
204
+ end)
205
+ local function haveAllPlayersSeenAsyncInitOriginFrameType(frame)
206
+ local players = seenPlayersByAsyncInitOriginFrameType[frame]
207
+ if players == nil then
208
+ return false
209
+ end
210
+ for ____, player in ipairs(Player.all) do
211
+ if player.isUser and player.isPlaying and not (players[player] ~= nil) then
212
+ return false
213
+ end
214
+ end
215
+ keyByAsyncInitOriginFrameType[frame] = nil
216
+ return true
217
+ end
126
218
  ____exports.Frame = __TS__Class()
127
219
  local Frame = ____exports.Frame
128
220
  Frame.name = "Frame"
@@ -155,6 +247,18 @@ function Frame.prototype.getEvent(self, eventType, c)
155
247
  end
156
248
  return self.events[eventId]
157
249
  end
250
+ function Frame.prototype.trackMouseLocally(self)
251
+ if not (tooltipByFrame[self] ~= nil) then
252
+ ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
253
+ 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)
254
+ ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
255
+ self:setTooltip(tooltip)
256
+ end
257
+ if not (isMouseInsideLocallyByFrame[self] ~= nil) then
258
+ isMouseInsideLocallyByFrame[self] = false
259
+ startLocalMouseTracking()
260
+ end
261
+ end
158
262
  function Frame.prototype.hide(self)
159
263
  self.hideCounter = self.hideCounter + 1
160
264
  if self.hideCounter > 0 then
@@ -301,7 +405,17 @@ function Frame.byOrigin(self, frameType, index)
301
405
  if index == nil then
302
406
  index = 0
303
407
  end
304
- return self:of(BlzGetOriginFrame(frameType, index))
408
+ local frame = getOriginFrame(frameType, index)
409
+ local asyncInitOriginFrameTypeKey = keyByAsyncInitOriginFrameType[frameType]
410
+ if index == 0 and asyncInitOriginFrameTypeKey ~= nil and not haveAllPlayersSeenAsyncInitOriginFrameType(frameType) then
411
+ if getHandleId(frame) == 0 or seenAsyncInitOriginFrameTypes[frameType] ~= nil then
412
+ location(0, 0)
413
+ else
414
+ seenAsyncInitOriginFrameTypes[frameType] = true
415
+ seenAsyncInitOriginFrameTypesSocket:send(asyncInitOriginFrameTypeKey)
416
+ end
417
+ end
418
+ return self:of(frame)
305
419
  end
306
420
  Frame.GAME_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_GAME_UI)
307
421
  Frame.CONSOLE_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_SIMPLE_UI_PARENT)
@@ -344,27 +458,21 @@ __TS__ObjectDefineProperty(
344
458
  Frame,
345
459
  "minX",
346
460
  {get = function(self)
347
- local w = BlzGetLocalClientWidth()
348
- local h = BlzGetLocalClientHeight()
349
- local width4by3 = (w - h / 600 * 800) / 2
350
- local pxtodpi = 0.6 / h
351
- return -width4by3 * pxtodpi
461
+ local minX = getFrameMinXMaxX()
462
+ return minX
352
463
  end}
353
464
  )
354
465
  __TS__ObjectDefineProperty(
355
466
  Frame,
356
467
  "maxX",
357
468
  {get = function(self)
358
- local w = BlzGetLocalClientWidth()
359
- local h = BlzGetLocalClientHeight()
360
- local width4by3 = (w - h / 600 * 800) / 2
361
- local pxtodpi = 0.6 / h
362
- return (-width4by3 + w) * pxtodpi
469
+ local ____, maxX = getFrameMinXMaxX()
470
+ return maxX
363
471
  end}
364
472
  )
365
473
  Frame.centerX = 0.4
366
- Frame.minY = 0
367
- Frame.maxY = 0.6
474
+ Frame.minY = FRAME_MIN_Y
475
+ Frame.maxY = FRAME_MAX_Y
368
476
  Frame.centerY = 0.3
369
477
  __TS__SetDescriptor(
370
478
  Frame.prototype,
@@ -626,24 +734,8 @@ __TS__SetDescriptor(
626
734
  "mouseEnterLocalEvent",
627
735
  {get = function(self)
628
736
  local event = __TS__New(Event)
629
- if not (tooltipByFrame[self] ~= nil) then
630
- ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
631
- 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)
632
- ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
633
- self:setTooltip(tooltip)
634
- end
635
- local isMouseInside = false
636
- Timer.onPeriod[1 / 64]:addListener(function()
637
- local tooltip = tooltipByFrame[self]
638
- if tooltip and tooltip.visible then
639
- if not isMouseInside then
640
- isMouseInside = true
641
- Event.invoke(event)
642
- end
643
- else
644
- isMouseInside = false
645
- end
646
- end)
737
+ self:trackMouseLocally()
738
+ mouseEnterLocalEventByFrame[self] = event
647
739
  rawset(self, "mouseEnterLocalEvent", event)
648
740
  return event
649
741
  end},
@@ -654,24 +746,8 @@ __TS__SetDescriptor(
654
746
  "mouseLeaveLocalEvent",
655
747
  {get = function(self)
656
748
  local event = __TS__New(Event)
657
- if not (tooltipByFrame[self] ~= nil) then
658
- ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
659
- 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)
660
- ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
661
- self:setTooltip(tooltip)
662
- end
663
- local isMouseInside = false
664
- Timer.onPeriod[1 / 64]:addListener(function()
665
- local tooltip = tooltipByFrame[self]
666
- if tooltip and tooltip.visible then
667
- isMouseInside = true
668
- else
669
- if isMouseInside then
670
- isMouseInside = false
671
- Event.invoke(event)
672
- end
673
- end
674
- end)
749
+ self:trackMouseLocally()
750
+ mouseLeaveLocalEventByFrame[self] = event
675
751
  rawset(self, "mouseLeaveLocalEvent", event)
676
752
  return event
677
753
  end},
@@ -938,16 +1014,19 @@ __TS__ObjectDefineProperty(
938
1014
  local event = __TS__New(Event)
939
1015
  local syncX = 0
940
1016
  local syncY = 0
941
- local syncCamX = getCameraTargetPositionX()
942
- local syncCamY = getCameraTargetPositionY()
1017
+ local syncFrameX = 0
1018
+ local syncFrameY = 0
943
1019
  local lastX = syncX
944
1020
  local lastY = syncY
945
1021
  self.onMouseMove:addListener(function(player, x, y)
946
1022
  if player.isLocal then
947
1023
  syncX = x
948
1024
  syncY = y
949
- syncCamX = getCameraTargetPositionX()
950
- syncCamY = getCameraTargetPositionY()
1025
+ syncFrameX, syncFrameY = worldCoordinatesToFrame(
1026
+ x,
1027
+ y,
1028
+ getTerrainZ(x, y)
1029
+ )
951
1030
  lastX = x
952
1031
  lastY = y
953
1032
  invoke(event, x, y)
@@ -957,9 +1036,8 @@ __TS__ObjectDefineProperty(
957
1036
  if syncX == 0 and syncY == 0 then
958
1037
  return
959
1038
  end
960
- local x = syncX + (getCameraTargetPositionX() - syncCamX)
961
- local y = syncY + (getCameraTargetPositionY() - syncCamY)
962
- if x ~= lastX or y ~= lastY then
1039
+ local x, y, ____, isDefinite = frameCoordinatesToWorld(syncFrameX, syncFrameY)
1040
+ if isDefinite and (x ~= lastX or y ~= lastY) then
963
1041
  lastX = x
964
1042
  lastY = y
965
1043
  invoke(event, x, y)
@@ -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 {};