warscript 0.0.1-dev.47f470c → 0.0.1-dev.4b6e45a

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 (424) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/core/dummy.lua +4 -2
  4. package/core/types/effect.d.ts +12 -4
  5. package/core/types/effect.lua +67 -104
  6. package/core/types/frame.d.ts +21 -2
  7. package/core/types/frame.lua +165 -87
  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/missile.lua +8 -7
  12. package/core/types/player.d.ts +18 -1
  13. package/core/types/player.lua +76 -26
  14. package/core/types/playerCamera.d.ts +2 -0
  15. package/core/types/playerCamera.lua +123 -5
  16. package/core/types/playerColor.lua +4 -3
  17. package/core/types/sound.d.ts +18 -26
  18. package/core/types/sound.lua +105 -55
  19. package/core/types/tileCell.d.ts +18 -3
  20. package/core/types/tileCell.lua +108 -0
  21. package/core/types/timer.d.ts +9 -8
  22. package/core/types/timer.lua +45 -23
  23. package/core/types/unit.d.ts +5 -0
  24. package/core/types/unit.lua +5 -0
  25. package/core/util.d.ts +3 -1
  26. package/core/util.lua +115 -4
  27. package/decl/native.d.ts +1719 -964
  28. package/destroyable.d.ts +1 -0
  29. package/destroyable.lua +9 -0
  30. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  31. package/engine/ability-type-extended-tooltip.lua +44 -0
  32. package/engine/behavior.d.ts +14 -1
  33. package/engine/behavior.lua +230 -70
  34. package/engine/behaviour/ability/apply-buff.lua +5 -5
  35. package/engine/behaviour/ability/apply-unit-behavior.lua +6 -0
  36. package/engine/behaviour/ability/damage.d.ts +13 -3
  37. package/engine/behaviour/ability/damage.lua +41 -49
  38. package/engine/behaviour/ability/emulate-impact.d.ts +15 -1
  39. package/engine/behaviour/ability/emulate-impact.lua +96 -7
  40. package/engine/behaviour/ability/instant-impact.d.ts +12 -1
  41. package/engine/behaviour/ability/instant-impact.lua +17 -2
  42. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  43. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  44. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  45. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  46. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  47. package/engine/behaviour/ability/restore-mana.lua +6 -6
  48. package/engine/behaviour/ability.d.ts +23 -6
  49. package/engine/behaviour/ability.lua +145 -29
  50. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  51. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  52. package/engine/behaviour/unit.d.ts +41 -2
  53. package/engine/behaviour/unit.lua +270 -6
  54. package/engine/buff.d.ts +130 -57
  55. package/engine/buff.lua +643 -294
  56. package/engine/index.d.ts +2 -1
  57. package/engine/internal/ability.d.ts +14 -1
  58. package/engine/internal/ability.lua +113 -44
  59. package/engine/internal/item/ability.lua +63 -11
  60. package/engine/internal/item/fields.d.ts +12 -0
  61. package/engine/internal/item/fields.lua +33 -0
  62. package/engine/internal/item/owner-cache.d.ts +5 -0
  63. package/engine/internal/item/owner-cache.lua +4 -0
  64. package/engine/internal/item+owner.d.ts +2 -0
  65. package/engine/internal/item+owner.lua +37 -8
  66. package/engine/internal/item.d.ts +32 -16
  67. package/engine/internal/item.lua +257 -82
  68. package/engine/internal/mechanics/ability-duration.lua +1 -1
  69. package/engine/internal/mechanics/cast-ability.lua +6 -3
  70. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  71. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  72. package/engine/internal/misc/frame-coordinates.lua +21 -0
  73. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  74. package/engine/internal/misc/get-terrain-z.lua +11 -0
  75. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  76. package/engine/internal/misc/player-local-handle.lua +5 -0
  77. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  78. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  79. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  80. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  81. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  82. package/engine/internal/object-data/health-bonus.lua +16 -0
  83. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  84. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  85. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  86. package/engine/internal/object-data/mana-bonus.lua +16 -0
  87. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  88. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  89. package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
  90. package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
  91. package/engine/internal/unit/ability.d.ts +35 -0
  92. package/engine/internal/unit/ability.lua +114 -9
  93. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  94. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  95. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  96. package/engine/internal/unit/allowed-targets.lua +9 -1
  97. package/engine/internal/unit/appearance.d.ts +15 -0
  98. package/engine/internal/unit/appearance.lua +85 -0
  99. package/engine/internal/unit/attributes.d.ts +17 -0
  100. package/engine/internal/unit/attributes.lua +46 -0
  101. package/engine/internal/unit/bonus.d.ts +17 -0
  102. package/engine/internal/unit/bonus.lua +113 -8
  103. package/engine/internal/unit/buff.d.ts +2 -2
  104. package/engine/internal/unit/buff.lua +34 -19
  105. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  106. package/engine/internal/unit/equipment-inventory.lua +233 -0
  107. package/engine/internal/unit/expiration-timer.lua +1 -1
  108. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  109. package/engine/internal/unit/extended-inventory.lua +99 -0
  110. package/engine/internal/unit/fly-height.d.ts +7 -0
  111. package/engine/internal/unit/fly-height.lua +20 -0
  112. package/engine/internal/unit/ignore-events-items.lua +10 -1
  113. package/engine/internal/unit/interrupts.d.ts +12 -0
  114. package/engine/internal/unit/interrupts.lua +28 -0
  115. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  116. package/engine/internal/unit/inventory.lua +87 -0
  117. package/engine/internal/unit/item-container.d.ts +25 -0
  118. package/engine/internal/unit/item-container.lua +11 -0
  119. package/engine/internal/unit/item-order-events.d.ts +17 -0
  120. package/engine/internal/unit/item-order-events.lua +67 -0
  121. package/engine/internal/unit/item-slot.d.ts +27 -0
  122. package/engine/internal/unit/item-slot.lua +92 -0
  123. package/engine/internal/unit/main-selected.lua +12 -27
  124. package/engine/internal/unit/order.d.ts +20 -0
  125. package/engine/internal/unit/order.lua +136 -0
  126. package/engine/internal/unit/range-event.d.ts +12 -0
  127. package/engine/internal/unit/range-event.lua +90 -0
  128. package/engine/internal/unit/scale.d.ts +7 -0
  129. package/engine/internal/unit/scale.lua +20 -0
  130. package/engine/internal/unit/shared-vision-counter.d.ts +18 -0
  131. package/engine/internal/unit/shared-vision-counter.lua +31 -0
  132. package/engine/internal/unit+ability.d.ts +2 -1
  133. package/engine/internal/unit+ability.lua +83 -3
  134. package/engine/internal/unit+bonus.lua +3 -3
  135. package/engine/internal/unit+damage.d.ts +11 -11
  136. package/engine/internal/unit+damage.lua +43 -14
  137. package/engine/internal/unit+rally.lua +9 -31
  138. package/engine/internal/unit+spellSteal.lua +1 -2
  139. package/engine/internal/unit-missile-data.lua +96 -68
  140. package/engine/internal/unit-missile-launch.lua +65 -27
  141. package/engine/internal/unit.d.ts +47 -34
  142. package/engine/internal/unit.lua +413 -323
  143. package/engine/lightning.lua +4 -4
  144. package/engine/local-client.d.ts +28 -0
  145. package/engine/local-client.lua +324 -54
  146. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  147. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  148. package/engine/object-data/auxiliary/attachment-preset.d.ts +14 -2
  149. package/engine/object-data/auxiliary/attachment-preset.lua +11 -3
  150. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  151. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  152. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  153. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  154. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  155. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  156. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  157. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  158. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  159. package/engine/object-data/auxiliary/item-class.lua +2 -0
  160. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  161. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  162. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  163. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  164. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  165. package/engine/object-data/auxiliary/order-type.lua +2 -0
  166. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  167. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  168. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  169. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  170. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  171. package/engine/object-data/auxiliary/unit-weapon-type.d.ts +21 -0
  172. package/engine/object-data/auxiliary/unit-weapon-type.lua +2 -0
  173. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  174. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  175. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  176. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  177. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  178. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  179. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  180. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  181. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  182. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  183. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  184. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  185. package/engine/object-data/entry/ability-type/barrage.d.ts +12 -0
  186. package/engine/object-data/entry/ability-type/barrage.lua +52 -0
  187. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  188. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  189. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  190. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  191. package/engine/object-data/entry/ability-type/blank-configurable.lua +2 -11
  192. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  193. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  194. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  195. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  196. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  197. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  198. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  199. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  200. package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
  201. package/engine/object-data/entry/ability-type/channel.lua +3 -3
  202. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  203. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  204. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  205. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  206. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  207. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  208. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  209. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  210. package/engine/object-data/entry/ability-type/curse.lua +2 -2
  211. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  212. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  213. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  214. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  215. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  216. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  217. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  218. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  219. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  220. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  221. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  222. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  223. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  224. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  225. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  226. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  227. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  228. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  229. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  230. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  231. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  232. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  233. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  234. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  235. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  236. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  237. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  238. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  239. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  240. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  241. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  242. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  243. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  244. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  245. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  246. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  247. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  248. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  249. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  250. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  251. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  252. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  253. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  254. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  255. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  256. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  257. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  258. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  259. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  260. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  261. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  262. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  263. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  264. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  265. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  266. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  267. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  268. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  269. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  270. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  271. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  272. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  273. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  274. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  275. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  276. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  277. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  278. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  279. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  280. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  281. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  282. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  283. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  284. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  285. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  286. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  287. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  288. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  289. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  290. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  291. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  292. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  293. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  294. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  295. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  296. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  297. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  298. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  299. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  300. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  301. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  302. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  303. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  304. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  305. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  306. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  307. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  308. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  309. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  310. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  311. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  312. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  313. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  314. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  315. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  316. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  317. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  318. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  319. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  320. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  321. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  322. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  323. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  324. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  325. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  326. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  327. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  328. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  329. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  330. package/engine/object-data/entry/ability-type/web.lua +52 -0
  331. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  332. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  333. package/engine/object-data/entry/ability-type.d.ts +50 -21
  334. package/engine/object-data/entry/ability-type.lua +376 -27
  335. package/engine/object-data/entry/buff-type/applicable.lua +124 -108
  336. package/engine/object-data/entry/buff-type.d.ts +10 -12
  337. package/engine/object-data/entry/buff-type.lua +37 -27
  338. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  339. package/engine/object-data/entry/destructible-type.lua +181 -0
  340. package/engine/object-data/entry/item-type.d.ts +18 -3
  341. package/engine/object-data/entry/item-type.lua +84 -0
  342. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  343. package/engine/object-data/entry/lightning-type.lua +1 -1
  344. package/engine/object-data/entry/sound-preset.d.ts +19 -3
  345. package/engine/object-data/entry/sound-preset.lua +105 -15
  346. package/engine/object-data/entry/unit-type.d.ts +74 -6
  347. package/engine/object-data/entry/unit-type.lua +560 -100
  348. package/engine/object-data/entry/upgrade.d.ts +2 -2
  349. package/engine/object-data/entry.d.ts +8 -3
  350. package/engine/object-data/entry.lua +22 -7
  351. package/engine/object-field/ability.d.ts +4 -4
  352. package/engine/object-field/ability.lua +9 -8
  353. package/engine/object-field/item.d.ts +22 -0
  354. package/engine/object-field/item.lua +118 -0
  355. package/engine/object-field/unit.d.ts +72 -3
  356. package/engine/object-field/unit.lua +268 -7
  357. package/engine/object-field.d.ts +26 -7
  358. package/engine/object-field.lua +360 -119
  359. package/engine/random.d.ts +10 -0
  360. package/engine/random.lua +21 -0
  361. package/engine/standard/entries/ability-type.d.ts +3102 -7
  362. package/engine/standard/entries/ability-type.lua +0 -6
  363. package/engine/standard/entries/buff-type.d.ts +48 -0
  364. package/engine/standard/entries/buff-type.lua +46 -0
  365. package/engine/standard/entries/item-type.d.ts +1299 -0
  366. package/engine/standard/entries/item-type.lua +2 -0
  367. package/engine/standard/entries/lightning-type.d.ts +42 -15
  368. package/engine/standard/entries/lightning-type.lua +0 -14
  369. package/engine/standard/entries/unit-type.d.ts +5 -0
  370. package/engine/standard/entries/unit-type.lua +5 -0
  371. package/engine/standard/fields/ability.d.ts +4 -4
  372. package/engine/standard/fields/ability.lua +4 -4
  373. package/engine/standard/fields/item.d.ts +4 -0
  374. package/engine/standard/fields/item.lua +6 -0
  375. package/engine/standard/fields/unit.d.ts +12 -0
  376. package/engine/standard/fields/unit.lua +20 -0
  377. package/engine/synchronization.d.ts +11 -0
  378. package/engine/synchronization.lua +77 -0
  379. package/engine/text-tag.d.ts +48 -2
  380. package/engine/text-tag.lua +287 -10
  381. package/engine/unit.d.ts +12 -1
  382. package/engine/unit.lua +12 -1
  383. package/event.d.ts +1 -1
  384. package/lualib_bundle.lua +1 -1
  385. package/math.d.ts +2 -0
  386. package/math.lua +14 -0
  387. package/net/socket.lua +1 -1
  388. package/network.lua +25 -1
  389. package/objutil/buff.lua +12 -11
  390. package/objutil/object.lua +1 -1
  391. package/objutil/unit.lua +2 -2
  392. package/operation.d.ts +8 -1
  393. package/operation.lua +38 -18
  394. package/package.json +3 -23
  395. package/patch-lua.lua +15 -0
  396. package/patch-lualib.lua +1 -1
  397. package/utility/arrays.d.ts +9 -1
  398. package/utility/arrays.lua +28 -0
  399. package/utility/callback-array.d.ts +17 -0
  400. package/utility/callback-array.lua +61 -0
  401. package/utility/functions.d.ts +8 -0
  402. package/utility/functions.lua +13 -0
  403. package/utility/linked-map.d.ts +35 -0
  404. package/utility/linked-map.lua +107 -0
  405. package/utility/linked-set.d.ts +5 -1
  406. package/utility/linked-set.lua +49 -1
  407. package/utility/lua-maps.d.ts +15 -2
  408. package/utility/lua-maps.lua +53 -2
  409. package/utility/lua-sets.d.ts +2 -0
  410. package/utility/lua-sets.lua +7 -0
  411. package/utility/random.d.ts +102 -0
  412. package/utility/random.lua +273 -0
  413. package/utility/records.lua +20 -1
  414. package/utility/reflection.lua +11 -7
  415. package/utility/types.d.ts +3 -0
  416. package/utility/unordered-map.d.ts +27 -0
  417. package/utility/unordered-map.lua +99 -0
  418. package/core/types/order.d.ts +0 -25
  419. package/core/types/order.lua +0 -55
  420. package/engine/internal/unit/item.lua +0 -78
  421. /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
  422. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  423. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  424. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -12,16 +12,38 @@ local ____player = require("core.types.player")
12
12
  local Player = ____player.Player
13
13
  local ____event = require("event")
14
14
  local Event = ____event.Event
15
+ local InitializingEvent = ____event.InitializingEvent
15
16
  local TriggerEvent = ____event.TriggerEvent
16
17
  local ____timer = require("core.types.timer")
17
18
  local Timer = ____timer.Timer
19
+ local ____frame_2Dcoordinates = require("engine.internal.misc.frame-coordinates")
20
+ local FRAME_MAX_Y = ____frame_2Dcoordinates.FRAME_MAX_Y
21
+ local FRAME_MIN_Y = ____frame_2Dcoordinates.FRAME_MIN_Y
22
+ local getFrameMinXMaxX = ____frame_2Dcoordinates.getFrameMinXMaxX
23
+ local ____playerCamera = require("core.types.playerCamera")
24
+ local frameCoordinatesToWorld = ____playerCamera.frameCoordinatesToWorld
25
+ local ____lua_2Dsets = require("utility.lua-sets")
26
+ local mutableLuaSet = ____lua_2Dsets.mutableLuaSet
27
+ local ____socket = require("net.socket")
28
+ local Socket = ____socket.Socket
29
+ local ____lua_2Dmaps = require("utility.lua-maps")
30
+ local getOrPut = ____lua_2Dmaps.getOrPut
31
+ local luaMapInvert = ____lua_2Dmaps.luaMapInvert
32
+ local luaMapOf = ____lua_2Dmaps.luaMapOf
33
+ local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
18
34
  local frameClick = BlzFrameClick
19
35
  local frameGetEnable = BlzFrameGetEnable
20
36
  local frameIsVisible = BlzFrameIsVisible
21
37
  local frameSetEnable = BlzFrameSetEnable
22
38
  local frameSetScale = BlzFrameSetScale
23
- local getCameraTargetPositionX = GetCameraTargetPositionX
24
- local getCameraTargetPositionY = GetCameraTargetPositionY
39
+ local getHandleId = GetHandleId
40
+ local getLocalClientHeight = BlzGetLocalClientHeight
41
+ local getMouseScreenPosX = BlzGetMouseScreenPosX
42
+ local getMouseScreenPosY = BlzGetMouseScreenPosY
43
+ local getOriginFrame = BlzGetOriginFrame
44
+ local location = Location
45
+ local pixelToFrameX = BlzPixelToFrameX
46
+ local pixelToFrameY = BlzPixelToFrameY
25
47
  local ____rawget = _G.rawget
26
48
  local rawset = _G.rawset
27
49
  local invoke = Event.invoke
@@ -109,6 +131,37 @@ Timer.onPeriod[1 / 64]:addListener(function()
109
131
  frameClick(isMouseOnWorld and dummyButtonOn or dummyButtonOff)
110
132
  end
111
133
  end)
134
+ --- The poll is registered synchronously at module load and runs only while the event has
135
+ -- listeners. Initializing and deinitializing the event only toggle this flag — they create no
136
+ -- handles and add no timer listeners — so subscribing and unsubscribing are async-safe.
137
+ local isMouseMoveLocalPollActive = false
138
+ local lastMouseMoveLocalX = 0
139
+ local lastMouseMoveLocalY = 0
140
+ local mouseMoveLocalEvent = __TS__New(
141
+ InitializingEvent,
142
+ function()
143
+ isMouseMoveLocalPollActive = true
144
+ lastMouseMoveLocalX = 0 / 0
145
+ lastMouseMoveLocalY = 0 / 0
146
+ end,
147
+ function()
148
+ isMouseMoveLocalPollActive = false
149
+ end
150
+ )
151
+ Timer.onPeriod[1 / 64]:addListener(function()
152
+ if not isMouseMoveLocalPollActive or getLocalClientHeight() == 0 then
153
+ return
154
+ end
155
+ local x, y, ____, isDefinite = frameCoordinatesToWorld(
156
+ pixelToFrameX(getMouseScreenPosX()),
157
+ pixelToFrameY(getMouseScreenPosY())
158
+ )
159
+ if isDefinite and (x ~= lastMouseMoveLocalX or y ~= lastMouseMoveLocalY) then
160
+ lastMouseMoveLocalX = x
161
+ lastMouseMoveLocalY = y
162
+ invoke(mouseMoveLocalEvent, x, y)
163
+ end
164
+ end)
112
165
  ____exports.FramePoint = {}
113
166
  local FramePoint = ____exports.FramePoint
114
167
  do
@@ -123,6 +176,79 @@ do
123
176
  FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
124
177
  end
125
178
  local tooltipByFrame = setmetatable({}, {__mode = "k"})
179
+ local isMouseInsideLocallyByFrame = mutableLuaMap()
180
+ local mouseEnterLocalEventByFrame = mutableLuaMap()
181
+ local mouseLeaveLocalEventByFrame = mutableLuaMap()
182
+ local isLocalMouseTrackingStarted = false
183
+ --- Reused across ticks to avoid per-tick allocations: only the first `leftFrameCount` /
184
+ -- `enteredFrameCount` entries are meaningful, stale entries beyond them are never read and are
185
+ -- kept collectable by the weak values mode.
186
+ local leftFrames = setmetatable({}, {__mode = "v"})
187
+ local enteredFrames = setmetatable({}, {__mode = "v"})
188
+ --- All frames share a single poll which invokes every mouse leave event before any mouse enter
189
+ -- event within the same tick. With a poll per event, the invocation order would depend on the
190
+ -- event creation order instead, breaking listeners relying on the natural "leave the old frame,
191
+ -- then enter the new frame" order.
192
+ local function startLocalMouseTracking()
193
+ if isLocalMouseTrackingStarted then
194
+ return
195
+ end
196
+ isLocalMouseTrackingStarted = true
197
+ Timer.onPeriod[1 / 64]:addListener(function()
198
+ local leftFrameCount = 0
199
+ local enteredFrameCount = 0
200
+ for frame, wasMouseInside in pairs(isMouseInsideLocallyByFrame) do
201
+ local tooltip = tooltipByFrame[frame]
202
+ local isMouseInside = tooltip ~= nil and tooltip.visible
203
+ if isMouseInside ~= wasMouseInside then
204
+ isMouseInsideLocallyByFrame[frame] = isMouseInside
205
+ if isMouseInside then
206
+ enteredFrames[enteredFrameCount + 1] = frame
207
+ enteredFrameCount = enteredFrameCount + 1
208
+ else
209
+ leftFrames[leftFrameCount + 1] = frame
210
+ leftFrameCount = leftFrameCount + 1
211
+ end
212
+ end
213
+ end
214
+ for i = 1, leftFrameCount do
215
+ local event = mouseLeaveLocalEventByFrame[leftFrames[i]]
216
+ if event ~= nil then
217
+ Event.invoke(event)
218
+ end
219
+ end
220
+ for i = 1, enteredFrameCount do
221
+ local event = mouseEnterLocalEventByFrame[enteredFrames[i]]
222
+ if event ~= nil then
223
+ Event.invoke(event)
224
+ end
225
+ end
226
+ end)
227
+ end
228
+ local keyByAsyncInitOriginFrameType = luaMapOf(ORIGIN_FRAME_PORTRAIT_HP_TEXT, "hp", ORIGIN_FRAME_PORTRAIT_MANA_TEXT, "mana")
229
+ local asyncInitOriginFrameTypeByKey = luaMapInvert(keyByAsyncInitOriginFrameType)
230
+ local seenAsyncInitOriginFrameTypes = mutableLuaSet()
231
+ local seenAsyncInitOriginFrameTypesSocket = __TS__New(Socket)
232
+ local seenPlayersByAsyncInitOriginFrameType = mutableLuaMap()
233
+ seenAsyncInitOriginFrameTypesSocket.onMessage:addListener(function(player, key)
234
+ local asyncInitOriginFrameType = asyncInitOriginFrameTypeByKey[key]
235
+ if asyncInitOriginFrameType ~= nil then
236
+ getOrPut(seenPlayersByAsyncInitOriginFrameType, asyncInitOriginFrameType, mutableLuaSet)[player] = true
237
+ end
238
+ end)
239
+ local function haveAllPlayersSeenAsyncInitOriginFrameType(frame)
240
+ local players = seenPlayersByAsyncInitOriginFrameType[frame]
241
+ if players == nil then
242
+ return false
243
+ end
244
+ for ____, player in ipairs(Player.all) do
245
+ if player.isUser and player.isPlaying and not (players[player] ~= nil) then
246
+ return false
247
+ end
248
+ end
249
+ keyByAsyncInitOriginFrameType[frame] = nil
250
+ return true
251
+ end
126
252
  ____exports.Frame = __TS__Class()
127
253
  local Frame = ____exports.Frame
128
254
  Frame.name = "Frame"
@@ -155,6 +281,18 @@ function Frame.prototype.getEvent(self, eventType, c)
155
281
  end
156
282
  return self.events[eventId]
157
283
  end
284
+ function Frame.prototype.trackMouseLocally(self)
285
+ if not (tooltipByFrame[self] ~= nil) then
286
+ ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
287
+ 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)
288
+ ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
289
+ self:setTooltip(tooltip)
290
+ end
291
+ if not (isMouseInsideLocallyByFrame[self] ~= nil) then
292
+ isMouseInsideLocallyByFrame[self] = false
293
+ startLocalMouseTracking()
294
+ end
295
+ end
158
296
  function Frame.prototype.hide(self)
159
297
  self.hideCounter = self.hideCounter + 1
160
298
  if self.hideCounter > 0 then
@@ -301,7 +439,17 @@ function Frame.byOrigin(self, frameType, index)
301
439
  if index == nil then
302
440
  index = 0
303
441
  end
304
- return self:of(BlzGetOriginFrame(frameType, index))
442
+ local frame = getOriginFrame(frameType, index)
443
+ local asyncInitOriginFrameTypeKey = keyByAsyncInitOriginFrameType[frameType]
444
+ if index == 0 and asyncInitOriginFrameTypeKey ~= nil and not haveAllPlayersSeenAsyncInitOriginFrameType(frameType) then
445
+ if getHandleId(frame) == 0 or seenAsyncInitOriginFrameTypes[frameType] ~= nil then
446
+ location(0, 0)
447
+ else
448
+ seenAsyncInitOriginFrameTypes[frameType] = true
449
+ seenAsyncInitOriginFrameTypesSocket:send(asyncInitOriginFrameTypeKey)
450
+ end
451
+ end
452
+ return self:of(frame)
305
453
  end
306
454
  Frame.GAME_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_GAME_UI)
307
455
  Frame.CONSOLE_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_SIMPLE_UI_PARENT)
@@ -344,27 +492,21 @@ __TS__ObjectDefineProperty(
344
492
  Frame,
345
493
  "minX",
346
494
  {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
495
+ local minX = getFrameMinXMaxX()
496
+ return minX
352
497
  end}
353
498
  )
354
499
  __TS__ObjectDefineProperty(
355
500
  Frame,
356
501
  "maxX",
357
502
  {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
503
+ local ____, maxX = getFrameMinXMaxX()
504
+ return maxX
363
505
  end}
364
506
  )
365
507
  Frame.centerX = 0.4
366
- Frame.minY = 0
367
- Frame.maxY = 0.6
508
+ Frame.minY = FRAME_MIN_Y
509
+ Frame.maxY = FRAME_MAX_Y
368
510
  Frame.centerY = 0.3
369
511
  __TS__SetDescriptor(
370
512
  Frame.prototype,
@@ -626,24 +768,8 @@ __TS__SetDescriptor(
626
768
  "mouseEnterLocalEvent",
627
769
  {get = function(self)
628
770
  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)
771
+ self:trackMouseLocally()
772
+ mouseEnterLocalEventByFrame[self] = event
647
773
  rawset(self, "mouseEnterLocalEvent", event)
648
774
  return event
649
775
  end},
@@ -654,24 +780,8 @@ __TS__SetDescriptor(
654
780
  "mouseLeaveLocalEvent",
655
781
  {get = function(self)
656
782
  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)
783
+ self:trackMouseLocally()
784
+ mouseLeaveLocalEventByFrame[self] = event
675
785
  rawset(self, "mouseLeaveLocalEvent", event)
676
786
  return event
677
787
  end},
@@ -912,7 +1022,7 @@ __TS__ObjectDefineProperty(
912
1022
  )
913
1023
  __TS__ObjectDefineProperty(
914
1024
  Frame,
915
- "onMouseMove",
1025
+ "mouseMoveEvent",
916
1026
  {get = function(self)
917
1027
  local event = __TS__New(
918
1028
  TriggerEvent,
@@ -926,47 +1036,15 @@ __TS__ObjectDefineProperty(
926
1036
  ) end,
927
1037
  function() return Player:of(GetTriggerPlayer()), BlzGetTriggerPlayerMouseX(), BlzGetTriggerPlayerMouseY() end
928
1038
  )
929
- rawset(____exports.Frame, "onMouseMove", event)
1039
+ rawset(____exports.Frame, "mouseMoveEvent", event)
930
1040
  return event
931
1041
  end}
932
1042
  )
933
1043
  __TS__ObjectDefineProperty(
934
1044
  Frame,
935
- "onMouseMoveLocal",
1045
+ "mouseMoveLocalEvent",
936
1046
  {get = function(self)
937
- local invoke = Event.invoke
938
- local event = __TS__New(Event)
939
- local syncX = 0
940
- local syncY = 0
941
- local syncCamX = getCameraTargetPositionX()
942
- local syncCamY = getCameraTargetPositionY()
943
- local lastX = syncX
944
- local lastY = syncY
945
- self.onMouseMove:addListener(function(player, x, y)
946
- if player.isLocal then
947
- syncX = x
948
- syncY = y
949
- syncCamX = getCameraTargetPositionX()
950
- syncCamY = getCameraTargetPositionY()
951
- lastX = x
952
- lastY = y
953
- invoke(event, x, y)
954
- end
955
- end)
956
- Timer.onPeriod[1 / 64]:addListener(function()
957
- if syncX == 0 and syncY == 0 then
958
- return
959
- end
960
- local x = syncX + (getCameraTargetPositionX() - syncCamX)
961
- local y = syncY + (getCameraTargetPositionY() - syncCamY)
962
- if x ~= lastX or y ~= lastY then
963
- lastX = x
964
- lastY = y
965
- invoke(event, x, y)
966
- end
967
- end)
968
- rawset(____exports.Frame, "onMouseMoveLocal", event)
969
- return event
1047
+ return mouseMoveLocalEvent
970
1048
  end}
971
1049
  )
972
1050
  leftBorderFrame = ____exports.Frame:of(leftBorder)
@@ -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
@@ -25,6 +25,7 @@ local getHandleId = GetHandleId
25
25
  local getUnitX = GetUnitX
26
26
  local getUnitY = GetUnitY
27
27
  local safeCall = warpack.safeCall
28
+ local UPDATE_PERIOD = 1 / 64
28
29
  local head
29
30
  local next = {}
30
31
  local previous = {}
@@ -56,15 +57,15 @@ function Missile.launch(self, config, source, target, onArrival, ...)
56
57
  local data = MISSILE_DATA_BY_UNIT_TYPE_ID[source.typeId]
57
58
  local launchX = data.launchOffsetX
58
59
  local launchY = data.launchOffsetY
59
- local projectileVisOffsetX = data.launchVisualOffsetX
60
- local projectileVisOffsetY = data.launchVisualOffsetY
61
60
  local angle = rad(source.facing - 90)
62
61
  local s = sin(angle)
63
62
  local c = cos(angle)
64
63
  offsetX = offsetX + (c * launchX - s * launchY)
65
64
  offsetY = offsetY + (s * launchX + c * launchY)
66
- visualOffsetX = visualOffsetX + (c * projectileVisOffsetX - s * projectileVisOffsetY)
67
- visualOffsetY = visualOffsetY + (s * projectileVisOffsetX + c * projectileVisOffsetY)
65
+ local projectileVisOffsetX = data.launchVisualOffsetX
66
+ local projectileVisOffsetY = data.launchVisualOffsetY
67
+ visualOffsetX = visualOffsetX + (c * projectileVisOffsetY - s * projectileVisOffsetX)
68
+ visualOffsetY = visualOffsetY + (s * projectileVisOffsetY + c * projectileVisOffsetX)
68
69
  visualOffsetZ = visualOffsetZ + data.launchOffsetZ
69
70
  end
70
71
  local ____opt_7 = config.targetOffset
@@ -101,8 +102,8 @@ function Missile.launch(self, config, source, target, onArrival, ...)
101
102
  if config.scale then
102
103
  setSpecialEffectScale(effect, config.scale)
103
104
  end
104
- local acceleration = (config.acceleration or 0) / 128
105
- local speed = config.speed / 128 + acceleration / 2
105
+ local acceleration = (config.acceleration or 0) * UPDATE_PERIOD * UPDATE_PERIOD
106
+ local speed = config.speed * UPDATE_PERIOD + acceleration / 2
106
107
  local arcVAcceleration = 0
107
108
  local arcVSpeed = 0
108
109
  if config.arc then
@@ -226,7 +227,7 @@ function Missile.prototype.destroy(self)
226
227
  previous[self] = nil
227
228
  next[self] = nil
228
229
  end
229
- Timer.onPeriod[1 / 64]:addListener(function()
230
+ Timer.onPeriod[UPDATE_PERIOD]:addListener(function()
230
231
  local missile = head
231
232
  while missile do
232
233
  local nextMissile = next[missile]
@@ -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 {};