warscript 0.0.1-dev.24ac045 → 0.0.1-dev.24da7f2

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 (384) hide show
  1. package/attributes.d.ts +1 -0
  2. package/attributes.lua +9 -0
  3. package/core/dummy.lua +4 -2
  4. package/core/types/effect.d.ts +11 -1
  5. package/core/types/effect.lua +43 -77
  6. package/core/types/frame.d.ts +21 -2
  7. package/core/types/frame.lua +165 -87
  8. package/core/types/handle.lua +9 -9
  9. package/core/types/item.d.ts +1 -0
  10. package/core/types/item.lua +1 -0
  11. package/core/types/missile.lua +8 -7
  12. package/core/types/player.d.ts +18 -1
  13. package/core/types/player.lua +76 -26
  14. package/core/types/playerCamera.d.ts +2 -0
  15. package/core/types/playerCamera.lua +123 -5
  16. package/core/types/playerColor.lua +4 -3
  17. package/core/types/sound.d.ts +1 -1
  18. package/core/types/sound.lua +14 -9
  19. package/core/types/tileCell.d.ts +18 -3
  20. package/core/types/tileCell.lua +108 -0
  21. package/core/types/timer.d.ts +3 -1
  22. package/core/types/timer.lua +27 -2
  23. package/core/types/unit.d.ts +5 -0
  24. package/core/types/unit.lua +5 -0
  25. package/core/util.d.ts +3 -1
  26. package/core/util.lua +109 -3
  27. package/decl/native.d.ts +712 -11
  28. package/destroyable.d.ts +1 -0
  29. package/destroyable.lua +9 -0
  30. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  31. package/engine/ability-type-extended-tooltip.lua +44 -0
  32. package/engine/behavior.d.ts +14 -1
  33. package/engine/behavior.lua +230 -70
  34. package/engine/behaviour/ability/apply-buff.lua +4 -4
  35. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  36. package/engine/behaviour/ability/damage.d.ts +4 -0
  37. package/engine/behaviour/ability/damage.lua +19 -15
  38. package/engine/behaviour/ability/emulate-impact.d.ts +15 -1
  39. package/engine/behaviour/ability/emulate-impact.lua +81 -6
  40. package/engine/behaviour/ability/instant-impact.d.ts +12 -1
  41. package/engine/behaviour/ability/instant-impact.lua +17 -2
  42. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  43. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  44. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  45. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  46. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  47. package/engine/behaviour/ability/restore-mana.lua +6 -6
  48. package/engine/behaviour/ability.d.ts +19 -6
  49. package/engine/behaviour/ability.lua +120 -9
  50. package/engine/behaviour/unit/stun-immunity.d.ts +9 -5
  51. package/engine/behaviour/unit/stun-immunity.lua +17 -7
  52. package/engine/behaviour/unit.d.ts +16 -5
  53. package/engine/behaviour/unit.lua +127 -22
  54. package/engine/buff.d.ts +124 -57
  55. package/engine/buff.lua +608 -296
  56. package/engine/index.d.ts +2 -1
  57. package/engine/internal/ability.d.ts +10 -1
  58. package/engine/internal/ability.lua +99 -47
  59. package/engine/internal/item/fields.d.ts +12 -0
  60. package/engine/internal/item/fields.lua +33 -0
  61. package/engine/internal/item/owner-cache.d.ts +5 -0
  62. package/engine/internal/item/owner-cache.lua +4 -0
  63. package/engine/internal/item+owner.d.ts +2 -0
  64. package/engine/internal/item+owner.lua +37 -8
  65. package/engine/internal/item.d.ts +27 -14
  66. package/engine/internal/item.lua +185 -82
  67. package/engine/internal/mechanics/cast-ability.lua +6 -3
  68. package/engine/internal/misc/frame-coordinates.lua +21 -0
  69. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  70. package/engine/internal/misc/get-terrain-z.lua +11 -0
  71. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  72. package/engine/internal/misc/player-local-handle.lua +5 -0
  73. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  74. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  75. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  76. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  77. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  78. package/engine/internal/object-data/health-bonus.lua +16 -0
  79. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  80. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  81. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  82. package/engine/internal/object-data/mana-bonus.lua +16 -0
  83. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  84. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  85. package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
  86. package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
  87. package/engine/internal/unit/ability.d.ts +14 -14
  88. package/engine/internal/unit/ability.lua +88 -45
  89. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  90. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  91. package/engine/internal/unit/appearance.d.ts +15 -0
  92. package/engine/internal/unit/appearance.lua +85 -0
  93. package/engine/internal/unit/attributes.d.ts +17 -0
  94. package/engine/internal/unit/attributes.lua +46 -0
  95. package/engine/internal/unit/bonus.d.ts +17 -0
  96. package/engine/internal/unit/bonus.lua +113 -8
  97. package/engine/internal/unit/buff.d.ts +2 -2
  98. package/engine/internal/unit/buff.lua +34 -19
  99. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  100. package/engine/internal/unit/equipment-inventory.lua +233 -0
  101. package/engine/internal/unit/expiration-timer.lua +1 -1
  102. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  103. package/engine/internal/unit/extended-inventory.lua +99 -0
  104. package/engine/internal/unit/fly-height.d.ts +7 -0
  105. package/engine/internal/unit/fly-height.lua +20 -0
  106. package/engine/internal/unit/ignore-events-items.lua +10 -1
  107. package/engine/internal/unit/interrupts.d.ts +12 -0
  108. package/engine/internal/unit/interrupts.lua +28 -0
  109. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  110. package/engine/internal/unit/inventory.lua +87 -0
  111. package/engine/internal/unit/item-container.d.ts +25 -0
  112. package/engine/internal/unit/item-container.lua +11 -0
  113. package/engine/internal/unit/item-order-events.d.ts +17 -0
  114. package/engine/internal/unit/item-order-events.lua +67 -0
  115. package/engine/internal/unit/item-slot.d.ts +27 -0
  116. package/engine/internal/unit/item-slot.lua +92 -0
  117. package/engine/internal/unit/main-selected.lua +12 -27
  118. package/engine/internal/unit/order.d.ts +3 -3
  119. package/engine/internal/unit/order.lua +10 -10
  120. package/engine/internal/unit/range-event.d.ts +12 -0
  121. package/engine/internal/unit/range-event.lua +90 -0
  122. package/engine/internal/unit/scale.d.ts +7 -0
  123. package/engine/internal/unit/scale.lua +20 -0
  124. package/engine/internal/unit/shared-vision-counter.d.ts +18 -0
  125. package/engine/internal/unit/shared-vision-counter.lua +31 -0
  126. package/engine/internal/unit+ability.d.ts +2 -1
  127. package/engine/internal/unit+ability.lua +83 -3
  128. package/engine/internal/unit+bonus.lua +3 -3
  129. package/engine/internal/unit+damage.d.ts +9 -0
  130. package/engine/internal/unit+damage.lua +33 -0
  131. package/engine/internal/unit+rally.lua +9 -31
  132. package/engine/internal/unit-missile-data.lua +96 -68
  133. package/engine/internal/unit-missile-launch.lua +65 -27
  134. package/engine/internal/unit.d.ts +20 -33
  135. package/engine/internal/unit.lua +227 -295
  136. package/engine/lightning.lua +4 -4
  137. package/engine/local-client.d.ts +28 -0
  138. package/engine/local-client.lua +324 -54
  139. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  140. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  141. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  142. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  143. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  144. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  145. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  146. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  147. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  148. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  149. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  150. package/engine/object-data/auxiliary/item-class.lua +2 -0
  151. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  152. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  153. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  154. package/engine/object-data/auxiliary/order-type.lua +2 -0
  155. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  156. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  157. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  158. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  159. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  160. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  161. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  162. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  163. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  164. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  165. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  166. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  167. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  168. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  169. package/engine/object-data/entry/ability-type/barrage.d.ts +12 -0
  170. package/engine/object-data/entry/ability-type/barrage.lua +52 -0
  171. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  172. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  173. package/engine/object-data/entry/ability-type/blank-configurable.lua +2 -2
  174. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  175. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  176. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  177. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  178. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  179. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  180. package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
  181. package/engine/object-data/entry/ability-type/channel.lua +3 -3
  182. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  183. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  184. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  185. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  186. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  187. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  188. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  189. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  190. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  191. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  192. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  193. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  194. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  195. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  196. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  197. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  198. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  199. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  200. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  201. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  202. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  203. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  204. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  205. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  206. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  207. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  208. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  209. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  210. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  211. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  212. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  213. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  214. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  215. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  216. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  217. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  218. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  219. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  220. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  221. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  222. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  223. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  224. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  225. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  226. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  227. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  228. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  229. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  230. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  231. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  232. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  233. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  234. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  235. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  236. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  237. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  238. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  239. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  240. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  241. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  242. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  243. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  244. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  245. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  246. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  247. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -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/rain-of-fire.d.ts +7 -0
  251. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -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/soul-burn.d.ts +22 -0
  263. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  264. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  265. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  266. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  267. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  268. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  269. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  270. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  271. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  272. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  273. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  274. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  275. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  276. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  277. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  278. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  279. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  280. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  281. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  282. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  283. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  284. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  285. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  286. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  287. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  288. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  289. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  290. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  291. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  292. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  293. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  294. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  295. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  296. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  297. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  298. package/engine/object-data/entry/ability-type.d.ts +35 -8
  299. package/engine/object-data/entry/ability-type.lua +304 -15
  300. package/engine/object-data/entry/buff-type/applicable.lua +122 -111
  301. package/engine/object-data/entry/buff-type.d.ts +6 -2
  302. package/engine/object-data/entry/buff-type.lua +26 -0
  303. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  304. package/engine/object-data/entry/destructible-type.lua +181 -0
  305. package/engine/object-data/entry/item-type.d.ts +18 -3
  306. package/engine/object-data/entry/item-type.lua +84 -0
  307. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  308. package/engine/object-data/entry/lightning-type.lua +1 -1
  309. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  310. package/engine/object-data/entry/unit-type.d.ts +72 -4
  311. package/engine/object-data/entry/unit-type.lua +503 -53
  312. package/engine/object-data/entry/upgrade.d.ts +2 -2
  313. package/engine/object-data/entry.d.ts +6 -1
  314. package/engine/object-data/entry.lua +8 -0
  315. package/engine/object-field/ability.d.ts +3 -3
  316. package/engine/object-field/ability.lua +9 -8
  317. package/engine/object-field/item.d.ts +22 -0
  318. package/engine/object-field/item.lua +118 -0
  319. package/engine/object-field/unit.d.ts +20 -5
  320. package/engine/object-field/unit.lua +61 -0
  321. package/engine/object-field.d.ts +12 -4
  322. package/engine/object-field.lua +273 -126
  323. package/engine/random.d.ts +10 -0
  324. package/engine/random.lua +21 -0
  325. package/engine/standard/entries/ability-type.d.ts +3102 -7
  326. package/engine/standard/entries/ability-type.lua +0 -6
  327. package/engine/standard/entries/buff-type.d.ts +45 -0
  328. package/engine/standard/entries/buff-type.lua +43 -0
  329. package/engine/standard/entries/item-type.d.ts +1299 -0
  330. package/engine/standard/entries/item-type.lua +2 -0
  331. package/engine/standard/entries/lightning-type.d.ts +42 -15
  332. package/engine/standard/entries/lightning-type.lua +0 -14
  333. package/engine/standard/entries/unit-type.d.ts +5 -0
  334. package/engine/standard/entries/unit-type.lua +5 -0
  335. package/engine/standard/fields/ability.d.ts +4 -4
  336. package/engine/standard/fields/ability.lua +4 -4
  337. package/engine/standard/fields/item.d.ts +4 -0
  338. package/engine/standard/fields/item.lua +6 -0
  339. package/engine/standard/fields/unit.d.ts +11 -3
  340. package/engine/standard/fields/unit.lua +15 -2
  341. package/engine/synchronization.d.ts +11 -0
  342. package/engine/synchronization.lua +77 -0
  343. package/engine/text-tag.d.ts +14 -2
  344. package/engine/text-tag.lua +135 -23
  345. package/engine/unit.d.ts +11 -1
  346. package/engine/unit.lua +11 -1
  347. package/event.d.ts +1 -1
  348. package/lualib_bundle.lua +1 -1
  349. package/math.d.ts +2 -0
  350. package/math.lua +14 -0
  351. package/net/socket.lua +1 -1
  352. package/network.lua +25 -1
  353. package/objutil/buff.lua +11 -9
  354. package/objutil/object.lua +1 -1
  355. package/operation.d.ts +8 -1
  356. package/operation.lua +38 -18
  357. package/package.json +3 -23
  358. package/patch-lua.lua +15 -0
  359. package/patch-lualib.lua +1 -1
  360. package/utility/arrays.d.ts +8 -1
  361. package/utility/arrays.lua +25 -0
  362. package/utility/callback-array.d.ts +17 -0
  363. package/utility/callback-array.lua +61 -0
  364. package/utility/functions.d.ts +4 -0
  365. package/utility/functions.lua +9 -0
  366. package/utility/linked-map.d.ts +35 -0
  367. package/utility/linked-map.lua +107 -0
  368. package/utility/linked-set.d.ts +4 -1
  369. package/utility/linked-set.lua +46 -1
  370. package/utility/lua-maps.d.ts +11 -2
  371. package/utility/lua-maps.lua +33 -2
  372. package/utility/lua-sets.d.ts +1 -0
  373. package/utility/lua-sets.lua +4 -0
  374. package/utility/random.d.ts +102 -0
  375. package/utility/random.lua +273 -0
  376. package/utility/records.lua +20 -1
  377. package/utility/types.d.ts +3 -0
  378. package/utility/unordered-map.d.ts +27 -0
  379. package/utility/unordered-map.lua +99 -0
  380. package/engine/internal/unit/item.lua +0 -78
  381. /package/engine/internal/{object-data/armor-increase.d.ts → misc/frame-coordinates.d.ts} +0 -0
  382. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  383. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  384. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -1,23 +1,31 @@
1
1
  /** @noSelfInFile */
2
- import { Behavior } from "../behavior";
2
+ import { Behavior, BehaviorPriority } from "../behavior";
3
3
  import { Ability } from "../internal/ability";
4
4
  import { DamageEvent, DamagingEvent, Unit } from "../internal/unit";
5
+ import "../internal/unit/equipment-inventory";
5
6
  import "../internal/unit+ability";
6
7
  import "../internal/unit-missile-launch";
7
8
  import { Item } from "../internal/item";
8
- import type { AbilityBehavior } from "./ability";
9
+ import { AbilityBehavior } from "./ability";
9
10
  import { Event } from "../../event";
10
11
  import { Destructor } from "../../destroyable";
11
12
  import type { Widget } from "../../core/types/widget";
12
13
  import { Destructable } from "../../core/types/destructable";
13
14
  import type { Buff } from "../buff";
15
+ import { UnitBonusType } from "../internal/unit/bonus";
16
+ import { Player } from "../../core/types/player";
17
+ import { UnitTypeId } from "../object-data/entry/unit-type";
14
18
  export type UnitBehaviorConstructor<Args extends any[]> = new (unit: Unit, ...args: Args) => UnitBehavior;
15
19
  export declare abstract class UnitBehavior<PeriodicActionParameters extends any[] = any[]> extends Behavior<Unit, PeriodicActionParameters> {
16
- constructor(unit: Unit);
17
- protected onDestroy(): Destructor;
18
20
  readonly sourceAbilityBehavior?: AbilityBehavior;
21
+ private _bonusIdByBonusType?;
22
+ constructor(unit: Unit, priority?: BehaviorPriority);
23
+ protected onDestroy(): Destructor;
19
24
  get unit(): Unit;
20
- registerInRangeUnitEvent<T extends string, Args extends any[]>(this: UnitBehavior<PeriodicActionParameters> & Record<T, (this: this, ...args: Args) => unknown>, event: Event<[...Args]>, extractUnit: (...args: Args) => Unit | undefined, range: number, listener: T): void;
25
+ protected getUnitBonus(bonusType: UnitBonusType): number;
26
+ protected addOrUpdateOrRemoveUnitBonus(bonusType: UnitBonusType, value: number): void;
27
+ protected registerOwningPlayerEvent<T extends string, Args extends any[]>(this: UnitBehavior<PeriodicActionParameters> & Record<T, (this: this, ...args: Args) => unknown>, event: Event<[...Args]>, extractPlayer: (...args: Args) => Player | undefined, listener: T): void;
28
+ protected registerInRangeUnitEvent<T extends string, Args extends any[]>(this: UnitBehavior<PeriodicActionParameters> & Record<T, (this: this, ...args: Args) => unknown>, event: Event<[...Args]>, extractUnit: (...args: Args) => Unit | undefined, range: number, listener: T): void;
21
29
  onImmediateOrder(orderId: number): void;
22
30
  onTargetOrder(orderId: number, target: Widget): void;
23
31
  onPointOrder(orderId: number, x: number, y: number): void;
@@ -44,6 +52,7 @@ export declare abstract class UnitBehavior<PeriodicActionParameters extends any[
44
52
  onTargetingAbilityChannelingStart(ability: Ability, source: Unit): void;
45
53
  onTargetingAbilityImpact(ability: Ability, source: Unit): void;
46
54
  onBuffGained(buff: Buff): void;
55
+ onBuffLost(buff: Buff): void;
47
56
  onItemDropped(item: Item): void;
48
57
  onItemPickedUp(item: Item): void;
49
58
  onItemUsed(item: Item): void;
@@ -51,4 +60,6 @@ export declare abstract class UnitBehavior<PeriodicActionParameters extends any[
51
60
  onItemChargesChanged(item: Item): void;
52
61
  onKill(target: Unit): void;
53
62
  onDeath(source: Unit | undefined): void;
63
+ onOwnerChange(previousOwner: Player): void;
64
+ static bindUnitType<Args extends any[]>(this: UnitBehaviorConstructor<Args>, unitTypeId: UnitTypeId, ...args: Args): void;
54
65
  }
@@ -8,6 +8,7 @@ local ____behavior = require("engine.behavior")
8
8
  local Behavior = ____behavior.Behavior
9
9
  local ____unit = require("engine.internal.unit")
10
10
  local Unit = ____unit.Unit
11
+ require("engine.internal.unit.equipment-inventory")
11
12
  require("engine.internal.unit+ability")
12
13
  require("engine.internal.unit-missile-launch")
13
14
  local ____linked_2Dset = require("utility.linked-set")
@@ -17,63 +18,137 @@ local getOrPut = ____lua_2Dmaps.getOrPut
17
18
  local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
18
19
  local ____lua_2Dsets = require("utility.lua-sets")
19
20
  local mutableLuaSet = ____lua_2Dsets.mutableLuaSet
20
- local behaviorsByEvent = {}
21
- local rangeByBehaviorByEvent = {}
22
- local listenerByBehaviorByEvent = {}
23
- local eventsByBehavior = {}
21
+ local ____bonus = require("engine.internal.unit.bonus")
22
+ local addOrUpdateOrRemoveUnitBonus = ____bonus.addOrUpdateOrRemoveUnitBonus
23
+ local getUnitBonus = ____bonus.getUnitBonus
24
+ local removeUnitBonus = ____bonus.removeUnitBonus
25
+ local ____linked_2Dmap = require("utility.linked-map")
26
+ local LinkedMap = ____linked_2Dmap.LinkedMap
27
+ local safeCall = warpack.safeCall
28
+ local createBehaviorFunctionsByUnitTypeId = {}
29
+ local behaviorsByOwningPlayerEvent = {}
30
+ local listenerByBehaviorByOwningPlayerEvent = {}
31
+ local owningPlayerEventsByBehavior = {}
32
+ local behaviorsByInRangeUnitEvent = {}
33
+ local rangeByBehaviorByInRangeUnitEvent = {}
34
+ local listenerByBehaviorByInRangeUnitEvent = {}
35
+ local inRangeUnitEventsByBehavior = {}
24
36
  ____exports.UnitBehavior = __TS__Class()
25
37
  local UnitBehavior = ____exports.UnitBehavior
26
38
  UnitBehavior.name = "UnitBehavior"
27
39
  __TS__ClassExtends(UnitBehavior, Behavior)
28
- function UnitBehavior.prototype.____constructor(self, unit)
29
- Behavior.prototype.____constructor(self, unit)
40
+ function UnitBehavior.prototype.____constructor(self, unit, priority)
41
+ Behavior.prototype.____constructor(self, unit, priority)
30
42
  end
31
43
  function UnitBehavior.prototype.onDestroy(self)
32
- local events = eventsByBehavior[self]
33
- if events ~= nil then
34
- for event in pairs(events) do
35
- local ____opt_0 = behaviorsByEvent[event]
44
+ local owningPlayerEvents = owningPlayerEventsByBehavior[self]
45
+ if owningPlayerEvents ~= nil then
46
+ for event in pairs(owningPlayerEvents) do
47
+ local ____opt_0 = behaviorsByOwningPlayerEvent[event]
36
48
  if ____opt_0 ~= nil then
37
49
  ____opt_0:remove(self)
38
50
  end
39
- local ____opt_2 = rangeByBehaviorByEvent[event]
51
+ local ____opt_2 = listenerByBehaviorByOwningPlayerEvent[event]
40
52
  if ____opt_2 ~= nil then
41
53
  ____opt_2[self] = nil
42
54
  end
43
- local ____opt_4 = listenerByBehaviorByEvent[event]
55
+ end
56
+ owningPlayerEventsByBehavior[self] = nil
57
+ end
58
+ local inRangeUnitEvents = inRangeUnitEventsByBehavior[self]
59
+ if inRangeUnitEvents ~= nil then
60
+ for event in pairs(inRangeUnitEvents) do
61
+ local ____opt_4 = behaviorsByInRangeUnitEvent[event]
44
62
  if ____opt_4 ~= nil then
45
- ____opt_4[self] = nil
63
+ ____opt_4:remove(self)
64
+ end
65
+ local ____opt_6 = rangeByBehaviorByInRangeUnitEvent[event]
66
+ if ____opt_6 ~= nil then
67
+ ____opt_6[self] = nil
68
+ end
69
+ local ____opt_8 = listenerByBehaviorByInRangeUnitEvent[event]
70
+ if ____opt_8 ~= nil then
71
+ ____opt_8[self] = nil
46
72
  end
47
73
  end
48
- eventsByBehavior[self] = nil
74
+ inRangeUnitEventsByBehavior[self] = nil
75
+ end
76
+ if self._bonusIdByBonusType ~= nil then
77
+ for bonusType, bonusId in pairs(self._bonusIdByBonusType) do
78
+ removeUnitBonus(self.object, bonusType, bonusId)
79
+ end
49
80
  end
50
81
  return Behavior.prototype.onDestroy(self)
51
82
  end
83
+ function UnitBehavior.prototype.getUnitBonus(self, bonusType)
84
+ local ____opt_10 = self._bonusIdByBonusType
85
+ local bonusId = ____opt_10 and ____opt_10:get(bonusType)
86
+ return bonusId == nil and 0 or getUnitBonus(self.object, bonusType, bonusId)
87
+ end
88
+ function UnitBehavior.prototype.addOrUpdateOrRemoveUnitBonus(self, bonusType, value)
89
+ local bonusIdByBonusType = self._bonusIdByBonusType
90
+ if bonusIdByBonusType == nil then
91
+ bonusIdByBonusType = __TS__New(LinkedMap)
92
+ self._bonusIdByBonusType = bonusIdByBonusType
93
+ end
94
+ bonusIdByBonusType:put(
95
+ bonusType,
96
+ addOrUpdateOrRemoveUnitBonus(
97
+ self.object,
98
+ bonusType,
99
+ bonusIdByBonusType:get(bonusType),
100
+ value
101
+ )
102
+ )
103
+ end
104
+ function UnitBehavior.prototype.registerOwningPlayerEvent(self, event, extractPlayer, listener)
105
+ local listenerByBehavior = getOrPut(listenerByBehaviorByOwningPlayerEvent, event, mutableLuaMap)
106
+ listenerByBehavior[self] = listener
107
+ getOrPut(inRangeUnitEventsByBehavior, self, mutableLuaSet)[event] = true
108
+ local behaviors = behaviorsByOwningPlayerEvent[event]
109
+ if behaviors == nil then
110
+ event:addListener(function(...)
111
+ local behaviors = behaviorsByOwningPlayerEvent[event]
112
+ if behaviors ~= nil then
113
+ local player = extractPlayer(...)
114
+ if player ~= nil then
115
+ for behavior in pairs(behaviors) do
116
+ if behavior.unit.owner == player then
117
+ safeCall(behavior[listenerByBehavior[behavior]], behavior, ...)
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end)
123
+ behaviors = __TS__New(LinkedSet)
124
+ behaviorsByOwningPlayerEvent[event] = behaviors
125
+ end
126
+ behaviors:add(self)
127
+ end
52
128
  function UnitBehavior.prototype.registerInRangeUnitEvent(self, event, extractUnit, range, listener)
53
- local rangeByBehavior = getOrPut(rangeByBehaviorByEvent, event, mutableLuaMap)
129
+ local rangeByBehavior = getOrPut(rangeByBehaviorByInRangeUnitEvent, event, mutableLuaMap)
54
130
  rangeByBehavior[self] = range
55
- local listenerByBehavior = getOrPut(listenerByBehaviorByEvent, event, mutableLuaMap)
131
+ local listenerByBehavior = getOrPut(listenerByBehaviorByInRangeUnitEvent, event, mutableLuaMap)
56
132
  listenerByBehavior[self] = listener
57
- getOrPut(eventsByBehavior, self, mutableLuaSet)[event] = true
58
- local behaviors = behaviorsByEvent[event]
133
+ getOrPut(inRangeUnitEventsByBehavior, self, mutableLuaSet)[event] = true
134
+ local behaviors = behaviorsByInRangeUnitEvent[event]
59
135
  if behaviors == nil then
60
136
  event:addListener(function(...)
61
- local behaviors = behaviorsByEvent[event]
137
+ local behaviors = behaviorsByInRangeUnitEvent[event]
62
138
  if behaviors ~= nil then
63
139
  local unit = extractUnit(...)
64
140
  if unit ~= nil then
65
141
  for behavior in pairs(behaviors) do
66
142
  local range = rangeByBehavior[behavior]
67
143
  if range ~= nil and unit:getCollisionDistanceTo(behavior.unit) <= range then
68
- local ____self_6 = behavior
69
- ____self_6[listenerByBehavior[behavior]](____self_6, ...)
144
+ safeCall(behavior[listenerByBehavior[behavior]], behavior, ...)
70
145
  end
71
146
  end
72
147
  end
73
148
  end
74
149
  end)
75
150
  behaviors = __TS__New(LinkedSet)
76
- behaviorsByEvent[event] = behaviors
151
+ behaviorsByInRangeUnitEvent[event] = behaviors
77
152
  end
78
153
  behaviors:add(self)
79
154
  end
@@ -129,6 +204,8 @@ function UnitBehavior.prototype.onTargetingAbilityImpact(self, ability, source)
129
204
  end
130
205
  function UnitBehavior.prototype.onBuffGained(self, buff)
131
206
  end
207
+ function UnitBehavior.prototype.onBuffLost(self, buff)
208
+ end
132
209
  function UnitBehavior.prototype.onItemDropped(self, item)
133
210
  end
134
211
  function UnitBehavior.prototype.onItemPickedUp(self, item)
@@ -143,6 +220,23 @@ function UnitBehavior.prototype.onKill(self, target)
143
220
  end
144
221
  function UnitBehavior.prototype.onDeath(self, source)
145
222
  end
223
+ function UnitBehavior.prototype.onOwnerChange(self, previousOwner)
224
+ end
225
+ function UnitBehavior.bindUnitType(self, unitTypeId, ...)
226
+ local args = {...}
227
+ local createBehaviorFunctions = createBehaviorFunctionsByUnitTypeId[unitTypeId]
228
+ if createBehaviorFunctions == nil then
229
+ createBehaviorFunctions = {}
230
+ createBehaviorFunctionsByUnitTypeId[unitTypeId] = createBehaviorFunctions
231
+ end
232
+ createBehaviorFunctions[#createBehaviorFunctions + 1] = function(unit)
233
+ return __TS__New(
234
+ self,
235
+ unit,
236
+ table.unpack(args)
237
+ )
238
+ end
239
+ end
146
240
  __TS__SetDescriptor(
147
241
  UnitBehavior.prototype,
148
242
  "unit",
@@ -254,7 +348,18 @@ __TS__SetDescriptor(
254
348
  Unit.itemChargesChangedEvent:addListener(function(unit, item)
255
349
  ____exports.UnitBehavior:forAll(unit, "onItemChargesChanged", item)
256
350
  end)
351
+ Unit.onOwnerChange:addListener(function(unit, previousOwner)
352
+ ____exports.UnitBehavior:forAll(unit, "onOwnerChange", previousOwner)
353
+ end)
257
354
  end)(UnitBehavior)
355
+ Unit.onCreate:addListener(function(unit)
356
+ local createBehaviorFunctions = createBehaviorFunctionsByUnitTypeId[unit.typeId]
357
+ if createBehaviorFunctions ~= nil then
358
+ for ____, createBehavior in ipairs(createBehaviorFunctions) do
359
+ createBehavior(unit)
360
+ end
361
+ end
362
+ end)
258
363
  Unit.destroyEvent:addListener(function(unit)
259
364
  ____exports.UnitBehavior:forAll(unit, "destroy")
260
365
  end)
package/engine/buff.d.ts CHANGED
@@ -13,6 +13,8 @@ import { UnitBehavior } from "./behaviour/unit";
13
13
  import type { Widget } from "../core/types/widget";
14
14
  import { Destructor } from "../destroyable";
15
15
  import { Event } from "../event";
16
+ import { AbilityBehavior } from "./behaviour/ability";
17
+ import { SoundPresetId } from "./object-data/entry/sound-preset";
16
18
  export type BuffConstructor<T extends Buff<any> = Buff<any>, Args extends any[] = any> = OmitConstructor<typeof Buff<any>> & (new (...args: Args) => T);
17
19
  type EnumParameterValueType<T extends number> = T | AbilityEnumLevelField<T>;
18
20
  type NumberParameterValueType = number | AbilityNumberField | AbilityNumberLevelField;
@@ -22,6 +24,13 @@ export type BuffPolarityParameterType = EnumParameterValueType<BuffPolarity>;
22
24
  export type BuffResistanceTypeParameterType = EnumParameterValueType<BuffResistanceType>;
23
25
  export declare class BuffUniqueGroup {
24
26
  }
27
+ export type BuffAbilityParameters = {
28
+ readonly fields?: [AbilityNumberField | AbilityNumberLevelField, NumberParameterValueType][];
29
+ /** Default `true`. */
30
+ readonly isButtonVisible?: boolean;
31
+ /** Default is the level of the source ability or 0 if it is absent. */
32
+ readonly level?: number;
33
+ };
25
34
  export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
26
35
  spellStealPriority?: number;
27
36
  level?: number;
@@ -29,14 +38,7 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
29
38
  learnLevelMinimum?: number;
30
39
  source?: Unit;
31
40
  behaviorConstructors?: (new (unit: Unit) => UnitBehavior)[];
32
- abilityTypeIds?: Record<AbilityTypeId, {
33
- [numberField: (AbilityNumberField | AbilityNumberLevelField) & symbol]: NumberParameterValueType;
34
- } & {
35
- /** Default `true`. */
36
- readonly isButtonVisible?: boolean;
37
- /** Default is the level of the source ability or 0 if it is absent. */
38
- readonly level?: number;
39
- }>;
41
+ abilityTypeIds?: Partial<Record<AbilityTypeId, BuffAbilityParameters>>;
40
42
  damageUponDeathAllowedTargetCombatClassifications?: CombatClassifications | AbilityCombatClassificationsLevelField;
41
43
  damageUponDeath?: NumberParameterValueType;
42
44
  damageUponDeathRange?: NumberParameterValueType;
@@ -53,13 +55,17 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
53
55
  damageIncrease?: NumberParameterValueType;
54
56
  damageIncreaseFactor?: NumberParameterValueType;
55
57
  armorIncrease?: NumberParameterValueType;
56
- armorIncreaseFactor?: NumberParameterValueType;
58
+ maxHealthIncrease?: NumberParameterValueType;
59
+ maxManaIncrease?: NumberParameterValueType;
57
60
  attackSpeedIncreaseFactor?: NumberParameterValueType;
58
61
  movementSpeedIncreaseFactor?: NumberParameterValueType;
62
+ manaRegenerationRateIncreaseFactor?: NumberParameterValueType;
59
63
  evasionProbability?: NumberParameterValueType;
60
64
  missProbability?: NumberParameterValueType;
61
65
  damageFactor?: NumberParameterValueType;
62
66
  receivedDamageFactor?: NumberParameterValueType;
67
+ /** The factor of melee attack damage returned to the attacker, as Spiked Carapace. */
68
+ returnedMeleeDamageFactor?: NumberParameterValueType;
63
69
  receivedMagicDamageFactor?: NumberParameterValueType;
64
70
  durationIncreaseOnAutoAttack?: NumberParameterValueType;
65
71
  maximumRemainingDuration?: NumberParameterValueType;
@@ -75,11 +81,23 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
75
81
  maximumAutoAttackCount?: IntegerParameterValueType;
76
82
  maximumDamageDealtEventCount?: IntegerParameterValueType;
77
83
  maximumDamageReceivedEventCount?: IntegerParameterValueType;
84
+ absorbedDamageFactor?: NumberParameterValueType;
85
+ maximumDamageAbsorbed?: NumberParameterValueType;
86
+ destroysOnMaximumDamageAbsorbed?: BooleanParameterValueType;
78
87
  damageOnExpiration?: NumberParameterValueType;
79
88
  healingOnExpiration?: NumberParameterValueType;
80
89
  killsOnExpiration?: BooleanParameterValueType;
81
90
  explodesOnExpiration?: BooleanParameterValueType;
91
+ abilityCooldownFactor?: NumberParameterValueType;
92
+ /**
93
+ * Makes the unit visible to the owner of the source, and through the engine to the
94
+ * players that owner shares vision with (`UnitShareVision`). Only the unit itself
95
+ * becomes visible, not the area it sees. The owner is taken when the buff is applied.
96
+ */
97
+ sharesVisionWithSource?: BooleanParameterValueType;
82
98
  uniqueGroup?: BuffUniqueGroup;
99
+ /** Played on the unit whenever the buff is destroyed, whatever the reason. */
100
+ destructionSoundPresetId?: SoundPresetId;
83
101
  } : BuffParameters & (T extends Buff<infer AdditionalParameters> ? AdditionalParameters : object);
84
102
  declare const enum BuffPropertyKey {
85
103
  STATE = 100,
@@ -87,50 +105,59 @@ declare const enum BuffPropertyKey {
87
105
  SOURCE = 102,
88
106
  DURATION = 103,
89
107
  UNIQUE_GROUP = 104,
90
- EFFECT_MODEL_PATH = 105,
91
- SPECIAL_EFFECT_MODEL_PATH = 106,
92
- DURATION_INCREASE_ON_AUTO_ATTACK = 107,
93
- MAXIMUM_DURATION = 108,
94
- MAXIMUM_REMAINING_DURATION = 109,
95
- DAMAGE_OVER_DURATION = 110,
96
- DAMAGE_PER_INTERVAL = 111,
97
- DAMAGE_INTERVAL = 112,
98
- REMAINING_DAMAGE_OVER_DURATION = 113,
99
- DAMAGE_INTERVAL_TIMER = 114,
100
- HEALING_OVER_DURATION = 115,
101
- HEALING_PER_INTERVAL = 116,
102
- HEALING_INTERVAL = 117,
103
- REMAINING_HEALING_OVER_DURATION = 118,
104
- HEALING_INTERVAL_TIMER = 119,
105
- DAMAGE_ON_EXPIRATION = 120,
106
- HEALING_ON_EXPIRATION = 121,
107
- DAMAGE_UPON_DEATH_ALLOWED_TARGET_CLASSIFICATIONS = 122,
108
- DAMAGE_UPON_DEATH = 123,
109
- DAMAGE_UPON_DEATH_RANGE = 124,
110
- MEDIUM_DAMAGE_UPON_DEATH = 125,
111
- MEDIUM_DAMAGE_UPON_DEATH_RANGE = 126,
112
- SMALL_DAMAGE_UPON_DEATH = 127,
113
- SMALL_DAMAGE_UPON_DEATH_RANGE = 128,
114
- AUTO_ATTACK_COUNT = 129,
115
- MAXIMUM_AUTO_ATTACK_COUNT = 130,
116
- DAMAGE_DEALT_EVENT_COUNT = 131,
117
- MAXIMUM_DAMAGE_DEALT_EVENT_COUNT = 132,
118
- DAMAGE_RECEIVED_EVENT_COUNT = 133,
119
- MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT = 134,
120
- TURNS_INTO_GHOST = 135,
121
- STUNS = 136,
122
- IGNORES_STUN_IMMUNITY = 137,
123
- DISABLES_AUTO_ATTACK = 138,
124
- PROVIDES_INVULNERABILITY = 139,
125
- KILLS_ON_EXPIRATION = 140,
126
- EXPLODES_ON_EXPIRATION = 141,
127
- MISS_PROBABILITY = 142
108
+ DESTRUCTION_SOUND_PRESET_ID = 105,
109
+ EFFECT_MODEL_PATH = 106,
110
+ SPECIAL_EFFECT_MODEL_PATH = 107,
111
+ DURATION_INCREASE_ON_AUTO_ATTACK = 108,
112
+ MAXIMUM_DURATION = 109,
113
+ MAXIMUM_REMAINING_DURATION = 110,
114
+ DAMAGE_OVER_DURATION = 111,
115
+ DAMAGE_PER_INTERVAL = 112,
116
+ DAMAGE_INTERVAL = 113,
117
+ REMAINING_DAMAGE_OVER_DURATION = 114,
118
+ DAMAGE_INTERVAL_TIMER = 115,
119
+ HEALING_OVER_DURATION = 116,
120
+ HEALING_PER_INTERVAL = 117,
121
+ HEALING_INTERVAL = 118,
122
+ REMAINING_HEALING_OVER_DURATION = 119,
123
+ HEALING_INTERVAL_TIMER = 120,
124
+ DAMAGE_ON_EXPIRATION = 121,
125
+ HEALING_ON_EXPIRATION = 122,
126
+ DAMAGE_UPON_DEATH_ALLOWED_TARGET_CLASSIFICATIONS = 123,
127
+ DAMAGE_UPON_DEATH = 124,
128
+ DAMAGE_UPON_DEATH_RANGE = 125,
129
+ MEDIUM_DAMAGE_UPON_DEATH = 126,
130
+ MEDIUM_DAMAGE_UPON_DEATH_RANGE = 127,
131
+ SMALL_DAMAGE_UPON_DEATH = 128,
132
+ SMALL_DAMAGE_UPON_DEATH_RANGE = 129,
133
+ AUTO_ATTACK_COUNT = 130,
134
+ MAXIMUM_AUTO_ATTACK_COUNT = 131,
135
+ DAMAGE_DEALT_EVENT_COUNT = 132,
136
+ MAXIMUM_DAMAGE_DEALT_EVENT_COUNT = 133,
137
+ DAMAGE_RECEIVED_EVENT_COUNT = 134,
138
+ MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT = 135,
139
+ ABSORBED_DAMAGE_FACTOR = 136,
140
+ MAXIMUM_DAMAGE_ABSORBED = 137,
141
+ DAMAGE_ABSORBED = 138,
142
+ DESTROYS_ON_MAXIMUM_DAMAGE_ABSORBED = 139,
143
+ TURNS_INTO_GHOST = 140,
144
+ STUNS = 141,
145
+ IGNORES_STUN_IMMUNITY = 142,
146
+ DISABLES_AUTO_ATTACK = 143,
147
+ PROVIDES_INVULNERABILITY = 144,
148
+ KILLS_ON_EXPIRATION = 145,
149
+ EXPLODES_ON_EXPIRATION = 146,
150
+ MISS_PROBABILITY = 147,
151
+ ABILITY_COOLDOWN_FACTOR = 148,
152
+ ABILITY_COOLDOWN_MODIFIER = 149,
153
+ SHARES_VISION_WITH_SOURCE = 150,
154
+ VISION_PLAYER = 151
128
155
  }
129
156
  export declare const enum BuffTypeIdSelectionPolicy {
130
157
  LEAST_DURATION = 0
131
158
  }
132
159
  export type BuffAdditionalParameters = Prohibit<Record<string, any>, keyof BuffParameters>;
133
- export type BuffConstructorParameters<AdditionalParameters extends BuffAdditionalParameters> = [
160
+ export type BuffConstructorParameters<T extends Buff<BuffAdditionalParameters>> = T extends Buff<infer AdditionalParameters> ? [
134
161
  ...typeId: [ApplicableBuffTypeId] | [
135
162
  typeIds: ReadonlyNonEmptyArray<ApplicableBuffTypeId>,
136
163
  typeIdSelectionPolicy: BuffTypeIdSelectionPolicy
@@ -138,10 +165,12 @@ export type BuffConstructorParameters<AdditionalParameters extends BuffAdditiona
138
165
  polarity: BuffPolarityParameterType,
139
166
  resistanceType: BuffResistanceTypeParameterType,
140
167
  ...abilityOrParameters: [
141
- ability?: Ability,
168
+ ability?: Ability | AbilityBehavior,
142
169
  parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
143
- ] | [parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>]
144
- ];
170
+ ] | [
171
+ parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
172
+ ]
173
+ ] : never;
145
174
  export declare class Buff<AdditionalParameters extends Prohibit<Record<string, any>, keyof BuffParameters> = object> extends UnitBehavior {
146
175
  private _unit;
147
176
  protected readonly __additionalParametersBrand?: AdditionalParameters;
@@ -150,6 +179,7 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
150
179
  private [BuffPropertyKey.SOURCE]?;
151
180
  private [BuffPropertyKey.DURATION];
152
181
  private [BuffPropertyKey.UNIQUE_GROUP]?;
182
+ private [BuffPropertyKey.DESTRUCTION_SOUND_PRESET_ID]?;
153
183
  private [BuffPropertyKey.EFFECT_MODEL_PATH];
154
184
  private [BuffPropertyKey.SPECIAL_EFFECT_MODEL_PATH];
155
185
  private [BuffPropertyKey.DURATION_INCREASE_ON_AUTO_ATTACK]?;
@@ -180,6 +210,10 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
180
210
  private [BuffPropertyKey.DAMAGE_DEALT_EVENT_COUNT]?;
181
211
  private [BuffPropertyKey.MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT]?;
182
212
  private [BuffPropertyKey.DAMAGE_RECEIVED_EVENT_COUNT]?;
213
+ private [BuffPropertyKey.ABSORBED_DAMAGE_FACTOR]?;
214
+ private [BuffPropertyKey.MAXIMUM_DAMAGE_ABSORBED]?;
215
+ private [BuffPropertyKey.DAMAGE_ABSORBED]?;
216
+ private [BuffPropertyKey.DESTROYS_ON_MAXIMUM_DAMAGE_ABSORBED]?;
183
217
  private [BuffPropertyKey.TURNS_INTO_GHOST]?;
184
218
  private [BuffPropertyKey.STUNS]?;
185
219
  private [BuffPropertyKey.IGNORES_STUN_IMMUNITY]?;
@@ -187,26 +221,28 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
187
221
  private [BuffPropertyKey.PROVIDES_INVULNERABILITY]?;
188
222
  private [BuffPropertyKey.KILLS_ON_EXPIRATION]?;
189
223
  private [BuffPropertyKey.EXPLODES_ON_EXPIRATION]?;
224
+ private [BuffPropertyKey.ABILITY_COOLDOWN_FACTOR]?;
225
+ private [BuffPropertyKey.ABILITY_COOLDOWN_MODIFIER]?;
226
+ private [BuffPropertyKey.SHARES_VISION_WITH_SOURCE]?;
227
+ private [BuffPropertyKey.VISION_PLAYER]?;
190
228
  protected static readonly defaultParameters: BuffParameters;
191
229
  get source(): Unit;
192
230
  readonly typeId: ApplicableBuffTypeId;
193
231
  readonly polarity: BuffPolarity;
194
232
  readonly resistanceType: BuffResistanceType;
195
- readonly parameters: IsExactlyAny<AdditionalParameters> extends true ? any : keyof AdditionalParameters extends never ? undefined : {
233
+ readonly parameters: IsExactlyAny<AdditionalParameters> extends true ? any : AdditionalParameters extends Record<PropertyKey, never> ? undefined : {
196
234
  [K in keyof Omit<AdditionalParameters, keyof BuffParameters>]: AdditionalParameters[K] extends AbilityDependentValue<infer T> ? T : AdditionalParameters[K];
197
235
  };
198
236
  private readonly handle;
237
+ readonly previousBuff?: Buff;
199
238
  private _timer?;
200
239
  private readonly _level?;
201
240
  private readonly _spellStealPriority?;
202
241
  private readonly _learnLevelMinimum?;
203
242
  private readonly [BuffPropertyKey.MISS_PROBABILITY]?;
204
- private _bonusIdByBonusType?;
205
243
  private readonly _abilityTypeIds?;
206
244
  private _behaviors?;
207
- private getUnitBonus;
208
- private addOrUpdateOrRemoveUnitBonus;
209
- constructor(target: Unit, ...parameters: BuffConstructorParameters<AdditionalParameters>);
245
+ constructor(target: Unit, ...parameters: BuffConstructorParameters<Buff<AdditionalParameters>>);
210
246
  get level(): number;
211
247
  get remainingDamageOverDuration(): number;
212
248
  set remainingDamageOverDuration(remainingDamageOverDuration: number);
@@ -232,8 +268,14 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
232
268
  set damageFactor(damageFactor: number);
233
269
  get receivedDamageFactor(): number;
234
270
  set receivedDamageFactor(receivedDamageFactor: number);
271
+ get returnedMeleeDamageFactor(): number;
272
+ set returnedMeleeDamageFactor(returnedMeleeDamageFactor: number);
235
273
  get armorIncrease(): number;
236
274
  set armorIncrease(armorIncrease: number);
275
+ get maxHealthIncrease(): number;
276
+ set maxHealthIncrease(maxHealthIncrease: number);
277
+ get maxManaIncrease(): number;
278
+ set maxManaIncrease(maxManaIncrease: number);
237
279
  get turnsIntoGhost(): boolean;
238
280
  set turnsIntoGhost(turnsIntoGhost: boolean);
239
281
  get stuns(): boolean;
@@ -248,6 +290,8 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
248
290
  set killsOnExpiration(killsOnExpiration: boolean);
249
291
  get explodesOnExpiration(): boolean;
250
292
  set explodesOnExpiration(killsOnExpiration: boolean);
293
+ get sharesVisionWithSource(): boolean;
294
+ set sharesVisionWithSource(sharesVisionWithSource: boolean);
251
295
  get maximumDamageDealtEventCount(): number;
252
296
  set maximumDamageDealtEventCount(maximumDamageDealtEventCount: number);
253
297
  get maximumDamageReceivedEventCount(): number;
@@ -262,18 +306,41 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
262
306
  set movementSpeedIncreaseFactor(movementSpeedIncreaseFactor: number);
263
307
  get evasionProbability(): number;
264
308
  set evasionProbability(evasionProbability: number);
309
+ get manaRegenerationRateIncreaseFactor(): number;
310
+ set manaRegenerationRateIncreaseFactor(manaRegenerationRateIncreaseFactor: number);
265
311
  get duration(): number;
312
+ set duration(duration: number);
266
313
  get remainingDuration(): number;
267
314
  set remainingDuration(remainingDuration: number);
315
+ get absorbedDamageFactor(): number;
316
+ set absorbedDamageFactor(absorbedDamageFactor: number);
317
+ get maximumDamageAbsorbed(): number;
318
+ set maximumDamageAbsorbed(maximumDamageAbsorbed: number);
319
+ get damageAbsorbed(): number;
320
+ get destroysOnMaximumDamageAbsorbed(): boolean;
321
+ set destroysOnMaximumDamageAbsorbed(destroysOnMaximumDamageAbsorbed: boolean);
322
+ get abilityCooldownFactor(): number;
323
+ set abilityCooldownFactor(abilityCooldownFactor: number);
324
+ onAbilityGained(ability: Ability): void;
325
+ onAbilityLost(ability: Ability): void;
268
326
  flashEffect(...parameters: [
269
327
  ...widgetOrXY: [] | [Widget] | [x: number, x: number],
270
328
  ...parametersOrDuration: [] | [EffectParameters] | [number]
271
329
  ]): void;
272
- flashSpecialEffect(...parameters: [...widget: [] | [Widget], ...duration: [] | [number]]): void;
330
+ flashSpecialEffect(...parameters: [
331
+ ...widgetOrXY: [] | [Widget] | [x: number, x: number],
332
+ ...parametersOrDuration: [] | [EffectParameters] | [number]
333
+ ]): void;
334
+ private flash;
335
+ expire(): void;
336
+ /** Dispels this buff, invoking onDispel before removing it. */
337
+ dispel(source?: Unit): void;
273
338
  protected onCreate(): void;
274
339
  protected onDestroy(): Destructor;
275
340
  static apply<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, ...args: Args): T | undefined;
276
341
  static getByTypeId<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, unit: Unit, typeId: ApplicableBuffTypeId): T | undefined;
342
+ /** Called for dispelling, never for a direct destroy() or replacement. */
343
+ onDispel(source: Unit | undefined): void;
277
344
  onExpiration(): void;
278
345
  onDeath(source: Unit | undefined): void;
279
346
  onDamageDealt(target: Unit, event: DamageEvent): void;