warscript 0.0.1-dev.724bf08 → 0.0.1-dev.72620d4

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 (436) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/config.d.ts +5 -0
  4. package/config.lua +10 -0
  5. package/core/dummy.lua +4 -2
  6. package/core/types/effect.d.ts +13 -4
  7. package/core/types/effect.lua +136 -123
  8. package/core/types/frame.d.ts +16 -2
  9. package/core/types/frame.lua +141 -77
  10. package/core/types/handle.lua +9 -9
  11. package/core/types/item.d.ts +1 -0
  12. package/core/types/item.lua +1 -0
  13. package/core/types/player.d.ts +18 -1
  14. package/core/types/player.lua +76 -26
  15. package/core/types/playerCamera.d.ts +2 -0
  16. package/core/types/playerCamera.lua +123 -5
  17. package/core/types/playerColor.lua +4 -3
  18. package/core/types/sound.d.ts +18 -25
  19. package/core/types/sound.lua +113 -33
  20. package/core/types/tileCell.d.ts +11 -1
  21. package/core/types/tileCell.lua +97 -0
  22. package/core/types/timer.d.ts +9 -8
  23. package/core/types/timer.lua +45 -23
  24. package/core/types/unit.d.ts +5 -0
  25. package/core/types/unit.lua +5 -0
  26. package/core/util.d.ts +3 -1
  27. package/core/util.lua +121 -4
  28. package/decl/native.d.ts +1718 -964
  29. package/destroyable.d.ts +1 -0
  30. package/destroyable.lua +9 -0
  31. package/engine/behavior.d.ts +14 -1
  32. package/engine/behavior.lua +230 -70
  33. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  34. package/engine/behaviour/ability/always-enabled.lua +31 -0
  35. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  36. package/engine/behaviour/ability/apply-buff.lua +36 -4
  37. package/engine/behaviour/ability/apply-unit-behavior.lua +6 -0
  38. package/engine/behaviour/ability/damage.d.ts +13 -3
  39. package/engine/behaviour/ability/damage.lua +41 -49
  40. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  41. package/engine/behaviour/ability/emulate-impact.lua +20 -6
  42. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  43. package/engine/behaviour/ability/on-command-impact.lua +8 -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 +133 -24
  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 +121 -59
  55. package/engine/buff.lua +605 -301
  56. package/engine/index.d.ts +2 -1
  57. package/engine/internal/ability.d.ts +25 -2
  58. package/engine/internal/ability.lua +164 -30
  59. package/engine/internal/item/ability.lua +162 -4
  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 +34 -18
  67. package/engine/internal/item.lua +308 -102
  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/ability-disable-counter.lua +13 -0
  71. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  72. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  73. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  74. package/engine/internal/misc/frame-coordinates.lua +21 -0
  75. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  76. package/engine/internal/misc/get-terrain-z.lua +11 -0
  77. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  78. package/engine/internal/misc/player-local-handle.lua +5 -0
  79. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  80. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  81. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  82. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  83. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  84. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  85. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  86. package/engine/internal/object-data/evasion-probability.lua +16 -0
  87. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  88. package/engine/internal/object-data/health-bonus.lua +16 -0
  89. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  90. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  91. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  92. package/engine/internal/object-data/mana-bonus.lua +16 -0
  93. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  94. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  95. package/engine/internal/unit/ability.d.ts +35 -0
  96. package/engine/internal/unit/ability.lua +113 -12
  97. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  98. package/engine/internal/unit/add-item-to-slot-init.lua +12 -0
  99. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  100. package/engine/internal/unit/add-item-to-slot.lua +93 -0
  101. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  102. package/engine/internal/unit/allowed-targets.lua +9 -1
  103. package/engine/internal/unit/appearance.d.ts +15 -0
  104. package/engine/internal/unit/appearance.lua +85 -0
  105. package/engine/internal/unit/attributes.d.ts +17 -0
  106. package/engine/internal/unit/attributes.lua +46 -0
  107. package/engine/internal/unit/bonus.d.ts +16 -0
  108. package/engine/internal/unit/bonus.lua +119 -8
  109. package/engine/internal/unit/buff.d.ts +2 -2
  110. package/engine/internal/unit/buff.lua +34 -19
  111. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  112. package/engine/internal/unit/equipment-inventory.lua +233 -0
  113. package/engine/internal/unit/expiration-timer.lua +1 -1
  114. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  115. package/engine/internal/unit/extended-inventory.lua +99 -0
  116. package/engine/internal/unit/fly-height.d.ts +7 -0
  117. package/engine/internal/unit/fly-height.lua +20 -0
  118. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  119. package/engine/internal/unit/ignore-events-items.lua +14 -0
  120. package/engine/internal/unit/interrupts.d.ts +12 -0
  121. package/engine/internal/unit/interrupts.lua +28 -0
  122. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  123. package/engine/internal/unit/inventory.lua +87 -0
  124. package/engine/internal/unit/item-container.d.ts +25 -0
  125. package/engine/internal/unit/item-container.lua +11 -0
  126. package/engine/internal/unit/item-order-events.d.ts +17 -0
  127. package/engine/internal/unit/item-order-events.lua +67 -0
  128. package/engine/internal/unit/item-slot.d.ts +27 -0
  129. package/engine/internal/unit/item-slot.lua +92 -0
  130. package/engine/internal/unit/main-selected.lua +12 -27
  131. package/engine/internal/unit/order.d.ts +20 -0
  132. package/engine/internal/unit/order.lua +136 -0
  133. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  134. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  135. package/engine/internal/unit/range-event.d.ts +12 -0
  136. package/engine/internal/unit/range-event.lua +90 -0
  137. package/engine/internal/unit/scale.d.ts +7 -0
  138. package/engine/internal/unit/scale.lua +20 -0
  139. package/engine/internal/unit+ability.d.ts +2 -1
  140. package/engine/internal/unit+ability.lua +73 -3
  141. package/engine/internal/unit+bonus.lua +3 -3
  142. package/engine/internal/unit+damage.d.ts +11 -11
  143. package/engine/internal/unit+damage.lua +43 -14
  144. package/engine/internal/unit+rally.lua +9 -31
  145. package/engine/internal/unit+spellSteal.lua +1 -2
  146. package/engine/internal/unit-missile-data.lua +58 -32
  147. package/engine/internal/unit-missile-launch.lua +65 -27
  148. package/engine/internal/unit.d.ts +45 -33
  149. package/engine/internal/unit.lua +432 -308
  150. package/engine/internal/utility.lua +12 -0
  151. package/engine/lightning.d.ts +12 -5
  152. package/engine/lightning.lua +48 -14
  153. package/engine/local-client.d.ts +28 -0
  154. package/engine/local-client.lua +324 -54
  155. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  156. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  157. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  158. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  159. package/engine/object-data/auxiliary/attachment-preset.d.ts +14 -2
  160. package/engine/object-data/auxiliary/attachment-preset.lua +11 -3
  161. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  162. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  163. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  164. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  165. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  166. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  167. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  168. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  169. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  170. package/engine/object-data/auxiliary/item-class.lua +2 -0
  171. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  172. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  173. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  174. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  175. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  176. package/engine/object-data/auxiliary/order-type.lua +2 -0
  177. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  178. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  179. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  180. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  181. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  182. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  183. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  184. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  185. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  186. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  187. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  188. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  189. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  190. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  191. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  192. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  193. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  194. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  195. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  196. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  197. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  198. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  199. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  200. package/engine/object-data/entry/ability-type/blank-configurable.lua +42 -1
  201. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  202. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  203. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  204. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  205. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  206. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  207. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  208. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  209. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  210. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  211. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  212. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  213. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  214. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  215. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  216. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  217. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  218. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  219. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  220. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  221. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  222. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  223. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  224. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  225. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  226. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  227. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  228. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  229. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  230. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  231. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  232. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  233. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  234. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  235. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  236. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  237. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  238. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  239. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  240. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  241. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  242. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  243. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  244. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  245. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  246. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  247. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  248. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  249. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  250. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  251. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  252. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  253. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  254. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  255. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  256. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  257. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  258. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  259. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  260. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  261. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  262. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  263. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  264. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  265. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  266. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  267. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  268. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  269. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  270. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  271. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  272. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  273. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  274. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  275. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  276. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  277. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  278. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  279. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  280. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  281. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  282. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  283. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  284. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  285. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  286. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  287. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  288. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  289. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  290. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  291. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  292. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  293. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  294. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  295. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  296. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  297. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  298. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  299. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  300. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  301. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  302. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  303. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  304. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  305. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  306. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  307. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  308. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  309. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  310. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  311. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  312. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  313. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  314. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  315. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  316. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  317. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  318. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  319. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  320. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  321. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  322. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  323. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  324. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  325. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  326. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  327. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  328. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  329. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  330. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  331. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  332. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  333. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  334. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  335. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  336. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  337. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  338. package/engine/object-data/entry/ability-type/web.lua +52 -0
  339. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  340. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  341. package/engine/object-data/entry/ability-type.d.ts +41 -20
  342. package/engine/object-data/entry/ability-type.lua +337 -44
  343. package/engine/object-data/entry/buff-type/applicable.lua +122 -137
  344. package/engine/object-data/entry/buff-type.d.ts +10 -12
  345. package/engine/object-data/entry/buff-type.lua +39 -29
  346. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  347. package/engine/object-data/entry/destructible-type.lua +181 -0
  348. package/engine/object-data/entry/item-type.d.ts +20 -3
  349. package/engine/object-data/entry/item-type.lua +99 -2
  350. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  351. package/engine/object-data/entry/lightning-type.lua +1 -1
  352. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  353. package/engine/object-data/entry/sound-preset.lua +140 -0
  354. package/engine/object-data/entry/unit-type.d.ts +71 -6
  355. package/engine/object-data/entry/unit-type.lua +592 -93
  356. package/engine/object-data/entry/upgrade.d.ts +2 -2
  357. package/engine/object-data/entry/upgrade.lua +4 -4
  358. package/engine/object-data/entry.d.ts +21 -14
  359. package/engine/object-data/entry.lua +68 -32
  360. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  361. package/engine/object-field/ability.d.ts +8 -5
  362. package/engine/object-field/ability.lua +10 -6
  363. package/engine/object-field/item.d.ts +22 -0
  364. package/engine/object-field/item.lua +118 -0
  365. package/engine/object-field/unit.d.ts +72 -3
  366. package/engine/object-field/unit.lua +268 -7
  367. package/engine/object-field.d.ts +26 -7
  368. package/engine/object-field.lua +362 -117
  369. package/engine/random.d.ts +10 -0
  370. package/engine/random.lua +21 -0
  371. package/engine/standard/entries/ability-type.d.ts +3102 -7
  372. package/engine/standard/entries/ability-type.lua +0 -6
  373. package/engine/standard/entries/buff-type.d.ts +48 -0
  374. package/engine/standard/entries/buff-type.lua +46 -0
  375. package/engine/standard/entries/item-type.d.ts +1299 -0
  376. package/engine/standard/entries/item-type.lua +2 -0
  377. package/engine/standard/entries/lightning-type.d.ts +42 -15
  378. package/engine/standard/entries/lightning-type.lua +0 -14
  379. package/engine/standard/entries/sound-preset.d.ts +10 -0
  380. package/engine/standard/entries/sound-preset.lua +10 -0
  381. package/engine/standard/entries/unit-type.d.ts +5 -0
  382. package/engine/standard/entries/unit-type.lua +5 -0
  383. package/engine/standard/fields/ability.d.ts +2 -2
  384. package/engine/standard/fields/ability.lua +2 -2
  385. package/engine/standard/fields/item.d.ts +4 -0
  386. package/engine/standard/fields/item.lua +6 -0
  387. package/engine/standard/fields/unit.d.ts +12 -0
  388. package/engine/standard/fields/unit.lua +20 -0
  389. package/engine/synchronization.d.ts +11 -0
  390. package/engine/synchronization.lua +77 -0
  391. package/engine/text-tag.d.ts +36 -2
  392. package/engine/text-tag.lua +250 -10
  393. package/engine/unit.d.ts +12 -1
  394. package/engine/unit.lua +12 -1
  395. package/event.d.ts +1 -1
  396. package/lualib_bundle.lua +1 -1
  397. package/math.d.ts +2 -0
  398. package/math.lua +14 -0
  399. package/net/socket.lua +1 -1
  400. package/network.lua +25 -1
  401. package/objutil/buff.lua +12 -11
  402. package/objutil/object.lua +1 -1
  403. package/objutil/unit.lua +8 -0
  404. package/operation.d.ts +8 -1
  405. package/operation.lua +38 -18
  406. package/package.json +3 -23
  407. package/patch-lua.lua +15 -0
  408. package/patch-lualib.lua +1 -1
  409. package/utility/arrays.d.ts +3 -0
  410. package/utility/arrays.lua +23 -0
  411. package/utility/callback-array.d.ts +17 -0
  412. package/utility/callback-array.lua +61 -0
  413. package/utility/functions.d.ts +8 -0
  414. package/utility/functions.lua +13 -0
  415. package/utility/linked-map.d.ts +35 -0
  416. package/utility/linked-map.lua +107 -0
  417. package/utility/linked-set.d.ts +5 -1
  418. package/utility/linked-set.lua +49 -1
  419. package/utility/lua-maps.d.ts +15 -2
  420. package/utility/lua-maps.lua +53 -2
  421. package/utility/lua-sets.d.ts +2 -0
  422. package/utility/lua-sets.lua +7 -0
  423. package/utility/random.d.ts +102 -0
  424. package/utility/random.lua +273 -0
  425. package/utility/records.lua +20 -1
  426. package/utility/reflection.lua +11 -7
  427. package/utility/types.d.ts +3 -0
  428. package/utility/unordered-map.d.ts +27 -0
  429. package/utility/unordered-map.lua +99 -0
  430. package/core/types/order.d.ts +0 -25
  431. package/core/types/order.lua +0 -55
  432. package/engine/internal/unit/item.lua +0 -84
  433. /package/engine/internal/{object-data/armor-increase.d.ts → misc/ability-disable-counter.d.ts} +0 -0
  434. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  435. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  436. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/attributes.d.ts CHANGED
@@ -1,12 +1,18 @@
1
1
  /** @noSelfInFile */
2
+ declare const marker: {};
2
3
  export type Attribute<T> = {
3
4
  readonly __attribute: unique symbol;
4
5
  readonly __type: T;
6
+ readonly __marker: typeof marker;
5
7
  } & symbol;
8
+ export declare const attribute: <T>() => Attribute<T>;
9
+ export declare const isAttribute: (value: unknown) => value is Attribute<unknown>;
6
10
  export declare namespace Attribute {
7
11
  const create: <T>() => Attribute<T>;
8
12
  }
9
13
  export declare class AttributesHolder {
10
14
  readonly get: (<T>(attribute: Attribute<T>) => T | undefined) & LuaExtension<"TableGetMethod">;
11
15
  readonly set: (<T>(attribute: Attribute<T>, value: T | undefined) => void) & LuaExtension<"TableSetMethod">;
16
+ getOrPut<T>(attribute: Attribute<T>, defaultValue: () => T): T;
12
17
  }
18
+ export {};
package/attributes.lua CHANGED
@@ -1,11 +1,18 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local ____exports = {}
4
+ local marker = {}
5
+ ____exports.attribute = function()
6
+ return {__marker = marker}
7
+ end
8
+ ____exports.isAttribute = function(value)
9
+ return type(value) == "table" and rawget(value, "__marker") == marker
10
+ end
4
11
  ____exports.Attribute = {}
5
12
  local Attribute = ____exports.Attribute
6
13
  do
7
14
  Attribute.create = function()
8
- return {}
15
+ return {__marker = marker}
9
16
  end
10
17
  end
11
18
  ____exports.AttributesHolder = __TS__Class()
@@ -13,4 +20,13 @@ local AttributesHolder = ____exports.AttributesHolder
13
20
  AttributesHolder.name = "AttributesHolder"
14
21
  function AttributesHolder.prototype.____constructor(self)
15
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
16
32
  return ____exports
package/config.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /** @noSelfInFile */
2
+ export declare class WarscriptConfig {
3
+ private constructor();
4
+ static AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH: boolean;
5
+ }
package/config.lua ADDED
@@ -0,0 +1,10 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local ____exports = {}
4
+ ____exports.WarscriptConfig = __TS__Class()
5
+ local WarscriptConfig = ____exports.WarscriptConfig
6
+ WarscriptConfig.name = "WarscriptConfig"
7
+ function WarscriptConfig.prototype.____constructor(self)
8
+ end
9
+ WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH = true
10
+ 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,9 +5,12 @@ 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 = {
13
+ readonly delay?: number;
11
14
  readonly scale?: number;
12
15
  readonly color?: PlayerColor;
13
16
  readonly pitch?: number;
@@ -20,7 +23,15 @@ export declare class Effect extends Handle<jeffect> {
20
23
  private [EffectPropertyKey.COLOR]?;
21
24
  private [EffectPropertyKey.PITCH]?;
22
25
  private [EffectPropertyKey.ROLL]?;
26
+ private [EffectPropertyKey.BLEND_TIME]?;
27
+ private [EffectPropertyKey.TIME_SCALE]?;
23
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);
24
35
  get color(): PlayerColor;
25
36
  set color(color: PlayerColor);
26
37
  get scale(): number;
@@ -29,12 +40,10 @@ export declare class Effect extends Handle<jeffect> {
29
40
  set pitch(pitch: number);
30
41
  get roll(): number;
31
42
  set roll(roll: number);
32
- static create<T extends Effect>(this: typeof Effect & (new (handle: jeffect) => T), model: string, pos: Vec2): T;
33
- static createTarget<T extends Effect>(this: typeof Effect & (new (handle: jeffect) => T), model: string, target: Widget, attachPoint: string): T;
43
+ static create<T extends Effect>(this: typeof Effect & (new (handle: jeffect) => T), modelPath: string, xOrWidget: number | Widget, yOrAttachmentPoint?: number | string, parameters?: EffectParameters): T;
34
44
  static flash(modelPath: string, ...args: [
35
45
  ...pointOrWidget: [x: number, y: number] | [widget: Widget, attachmentPoint?: string],
36
46
  ...parametersOrDuration: [parametersOrDuration?: EffectParameters | number] | [duration?: number, parameters?: EffectParameters]
37
47
  ]): void;
38
- static flashTarget(model: string, target: Widget, attachPoint: string, duration?: number): void;
39
48
  }
40
49
  export {};
@@ -1,10 +1,10 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
- local __TS__InstanceOf = ____lualib.__TS__InstanceOf
5
4
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
6
6
  local ____exports = {}
7
- local dummyPlayer
7
+ local dummyPlayer, addSpecialEffectInternal, flash
8
8
  local ____handle = require("core.types.handle")
9
9
  local Handle = ____handle.Handle
10
10
  local ____playerColor = require("core.types.playerColor")
@@ -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
@@ -119,10 +51,18 @@ local function setSpecialEffectColor(effect, color)
119
51
  dummyPlayer.color = dummyColor
120
52
  end
121
53
  local setters = {scale = setSpecialEffectScale, color = setSpecialEffectColor, pitch = setSpecialEffectPitchDegrees, roll = setSpecialEffectRollDegrees}
54
+ local setterProperties = {"scale", "color", "pitch", "roll"}
122
55
  dummyPlayer = Player.neutralExtra
123
56
  local temporaryEffects = {}
124
57
  local temporaryEffectsDurations = {}
125
58
  local temporaryEffectsCount = 0
59
+ local delayedEffectsModelPath = {}
60
+ local delayedEffectsXOrWidget = {}
61
+ local delayedEffectsYOrAttachmentPoint = {}
62
+ local delayedEffectsDuration = {}
63
+ local delayedEffectsParameters = {}
64
+ local delayedEffectsDelay = {}
65
+ local delayedEffectsCount = 0
126
66
  local period = 1 / 32
127
67
  Timer.onPeriod[period]:addListener(function()
128
68
  local i = 1
@@ -131,12 +71,36 @@ Timer.onPeriod[period]:addListener(function()
131
71
  if duration <= 0 then
132
72
  destroyEffect(temporaryEffects[i])
133
73
  temporaryEffects[i] = temporaryEffects[temporaryEffectsCount]
74
+ temporaryEffectsDurations[i] = temporaryEffectsDurations[temporaryEffectsCount]
134
75
  temporaryEffectsCount = temporaryEffectsCount - 1
135
76
  else
136
77
  temporaryEffectsDurations[i] = duration - period
137
78
  i = i + 1
138
79
  end
139
80
  end
81
+ i = 1
82
+ while i <= delayedEffectsCount do
83
+ local delay = delayedEffectsDelay[i]
84
+ if delay <= 0 then
85
+ flash(
86
+ delayedEffectsModelPath[i],
87
+ delayedEffectsXOrWidget[i],
88
+ delayedEffectsYOrAttachmentPoint[i],
89
+ delayedEffectsDuration[i],
90
+ delayedEffectsParameters[i]
91
+ )
92
+ delayedEffectsModelPath[i] = delayedEffectsModelPath[delayedEffectsCount]
93
+ delayedEffectsXOrWidget[i] = delayedEffectsXOrWidget[delayedEffectsCount]
94
+ delayedEffectsYOrAttachmentPoint[i] = delayedEffectsYOrAttachmentPoint[delayedEffectsCount]
95
+ delayedEffectsDuration[i] = delayedEffectsDuration[delayedEffectsCount]
96
+ delayedEffectsParameters[i] = delayedEffectsParameters[delayedEffectsCount]
97
+ delayedEffectsDelay[i] = delayedEffectsDelay[delayedEffectsCount]
98
+ delayedEffectsCount = delayedEffectsCount - 1
99
+ else
100
+ delayedEffectsDelay[i] = delay - period
101
+ i = i + 1
102
+ end
103
+ end
140
104
  end)
141
105
  ____exports.Effect = __TS__Class()
142
106
  local Effect = ____exports.Effect
@@ -146,66 +110,78 @@ function Effect.prototype.onDestroy(self)
146
110
  destroyEffect(self.handle)
147
111
  return Handle.prototype.onDestroy(self)
148
112
  end
149
- function Effect.create(self, model, pos)
150
- return self:of(addSpecialEffect(model, pos.x, pos.y))
113
+ function Effect.prototype.setAnimation(self, animation)
114
+ setSpecialEffectAnimation(self.handle, animation)
151
115
  end
152
- function Effect.createTarget(self, model, target, attachPoint)
153
- return self:of(addSpecialEffectTarget(model, target.handle, attachPoint))
116
+ function Effect.prototype.queueAnimation(self, animation)
117
+ queueSpecialEffectAnimation(self.handle, animation)
118
+ end
119
+ function Effect.create(self, modelPath, xOrWidget, yOrAttachmentPoint, parameters)
120
+ local effect = self:of(addSpecialEffectInternal(modelPath, xOrWidget, yOrAttachmentPoint, parameters))
121
+ if parameters ~= nil then
122
+ effect[100] = parameters.color
123
+ effect[101] = parameters.pitch
124
+ effect[102] = parameters.roll
125
+ end
126
+ return effect
154
127
  end
155
128
  function Effect.flash(self, modelPath, xOrWidget, yOrOrAttachmentPoint, parametersOrDuration, parameters)
156
129
  if type(parametersOrDuration) ~= "number" then
157
130
  parameters = parametersOrDuration
158
131
  parametersOrDuration = nil
159
132
  end
160
- local coordinatesProvided = type(xOrWidget) == "number"
161
- local isPositional = coordinatesProvided or (parameters and parameters.detached) == true
162
- local x = not isPositional and 0 or (coordinatesProvided and xOrWidget or xOrWidget.x)
163
- local y = not isPositional and 0 or (coordinatesProvided and yOrOrAttachmentPoint or xOrWidget.y)
164
- local effect = isPositional and addSpecialEffect(modelPath, x, y) or addSpecialEffectTarget(modelPath, xOrWidget.handle, yOrOrAttachmentPoint or "origin")
165
- if isPositional and not coordinatesProvided and (parameters and parameters.scale) == nil and __TS__InstanceOf(xOrWidget, Unit) then
166
- setSpecialEffectScale(effect, xOrWidget.scale)
167
- end
168
- if parameters ~= nil then
169
- for key, value in ____pairs(parameters) do
170
- if key ~= "zOffset" and key ~= "detached" and key ~= "scaleZOffset" then
171
- setters[key](effect, value)
172
- end
173
- end
174
- if isPositional and parameters.zOffset ~= nil then
175
- moveLocation(location, x, y)
176
- local z = __TS__InstanceOf(xOrWidget, Unit) and getLocationZ(location) + xOrWidget.flyHeight or getLocationZ(location)
177
- BlzSetSpecialEffectZ(
178
- effect,
179
- z + parameters.zOffset * (parameters.scaleZOffset and getSpecialEffectScale(effect) or 1)
180
- )
181
- end
182
- end
183
- if parametersOrDuration ~= nil and parametersOrDuration > 0 then
184
- temporaryEffectsCount = temporaryEffectsCount + 1
185
- temporaryEffects[temporaryEffectsCount] = effect
186
- temporaryEffectsDurations[temporaryEffectsCount] = parametersOrDuration
133
+ if parameters and (parameters.delay or 0) > 0 then
134
+ delayedEffectsCount = delayedEffectsCount + 1
135
+ delayedEffectsModelPath[delayedEffectsCount] = modelPath
136
+ delayedEffectsXOrWidget[delayedEffectsCount] = xOrWidget
137
+ delayedEffectsYOrAttachmentPoint[delayedEffectsCount] = yOrOrAttachmentPoint
138
+ delayedEffectsDuration[delayedEffectsCount] = parametersOrDuration
139
+ delayedEffectsParameters[delayedEffectsCount] = parameters
140
+ delayedEffectsDelay[delayedEffectsCount] = parameters.delay
187
141
  return
188
142
  end
189
- destroyEffect(effect)
143
+ flash(
144
+ modelPath,
145
+ xOrWidget,
146
+ yOrOrAttachmentPoint,
147
+ parametersOrDuration,
148
+ parameters
149
+ )
190
150
  end
191
- function Effect.flashTarget(self, model, target, attachPoint, duration)
192
- local effect = addSpecialEffectTarget(model, target.handle, attachPoint)
193
- if effect ~= nil then
194
- if duration and duration > 0 then
195
- temporaryEffectsCount = temporaryEffectsCount + 1
196
- temporaryEffects[temporaryEffectsCount] = effect
197
- temporaryEffectsDurations[temporaryEffectsCount] = duration
198
- else
199
- destroyEffect(effect)
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
200
161
  end
201
- end
202
- 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
+ )
203
179
  __TS__SetDescriptor(
204
180
  Effect.prototype,
205
181
  "color",
206
182
  {
207
183
  get = function(self)
208
- return self[100] or PlayerColor.black
184
+ return self[100] or PlayerColor.red
209
185
  end,
210
186
  set = function(self, color)
211
187
  setSpecialEffectColor(self.handle, color)
@@ -255,4 +231,41 @@ __TS__SetDescriptor(
255
231
  },
256
232
  true
257
233
  )
234
+ addSpecialEffectInternal = function(modelPath, xOrWidget, yOrAttachmentPoint, parameters)
235
+ local coordinatesProvided = type(xOrWidget) == "number"
236
+ local isPositional = coordinatesProvided or (parameters and parameters.detached) == true
237
+ local x = not isPositional and 0 or (coordinatesProvided and xOrWidget or xOrWidget.x)
238
+ local y = not isPositional and 0 or (coordinatesProvided and yOrAttachmentPoint or xOrWidget.y)
239
+ local effect = isPositional and addSpecialEffect(modelPath, x, y) or addSpecialEffectTarget(modelPath, xOrWidget.handle, yOrAttachmentPoint or "origin")
240
+ if parameters ~= nil then
241
+ if isPositional and parameters.scale == nil and __TS__InstanceOf(xOrWidget, Unit) then
242
+ setSpecialEffectScale(effect, xOrWidget.scale)
243
+ end
244
+ for ____, property in ipairs(setterProperties) do
245
+ local value = parameters[property]
246
+ if value ~= nil then
247
+ setters[property](effect, value)
248
+ end
249
+ end
250
+ if isPositional and parameters.zOffset ~= nil then
251
+ moveLocation(location, x, y)
252
+ local z = __TS__InstanceOf(xOrWidget, Unit) and getLocationZ(location) + xOrWidget.flyHeight or getLocationZ(location)
253
+ setSpecialEffectZ(
254
+ effect,
255
+ z + parameters.zOffset * (parameters.scaleZOffset and getSpecialEffectScale(effect) or 1)
256
+ )
257
+ end
258
+ end
259
+ return effect
260
+ end
261
+ flash = function(modelPath, xOrWidget, yOrAttachmentPoint, duration, parameters)
262
+ local effect = addSpecialEffectInternal(modelPath, xOrWidget, yOrAttachmentPoint, parameters)
263
+ if duration ~= nil and duration > 0 then
264
+ temporaryEffectsCount = temporaryEffectsCount + 1
265
+ temporaryEffects[temporaryEffectsCount] = effect
266
+ temporaryEffectsDurations[temporaryEffectsCount] = duration
267
+ return
268
+ end
269
+ destroyEffect(effect)
270
+ end
258
271
  return ____exports
@@ -80,6 +80,7 @@ export declare class Frame extends Handle<jframehandle> {
80
80
  get onMouseLeave(): FrameEvent;
81
81
  get onMouseUp(): FrameEvent;
82
82
  get onMouseWheel(): FrameEvent<[number]>;
83
+ private trackMouseLocally;
83
84
  get mouseEnterLocalEvent(): Event;
84
85
  get mouseLeaveLocalEvent(): Event;
85
86
  get popupMenuItemChangeEvent(): FrameEvent<[
@@ -136,8 +137,21 @@ export declare class Frame extends Handle<jframehandle> {
136
137
  static get onMouseUp(): Event<[Player, jmousebuttontype, number, number]>;
137
138
  private static onMouseDownEvent?;
138
139
  static get onMouseDown(): Event<[Player, jmousebuttontype, number, number]>;
139
- static get onMouseMove(): Event<[player: Player, x: number, y: number]>;
140
- static get onMouseMoveLocal(): Event<[x: number, y: number]>;
140
+ /**
141
+ * Synchronized native mouse movement of every player. Each movement of every player's
142
+ * cursor is sent over the network, so with several players moving their mice this floods
143
+ * the network and raises the latency for everyone. Prefer {@link mouseMoveLocalEvent} and
144
+ * synchronize the needed coordinates explicitly, only when they matter (e.g. on a click).
145
+ */
146
+ static get mouseMoveEvent(): Event<[player: Player, x: number, y: number]>;
147
+ /**
148
+ * Fires on the local client when the world point under the cursor changes, whether the
149
+ * cursor or the camera moved. Polls the local cursor position every 1/64 second and sends
150
+ * nothing over the network. The point is the camera ray's intersection with the terrain,
151
+ * so it ignores units and doodads under the cursor. It is also computed while the cursor
152
+ * is over the UI; check {@link isMouseOnWorld} where that matters.
153
+ */
154
+ static get mouseMoveLocalEvent(): Event<[x: number, y: number]>;
141
155
  static createSimple<T extends Frame>(this: FrameSubclass<T>, name: string, parent?: Frame, createContext?: number): T;
142
156
  static create<T extends Frame>(this: FrameSubclass<T>, name: string, parent: Frame, priority?: number, createContext?: number): T;
143
157
  static createByType<T extends Frame>(this: FrameSubclass<T>, typeName: "BACKDROP" | "BUTTON" | "CHATDISPLAY" | "CHECKBOX" | "CONTROL" | "DIALOG" | "EDITBOX" | "FRAME" | "GLUEBUTTON" | "GLUECHECKBOX" | "GLUETEXTBUTTON" | "HIGHLIGHT" | "LISTBOX" | "MENU" | "POPUPMENU" | "SCROLLBAR" | "SLIDER" | "TEXT" | "TEXTAREA" | "TEXTBUTTON", name: string, parent: Frame, inherits?: string, createContext?: number): T;