warscript 0.0.1-dev.29630c5 → 0.0.1-dev.29e90d8

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 (442) 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 +12 -4
  7. package/core/types/effect.lua +67 -104
  8. package/core/types/frame.d.ts +21 -2
  9. package/core/types/frame.lua +165 -87
  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/missile.lua +6 -11
  14. package/core/types/player.d.ts +18 -1
  15. package/core/types/player.lua +76 -26
  16. package/core/types/playerCamera.d.ts +2 -0
  17. package/core/types/playerCamera.lua +123 -5
  18. package/core/types/playerColor.lua +4 -3
  19. package/core/types/sound.d.ts +18 -25
  20. package/core/types/sound.lua +113 -33
  21. package/core/types/tileCell.d.ts +18 -3
  22. package/core/types/tileCell.lua +108 -0
  23. package/core/types/timer.d.ts +9 -8
  24. package/core/types/timer.lua +45 -23
  25. package/core/types/unit.d.ts +5 -0
  26. package/core/types/unit.lua +5 -0
  27. package/core/util.d.ts +3 -1
  28. package/core/util.lua +115 -4
  29. package/decl/native.d.ts +1719 -964
  30. package/destroyable.d.ts +1 -0
  31. package/destroyable.lua +9 -0
  32. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  33. package/engine/ability-type-extended-tooltip.lua +44 -0
  34. package/engine/behavior.d.ts +14 -1
  35. package/engine/behavior.lua +230 -70
  36. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  37. package/engine/behaviour/ability/apply-buff.lua +36 -4
  38. package/engine/behaviour/ability/apply-unit-behavior.lua +6 -0
  39. package/engine/behaviour/ability/damage.d.ts +15 -4
  40. package/engine/behaviour/ability/damage.lua +41 -49
  41. package/engine/behaviour/ability/emulate-impact.d.ts +15 -1
  42. package/engine/behaviour/ability/emulate-impact.lua +96 -7
  43. package/engine/behaviour/ability/instant-impact.d.ts +12 -1
  44. package/engine/behaviour/ability/instant-impact.lua +17 -2
  45. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  46. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  47. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  48. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  49. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  50. package/engine/behaviour/ability/restore-mana.lua +6 -6
  51. package/engine/behaviour/ability.d.ts +23 -6
  52. package/engine/behaviour/ability.lua +151 -32
  53. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  54. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  55. package/engine/behaviour/unit.d.ts +41 -2
  56. package/engine/behaviour/unit.lua +270 -6
  57. package/engine/buff.d.ts +139 -59
  58. package/engine/buff.lua +678 -308
  59. package/engine/index.d.ts +2 -1
  60. package/engine/internal/ability.d.ts +14 -1
  61. package/engine/internal/ability.lua +113 -44
  62. package/engine/internal/item/ability.lua +63 -11
  63. package/engine/internal/item/fields.d.ts +12 -0
  64. package/engine/internal/item/fields.lua +33 -0
  65. package/engine/internal/item/owner-cache.d.ts +5 -0
  66. package/engine/internal/item/owner-cache.lua +4 -0
  67. package/engine/internal/item+owner.d.ts +2 -0
  68. package/engine/internal/item+owner.lua +37 -8
  69. package/engine/internal/item.d.ts +34 -18
  70. package/engine/internal/item.lua +308 -102
  71. package/engine/internal/mechanics/ability-duration.lua +1 -1
  72. package/engine/internal/mechanics/cast-ability.lua +6 -3
  73. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  74. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  75. package/engine/internal/misc/frame-coordinates.lua +21 -0
  76. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  77. package/engine/internal/misc/get-terrain-z.lua +11 -0
  78. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  79. package/engine/internal/misc/player-local-handle.lua +5 -0
  80. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  81. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  82. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  83. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  84. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  85. package/engine/internal/object-data/health-bonus.lua +16 -0
  86. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  87. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  88. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  89. package/engine/internal/object-data/mana-bonus.lua +16 -0
  90. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  91. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  92. package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
  93. package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
  94. package/engine/internal/unit/ability.d.ts +35 -0
  95. package/engine/internal/unit/ability.lua +114 -9
  96. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  97. package/engine/internal/unit/add-item-to-slot.lua +57 -14
  98. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  99. package/engine/internal/unit/allowed-targets.lua +9 -1
  100. package/engine/internal/unit/appearance.d.ts +15 -0
  101. package/engine/internal/unit/appearance.lua +85 -0
  102. package/engine/internal/unit/attributes.d.ts +17 -0
  103. package/engine/internal/unit/attributes.lua +46 -0
  104. package/engine/internal/unit/bonus.d.ts +17 -0
  105. package/engine/internal/unit/bonus.lua +113 -8
  106. package/engine/internal/unit/buff.d.ts +2 -2
  107. package/engine/internal/unit/buff.lua +34 -19
  108. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  109. package/engine/internal/unit/equipment-inventory.lua +233 -0
  110. package/engine/internal/unit/expiration-timer.lua +1 -1
  111. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  112. package/engine/internal/unit/extended-inventory.lua +99 -0
  113. package/engine/internal/unit/fly-height.d.ts +7 -0
  114. package/engine/internal/unit/fly-height.lua +20 -0
  115. package/engine/internal/unit/ignore-events-items.lua +10 -1
  116. package/engine/internal/unit/interrupts.d.ts +12 -0
  117. package/engine/internal/unit/interrupts.lua +28 -0
  118. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  119. package/engine/internal/unit/inventory.lua +87 -0
  120. package/engine/internal/unit/item-container.d.ts +25 -0
  121. package/engine/internal/unit/item-container.lua +11 -0
  122. package/engine/internal/unit/item-order-events.d.ts +17 -0
  123. package/engine/internal/unit/item-order-events.lua +67 -0
  124. package/engine/internal/unit/item-slot.d.ts +27 -0
  125. package/engine/internal/unit/item-slot.lua +92 -0
  126. package/engine/internal/unit/main-selected.lua +12 -27
  127. package/engine/internal/unit/order.d.ts +20 -0
  128. package/engine/internal/unit/order.lua +136 -0
  129. package/engine/internal/unit/range-event.d.ts +12 -0
  130. package/engine/internal/unit/range-event.lua +90 -0
  131. package/engine/internal/unit/scale.d.ts +7 -0
  132. package/engine/internal/unit/scale.lua +20 -0
  133. package/engine/internal/unit/shared-vision-counter.d.ts +18 -0
  134. package/engine/internal/unit/shared-vision-counter.lua +31 -0
  135. package/engine/internal/unit+ability.d.ts +2 -1
  136. package/engine/internal/unit+ability.lua +83 -3
  137. package/engine/internal/unit+bonus.lua +3 -3
  138. package/engine/internal/unit+damage.d.ts +12 -38
  139. package/engine/internal/unit+damage.lua +48 -45
  140. package/engine/internal/unit+rally.lua +9 -31
  141. package/engine/internal/unit+spellSteal.lua +1 -2
  142. package/engine/internal/unit-missile-data.lua +96 -68
  143. package/engine/internal/unit-missile-launch.lua +69 -27
  144. package/engine/internal/unit.d.ts +51 -35
  145. package/engine/internal/unit.lua +434 -326
  146. package/engine/lightning.d.ts +4 -3
  147. package/engine/lightning.lua +25 -16
  148. package/engine/local-client.d.ts +28 -0
  149. package/engine/local-client.lua +324 -54
  150. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  151. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  152. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  153. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  154. package/engine/object-data/auxiliary/attachment-preset.d.ts +14 -2
  155. package/engine/object-data/auxiliary/attachment-preset.lua +11 -3
  156. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  157. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  158. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  159. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  160. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  161. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  162. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  163. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  164. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  165. package/engine/object-data/auxiliary/item-class.lua +2 -0
  166. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  167. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  168. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  169. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  170. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  171. package/engine/object-data/auxiliary/order-type.lua +2 -0
  172. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  173. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  174. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  175. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  176. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  177. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  178. package/engine/object-data/auxiliary/weapon-sound-type.d.ts +20 -14
  179. package/engine/object-data/auxiliary/weapon-sound-type.lua +58 -0
  180. package/engine/object-data/auxiliary/weapon-type.d.ts +25 -0
  181. package/engine/object-data/auxiliary/weapon-type.lua +2 -0
  182. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  183. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  184. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  185. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  186. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  187. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  188. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  189. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  190. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  191. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  192. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  193. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  194. package/engine/object-data/entry/ability-type/barrage.d.ts +12 -0
  195. package/engine/object-data/entry/ability-type/barrage.lua +52 -0
  196. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  197. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  198. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  199. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  200. package/engine/object-data/entry/ability-type/blank-configurable.lua +14 -3
  201. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  202. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  203. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  204. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  205. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  206. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  207. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  208. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  209. package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
  210. package/engine/object-data/entry/ability-type/channel.lua +3 -3
  211. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  212. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  213. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  214. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  215. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  216. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  217. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  218. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  219. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  220. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  221. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  222. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  223. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  224. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  225. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  226. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  227. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  228. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  229. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  230. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  231. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  232. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  233. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  234. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  235. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  236. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  237. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  238. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  239. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  240. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  241. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  242. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  243. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  244. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  245. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  246. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  247. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  248. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  249. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  250. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  251. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  252. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  253. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  254. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  255. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  256. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  257. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  258. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  259. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  260. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  261. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  262. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  263. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  264. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  265. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  266. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  267. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  268. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  269. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  270. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  271. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  272. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  273. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  274. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  275. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  276. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  277. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  278. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  279. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  280. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  281. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  282. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  283. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  284. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  285. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  286. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  287. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  288. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  289. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  290. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  291. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  292. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  293. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  294. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  295. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  296. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  297. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  298. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  299. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  300. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  301. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  302. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  303. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  304. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  305. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  306. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  307. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  308. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  309. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  310. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  311. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  312. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  313. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  314. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  315. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  316. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  317. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  318. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  319. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  320. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  321. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  322. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  323. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  324. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  325. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  326. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  327. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  328. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  329. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  330. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  331. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  332. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  333. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  334. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  335. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  336. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  337. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  338. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  339. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  340. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  341. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  342. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  343. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  344. package/engine/object-data/entry/ability-type/web.lua +52 -0
  345. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  346. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  347. package/engine/object-data/entry/ability-type.d.ts +50 -21
  348. package/engine/object-data/entry/ability-type.lua +384 -35
  349. package/engine/object-data/entry/buff-type/applicable.lua +131 -139
  350. package/engine/object-data/entry/buff-type.d.ts +10 -12
  351. package/engine/object-data/entry/buff-type.lua +39 -29
  352. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  353. package/engine/object-data/entry/destructible-type.lua +181 -0
  354. package/engine/object-data/entry/item-type.d.ts +18 -3
  355. package/engine/object-data/entry/item-type.lua +88 -4
  356. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  357. package/engine/object-data/entry/lightning-type.lua +1 -1
  358. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  359. package/engine/object-data/entry/sound-preset.lua +140 -0
  360. package/engine/object-data/entry/unit-type.d.ts +81 -6
  361. package/engine/object-data/entry/unit-type.lua +619 -99
  362. package/engine/object-data/entry/upgrade.d.ts +2 -2
  363. package/engine/object-data/entry/upgrade.lua +4 -4
  364. package/engine/object-data/entry.d.ts +21 -14
  365. package/engine/object-data/entry.lua +68 -32
  366. package/engine/object-field/ability.d.ts +4 -4
  367. package/engine/object-field/ability.lua +9 -8
  368. package/engine/object-field/item.d.ts +22 -0
  369. package/engine/object-field/item.lua +118 -0
  370. package/engine/object-field/unit.d.ts +72 -3
  371. package/engine/object-field/unit.lua +268 -7
  372. package/engine/object-field.d.ts +26 -7
  373. package/engine/object-field.lua +360 -119
  374. package/engine/random.d.ts +10 -0
  375. package/engine/random.lua +21 -0
  376. package/engine/standard/entries/ability-type.d.ts +3102 -7
  377. package/engine/standard/entries/ability-type.lua +0 -6
  378. package/engine/standard/entries/buff-type.d.ts +48 -0
  379. package/engine/standard/entries/buff-type.lua +46 -0
  380. package/engine/standard/entries/item-type.d.ts +1299 -0
  381. package/engine/standard/entries/item-type.lua +2 -0
  382. package/engine/standard/entries/lightning-type.d.ts +42 -15
  383. package/engine/standard/entries/lightning-type.lua +0 -14
  384. package/engine/standard/entries/sound-preset.d.ts +10 -0
  385. package/engine/standard/entries/sound-preset.lua +10 -0
  386. package/engine/standard/entries/unit-type.d.ts +5 -0
  387. package/engine/standard/entries/unit-type.lua +5 -0
  388. package/engine/standard/fields/ability.d.ts +4 -4
  389. package/engine/standard/fields/ability.lua +4 -4
  390. package/engine/standard/fields/item.d.ts +4 -0
  391. package/engine/standard/fields/item.lua +6 -0
  392. package/engine/standard/fields/unit.d.ts +12 -0
  393. package/engine/standard/fields/unit.lua +20 -0
  394. package/engine/synchronization.d.ts +11 -0
  395. package/engine/synchronization.lua +77 -0
  396. package/engine/text-tag.d.ts +48 -2
  397. package/engine/text-tag.lua +287 -10
  398. package/engine/unit.d.ts +12 -1
  399. package/engine/unit.lua +12 -1
  400. package/event.d.ts +1 -1
  401. package/lualib_bundle.lua +1 -1
  402. package/math.d.ts +2 -0
  403. package/math.lua +14 -0
  404. package/net/socket.lua +1 -1
  405. package/network.lua +25 -1
  406. package/objutil/buff.lua +12 -11
  407. package/objutil/object.lua +1 -1
  408. package/objutil/unit.lua +8 -0
  409. package/operation.d.ts +8 -1
  410. package/operation.lua +38 -18
  411. package/package.json +3 -23
  412. package/patch-lua.lua +15 -0
  413. package/patch-lualib.lua +1 -1
  414. package/patch-natives.lua +3 -0
  415. package/utility/arrays.d.ts +9 -1
  416. package/utility/arrays.lua +28 -0
  417. package/utility/callback-array.d.ts +17 -0
  418. package/utility/callback-array.lua +61 -0
  419. package/utility/functions.d.ts +8 -0
  420. package/utility/functions.lua +13 -0
  421. package/utility/linked-map.d.ts +35 -0
  422. package/utility/linked-map.lua +107 -0
  423. package/utility/linked-set.d.ts +5 -1
  424. package/utility/linked-set.lua +49 -1
  425. package/utility/lua-maps.d.ts +15 -2
  426. package/utility/lua-maps.lua +53 -2
  427. package/utility/lua-sets.d.ts +2 -0
  428. package/utility/lua-sets.lua +7 -0
  429. package/utility/random.d.ts +102 -0
  430. package/utility/random.lua +273 -0
  431. package/utility/records.lua +20 -1
  432. package/utility/reflection.lua +11 -7
  433. package/utility/types.d.ts +3 -0
  434. package/utility/unordered-map.d.ts +27 -0
  435. package/utility/unordered-map.lua +99 -0
  436. package/core/types/order.d.ts +0 -25
  437. package/core/types/order.lua +0 -55
  438. package/engine/internal/unit/item.lua +0 -78
  439. /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
  440. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  441. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  442. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -0,0 +1,136 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
3
+ local ____exports = {}
4
+ local ____attributes = require("attributes")
5
+ local attribute = ____attributes.attribute
6
+ local ____unit = require("engine.internal.unit")
7
+ local Unit = ____unit.Unit
8
+ local ____game = require("core.game")
9
+ local elapsedTime = ____game.elapsedTime
10
+ local getUnitCurrentOrder = GetUnitCurrentOrder
11
+ local issueImmediateOrderById = IssueImmediateOrderById
12
+ local issuePointOrderById = IssuePointOrderById
13
+ local issueTargetOrderById = IssueTargetOrderById
14
+ local unitLastOrderKindAttribute = attribute()
15
+ local unitLastOrderIdAttribute = attribute()
16
+ local unitLastOrderStartTimeAttribute = attribute()
17
+ local unitLastOrderStartXAttribute = attribute()
18
+ local unitLastOrderStartYAttribute = attribute()
19
+ local unitLastOrderTargetXAttribute = attribute()
20
+ local unitLastOrderTargetYAttribute = attribute()
21
+ local unitLastOrderTargetAttribute = attribute()
22
+ Unit.onImmediateOrder:addListener(
23
+ 4,
24
+ function(unit, orderId)
25
+ unit[unitLastOrderKindAttribute] = 0
26
+ unit[unitLastOrderIdAttribute] = orderId
27
+ unit[unitLastOrderStartTimeAttribute] = elapsedTime()
28
+ unit[unitLastOrderStartXAttribute] = unit.x
29
+ unit[unitLastOrderStartYAttribute] = unit.y
30
+ unit[unitLastOrderTargetXAttribute] = nil
31
+ unit[unitLastOrderTargetYAttribute] = nil
32
+ unit[unitLastOrderTargetAttribute] = nil
33
+ end
34
+ )
35
+ Unit.onPointOrder:addListener(
36
+ 4,
37
+ function(unit, orderId, x, y)
38
+ unit[unitLastOrderKindAttribute] = 1
39
+ unit[unitLastOrderIdAttribute] = orderId
40
+ unit[unitLastOrderStartTimeAttribute] = elapsedTime()
41
+ unit[unitLastOrderStartXAttribute] = unit.x
42
+ unit[unitLastOrderStartYAttribute] = unit.y
43
+ unit[unitLastOrderTargetXAttribute] = x
44
+ unit[unitLastOrderTargetYAttribute] = y
45
+ unit[unitLastOrderTargetAttribute] = nil
46
+ end
47
+ )
48
+ Unit.onTargetOrder:addListener(
49
+ 4,
50
+ function(unit, orderId, target)
51
+ unit[unitLastOrderKindAttribute] = 2
52
+ unit[unitLastOrderIdAttribute] = orderId
53
+ unit[unitLastOrderStartTimeAttribute] = elapsedTime()
54
+ unit[unitLastOrderStartXAttribute] = unit.x
55
+ unit[unitLastOrderStartYAttribute] = unit.y
56
+ unit[unitLastOrderTargetXAttribute] = target.x
57
+ unit[unitLastOrderTargetYAttribute] = target.y
58
+ unit[unitLastOrderTargetAttribute] = target
59
+ end
60
+ )
61
+ local function toUndefinedIfCurrentOrderDoesNotMatchLast(unit, value)
62
+ local currentOrderId = getUnitCurrentOrder(unit.handle)
63
+ local lastOrderId = unit[unitLastOrderIdAttribute]
64
+ local ____temp_0
65
+ if currentOrderId == lastOrderId or currentOrderId == 851991 and lastOrderId == 851990 then
66
+ ____temp_0 = value
67
+ else
68
+ ____temp_0 = nil
69
+ end
70
+ return ____temp_0
71
+ end
72
+ __TS__ObjectDefineProperty(
73
+ Unit.prototype,
74
+ "currentOrderKind",
75
+ {get = function(self)
76
+ return toUndefinedIfCurrentOrderDoesNotMatchLast(self, self[unitLastOrderKindAttribute]) or 0
77
+ end}
78
+ )
79
+ __TS__ObjectDefineProperty(
80
+ Unit.prototype,
81
+ "currentOrderId",
82
+ {get = function(self)
83
+ return toUndefinedIfCurrentOrderDoesNotMatchLast(self, self[unitLastOrderIdAttribute]) or 0
84
+ end}
85
+ )
86
+ __TS__ObjectDefineProperty(
87
+ Unit.prototype,
88
+ "currentOrderStartTime",
89
+ {get = function(self)
90
+ return toUndefinedIfCurrentOrderDoesNotMatchLast(self, self[unitLastOrderStartTimeAttribute]) or 0
91
+ end}
92
+ )
93
+ __TS__ObjectDefineProperty(
94
+ Unit.prototype,
95
+ "currentOrderStartX",
96
+ {get = function(self)
97
+ return toUndefinedIfCurrentOrderDoesNotMatchLast(self, self[unitLastOrderStartXAttribute]) or 0
98
+ end}
99
+ )
100
+ __TS__ObjectDefineProperty(
101
+ Unit.prototype,
102
+ "currentOrderStartY",
103
+ {get = function(self)
104
+ return toUndefinedIfCurrentOrderDoesNotMatchLast(self, self[unitLastOrderStartYAttribute]) or 0
105
+ end}
106
+ )
107
+ __TS__ObjectDefineProperty(
108
+ Unit.prototype,
109
+ "currentOrderTargetX",
110
+ {get = function(self)
111
+ return toUndefinedIfCurrentOrderDoesNotMatchLast(self, self[unitLastOrderTargetXAttribute]) or 0
112
+ end}
113
+ )
114
+ __TS__ObjectDefineProperty(
115
+ Unit.prototype,
116
+ "currentOrderTargetY",
117
+ {get = function(self)
118
+ return toUndefinedIfCurrentOrderDoesNotMatchLast(self, self[unitLastOrderTargetYAttribute]) or 0
119
+ end}
120
+ )
121
+ __TS__ObjectDefineProperty(
122
+ Unit.prototype,
123
+ "currentOrderTarget",
124
+ {get = function(self)
125
+ return toUndefinedIfCurrentOrderDoesNotMatchLast(self, self[unitLastOrderTargetAttribute])
126
+ end}
127
+ )
128
+ local issueOrderByKind = {
129
+ [0] = issueImmediateOrderById,
130
+ [1] = issuePointOrderById,
131
+ [2] = function(unitHandle, orderId, widget) return issueTargetOrderById(unitHandle, orderId, widget.handle) end
132
+ }
133
+ Unit.prototype.issueOrder = function(self, orderKind, orderId, xOrTarget, y)
134
+ return issueOrderByKind[orderKind](self.handle, orderId, xOrTarget, y)
135
+ end
136
+ return ____exports
@@ -0,0 +1,12 @@
1
+ /** @noSelfInFile */
2
+ import { Event } from "../../../event";
3
+ declare module "../unit" {
4
+ interface Unit {
5
+ readonly unitInRangeEvent: Record<number, Event<[unit: Unit, range: number, unitInRange: Unit]>>;
6
+ }
7
+ }
8
+ declare module "../unit" {
9
+ interface Unit {
10
+ readonly unitOutOfRangeEvent: Record<number, Event<[unit: Unit, range: number, unitOutOfRange: Unit]>>;
11
+ }
12
+ }
@@ -0,0 +1,90 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__New = ____lualib.__TS__New
3
+ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
4
+ local ____exports = {}
5
+ local ____event = require("event")
6
+ local Event = ____event.Event
7
+ local InitializingEvent = ____event.InitializingEvent
8
+ local TriggerEvent = ____event.TriggerEvent
9
+ local ____unit = require("engine.internal.unit")
10
+ local Unit = ____unit.Unit
11
+ local ____timer = require("core.types.timer")
12
+ local Timer = ____timer.Timer
13
+ local ____attributes = require("attributes")
14
+ local attribute = ____attributes.attribute
15
+ local ____linked_2Dmap = require("utility.linked-map")
16
+ local mutableLinkedMap = ____linked_2Dmap.mutableLinkedMap
17
+ local ____linked_2Dset = require("utility.linked-set")
18
+ local LinkedSet = ____linked_2Dset.LinkedSet
19
+ local mutableLinkedSet = ____linked_2Dset.mutableLinkedSet
20
+ local getTriggerUnit = GetTriggerUnit
21
+ local triggerRegisterUnitInRange = TriggerRegisterUnitInRange
22
+ local eventInvoke = Event.invoke
23
+ __TS__ObjectDefineProperty(
24
+ Unit.prototype,
25
+ "unitInRangeEvent",
26
+ {get = function(self)
27
+ local unit = self
28
+ local handle = self.handle
29
+ local unitInRangeEvent = setmetatable(
30
+ {},
31
+ {__index = function(self, value)
32
+ local event = __TS__New(
33
+ TriggerEvent,
34
+ function(trigger)
35
+ triggerRegisterUnitInRange(trigger, handle, value, nil)
36
+ end,
37
+ function() return unit, value, Unit:of(getTriggerUnit()) end
38
+ )
39
+ rawset(self, value, event)
40
+ return event
41
+ end}
42
+ )
43
+ rawset(self, "unitInRangeEvent", unitInRangeEvent)
44
+ return unitInRangeEvent
45
+ end}
46
+ )
47
+ local units = __TS__New(LinkedSet)
48
+ local unitsInRangeByRangeAttribute = attribute()
49
+ local function registerUnitOfRangeEvent(unit, range, unitInRange)
50
+ units:add(unit)
51
+ unit:getOrPut(unitsInRangeByRangeAttribute, mutableLinkedMap):getOrPut(range, mutableLinkedSet):add(unitInRange)
52
+ end
53
+ __TS__ObjectDefineProperty(
54
+ Unit.prototype,
55
+ "unitOutOfRangeEvent",
56
+ {get = function(self)
57
+ local unit = self
58
+ local unitOutOfRangeEvent = setmetatable(
59
+ {},
60
+ {__index = function(self, value)
61
+ local event = __TS__New(
62
+ InitializingEvent,
63
+ function()
64
+ unit.unitInRangeEvent[value]:addListener(999999, registerUnitOfRangeEvent)
65
+ end
66
+ )
67
+ rawset(self, value, event)
68
+ return event
69
+ end}
70
+ )
71
+ rawset(self, "unitOutOfRangeEvent", unitOutOfRangeEvent)
72
+ return unitOutOfRangeEvent
73
+ end}
74
+ )
75
+ Timer.onPeriod[1]:addListener(function()
76
+ for unit in pairs(units) do
77
+ local unitsInRangeByRange = unit[unitsInRangeByRangeAttribute]
78
+ if unitsInRangeByRange ~= nil then
79
+ for range, unitsInRange in pairs(unitsInRangeByRange) do
80
+ for unitInRange in pairs(unitsInRange) do
81
+ if unit:getDistanceTo(unitInRange) > range then
82
+ unitsInRange:remove(unitInRange)
83
+ eventInvoke(unit.unitOutOfRangeEvent[range], unit, range, unitInRange)
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end)
90
+ return ____exports
@@ -0,0 +1,7 @@
1
+ /** @noSelfInFile */
2
+ declare module "../unit" {
3
+ interface Unit {
4
+ scale: number;
5
+ }
6
+ }
7
+ export {};
@@ -0,0 +1,20 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
3
+ local ____exports = {}
4
+ local ____unit = require("engine.internal.unit")
5
+ local Unit = ____unit.Unit
6
+ local ____unit = require("engine.standard.fields.unit")
7
+ local SCALING_VALUE_UNIT_FIELD = ____unit.SCALING_VALUE_UNIT_FIELD
8
+ __TS__ObjectDefineProperty(
9
+ Unit.prototype,
10
+ "scale",
11
+ {
12
+ get = function(self)
13
+ return SCALING_VALUE_UNIT_FIELD:getValue(self)
14
+ end,
15
+ set = function(self, value)
16
+ SCALING_VALUE_UNIT_FIELD:setValue(self, value)
17
+ end
18
+ }
19
+ )
20
+ return ____exports
@@ -0,0 +1,18 @@
1
+ /** @noSelfInFile */
2
+ import { Player } from "../../../core/types/player";
3
+ declare module "../unit" {
4
+ interface Unit {
5
+ /**
6
+ * Shares this unit with the player (`UnitShareVision`) until the matching
7
+ * `decrementSharedVisionCounter`. Verified in game with an enemy unit: the player, and
8
+ * the players the player shares vision with (one step, like alliance vision), see the
9
+ * unit itself but not the area it sees.
10
+ */
11
+ incrementSharedVisionCounter(player: Player): void;
12
+ }
13
+ }
14
+ declare module "../unit" {
15
+ interface Unit {
16
+ decrementSharedVisionCounter(player: Player): void;
17
+ }
18
+ }
@@ -0,0 +1,31 @@
1
+ local ____exports = {}
2
+ local ____unit = require("engine.internal.unit")
3
+ local Unit = ____unit.Unit
4
+ local unitShareVision = UnitShareVision
5
+ local sharedVisionCounterByPlayerByUnit = setmetatable({}, {__mode = "k"})
6
+ Unit.prototype.incrementSharedVisionCounter = function(self, player)
7
+ local sharedVisionCounterByPlayer = sharedVisionCounterByPlayerByUnit[self]
8
+ if sharedVisionCounterByPlayer == nil then
9
+ sharedVisionCounterByPlayer = {}
10
+ sharedVisionCounterByPlayerByUnit[self] = sharedVisionCounterByPlayer
11
+ end
12
+ local sharedVisionCounter = sharedVisionCounterByPlayer[player] or 0
13
+ if sharedVisionCounter == 0 then
14
+ unitShareVision(self.handle, player.handle, true)
15
+ end
16
+ sharedVisionCounterByPlayer[player] = sharedVisionCounter + 1
17
+ end
18
+ Unit.prototype.decrementSharedVisionCounter = function(self, player)
19
+ local sharedVisionCounterByPlayer = sharedVisionCounterByPlayerByUnit[self]
20
+ local sharedVisionCounter = sharedVisionCounterByPlayer and sharedVisionCounterByPlayer[player] or 0
21
+ if sharedVisionCounterByPlayer == nil or sharedVisionCounter == 0 then
22
+ return
23
+ end
24
+ if sharedVisionCounter == 1 then
25
+ unitShareVision(self.handle, player.handle, false)
26
+ sharedVisionCounterByPlayer[player] = nil
27
+ else
28
+ sharedVisionCounterByPlayer[player] = sharedVisionCounter - 1
29
+ end
30
+ end
31
+ return ____exports
@@ -1,9 +1,10 @@
1
1
  /** @noSelfInFile */
2
- import { Ability } from "./ability";
2
+ import { Ability, UnitAbility } from "./ability";
3
3
  import { DispatchingEvent } from "../../event";
4
4
  declare module "./unit" {
5
5
  namespace Unit {
6
6
  const abilityGainedEvent: DispatchingEvent<[Unit, Ability]>;
7
7
  const abilityLostEvent: DispatchingEvent<[Unit, Ability]>;
8
+ const abilityLevelChangedEvent: DispatchingEvent<[Unit, UnitAbility]>;
8
9
  }
9
10
  }
@@ -7,8 +7,12 @@ local UnitAbility = ____ability.UnitAbility
7
7
  local ____unit = require("engine.internal.unit")
8
8
  local Unit = ____unit.Unit
9
9
  local ____event = require("event")
10
- local Event = ____event.Event
11
10
  local createDispatchingEvent = ____event.createDispatchingEvent
11
+ local Event = ____event.Event
12
+ local ____unit_2Dability_2Dlevel_2Dnatives = require("engine.internal.misc.unit-ability-level-natives")
13
+ local rawDecUnitAbilityLevel = ____unit_2Dability_2Dlevel_2Dnatives.rawDecUnitAbilityLevel
14
+ local rawIncUnitAbilityLevel = ____unit_2Dability_2Dlevel_2Dnatives.rawIncUnitAbilityLevel
15
+ local rawSetUnitAbilityLevel = ____unit_2Dability_2Dlevel_2Dnatives.rawSetUnitAbilityLevel
12
16
  local abilityGainedEvent = createDispatchingEvent(
13
17
  __TS__New(Event),
14
18
  function(unit, ability) return ability.typeId end
@@ -19,12 +23,79 @@ local abilityLostEvent = createDispatchingEvent(
19
23
  function(unit, ability) return ability.typeId end
20
24
  )
21
25
  rawset(Unit, "abilityLostEvent", abilityLostEvent)
26
+ local abilityLevelChangedEvent = createDispatchingEvent(
27
+ __TS__New(Event),
28
+ function(unit, ability) return ability.typeId end
29
+ )
30
+ rawset(Unit, "abilityLevelChangedEvent", abilityLevelChangedEvent)
31
+ local getUnitAbilityLevel = GetUnitAbilityLevel
32
+ local unitDisableAbility = BlzUnitDisableAbility
33
+ local function invokeAbilityLevelChangedEvent(unitHandle, abilityTypeId)
34
+ local unit = Unit:of(unitHandle)
35
+ if unit ~= nil then
36
+ local ability = unit:getAbility(abilityTypeId)
37
+ if ability ~= nil then
38
+ Event.invoke(abilityLevelChangedEvent, unit, ability)
39
+ end
40
+ end
41
+ end
42
+ local function invokeAbilityLevelChangedEventIfChanged(unitHandle, abilityTypeId, previousLevel)
43
+ if previousLevel ~= 0 then
44
+ local level = getUnitAbilityLevel(unitHandle, abilityTypeId)
45
+ if level ~= 0 and level ~= previousLevel then
46
+ invokeAbilityLevelChangedEvent(unitHandle, abilityTypeId)
47
+ end
48
+ end
49
+ end
50
+ _G.SetUnitAbilityLevel = function(whichUnit, abilcode, level)
51
+ local previousLevel = getUnitAbilityLevel(whichUnit, abilcode)
52
+ local result = rawSetUnitAbilityLevel(whichUnit, abilcode, level)
53
+ invokeAbilityLevelChangedEventIfChanged(whichUnit, abilcode, previousLevel)
54
+ return result
55
+ end
56
+ _G.IncUnitAbilityLevel = function(whichUnit, abilcode)
57
+ local previousLevel = getUnitAbilityLevel(whichUnit, abilcode)
58
+ local result = rawIncUnitAbilityLevel(whichUnit, abilcode)
59
+ invokeAbilityLevelChangedEventIfChanged(whichUnit, abilcode, previousLevel)
60
+ return result
61
+ end
62
+ _G.DecUnitAbilityLevel = function(whichUnit, abilcode)
63
+ local previousLevel = getUnitAbilityLevel(whichUnit, abilcode)
64
+ local result = rawDecUnitAbilityLevel(whichUnit, abilcode)
65
+ invokeAbilityLevelChangedEventIfChanged(whichUnit, abilcode, previousLevel)
66
+ return result
67
+ end
68
+ local heroSkillTrigger = CreateTrigger()
69
+ TriggerRegisterAnyUnitEventBJ(heroSkillTrigger, EVENT_PLAYER_HERO_SKILL)
70
+ TriggerAddCondition(
71
+ heroSkillTrigger,
72
+ Condition(function()
73
+ if GetLearnedSkillLevel() > 1 then
74
+ local unitHandle = GetTriggerUnit()
75
+ if unitHandle ~= nil then
76
+ invokeAbilityLevelChangedEvent(
77
+ unitHandle,
78
+ GetLearnedSkill()
79
+ )
80
+ end
81
+ end
82
+ end)
83
+ )
22
84
  UnitAbility.onCreate:addListener(
23
85
  0,
24
86
  function(ability)
25
87
  Event.invoke(abilityGainedEvent, ability.owner, ability)
26
88
  end
27
89
  )
90
+ UnitAbility.onDestroy:addListener(
91
+ 999999,
92
+ function(ability)
93
+ local owner = ability.owner
94
+ if owner.state ~= 2 then
95
+ unitDisableAbility(owner.handle, ability.typeId, true, false)
96
+ end
97
+ end
98
+ )
28
99
  UnitAbility.destroyEvent:addListener(
29
100
  4,
30
101
  function(ability)
@@ -40,8 +111,17 @@ ItemAbility.onCreate:addListener(
40
111
  end
41
112
  end
42
113
  )
114
+ ItemAbility.destroyEvent:addListener(
115
+ 4,
116
+ function(ability)
117
+ local unit = ability.owner.owner
118
+ if unit ~= nil then
119
+ Event.invoke(abilityLostEvent, unit, ability)
120
+ end
121
+ end
122
+ )
43
123
  Unit.itemPickedUpEvent:addListener(
44
- 0,
124
+ -999999,
45
125
  function(unit, item)
46
126
  for ____, ability in ipairs(item.abilities) do
47
127
  Event.invoke(abilityGainedEvent, unit, ability)
@@ -49,7 +129,7 @@ Unit.itemPickedUpEvent:addListener(
49
129
  end
50
130
  )
51
131
  Unit.itemDroppedEvent:addListener(
52
- 4,
132
+ 999999,
53
133
  function(unit, item)
54
134
  for ____, ability in ipairs(item.abilities) do
55
135
  Event.invoke(abilityLostEvent, unit, ability)
@@ -3,9 +3,9 @@ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
3
3
  local ____exports = {}
4
4
  local ____unit = require("engine.internal.unit")
5
5
  local Unit = ____unit.Unit
6
- local ____armor_2Dincrease = require("engine.internal.object-data.armor-increase")
7
- local ARMOR_BONUS_DUMMY_ABILITY_FIELD = ____armor_2Dincrease.ARMOR_BONUS_DUMMY_ABILITY_FIELD
8
- local ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID = ____armor_2Dincrease.ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID
6
+ local ____armor_2Dbonus = require("engine.internal.object-data.armor-bonus")
7
+ local ARMOR_BONUS_DUMMY_ABILITY_FIELD = ____armor_2Dbonus.ARMOR_BONUS_DUMMY_ABILITY_FIELD
8
+ local ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID = ____armor_2Dbonus.ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID
9
9
  local getUnitAbility = BlzGetUnitAbility
10
10
  local setAbilityRealLevelField = BlzSetAbilityRealLevelField
11
11
  local unitAddAbility = UnitAddAbility
@@ -1,15 +1,9 @@
1
1
  /** @noSelfInFile */
2
+ import "./unit/allowed-targets";
2
3
  import { Widget } from "../../core/types/widget";
3
- export type AttackType = jattacktype;
4
- export declare namespace AttackType {
5
- const SPELL: jattacktype;
6
- const NORMAL: jattacktype;
7
- const PIERCE: jattacktype;
8
- const SIEGE: jattacktype;
9
- const MAGIC: jattacktype;
10
- const CHAOS: jattacktype;
11
- const HERO: jattacktype;
12
- }
4
+ import { AttackType } from "../object-data/auxiliary/attack-type";
5
+ import { WeaponSoundType } from "../object-data/auxiliary/weapon-sound-type";
6
+ import { CombatClassifications } from "../object-data/auxiliary/combat-classification";
13
7
  export type DamageType = jdamagetype;
14
8
  export declare namespace DamageType {
15
9
  const UNKNOWN: jdamagetype;
@@ -35,35 +29,15 @@ export declare namespace DamageType {
35
29
  const SHADOW_STRIKE: jdamagetype;
36
30
  const UNIVERSAL: jdamagetype;
37
31
  }
38
- export type WeaponType = jweapontype;
39
- export declare namespace WeaponType {
40
- const UNKNOWN: jweapontype;
41
- const METAL_LIGHT_CHOP: jweapontype;
42
- const METAL_MEDIUM_CHOP: jweapontype;
43
- const METAL_HEAVY_CHOP: jweapontype;
44
- const METAL_LIGHT_SLICE: jweapontype;
45
- const METAL_MEDIUM_SLICE: jweapontype;
46
- const METAL_HEAVY_SLICE: jweapontype;
47
- const METAL_MEDIUM_BASH: jweapontype;
48
- const METAL_HEAVY_BASH: jweapontype;
49
- const METAL_MEDIUM_STAB: jweapontype;
50
- const METAL_HEAVY_STAB: jweapontype;
51
- const WOOD_LIGHT_SLICE: jweapontype;
52
- const WOOD_MEDIUM_SLICE: jweapontype;
53
- const WOOD_HEAVY_SLICE: jweapontype;
54
- const WOOD_LIGHT_BASH: jweapontype;
55
- const WOOD_MEDIUM_BASH: jweapontype;
56
- const WOOD_HEAVY_BASH: jweapontype;
57
- const WOOD_LIGHT_STAB: jweapontype;
58
- const WOOD_MEDIUM_STAB: jweapontype;
59
- const CLAW_LIGHT_SLICE: jweapontype;
60
- const CLAW_MEDIUM_SLICE: jweapontype;
61
- const CLAW_HEAVY_SLICE: jweapontype;
62
- const AXE_MEDIUM_CHOP: jweapontype;
63
- const ROCK_HEAVY_BASH: jweapontype;
64
- }
65
32
  declare module "./unit" {
66
33
  interface Unit {
67
- damageTarget(target: Widget, amount: number, attack?: boolean, ranged?: boolean, attackType?: AttackType, damageType?: DamageType, weaponType?: WeaponType): boolean;
34
+ damageTarget(target: Widget, amount: number, attack?: boolean, ranged?: boolean, attackType?: AttackType, damageType?: DamageType, weaponSoundType?: WeaponSoundType, metadata?: unknown): boolean;
35
+ /**
36
+ * Deals amount to each allowed unit in collision range of (x, y).
37
+ * A positive maximumDamage caps the total requested damage, shared equally
38
+ * between the targets. Zero or omitted means unlimited; damage mitigation
39
+ * and damage-event modifiers are applied afterward by damageTarget.
40
+ */
41
+ damageArea(x: number, y: number, range: number, allowedTargetCombatClassifications: CombatClassifications, amount: number, maximumDamage?: number, attack?: boolean, ranged?: boolean, attackType?: AttackType, damageType?: DamageType, weaponSoundType?: WeaponSoundType, metadata?: unknown): void;
68
42
  }
69
43
  }
@@ -3,25 +3,23 @@ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
3
3
  local ____exports = {}
4
4
  local ____unit = require("engine.internal.unit")
5
5
  local Unit = ____unit.Unit
6
+ require("engine.internal.unit.allowed-targets")
6
7
  local ____player = require("core.types.player")
7
8
  local Player = ____player.Player
8
9
  local ____dummy = require("objutil.dummy")
9
10
  local dummyUnitId = ____dummy.dummyUnitId
11
+ local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
12
+ local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
13
+ local ____weapon_2Dsound_2Dtype = require("engine.object-data.auxiliary.weapon-sound-type")
14
+ local weaponSoundTypeToNative = ____weapon_2Dsound_2Dtype.weaponSoundTypeToNative
15
+ local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
16
+ local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
17
+ local ____math = require("math")
18
+ local min = ____math.min
10
19
  local createUnit = CreateUnit
11
20
  local getOwningPlayer = GetOwningPlayer
12
21
  local showUnit = ShowUnit
13
22
  local unitDamageTarget = UnitDamageTarget
14
- ____exports.AttackType = {}
15
- local AttackType = ____exports.AttackType
16
- do
17
- AttackType.SPELL = ATTACK_TYPE_NORMAL
18
- AttackType.NORMAL = ATTACK_TYPE_MELEE
19
- AttackType.PIERCE = ATTACK_TYPE_PIERCE
20
- AttackType.SIEGE = ATTACK_TYPE_SIEGE
21
- AttackType.MAGIC = ATTACK_TYPE_MAGIC
22
- AttackType.CHAOS = ATTACK_TYPE_CHAOS
23
- AttackType.HERO = ATTACK_TYPE_HERO
24
- end
25
23
  ____exports.DamageType = {}
26
24
  local DamageType = ____exports.DamageType
27
25
  do
@@ -48,34 +46,6 @@ do
48
46
  DamageType.SHADOW_STRIKE = DAMAGE_TYPE_SHADOW_STRIKE
49
47
  DamageType.UNIVERSAL = DAMAGE_TYPE_UNIVERSAL
50
48
  end
51
- ____exports.WeaponType = {}
52
- local WeaponType = ____exports.WeaponType
53
- do
54
- WeaponType.UNKNOWN = WEAPON_TYPE_WHOKNOWS
55
- WeaponType.METAL_LIGHT_CHOP = WEAPON_TYPE_METAL_LIGHT_CHOP
56
- WeaponType.METAL_MEDIUM_CHOP = WEAPON_TYPE_METAL_MEDIUM_CHOP
57
- WeaponType.METAL_HEAVY_CHOP = WEAPON_TYPE_METAL_HEAVY_CHOP
58
- WeaponType.METAL_LIGHT_SLICE = WEAPON_TYPE_METAL_LIGHT_SLICE
59
- WeaponType.METAL_MEDIUM_SLICE = WEAPON_TYPE_METAL_MEDIUM_SLICE
60
- WeaponType.METAL_HEAVY_SLICE = WEAPON_TYPE_METAL_HEAVY_SLICE
61
- WeaponType.METAL_MEDIUM_BASH = WEAPON_TYPE_METAL_MEDIUM_BASH
62
- WeaponType.METAL_HEAVY_BASH = WEAPON_TYPE_METAL_HEAVY_BASH
63
- WeaponType.METAL_MEDIUM_STAB = WEAPON_TYPE_METAL_MEDIUM_STAB
64
- WeaponType.METAL_HEAVY_STAB = WEAPON_TYPE_METAL_HEAVY_STAB
65
- WeaponType.WOOD_LIGHT_SLICE = WEAPON_TYPE_WOOD_LIGHT_SLICE
66
- WeaponType.WOOD_MEDIUM_SLICE = WEAPON_TYPE_WOOD_MEDIUM_SLICE
67
- WeaponType.WOOD_HEAVY_SLICE = WEAPON_TYPE_WOOD_HEAVY_SLICE
68
- WeaponType.WOOD_LIGHT_BASH = WEAPON_TYPE_WOOD_LIGHT_BASH
69
- WeaponType.WOOD_MEDIUM_BASH = WEAPON_TYPE_WOOD_MEDIUM_BASH
70
- WeaponType.WOOD_HEAVY_BASH = WEAPON_TYPE_WOOD_HEAVY_BASH
71
- WeaponType.WOOD_LIGHT_STAB = WEAPON_TYPE_WOOD_LIGHT_STAB
72
- WeaponType.WOOD_MEDIUM_STAB = WEAPON_TYPE_WOOD_MEDIUM_STAB
73
- WeaponType.CLAW_LIGHT_SLICE = WEAPON_TYPE_CLAW_LIGHT_SLICE
74
- WeaponType.CLAW_MEDIUM_SLICE = WEAPON_TYPE_CLAW_MEDIUM_SLICE
75
- WeaponType.CLAW_HEAVY_SLICE = WEAPON_TYPE_CLAW_HEAVY_SLICE
76
- WeaponType.AXE_MEDIUM_CHOP = WEAPON_TYPE_AXE_MEDIUM_CHOP
77
- WeaponType.ROCK_HEAVY_BASH = WEAPON_TYPE_ROCK_HEAVY_BASH
78
- end
79
49
  local dummies = {}
80
50
  for ____, player in ipairs(Player.all) do
81
51
  local dummy = assert(createUnit(
@@ -88,7 +58,7 @@ for ____, player in ipairs(Player.all) do
88
58
  showUnit(dummy, false)
89
59
  dummies[player] = dummy
90
60
  end
91
- Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, attackType, damageType, weaponType)
61
+ Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, attackType, damageType, weaponSoundType, metadata)
92
62
  if attack == nil then
93
63
  attack = false
94
64
  end
@@ -96,28 +66,61 @@ Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, att
96
66
  ranged = false
97
67
  end
98
68
  if attackType == nil then
99
- attackType = ____exports.AttackType.SPELL
69
+ attackType = 0
100
70
  end
101
71
  if damageType == nil then
102
72
  damageType = ____exports.DamageType.MAGIC
103
73
  end
104
- if weaponType == nil then
105
- weaponType = ____exports.WeaponType.UNKNOWN
74
+ if weaponSoundType == nil then
75
+ weaponSoundType = 0
106
76
  end
107
77
  local handle = self.handle
108
78
  local targetHandle = target.handle
109
79
  if not getOwningPlayer(handle) then
110
80
  handle = dummies[__TS__InstanceOf(target, Unit) and target.owner or (self._owner or Player.neutralAggressive)]
111
81
  end
82
+ if __TS__InstanceOf(target, Unit) then
83
+ damageMetadataByTarget[target] = metadata
84
+ end
112
85
  return unitDamageTarget(
113
86
  handle,
114
87
  targetHandle,
115
88
  amount,
116
89
  attack,
117
90
  ranged,
118
- attackType,
91
+ attackTypeToNative(attackType),
119
92
  damageType,
120
- weaponType
93
+ weaponSoundTypeToNative(weaponSoundType)
121
94
  )
122
95
  end
96
+ Unit.prototype.damageArea = function(self, x, y, range, allowedTargetCombatClassifications, amount, maximumDamage, attack, ranged, attackType, damageType, weaponSoundType, metadata)
97
+ if maximumDamage == nil then
98
+ maximumDamage = 0
99
+ end
100
+ local targets = Unit.getAllowedTargetsInCollisionRange(
101
+ self,
102
+ allowedTargetCombatClassifications,
103
+ x,
104
+ y,
105
+ range
106
+ )
107
+ if #targets == 0 then
108
+ return
109
+ end
110
+ if maximumDamage > 0 then
111
+ amount = min(amount, maximumDamage / #targets)
112
+ end
113
+ for ____, target in ipairs(targets) do
114
+ self:damageTarget(
115
+ target,
116
+ amount,
117
+ attack,
118
+ ranged,
119
+ attackType,
120
+ damageType,
121
+ weaponSoundType,
122
+ metadata
123
+ )
124
+ end
125
+ end
123
126
  return ____exports