warscript 0.0.1-dev.aefeacb → 0.0.1-dev.b1ce140

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 (391) 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 +1 -0
  7. package/core/types/frame.lua +136 -58
  8. package/core/types/handle.lua +9 -9
  9. package/core/types/item.d.ts +1 -0
  10. package/core/types/item.lua +1 -0
  11. package/core/types/player.d.ts +18 -1
  12. package/core/types/player.lua +76 -26
  13. package/core/types/playerCamera.d.ts +2 -0
  14. package/core/types/playerCamera.lua +123 -5
  15. package/core/types/playerColor.lua +4 -3
  16. package/core/types/sound.d.ts +18 -26
  17. package/core/types/sound.lua +99 -53
  18. package/core/types/tileCell.d.ts +11 -1
  19. package/core/types/tileCell.lua +97 -0
  20. package/core/types/timer.d.ts +9 -8
  21. package/core/types/timer.lua +45 -23
  22. package/core/types/unit.d.ts +5 -0
  23. package/core/types/unit.lua +5 -0
  24. package/core/util.d.ts +3 -1
  25. package/core/util.lua +109 -3
  26. package/decl/native.d.ts +1718 -964
  27. package/destroyable.d.ts +1 -0
  28. package/destroyable.lua +9 -0
  29. package/engine/behavior.d.ts +14 -1
  30. package/engine/behavior.lua +230 -70
  31. package/engine/behaviour/ability/apply-buff.lua +5 -5
  32. package/engine/behaviour/ability/apply-unit-behavior.lua +6 -0
  33. package/engine/behaviour/ability/damage.d.ts +13 -3
  34. package/engine/behaviour/ability/damage.lua +41 -49
  35. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  36. package/engine/behaviour/ability/emulate-impact.lua +23 -7
  37. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  38. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  39. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  40. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  41. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  42. package/engine/behaviour/ability/restore-mana.lua +6 -6
  43. package/engine/behaviour/ability.d.ts +17 -6
  44. package/engine/behaviour/ability.lua +81 -21
  45. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  46. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  47. package/engine/behaviour/unit.d.ts +41 -2
  48. package/engine/behaviour/unit.lua +270 -6
  49. package/engine/buff.d.ts +79 -27
  50. package/engine/buff.lua +454 -186
  51. package/engine/index.d.ts +2 -1
  52. package/engine/internal/ability.d.ts +11 -1
  53. package/engine/internal/ability.lua +104 -44
  54. package/engine/internal/item/ability.lua +63 -11
  55. package/engine/internal/item/fields.d.ts +12 -0
  56. package/engine/internal/item/fields.lua +33 -0
  57. package/engine/internal/item/owner-cache.d.ts +5 -0
  58. package/engine/internal/item/owner-cache.lua +4 -0
  59. package/engine/internal/item+owner.d.ts +2 -0
  60. package/engine/internal/item+owner.lua +37 -8
  61. package/engine/internal/item.d.ts +32 -16
  62. package/engine/internal/item.lua +257 -82
  63. package/engine/internal/mechanics/ability-duration.lua +1 -1
  64. package/engine/internal/mechanics/cast-ability.lua +6 -3
  65. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  66. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  67. package/engine/internal/misc/frame-coordinates.lua +21 -0
  68. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  69. package/engine/internal/misc/get-terrain-z.lua +11 -0
  70. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  71. package/engine/internal/misc/player-local-handle.lua +5 -0
  72. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  73. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  74. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  75. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  76. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  77. package/engine/internal/object-data/health-bonus.lua +16 -0
  78. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  79. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  80. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  81. package/engine/internal/object-data/mana-bonus.lua +16 -0
  82. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  83. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  84. package/engine/internal/unit/ability.d.ts +35 -0
  85. package/engine/internal/unit/ability.lua +113 -12
  86. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  87. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  88. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  89. package/engine/internal/unit/allowed-targets.lua +9 -1
  90. package/engine/internal/unit/appearance.d.ts +15 -0
  91. package/engine/internal/unit/appearance.lua +85 -0
  92. package/engine/internal/unit/attributes.d.ts +17 -0
  93. package/engine/internal/unit/attributes.lua +46 -0
  94. package/engine/internal/unit/bonus.d.ts +14 -0
  95. package/engine/internal/unit/bonus.lua +102 -8
  96. package/engine/internal/unit/buff.d.ts +2 -2
  97. package/engine/internal/unit/buff.lua +34 -19
  98. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  99. package/engine/internal/unit/equipment-inventory.lua +233 -0
  100. package/engine/internal/unit/expiration-timer.lua +1 -1
  101. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  102. package/engine/internal/unit/extended-inventory.lua +99 -0
  103. package/engine/internal/unit/fly-height.d.ts +7 -0
  104. package/engine/internal/unit/fly-height.lua +20 -0
  105. package/engine/internal/unit/ignore-events-items.lua +10 -1
  106. package/engine/internal/unit/interrupts.d.ts +12 -0
  107. package/engine/internal/unit/interrupts.lua +28 -0
  108. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  109. package/engine/internal/unit/inventory.lua +87 -0
  110. package/engine/internal/unit/item-container.d.ts +25 -0
  111. package/engine/internal/unit/item-container.lua +11 -0
  112. package/engine/internal/unit/item-order-events.d.ts +17 -0
  113. package/engine/internal/unit/item-order-events.lua +67 -0
  114. package/engine/internal/unit/item-slot.d.ts +27 -0
  115. package/engine/internal/unit/item-slot.lua +92 -0
  116. package/engine/internal/unit/main-selected.lua +12 -27
  117. package/engine/internal/unit/order.d.ts +20 -0
  118. package/engine/internal/unit/order.lua +136 -0
  119. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  120. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  121. package/engine/internal/unit/range-event.d.ts +12 -0
  122. package/engine/internal/unit/range-event.lua +90 -0
  123. package/engine/internal/unit/scale.d.ts +7 -0
  124. package/engine/internal/unit/scale.lua +20 -0
  125. package/engine/internal/unit+ability.d.ts +2 -1
  126. package/engine/internal/unit+ability.lua +73 -3
  127. package/engine/internal/unit+bonus.lua +3 -3
  128. package/engine/internal/unit+damage.d.ts +11 -11
  129. package/engine/internal/unit+damage.lua +43 -14
  130. package/engine/internal/unit+rally.lua +9 -31
  131. package/engine/internal/unit+spellSteal.lua +1 -2
  132. package/engine/internal/unit-missile-data.lua +58 -32
  133. package/engine/internal/unit-missile-launch.lua +65 -27
  134. package/engine/internal/unit.d.ts +43 -33
  135. package/engine/internal/unit.lua +391 -323
  136. package/engine/local-client.d.ts +28 -0
  137. package/engine/local-client.lua +324 -54
  138. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  139. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  140. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  141. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  142. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  143. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  144. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  145. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  146. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  147. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  148. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  149. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  150. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  151. package/engine/object-data/auxiliary/item-class.lua +2 -0
  152. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  153. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  154. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  155. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  156. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  157. package/engine/object-data/auxiliary/order-type.lua +2 -0
  158. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  159. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  160. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  161. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  162. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  163. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  164. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  165. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  166. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  167. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  168. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  169. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  170. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  171. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  172. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  173. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  174. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  175. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  176. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  177. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  178. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  179. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  180. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  181. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  182. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  183. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  184. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  185. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  186. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  187. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  188. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  189. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  190. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  191. package/engine/object-data/entry/ability-type/curse.lua +2 -2
  192. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  193. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  194. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  195. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  196. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  197. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  198. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  199. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  200. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  201. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  202. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  203. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  204. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  205. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  206. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  207. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  208. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  209. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  210. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  211. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  212. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  213. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  214. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  215. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  216. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  217. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  218. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  219. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  220. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  221. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  222. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  223. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  224. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  225. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  226. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  227. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  228. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  229. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  230. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  231. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  232. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  233. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  234. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  235. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  236. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  237. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  238. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  239. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  240. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  241. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  242. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  243. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  244. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  245. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  246. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  247. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  248. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  249. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  250. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  251. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  252. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  253. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  254. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  255. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  256. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  257. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  258. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  259. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  260. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  261. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  262. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  263. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  264. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  265. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  266. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  267. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  268. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  269. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  270. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  271. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  272. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  273. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  274. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  275. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  276. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  277. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  278. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  279. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  280. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  281. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  282. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  283. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  284. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  285. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  286. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  287. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  288. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  289. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  290. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  291. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  292. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  293. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  294. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  295. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  296. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  297. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  298. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  299. package/engine/object-data/entry/ability-type/web.lua +52 -0
  300. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  301. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  302. package/engine/object-data/entry/ability-type.d.ts +29 -14
  303. package/engine/object-data/entry/ability-type.lua +256 -17
  304. package/engine/object-data/entry/buff-type/applicable.lua +113 -104
  305. package/engine/object-data/entry/buff-type.d.ts +10 -12
  306. package/engine/object-data/entry/buff-type.lua +37 -27
  307. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  308. package/engine/object-data/entry/destructible-type.lua +181 -0
  309. package/engine/object-data/entry/item-type.d.ts +18 -3
  310. package/engine/object-data/entry/item-type.lua +84 -0
  311. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  312. package/engine/object-data/entry/lightning-type.lua +1 -1
  313. package/engine/object-data/entry/sound-preset.d.ts +19 -2
  314. package/engine/object-data/entry/sound-preset.lua +104 -0
  315. package/engine/object-data/entry/unit-type.d.ts +64 -6
  316. package/engine/object-data/entry/unit-type.lua +531 -85
  317. package/engine/object-data/entry/upgrade.d.ts +2 -2
  318. package/engine/object-data/entry.d.ts +6 -1
  319. package/engine/object-data/entry.lua +8 -0
  320. package/engine/object-field/ability.d.ts +4 -4
  321. package/engine/object-field/ability.lua +9 -8
  322. package/engine/object-field/item.d.ts +22 -0
  323. package/engine/object-field/item.lua +118 -0
  324. package/engine/object-field/unit.d.ts +72 -3
  325. package/engine/object-field/unit.lua +268 -7
  326. package/engine/object-field.d.ts +26 -7
  327. package/engine/object-field.lua +360 -119
  328. package/engine/random.d.ts +10 -0
  329. package/engine/random.lua +21 -0
  330. package/engine/standard/entries/ability-type.d.ts +3102 -7
  331. package/engine/standard/entries/ability-type.lua +0 -6
  332. package/engine/standard/entries/buff-type.d.ts +3 -0
  333. package/engine/standard/entries/buff-type.lua +3 -0
  334. package/engine/standard/entries/item-type.d.ts +1299 -0
  335. package/engine/standard/entries/item-type.lua +2 -0
  336. package/engine/standard/entries/lightning-type.d.ts +42 -15
  337. package/engine/standard/entries/lightning-type.lua +0 -14
  338. package/engine/standard/entries/unit-type.d.ts +5 -0
  339. package/engine/standard/entries/unit-type.lua +5 -0
  340. package/engine/standard/fields/ability.d.ts +2 -2
  341. package/engine/standard/fields/ability.lua +2 -2
  342. package/engine/standard/fields/item.d.ts +4 -0
  343. package/engine/standard/fields/item.lua +6 -0
  344. package/engine/standard/fields/unit.d.ts +12 -0
  345. package/engine/standard/fields/unit.lua +20 -0
  346. package/engine/synchronization.d.ts +11 -0
  347. package/engine/synchronization.lua +77 -0
  348. package/engine/text-tag.d.ts +36 -2
  349. package/engine/text-tag.lua +250 -10
  350. package/engine/unit.d.ts +11 -1
  351. package/engine/unit.lua +11 -1
  352. package/event.d.ts +1 -1
  353. package/lualib_bundle.lua +1 -1
  354. package/math.d.ts +2 -0
  355. package/math.lua +14 -0
  356. package/net/socket.lua +1 -1
  357. package/network.lua +25 -1
  358. package/objutil/buff.lua +12 -11
  359. package/objutil/object.lua +1 -1
  360. package/operation.d.ts +8 -1
  361. package/operation.lua +38 -18
  362. package/package.json +3 -23
  363. package/patch-lua.lua +15 -0
  364. package/patch-lualib.lua +1 -1
  365. package/utility/arrays.d.ts +2 -0
  366. package/utility/arrays.lua +11 -0
  367. package/utility/callback-array.d.ts +17 -0
  368. package/utility/callback-array.lua +61 -0
  369. package/utility/functions.d.ts +8 -0
  370. package/utility/functions.lua +13 -0
  371. package/utility/linked-map.d.ts +35 -0
  372. package/utility/linked-map.lua +107 -0
  373. package/utility/linked-set.d.ts +5 -1
  374. package/utility/linked-set.lua +49 -1
  375. package/utility/lua-maps.d.ts +15 -2
  376. package/utility/lua-maps.lua +53 -2
  377. package/utility/lua-sets.d.ts +2 -0
  378. package/utility/lua-sets.lua +7 -0
  379. package/utility/random.d.ts +102 -0
  380. package/utility/random.lua +273 -0
  381. package/utility/records.lua +20 -1
  382. package/utility/types.d.ts +3 -0
  383. package/utility/unordered-map.d.ts +27 -0
  384. package/utility/unordered-map.lua +99 -0
  385. package/core/types/order.d.ts +0 -25
  386. package/core/types/order.lua +0 -55
  387. package/engine/internal/unit/item.lua +0 -78
  388. /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
  389. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  390. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  391. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -5,20 +5,25 @@ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
5
  local ____exports = {}
6
6
  local ____handle = require("core.types.handle")
7
7
  local Handle = ____handle.Handle
8
+ local ____sound_2Dpreset = require("engine.object-data.entry.sound-preset")
9
+ local SoundPreset = ____sound_2Dpreset.SoundPreset
10
+ local ____random = require("engine.random")
11
+ local randomInteger = ____random.randomInteger
12
+ local attachSoundToUnit = AttachSoundToUnit
8
13
  local createSound = CreateSound
9
14
  local createSoundFromLabel = CreateSoundFromLabel
10
- local setSoundPitch = SetSoundPitch
15
+ local killSoundWhenDone = KillSoundWhenDone
11
16
  local setSoundChannel = SetSoundChannel
17
+ local setSoundDistanceCutoff = SetSoundDistanceCutoff
18
+ local setSoundDistances = SetSoundDistances
19
+ local setSoundPitch = SetSoundPitch
20
+ local setSoundPlayPosition = SetSoundPlayPosition
12
21
  local setSoundPosition = SetSoundPosition
13
22
  local setSoundVolume = SetSoundVolume
14
- local setSoundDistances = SetSoundDistances
15
- local setSoundDistanceCutoff = SetSoundDistanceCutoff
16
23
  local startSound = StartSound
17
- local setSoundPlayPosition = SetSoundPlayPosition
24
+ local startSoundEx = StartSoundEx
18
25
  local stopSound = StopSound
19
- local attachSoundToUnit = AttachSoundToUnit
20
- local killSoundWhenDone = KillSoundWhenDone
21
- ____exports.SoundChannel = SoundChannel or ({})
26
+ ____exports.SoundChannel = ____exports.SoundChannel or ({})
22
27
  ____exports.SoundChannel.General = 0
23
28
  ____exports.SoundChannel[____exports.SoundChannel.General] = "General"
24
29
  ____exports.SoundChannel.UnitSelection = 1
@@ -49,29 +54,21 @@ ____exports.SoundChannel.Birth = 13
49
54
  ____exports.SoundChannel[____exports.SoundChannel.Birth] = "Birth"
50
55
  ____exports.SoundChannel.Fire = 14
51
56
  ____exports.SoundChannel[____exports.SoundChannel.Fire] = "Fire"
52
- ____exports.SoundEax = SoundEax or ({})
53
- ____exports.SoundEax.Default = "DefaultEAXON"
54
- ____exports.SoundEax.Acknowledgements = "HeroAcksEAX"
55
- ____exports.SoundEax.Environment = "DoodadsEAX"
56
- ____exports.SoundEax.Drums = "KotoDrumsEAX"
57
- ____exports.SoundEax.Attacks = "CombatSoundsEAX"
58
- ____exports.SoundEax.Abilities = "SpellsEAX"
59
- ____exports.SoundEax.Missiles = "MissilesEAX"
60
- ____exports.SoundPreset = {}
61
- local SoundPreset = ____exports.SoundPreset
57
+ ____exports.SoundSettings = {}
58
+ local SoundSettings = ____exports.SoundSettings
62
59
  do
63
- SoundPreset.UI = {channel = ____exports.SoundChannel.UI, eax = ____exports.SoundEax.Default, fadeInRate = 12700, fadeOutRate = 12700}
64
- SoundPreset.Music = {
60
+ SoundSettings.UI = {channel = ____exports.SoundChannel.UI, eax = "DefaultEAXON", fadeInRate = 12700, fadeOutRate = 12700}
61
+ SoundSettings.Music = {
65
62
  channel = ____exports.SoundChannel.Music,
66
- eax = ____exports.SoundEax.Default,
63
+ eax = "DefaultEAXON",
67
64
  fadeInRate = 12700,
68
65
  fadeOutRate = 12700,
69
66
  looping = true
70
67
  }
71
- SoundPreset.Attack = {channel = ____exports.SoundChannel.Combat, eax = ____exports.SoundEax.Attacks, fadeInRate = 10, fadeOutRate = 10}
72
- SoundPreset.Ability = {
68
+ SoundSettings.Attack = {channel = ____exports.SoundChannel.Combat, eax = "CombatSoundsEAX", fadeInRate = 10, fadeOutRate = 10}
69
+ SoundSettings.Ability = {
73
70
  channel = ____exports.SoundChannel.Animations,
74
- eax = ____exports.SoundEax.Abilities,
71
+ eax = "SpellsEAX",
75
72
  stopWhenOutOfRange = true,
76
73
  volume = 127,
77
74
  fadeInRate = 1,
@@ -81,9 +78,9 @@ do
81
78
  maxDistance = 3500,
82
79
  distanceCutoff = 3000
83
80
  }
84
- SoundPreset.AbilityLooping = {
81
+ SoundSettings.AbilityLooping = {
85
82
  channel = ____exports.SoundChannel.Birth,
86
- eax = ____exports.SoundEax.Abilities,
83
+ eax = "SpellsEAX",
87
84
  looping = true,
88
85
  stopWhenOutOfRange = true,
89
86
  volume = 127,
@@ -94,9 +91,9 @@ do
94
91
  maxDistance = 3000,
95
92
  distanceCutoff = 3000
96
93
  }
97
- SoundPreset.Missile = {
94
+ SoundSettings.Missile = {
98
95
  channel = ____exports.SoundChannel.Animations,
99
- eax = ____exports.SoundEax.Missiles,
96
+ eax = "MissilesEAX",
100
97
  stopWhenOutOfRange = true,
101
98
  volume = 127,
102
99
  fadeInRate = 1,
@@ -107,6 +104,29 @@ do
107
104
  distanceCutoff = 3000
108
105
  }
109
106
  end
107
+ local customSoundPresetDataByLabel = postcompile(function()
108
+ local customSoundPresetDataByLabel = {}
109
+ for ____, soundPreset in ipairs(SoundPreset:getAll()) do
110
+ if soundPreset.isCustom then
111
+ customSoundPresetDataByLabel[soundPreset.id] = {
112
+ filePaths = soundPreset.filePaths,
113
+ volume = soundPreset.volume,
114
+ pitch = soundPreset.pitch,
115
+ channel = soundPreset.channel,
116
+ minimumDistance = soundPreset.minimumDistance,
117
+ maximumDistance = soundPreset.maximumDistance,
118
+ distanceCutoff = soundPreset.distanceCutoff,
119
+ eax = soundPreset.eax
120
+ }
121
+ end
122
+ end
123
+ return customSoundPresetDataByLabel
124
+ end)
125
+ ---
126
+ -- @internal For use by internal systems only.
127
+ ____exports.isSoundLabelCustom = function(label)
128
+ return customSoundPresetDataByLabel[label] ~= nil
129
+ end
110
130
  local function createPresetSound(fileName, preset)
111
131
  local ____fileName_1 = fileName
112
132
  local ____preset_looping_0 = preset.looping
@@ -120,7 +140,7 @@ local function createPresetSound(fileName, preset)
120
140
  true,
121
141
  preset.fadeInRate or 12700,
122
142
  preset.fadeOutRate or 12700,
123
- preset.eax or ____exports.SoundEax.Default
143
+ preset.eax or "DefaultEAXON"
124
144
  )
125
145
  setSoundChannel(sound, preset.channel or ____exports.SoundChannel.General)
126
146
  setSoundVolume(sound, preset.volume or 127)
@@ -143,7 +163,7 @@ local function createPreset3DSound(fileName, preset)
143
163
  ____preset_stopWhenOutOfRange_3,
144
164
  preset.fadeInRate or 12700,
145
165
  preset.fadeOutRate or 12700,
146
- preset.eax or ____exports.SoundEax.Default
166
+ preset.eax or "DefaultEAXON"
147
167
  )
148
168
  setSoundChannel(sound, preset.channel or ____exports.SoundChannel.General)
149
169
  setSoundVolume(sound, preset.volume or 127)
@@ -153,29 +173,51 @@ local function createPreset3DSound(fileName, preset)
153
173
  return sound
154
174
  end
155
175
  local function createPreset3DSoundFromLabel(label, preset)
156
- local ____label_7 = label
157
- local ____preset_looping_5 = preset.looping
158
- if ____preset_looping_5 == nil then
159
- ____preset_looping_5 = false
160
- end
161
- local ____preset_stopWhenOutOfRange_6 = preset.stopWhenOutOfRange
162
- if ____preset_stopWhenOutOfRange_6 == nil then
163
- ____preset_stopWhenOutOfRange_6 = true
176
+ local customSoundPresetData = customSoundPresetDataByLabel[label]
177
+ if customSoundPresetData == nil then
178
+ local ____label_7 = label
179
+ local ____preset_looping_5 = preset.looping
180
+ if ____preset_looping_5 == nil then
181
+ ____preset_looping_5 = false
182
+ end
183
+ local ____preset_stopWhenOutOfRange_6 = preset.stopWhenOutOfRange
184
+ if ____preset_stopWhenOutOfRange_6 == nil then
185
+ ____preset_stopWhenOutOfRange_6 = true
186
+ end
187
+ return createSoundFromLabel(
188
+ ____label_7,
189
+ ____preset_looping_5,
190
+ true,
191
+ ____preset_stopWhenOutOfRange_6,
192
+ preset.fadeInRate or 12700,
193
+ preset.fadeOutRate or 12700
194
+ )
195
+ else
196
+ local ____customSoundPresetData_filePaths_index_10 = customSoundPresetData.filePaths[randomInteger(#customSoundPresetData.filePaths - 1) + 1]
197
+ local ____preset_looping_8 = preset.looping
198
+ if ____preset_looping_8 == nil then
199
+ ____preset_looping_8 = false
200
+ end
201
+ local ____preset_stopWhenOutOfRange_9 = preset.stopWhenOutOfRange
202
+ if ____preset_stopWhenOutOfRange_9 == nil then
203
+ ____preset_stopWhenOutOfRange_9 = true
204
+ end
205
+ local sound = createSound(
206
+ ____customSoundPresetData_filePaths_index_10,
207
+ ____preset_looping_8,
208
+ true,
209
+ ____preset_stopWhenOutOfRange_9,
210
+ preset.fadeInRate or 12700,
211
+ preset.fadeOutRate or 12700,
212
+ customSoundPresetData.eax
213
+ )
214
+ setSoundChannel(sound, customSoundPresetData.channel)
215
+ setSoundVolume(sound, customSoundPresetData.volume)
216
+ setSoundPitch(sound, customSoundPresetData.pitch)
217
+ setSoundDistances(sound, customSoundPresetData.minimumDistance, customSoundPresetData.maximumDistance)
218
+ setSoundDistanceCutoff(sound, customSoundPresetData.distanceCutoff)
219
+ return sound
164
220
  end
165
- local sound = createSoundFromLabel(
166
- ____label_7,
167
- ____preset_looping_5,
168
- true,
169
- ____preset_stopWhenOutOfRange_6,
170
- preset.fadeInRate or 12700,
171
- preset.fadeOutRate or 12700
172
- )
173
- setSoundChannel(sound, preset.channel or ____exports.SoundChannel.General)
174
- setSoundVolume(sound, preset.volume or 127)
175
- setSoundPitch(sound, preset.pitch or 1)
176
- setSoundDistances(sound, preset.minDistance or 600, preset.maxDistance or 8000)
177
- setSoundDistanceCutoff(sound, preset.distanceCutoff or 1500)
178
- return sound
179
221
  end
180
222
  ____exports.Sound = __TS__Class()
181
223
  local Sound = ____exports.Sound
@@ -185,8 +227,12 @@ function Sound.prototype.onDestroy(self, fadeOut)
185
227
  stopSound(self.handle, true, fadeOut or false)
186
228
  return Handle.prototype.onDestroy(self)
187
229
  end
188
- function Sound.prototype.start(self, milliseconds)
189
- startSound(self.handle)
230
+ function Sound.prototype.start(self, milliseconds, fadeIn)
231
+ if fadeIn == nil then
232
+ startSound(self.handle)
233
+ else
234
+ startSoundEx(self.handle, fadeIn)
235
+ end
190
236
  if milliseconds then
191
237
  setSoundPlayPosition(self.handle, milliseconds)
192
238
  end
@@ -1,10 +1,20 @@
1
1
  /** @noSelfInFile */
2
- export declare class TileCell implements Readonly<Vec2> {
2
+ import { AttributesHolder } from "../../attributes";
3
+ export declare class TileCell extends AttributesHolder implements Readonly<Vec2> {
3
4
  private readonly id;
4
5
  readonly x: number;
5
6
  readonly y: number;
6
7
  readonly z: undefined;
7
8
  protected constructor(id: number, x: number, y: number, z: undefined);
9
+ get up(): TileCell;
10
+ get down(): TileCell;
11
+ get left(): TileCell;
12
+ get right(): TileCell;
13
+ get terrainTypeId(): number;
14
+ set terrainTypeId(terrainTypeId: number);
15
+ get terrainVariance(): number;
16
+ set terrainVariance(terrainVariance: number);
17
+ randomizeTerrainVariance(): void;
8
18
  isInRangeOf(x: number, y: number, range: number): boolean;
9
19
  isInRangeOf(tileCell: TileCell, range: number): boolean;
10
20
  static getInRect(minX: number, minY: number, maxX: number, maxY: number): TileCell[];
@@ -1,7 +1,14 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
3
4
  local __TS__New = ____lualib.__TS__New
5
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
4
6
  local ____exports = {}
7
+ local ____attributes = require("attributes")
8
+ local AttributesHolder = ____attributes.AttributesHolder
9
+ local getTerrainType = GetTerrainType
10
+ local setTerrainType = SetTerrainType
11
+ local getTerrainVariance = GetTerrainVariance
5
12
  local abs = math.abs
6
13
  local ____type = math.type
7
14
  local ult = math.ult
@@ -9,13 +16,27 @@ local tileCellById = {}
9
16
  ____exports.TileCell = __TS__Class()
10
17
  local TileCell = ____exports.TileCell
11
18
  TileCell.name = "TileCell"
19
+ __TS__ClassExtends(TileCell, AttributesHolder)
12
20
  function TileCell.prototype.____constructor(self, id, x, y, z)
21
+ AttributesHolder.prototype.____constructor(self)
13
22
  self.id = id
14
23
  self.x = x
15
24
  self.y = y
16
25
  self.z = z
17
26
  tileCellById[id] = self
18
27
  end
28
+ function TileCell.prototype.randomizeTerrainVariance(self)
29
+ local x = self.x
30
+ local y = self.y
31
+ setTerrainType(
32
+ x,
33
+ y,
34
+ getTerrainType(x, y),
35
+ -1,
36
+ 1,
37
+ 1
38
+ )
39
+ end
19
40
  function TileCell.prototype.isInRangeOf(self, x, y, range)
20
41
  if range == nil then
21
42
  range = y
@@ -97,4 +118,80 @@ function TileCell.of(x, y)
97
118
  nil
98
119
  )
99
120
  end
121
+ __TS__SetDescriptor(
122
+ TileCell.prototype,
123
+ "up",
124
+ {get = function(self)
125
+ return ____exports.TileCell.of(self.x, self.y + 128)
126
+ end},
127
+ true
128
+ )
129
+ __TS__SetDescriptor(
130
+ TileCell.prototype,
131
+ "down",
132
+ {get = function(self)
133
+ return ____exports.TileCell.of(self.x, self.y - 128)
134
+ end},
135
+ true
136
+ )
137
+ __TS__SetDescriptor(
138
+ TileCell.prototype,
139
+ "left",
140
+ {get = function(self)
141
+ return ____exports.TileCell.of(self.x - 128, self.y)
142
+ end},
143
+ true
144
+ )
145
+ __TS__SetDescriptor(
146
+ TileCell.prototype,
147
+ "right",
148
+ {get = function(self)
149
+ return ____exports.TileCell.of(self.x + 128, self.y)
150
+ end},
151
+ true
152
+ )
153
+ __TS__SetDescriptor(
154
+ TileCell.prototype,
155
+ "terrainTypeId",
156
+ {
157
+ get = function(self)
158
+ return getTerrainType(self.x, self.y)
159
+ end,
160
+ set = function(self, terrainTypeId)
161
+ local x = self.x
162
+ local y = self.y
163
+ setTerrainType(
164
+ x,
165
+ y,
166
+ terrainTypeId,
167
+ getTerrainVariance(x, y),
168
+ 1,
169
+ 1
170
+ )
171
+ end
172
+ },
173
+ true
174
+ )
175
+ __TS__SetDescriptor(
176
+ TileCell.prototype,
177
+ "terrainVariance",
178
+ {
179
+ get = function(self)
180
+ return getTerrainVariance(self.x, self.y)
181
+ end,
182
+ set = function(self, terrainVariance)
183
+ local x = self.x
184
+ local y = self.y
185
+ setTerrainType(
186
+ x,
187
+ y,
188
+ getTerrainType(x, y),
189
+ terrainVariance,
190
+ 1,
191
+ 1
192
+ )
193
+ end
194
+ },
195
+ true
196
+ )
100
197
  return ____exports
@@ -1,29 +1,30 @@
1
1
  /** @noSelfInFile */
2
2
  import { Event } from "../../event";
3
+ import { AbstractDestroyable, Destructor } from "../../destroyable";
4
+ import { CallbackId } from "../../utility/callback-array";
3
5
  declare const enum TimerPropertyKey {
4
6
  HANDLE = 0,
5
- DESTROYED = 1,
6
- DESTROY_ON_EXPIRATION = 2,
7
- CALLBACK = 3,
8
- ARGS_LENGTH = 4
7
+ DESTROY_ON_EXPIRATION = 1,
8
+ CALLBACK = 2,
9
+ ARGS_LENGTH = 3
9
10
  }
10
- export declare class Timer implements Destroyable {
11
+ export declare class Timer extends AbstractDestroyable {
11
12
  private readonly [TimerPropertyKey.HANDLE];
12
- private [TimerPropertyKey.DESTROYED]?;
13
13
  private [TimerPropertyKey.DESTROY_ON_EXPIRATION]?;
14
14
  private [TimerPropertyKey.CALLBACK]?;
15
15
  private [TimerPropertyKey.ARGS_LENGTH]?;
16
16
  private constructor();
17
17
  get handle(): jtimer;
18
18
  start<Args extends any[]>(timeout: number, periodic: boolean, callback: (...args: Args) => void, ...args: Args): void;
19
+ onDestroy(): Destructor;
19
20
  get elapsed(): number;
20
21
  get remaining(): number;
21
22
  get timeout(): number;
22
23
  pause(): void;
23
24
  resume(): void;
24
- destroy(): void;
25
25
  static create(): Timer;
26
- static run<Args extends any[]>(callback: (...args: Args) => void, ...args: Args): void;
26
+ static run<T, K extends KeysOfType<T, (this: T, ...args: any) => any>>(object: T, key: K, ...parameters: T[K] extends (this: T, ...args: any) => any ? Parameters<T[K]> : never): CallbackId;
27
+ static run<Args extends any[]>(callback: (this: void, ...args: Args) => void, ...args: Args): CallbackId;
27
28
  static simple<Args extends any[]>(timeout: number, callback: (...args: Args) => void, ...args: Args): Timer;
28
29
  static periodic<Args extends any[]>(period: number, callback: (this: void, timer: Timer, ...args: Args) => void, ...args: Args): Timer;
29
30
  static counted(period: number, count: number, callback: (this: void, timer: Timer) => void): Timer;
@@ -1,6 +1,7 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__New = ____lualib.__TS__New
3
3
  local __TS__Class = ____lualib.__TS__Class
4
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
5
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
6
  local __TS__Promise = ____lualib.__TS__Promise
6
7
  local ____exports = {}
@@ -9,8 +10,13 @@ local Event = ____event.Event
9
10
  local InitializingEvent = ____event.InitializingEvent
10
11
  local ____objectPool = require("util.objectPool")
11
12
  local ObjectPool = ____objectPool.ObjectPool
12
- local ____exception = require("exception")
13
- local IllegalStateException = ____exception.IllegalStateException
13
+ local ____destroyable = require("destroyable")
14
+ local AbstractDestroyable = ____destroyable.AbstractDestroyable
15
+ local ____callback_2Darray = require("utility.callback-array")
16
+ local addCallback = ____callback_2Darray.addCallback
17
+ local callbackArray = ____callback_2Darray.callbackArray
18
+ local consumeCallback = ____callback_2Darray.consumeCallback
19
+ local consumeCallbacks = ____callback_2Darray.consumeCallbacks
14
20
  local createTimer = CreateTimer
15
21
  local timerStart = TimerStart
16
22
  local pauseTimer = PauseTimer
@@ -23,6 +29,7 @@ local getHandleId = GetHandleId
23
29
  local ____pcall = _G.pcall
24
30
  local ____print = _G.print
25
31
  local select = _G.select
32
+ local ____type = _G.type
26
33
  local safeCall = warpack.safeCall
27
34
  local corunning = coroutine.running
28
35
  local coresume = coroutine.resume
@@ -35,61 +42,76 @@ local timerByHandleId = {}
35
42
  local function timerSafeCall()
36
43
  local timer = timerByHandleId[getHandleId(getExpiredTimer())]
37
44
  if timer ~= nil then
38
- if timer[2] then
45
+ if timer[1] then
39
46
  timer:destroy()
40
47
  end
41
- local callback = timer[3]
48
+ local callback = timer[2]
42
49
  if callback ~= nil then
43
50
  safeCall(
44
51
  callback,
45
- ____unpack(timer, 4 + 1, 4 + (timer[4] or 0))
52
+ ____unpack(timer, 3 + 1, 3 + (timer[3] or 0))
46
53
  )
47
54
  end
48
55
  end
49
56
  end
57
+ local zeroTimerScheduled = false
58
+ local zeroTimerCallbacks = callbackArray()
59
+ ---
60
+ -- @internal For use by internal systems only.
61
+ ____exports.consumeZeroTimerCallback = function(id)
62
+ consumeCallback(zeroTimerCallbacks, id)
63
+ end
64
+ local function invokeZeroTimerCallbacks()
65
+ zeroTimerScheduled = false
66
+ consumeCallbacks(zeroTimerCallbacks)
67
+ end
50
68
  ____exports.Timer = __TS__Class()
51
69
  local Timer = ____exports.Timer
52
70
  Timer.name = "Timer"
71
+ __TS__ClassExtends(Timer, AbstractDestroyable)
53
72
  function Timer.prototype.____constructor(self)
73
+ AbstractDestroyable.prototype.____constructor(self)
54
74
  self[0] = get()
55
75
  timerByHandleId[getHandleId(self[0])] = self
56
76
  end
57
77
  function Timer.prototype.start(self, timeout, periodic, callback, ...)
58
- self[3] = callback
78
+ self[2] = callback
59
79
  local argsLength = select("#", ...)
60
- self[4] = argsLength
80
+ self[3] = argsLength
61
81
  for i = 1, argsLength do
62
- self[4 + i] = (select(i, ...))
82
+ self[3 + i] = (select(i, ...))
63
83
  end
64
84
  timerStart(self.handle, timeout, periodic, timerSafeCall)
65
85
  end
86
+ function Timer.prototype.onDestroy(self)
87
+ local handle = self[0]
88
+ timerByHandleId[getHandleId(handle)] = nil
89
+ release(handle)
90
+ return AbstractDestroyable.prototype.onDestroy(self)
91
+ end
66
92
  function Timer.prototype.pause(self)
67
93
  pauseTimer(self[0])
68
94
  end
69
95
  function Timer.prototype.resume(self)
70
96
  resumeTimer(self[0])
71
97
  end
72
- function Timer.prototype.destroy(self)
73
- if self[1] then
74
- error(
75
- __TS__New(IllegalStateException, "Double-destroy run for timer"),
76
- 0
77
- )
78
- end
79
- local handle = self[0]
80
- timerByHandleId[getHandleId(handle)] = nil
81
- release(handle)
82
- self[1] = true
83
- end
84
98
  function Timer.create(self)
85
99
  return __TS__New(____exports.Timer)
86
100
  end
87
- function Timer.run(self, callback, ...)
88
- ____exports.Timer:simple(0, callback, ...)
101
+ function Timer.run(self, objectOrCallback, keyOrFirstArg, ...)
102
+ if not zeroTimerScheduled then
103
+ zeroTimerScheduled = true
104
+ ____exports.Timer:simple(0, invokeZeroTimerCallbacks)
105
+ end
106
+ if ____type(objectOrCallback) == "function" then
107
+ return addCallback(zeroTimerCallbacks, objectOrCallback, keyOrFirstArg, ...)
108
+ else
109
+ return addCallback(zeroTimerCallbacks, objectOrCallback[keyOrFirstArg], objectOrCallback, ...)
110
+ end
89
111
  end
90
112
  function Timer.simple(self, timeout, callback, ...)
91
113
  local timer = __TS__New(____exports.Timer)
92
- timer[2] = true
114
+ timer[1] = true
93
115
  timer:start(timeout, false, callback, ...)
94
116
  return timer
95
117
  end
@@ -1,6 +1,11 @@
1
1
  /** @noSelfInFile */
2
2
  import "../../engine/internal/unit";
3
3
  import "../../engine/internal/unit/ability";
4
+ import "../../engine/internal/unit/appearance";
5
+ import "../../engine/internal/unit/extended-inventory";
6
+ import "../../engine/internal/unit/equipment-inventory";
7
+ import "../../engine/internal/unit/inventory";
8
+ import "../../engine/internal/unit/item-order-events";
4
9
  import "../../engine/internal/unit+damage";
5
10
  import "../../engine/internal/unit+rally";
6
11
  import "../../engine/internal/unit+spellSteal";
@@ -1,6 +1,11 @@
1
1
  local ____exports = {}
2
2
  require("engine.internal.unit")
3
3
  require("engine.internal.unit.ability")
4
+ require("engine.internal.unit.appearance")
5
+ require("engine.internal.unit.extended-inventory")
6
+ require("engine.internal.unit.equipment-inventory")
7
+ require("engine.internal.unit.inventory")
8
+ require("engine.internal.unit.item-order-events")
4
9
  require("engine.internal.unit+damage")
5
10
  require("engine.internal.unit+rally")
6
11
  require("engine.internal.unit+spellSteal")
package/core/util.d.ts CHANGED
@@ -54,9 +54,11 @@ declare global {
54
54
  function fourCC(id: string): number;
55
55
  }
56
56
  declare namespace inner {
57
- const orderId: (id: "blink" | "stop" | "load" | "sleep" | "absorb" | "acidbomb" | "acolyteharvest" | "ambush" | "ancestralspirit" | "ancestralspirittarget" | "animatedead" | "antimagicshell" | "attack" | "attackground" | "attackonce" | "attributemodskill" | "auraunholy" | "auravampiric" | "autodispel" | "autodispeloff" | "autodispelon" | "autoentangle" | "autoentangleinstant" | "autoharvestgold" | "autoharvestlumber" | "avatar" | "avengerform" | "awaken" | "banish" | "barkskin" | "barkskinoff" | "barkskinon" | "battleroar" | "battlestations" | "bearform" | "berserk" | "blackarrow" | "blackarrowoff" | "blackarrowon" | "blight" | "blizzard" | "bloodlust" | "bloodlustoff" | "bloodluston" | "board" | "breathoffire" | "breathoffrost" | "build" | "burrow" | "cannibalize" | "carrionscarabs" | "carrionscarabsinstant" | "carrionscarabsoff" | "carrionscarabson" | "carrionswarm" | "chainlightning" | "channel" | "charm" | "chemicalrage" | "cloudoffog" | "clusterrockets" | "coldarrows" | "coldarrowstarg" | "controlmagic" | "corporealform" | "corrosivebreath" | "coupleinstant" | "coupletarget" | "creepanimatedead" | "creepdevour" | "creepheal" | "creephealoff" | "creephealon" | "creepthunderbolt" | "creepthunderclap" | "cripple" | "curse" | "curseoff" | "curseon" | "cyclone" | "darkconversion" | "darkportal" | "darkritual" | "darksummoning" | "deathanddecay" | "deathcoil" | "deathpact" | "decouple" | "defend" | "detectaoe" | "detonate" | "devour" | "devourmagic" | "disassociate" | "disenchant" | "dismount" | "dispel" | "divineshield" | "doom" | "drain" | "dreadlordinferno" | "dropitem" | "moveslot0" | "moveslot1" | "moveslot2" | "moveslot3" | "moveslot4" | "moveslot5" | "useslot0" | "useslot1" | "useslot2" | "useslot3" | "useslot4" | "useslot5" | "drunkenhaze" | "earthquake" | "eattree" | "elementalfury" | "ensnare" | "ensnareoff" | "ensnareon" | "entangle" | "entangleinstant" | "entanglingroots" | "etherealform" | "evileye" | "faeriefire" | "faeriefireoff" | "faeriefireon" | "fanofknives" | "farsight" | "fingerofdeath" | "firebolt" | "flamestrike" | "flamingarrows" | "flamingarrowstarg" | "flamingattack" | "flamingattacktarg" | "flare" | "forceboard" | "forceofnature" | "forkedlightning" | "freezingbreath" | "frenzy" | "frenzyoff" | "frenzyon" | "frostarmor" | "frostarmoroff" | "frostarmoron" | "frostnova" | "getitem" | "gold2lumber" | "grabtree" | "harvest" | "heal" | "healingspray" | "healingward" | "healingwave" | "healoff" | "healon" | "hex" | "holdposition" | "holybolt" | "howlofterror" | "humanbuild" | "immolation" | "impale" | "incineratearrow" | "incineratearrowoff" | "incineratearrowon" | "inferno" | "innerfire" | "innerfireoff" | "innerfireon" | "instant" | "invisibility" | "lavamonster" | "lightningshield" | "loadarcher" | "loadcorpse" | "loadcorpseinstant" | "locustswarm" | "lumber2gold" | "magicdefense" | "magicleash" | "magicundefense" | "manaburn" | "manaflareoff" | "manaflareon" | "manashieldoff" | "manashieldon" | "massteleport" | "mechanicalcritter" | "metamorphosis" | "militia" | "militiaconvert" | "militiaoff" | "militiaunconvert" | "mindrot" | "mirrorimage" | "monsoon" | "mount" | "mounthippogryph" | "move" | "moveAI" | "nagabuild" | "neutraldetectaoe" | "neutralinteract" | "neutralspell" | "nightelfbuild" | "orcbuild" | "parasite" | "parasiteoff" | "parasiteon" | "patrol" | "patrolAI" | "phaseshift" | "phaseshiftinstant" | "phaseshiftoff" | "phaseshifton" | "phoenixfire" | "phoenixmorph" | "poisonarrows" | "poisonarrowstarg" | "polymorph" | "possession" | "preservation" | "purge" | "rainofchaos" | "rainoffire" | "raisedead" | "raisedeadoff" | "raisedeadon" | "ravenform" | "recharge" | "rechargeoff" | "rechargeon" | "rejuvination" | "renew" | "renewoff" | "renewon" | "repair" | "repairoff" | "repairon" | "replenish" | "replenishlife" | "replenishlifeoff" | "replenishlifeon" | "replenishmana" | "replenishmanaoff" | "replenishmanaon" | "replenishoff" | "replenishon" | "request_hero" | "requestsacrifice" | "restoration" | "restorationoff" | "restorationon" | "resumebuild" | "resumeharvesting" | "resurrection" | "returnresources" | "revenge" | "revive" | "roar" | "robogoblin" | "root" | "sacrifice" | "sanctuary" | "scout" | "selfdestruct" | "selfdestructoff" | "selfdestructon" | "sentinel" | "follow" | "smart" | "setrally" | "shadowsight" | "shadowstrike" | "shockwave" | "silence" | "slow" | "slowoff" | "slowon" | "soulburn" | "soulpreservation" | "spellshield" | "spellshieldaoe" | "spellsteal" | "spellstealoff" | "spellstealon" | "spies" | "spiritlink" | "spiritofvengeance" | "spirittroll" | "spiritwolf" | "stampede" | "standdown" | "starfall" | "stasistrap" | "steal" | "stomp" | "stoneform" | "stunned" | "submerge" | "summonfactory" | "summongrizzly" | "summonphoenix" | "summonquillbeast" | "summonwareagle" | "tankdroppilot" | "tankloadpilot" | "tankpilot" | "taunt" | "thunderbolt" | "thunderclap" | "tornado" | "townbelloff" | "townbellon" | "tranquility" | "transmute" | "unavatar" | "unavengerform" | "unbearform" | "unburrow" | "uncoldarrows" | "uncorporealform" | "undeadbuild" | "undefend" | "undivineshield" | "unetherealform" | "unflamingarrows" | "unflamingattack" | "unholyfrenzy" | "unimmolation" | "unload" | "unloadall" | "unloadallcorpses" | "unloadallinstant" | "unpoisonarrows" | "unravenform" | "unrobogoblin" | "unroot" | "unstableconcoction" | "unstoneform" | "unsubmerge" | "unsummon" | "unwindwalk" | "vengeance" | "vengeanceinstant" | "vengeanceoff" | "vengeanceon" | "volcano" | "voodoo" | "ward" | "waterelemental" | "wateryminion" | "web" | "weboff" | "webon" | "whirlwind" | "windwalk" | "wispharvest") => number;
57
+ /** @deprecated Use the {@link OrderType} const enum from `warscript/engine/object-data/auxiliary/order-type` instead. */
58
+ const orderId: (id: "blink" | "stop" | "load" | "sleep" | "absorb" | "acidbomb" | "acolyteharvest" | "AImove" | "ambush" | "ancestralspirit" | "ancestralspirittarget" | "animatedead" | "antimagicshell" | "attack" | "attackground" | "attackonce" | "attributemodskill" | "auracalltoarms" | "auraunholy" | "auravampiric" | "autodispel" | "autodispeloff" | "autodispelon" | "autoentangle" | "autoentangleinstant" | "autoharvestgold" | "autoharvestlumber" | "avatar" | "avengerform" | "awaken" | "banish" | "barkskin" | "barkskinoff" | "barkskinon" | "batteringram" | "battleroar" | "battlestations" | "bearform" | "berserk" | "blackarrow" | "blackarrowoff" | "blackarrowon" | "bladedance" | "blight" | "blizzard" | "bloodlust" | "bloodlustoff" | "bloodluston" | "board" | "breathoffire" | "breathoffrost" | "build" | "burrow" | "cannibalize" | "carrionscarabs" | "carrionscarabsinstant" | "carrionscarabsoff" | "carrionscarabson" | "carrionswarm" | "chainlightning" | "challengingcall" | "channel" | "charm" | "chemicalrage" | "cleansingfire" | "cloudoffog" | "clusterrockets" | "coldarrows" | "coldarrowstarg" | "consecration" | "controlmagic" | "corporealform" | "corrosivebreath" | "coupleinstant" | "coupletarget" | "creepanimatedead" | "creepdevour" | "creepheal" | "creephealoff" | "creephealon" | "creepthunderbolt" | "creepthunderclap" | "cripple" | "curse" | "curseoff" | "curseon" | "cyclone" | "darkconversion" | "darkportal" | "darkritual" | "darksummoning" | "deathanddecay" | "deathcoil" | "deathpact" | "deathseekerbow" | "decouple" | "defend" | "detectaoe" | "detonate" | "devour" | "devourmagic" | "disassociate" | "disenchant" | "dismount" | "dispel" | "divineshield" | "doom" | "drain" | "dreadlordinferno" | "dropitem" | "moveslot0" | "moveslot1" | "moveslot2" | "moveslot3" | "moveslot4" | "moveslot5" | "useslot0" | "useslot1" | "useslot2" | "useslot3" | "useslot4" | "useslot5" | "moveslotext0" | "moveslotext1" | "moveslotext2" | "moveslotext3" | "moveslotext4" | "moveslotext5" | "moveslotext6" | "moveslotext7" | "moveslotext8" | "moveslotext9" | "moveslotext10" | "moveslotext11" | "moveslotext12" | "moveslotext13" | "moveslotext14" | "moveslotext15" | "moveslotext16" | "moveslotext17" | "moveslotext18" | "moveslotext19" | "moveslotext20" | "moveslotext21" | "moveslotext22" | "moveslotext23" | "moveslotext24" | "moveslotext25" | "moveslotext26" | "moveslotext27" | "moveslotext28" | "moveslotext29" | "moveslotequip0" | "moveslotequip1" | "moveslotequip2" | "moveslotequip3" | "moveslotequip4" | "moveslotequip5" | "moveslotequip6" | "moveslotequip7" | "moveslotequip8" | "useslotext0" | "useslotext1" | "useslotext2" | "useslotext3" | "useslotext4" | "useslotext5" | "useslotext6" | "useslotext7" | "useslotext8" | "useslotext9" | "useslotext10" | "useslotext11" | "useslotext12" | "useslotext13" | "useslotext14" | "useslotext15" | "useslotext16" | "useslotext17" | "useslotext18" | "useslotext19" | "useslotext20" | "useslotext21" | "useslotext22" | "useslotext23" | "useslotext24" | "useslotext25" | "useslotext26" | "useslotext27" | "useslotext28" | "useslotext29" | "useslotequip0" | "useslotequip1" | "useslotequip2" | "useslotequip3" | "useslotequip4" | "useslotequip5" | "useslotequip6" | "useslotequip7" | "useslotequip8" | "drunkenhaze" | "earthquake" | "eattree" | "elementalfury" | "ensnare" | "ensnareaoe" | "ensnareoff" | "ensnareon" | "entangle" | "entangleinstant" | "entanglingroots" | "etherealform" | "evileye" | "faeriefire" | "faeriefireoff" | "faeriefireon" | "fanofknives" | "farsight" | "fingerofdeath" | "firebolt" | "flamestrike" | "flamingarrows" | "flamingarrowstarg" | "flamingattack" | "flamingattacktarg" | "flare" | "forceboard" | "forceofnature" | "forkedlightning" | "freezingbreath" | "frenzy" | "frenzyoff" | "frenzyon" | "frostarmor" | "frostarmoroff" | "frostarmoron" | "frostnova" | "getitem" | "gold2lumber" | "grabtree" | "grit" | "guidinghand" | "harvest" | "headsplitter" | "heal" | "healingspray" | "healingward" | "healingwave" | "healoff" | "healon" | "heroicchallenge" | "heroicslash" | "hex" | "holdposition" | "holybolt" | "howlofterror" | "humanbuild" | "immolation" | "impale" | "incineratearrow" | "incineratearrowoff" | "incineratearrowon" | "inferno" | "innerfire" | "innerfireoff" | "innerfireon" | "inspirecourage" | "instant" | "invisibility" | "lavamonster" | "lightningshield" | "loadarcher" | "loadcorpse" | "loadcorpseinstant" | "locustswarm" | "lumber2gold" | "magicdefense" | "magicleash" | "magicundefense" | "manaburn" | "manaflareoff" | "manaflareon" | "manashieldoff" | "manashieldon" | "massteleport" | "mechanicalcritter" | "metamorphosis" | "militia" | "militiaconvert" | "militiaoff" | "militiaunconvert" | "mindrot" | "mirrorimage" | "monsoon" | "mount" | "mounthippogryph" | "move" | "nagabuild" | "neutraldetectaoe" | "neutralinteract" | "neutralspell" | "nightelfbuild" | "orcbuild" | "parasite" | "parasiteoff" | "parasiteon" | "patrol" | "AIpatrol" | "phaseshift" | "phaseshiftinstant" | "phaseshiftoff" | "phaseshifton" | "phoenixfire" | "phoenixmorph" | "poisonarrows" | "poisonarrowstarg" | "polymorph" | "possession" | "preservation" | "purge" | "purifierblade" | "rainofchaos" | "rainoffire" | "raisedead" | "raisedeadoff" | "raisedeadon" | "ravenform" | "recharge" | "rechargeoff" | "rechargeon" | "rejuvination" | "renew" | "renewoff" | "renewon" | "repair" | "repairoff" | "repairon" | "replenish" | "replenishlife" | "replenishlifeoff" | "replenishlifeon" | "replenishmana" | "replenishmanaoff" | "replenishmanaon" | "replenishoff" | "replenishon" | "request_hero" | "requestsacrifice" | "restoration" | "restorationoff" | "restorationon" | "resumebuild" | "resumeharvesting" | "resurrection" | "returnresources" | "revenge" | "revive" | "righteousfury" | "ritualdagger" | "roar" | "robogoblin" | "root" | "sacrifice" | "sanctuary" | "scout" | "selfdestruct" | "selfdestructoff" | "selfdestructon" | "sentinel" | "follow" | "smart" | "setrally" | "shadowsight" | "shadowstrike" | "shockwave" | "silence" | "slow" | "slowoff" | "slowon" | "soulburn" | "soullantern" | "soulpreservation" | "spellshield" | "spellshieldaoe" | "spellsteal" | "spellstealoff" | "spellstealon" | "spies" | "spiritlink" | "spiritofvengeance" | "spirittroll" | "spiritwolf" | "stampede" | "standdown" | "starfall" | "stasistrap" | "steal" | "stomp" | "stoneform" | "stunned" | "submerge" | "summonfactory" | "summongrizzly" | "summonphoenix" | "summonquillbeast" | "summonwareagle" | "sweepingstrike" | "tankdroppilot" | "tankloadpilot" | "tankpilot" | "taunt" | "thunderbolt" | "thunderclap" | "tornado" | "townbelloff" | "townbellon" | "tranquility" | "transmute" | "unavatar" | "unavengerform" | "unbearform" | "unburrow" | "uncoldarrows" | "uncorporealform" | "undeadbuild" | "undeadvengeance" | "undefend" | "undivineshield" | "unetherealform" | "unflamingarrows" | "unflamingattack" | "unguidinghand" | "unholyfrenzy" | "unholyfrenzyaoe" | "unimmolation" | "unload" | "unloadall" | "unloadallcorpses" | "unloadallinstant" | "unpoisonarrows" | "unravenform" | "unrobogoblin" | "unroot" | "unsoullantern" | "unstableconcoction" | "unstoneform" | "unsubmerge" | "unsummon" | "unwindwalk" | "valiantcharge" | "vengeance" | "vengeanceinstant" | "vengeanceoff" | "vengeanceon" | "volcano" | "voodoo" | "warcry" | "ward" | "waterelemental" | "wateryminion" | "web" | "weboff" | "webon" | "whirlwind" | "windwalk" | "wispharvest" | "witheringfire") => number;
58
59
  }
59
60
  declare global {
61
+ /** @deprecated Use the {@link OrderType} const enum from `warscript/engine/object-data/auxiliary/order-type` instead. */
60
62
  function orderId(...args: Parameters<typeof inner.orderId>): ReturnType<typeof inner.orderId>;
61
63
  }
62
64
  export {};