warscript 0.0.1-dev.2450f74 → 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 (367) 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 +153 -78
  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 +73 -25
  14. package/core/types/playerCamera.lua +1 -1
  15. package/core/types/playerColor.lua +4 -3
  16. package/core/types/sound.d.ts +1 -1
  17. package/core/types/sound.lua +14 -9
  18. package/core/types/tileCell.d.ts +10 -3
  19. package/core/types/tileCell.lua +33 -3
  20. package/core/types/timer.d.ts +3 -2
  21. package/core/types/timer.lua +8 -2
  22. package/core/types/unit.d.ts +5 -0
  23. package/core/types/unit.lua +5 -0
  24. package/core/util.d.ts +3 -1
  25. package/core/util.lua +109 -3
  26. package/decl/native.d.ts +706 -7
  27. package/destroyable.d.ts +1 -0
  28. package/destroyable.lua +9 -0
  29. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  30. package/engine/ability-type-extended-tooltip.lua +44 -0
  31. package/engine/behavior.d.ts +10 -2
  32. package/engine/behavior.lua +157 -76
  33. package/engine/behaviour/ability/apply-buff.lua +4 -4
  34. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  35. package/engine/behaviour/ability/damage.d.ts +4 -0
  36. package/engine/behaviour/ability/damage.lua +19 -15
  37. package/engine/behaviour/ability/emulate-impact.d.ts +14 -0
  38. package/engine/behaviour/ability/emulate-impact.lua +79 -5
  39. package/engine/behaviour/ability/instant-impact.d.ts +12 -1
  40. package/engine/behaviour/ability/instant-impact.lua +17 -2
  41. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  42. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  43. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  44. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  45. package/engine/behaviour/ability.d.ts +19 -6
  46. package/engine/behaviour/ability.lua +120 -9
  47. package/engine/behaviour/unit/stun-immunity.d.ts +9 -5
  48. package/engine/behaviour/unit/stun-immunity.lua +17 -7
  49. package/engine/behaviour/unit.d.ts +10 -3
  50. package/engine/behaviour/unit.lua +107 -24
  51. package/engine/buff.d.ts +124 -54
  52. package/engine/buff.lua +614 -281
  53. package/engine/index.d.ts +2 -1
  54. package/engine/internal/ability.d.ts +7 -0
  55. package/engine/internal/ability.lua +65 -36
  56. package/engine/internal/item/fields.d.ts +12 -0
  57. package/engine/internal/item/fields.lua +33 -0
  58. package/engine/internal/item/owner-cache.d.ts +5 -0
  59. package/engine/internal/item/owner-cache.lua +4 -0
  60. package/engine/internal/item+owner.d.ts +2 -0
  61. package/engine/internal/item+owner.lua +27 -4
  62. package/engine/internal/item.d.ts +28 -13
  63. package/engine/internal/item.lua +163 -59
  64. package/engine/internal/mechanics/cast-ability.lua +6 -3
  65. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  66. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  67. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  68. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  69. package/engine/internal/object-data/health-bonus.lua +16 -0
  70. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  71. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  72. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  73. package/engine/internal/object-data/mana-bonus.lua +16 -0
  74. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  75. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  76. package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
  77. package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
  78. package/engine/internal/unit/ability.d.ts +14 -14
  79. package/engine/internal/unit/ability.lua +88 -45
  80. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  81. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  82. package/engine/internal/unit/appearance.d.ts +15 -0
  83. package/engine/internal/unit/appearance.lua +85 -0
  84. package/engine/internal/unit/attributes.d.ts +17 -0
  85. package/engine/internal/unit/attributes.lua +46 -0
  86. package/engine/internal/unit/bonus.d.ts +17 -0
  87. package/engine/internal/unit/bonus.lua +113 -8
  88. package/engine/internal/unit/buff.d.ts +2 -2
  89. package/engine/internal/unit/buff.lua +34 -19
  90. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  91. package/engine/internal/unit/equipment-inventory.lua +233 -0
  92. package/engine/internal/unit/expiration-timer.lua +1 -1
  93. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  94. package/engine/internal/unit/extended-inventory.lua +99 -0
  95. package/engine/internal/unit/fly-height.d.ts +7 -0
  96. package/engine/internal/unit/fly-height.lua +20 -0
  97. package/engine/internal/unit/ignore-events-items.lua +10 -1
  98. package/engine/internal/unit/interrupts.d.ts +12 -0
  99. package/engine/internal/unit/interrupts.lua +28 -0
  100. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  101. package/engine/internal/unit/inventory.lua +87 -0
  102. package/engine/internal/unit/item-container.d.ts +25 -0
  103. package/engine/internal/unit/item-container.lua +11 -0
  104. package/engine/internal/unit/item-order-events.d.ts +17 -0
  105. package/engine/internal/unit/item-order-events.lua +67 -0
  106. package/engine/internal/unit/item-slot.d.ts +27 -0
  107. package/engine/internal/unit/item-slot.lua +92 -0
  108. package/engine/internal/unit/main-selected.lua +12 -27
  109. package/engine/internal/unit/order.d.ts +3 -3
  110. package/engine/internal/unit/order.lua +10 -10
  111. package/engine/internal/unit/range-event.d.ts +12 -0
  112. package/engine/internal/unit/range-event.lua +90 -0
  113. package/engine/internal/unit/scale.d.ts +7 -0
  114. package/engine/internal/unit/scale.lua +20 -0
  115. package/engine/internal/unit/shared-vision-counter.d.ts +18 -0
  116. package/engine/internal/unit/shared-vision-counter.lua +31 -0
  117. package/engine/internal/unit+ability.d.ts +2 -1
  118. package/engine/internal/unit+ability.lua +73 -2
  119. package/engine/internal/unit+bonus.lua +3 -3
  120. package/engine/internal/unit+damage.d.ts +9 -0
  121. package/engine/internal/unit+damage.lua +33 -0
  122. package/engine/internal/unit+rally.lua +9 -31
  123. package/engine/internal/unit-missile-data.lua +96 -68
  124. package/engine/internal/unit-missile-launch.lua +64 -33
  125. package/engine/internal/unit.d.ts +17 -29
  126. package/engine/internal/unit.lua +212 -282
  127. package/engine/lightning.lua +4 -4
  128. package/engine/local-client.d.ts +28 -0
  129. package/engine/local-client.lua +324 -54
  130. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  131. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  132. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  133. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  134. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  135. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  136. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  137. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  138. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  139. package/engine/object-data/auxiliary/item-class.lua +2 -0
  140. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  141. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  142. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  143. package/engine/object-data/auxiliary/order-type.lua +2 -0
  144. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  145. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  146. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  147. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  148. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  149. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  150. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  151. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  152. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  153. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  154. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  155. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  156. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  157. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  158. package/engine/object-data/entry/ability-type/barrage.d.ts +12 -0
  159. package/engine/object-data/entry/ability-type/barrage.lua +52 -0
  160. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  161. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  162. package/engine/object-data/entry/ability-type/blank-configurable.lua +2 -2
  163. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  164. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  165. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  166. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  167. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  168. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  169. package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
  170. package/engine/object-data/entry/ability-type/channel.lua +3 -3
  171. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  172. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  173. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  174. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  175. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  176. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  177. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  178. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  179. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  180. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  181. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  182. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  183. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  184. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  185. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  186. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  187. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  188. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  189. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  190. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  191. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  192. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  193. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  194. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  195. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  196. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  197. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  198. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  199. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  200. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  201. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  202. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  203. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  204. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  205. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  206. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  207. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  208. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  209. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  210. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  211. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  212. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  213. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  214. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  215. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  216. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  217. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  218. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  219. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  220. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  221. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  222. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  223. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  224. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  225. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  226. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  227. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  228. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  229. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  230. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  231. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  232. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  233. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  234. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  235. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  236. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  237. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  238. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  239. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  240. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  241. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  242. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  243. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  244. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  245. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  246. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  247. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  248. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  249. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  250. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  251. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  252. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  253. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  254. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  255. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  256. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  257. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  258. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  259. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  260. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  261. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  262. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  263. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  264. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  265. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  266. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  267. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  268. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  269. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  270. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  271. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  272. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  273. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  274. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  275. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  276. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  277. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  278. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  279. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  280. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  281. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  282. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  283. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  284. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  285. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  286. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  287. package/engine/object-data/entry/ability-type.d.ts +35 -8
  288. package/engine/object-data/entry/ability-type.lua +303 -12
  289. package/engine/object-data/entry/buff-type/applicable.lua +122 -111
  290. package/engine/object-data/entry/buff-type.d.ts +6 -2
  291. package/engine/object-data/entry/buff-type.lua +26 -0
  292. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  293. package/engine/object-data/entry/destructible-type.lua +181 -0
  294. package/engine/object-data/entry/item-type.d.ts +18 -3
  295. package/engine/object-data/entry/item-type.lua +84 -0
  296. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  297. package/engine/object-data/entry/lightning-type.lua +1 -1
  298. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  299. package/engine/object-data/entry/unit-type.d.ts +61 -2
  300. package/engine/object-data/entry/unit-type.lua +444 -52
  301. package/engine/object-data/entry/upgrade.d.ts +2 -2
  302. package/engine/object-data/entry.d.ts +6 -1
  303. package/engine/object-data/entry.lua +8 -0
  304. package/engine/object-field/ability.lua +2 -2
  305. package/engine/object-field/item.d.ts +22 -0
  306. package/engine/object-field/item.lua +118 -0
  307. package/engine/object-field/unit.d.ts +20 -5
  308. package/engine/object-field/unit.lua +61 -0
  309. package/engine/object-field.d.ts +10 -2
  310. package/engine/object-field.lua +268 -123
  311. package/engine/random.d.ts +5 -0
  312. package/engine/random.lua +18 -0
  313. package/engine/standard/entries/ability-type.d.ts +3102 -7
  314. package/engine/standard/entries/ability-type.lua +0 -6
  315. package/engine/standard/entries/buff-type.d.ts +45 -0
  316. package/engine/standard/entries/buff-type.lua +43 -0
  317. package/engine/standard/entries/item-type.d.ts +1299 -0
  318. package/engine/standard/entries/item-type.lua +2 -0
  319. package/engine/standard/entries/lightning-type.d.ts +42 -15
  320. package/engine/standard/entries/lightning-type.lua +0 -14
  321. package/engine/standard/entries/unit-type.d.ts +5 -0
  322. package/engine/standard/entries/unit-type.lua +5 -0
  323. package/engine/standard/fields/ability.d.ts +4 -4
  324. package/engine/standard/fields/ability.lua +4 -4
  325. package/engine/standard/fields/item.d.ts +4 -0
  326. package/engine/standard/fields/item.lua +6 -0
  327. package/engine/standard/fields/unit.d.ts +11 -3
  328. package/engine/standard/fields/unit.lua +15 -2
  329. package/engine/synchronization.d.ts +11 -0
  330. package/engine/synchronization.lua +77 -0
  331. package/engine/text-tag.d.ts +13 -1
  332. package/engine/text-tag.lua +80 -42
  333. package/engine/unit.d.ts +11 -1
  334. package/engine/unit.lua +11 -1
  335. package/event.d.ts +1 -1
  336. package/lualib_bundle.lua +1 -1
  337. package/math.d.ts +2 -0
  338. package/math.lua +14 -0
  339. package/net/socket.lua +1 -1
  340. package/network.lua +25 -1
  341. package/objutil/buff.lua +11 -9
  342. package/objutil/object.lua +1 -1
  343. package/operation.d.ts +8 -1
  344. package/operation.lua +38 -18
  345. package/package.json +3 -23
  346. package/patch-lua.lua +15 -0
  347. package/utility/arrays.d.ts +8 -1
  348. package/utility/arrays.lua +25 -0
  349. package/utility/callback-array.d.ts +5 -1
  350. package/utility/callback-array.lua +16 -1
  351. package/utility/linked-map.d.ts +35 -0
  352. package/utility/linked-map.lua +107 -0
  353. package/utility/linked-set.d.ts +4 -1
  354. package/utility/linked-set.lua +46 -1
  355. package/utility/lua-maps.d.ts +11 -2
  356. package/utility/lua-maps.lua +33 -2
  357. package/utility/random.d.ts +102 -0
  358. package/utility/random.lua +273 -0
  359. package/utility/records.lua +20 -1
  360. package/utility/types.d.ts +3 -0
  361. package/utility/unordered-map.d.ts +27 -0
  362. package/utility/unordered-map.lua +99 -0
  363. package/engine/internal/unit/item.lua +0 -78
  364. /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
  365. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  366. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  367. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -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")
@@ -21,36 +22,56 @@ local ____bonus = require("engine.internal.unit.bonus")
21
22
  local addOrUpdateOrRemoveUnitBonus = ____bonus.addOrUpdateOrRemoveUnitBonus
22
23
  local getUnitBonus = ____bonus.getUnitBonus
23
24
  local removeUnitBonus = ____bonus.removeUnitBonus
25
+ local ____linked_2Dmap = require("utility.linked-map")
26
+ local LinkedMap = ____linked_2Dmap.LinkedMap
24
27
  local safeCall = warpack.safeCall
25
- local behaviorsByEvent = {}
26
- local rangeByBehaviorByEvent = {}
27
- local listenerByBehaviorByEvent = {}
28
- local eventsByBehavior = {}
28
+ local createBehaviorFunctionsByUnitTypeId = {}
29
+ local behaviorsByOwningPlayerEvent = {}
30
+ local listenerByBehaviorByOwningPlayerEvent = {}
31
+ local owningPlayerEventsByBehavior = {}
32
+ local behaviorsByInRangeUnitEvent = {}
33
+ local rangeByBehaviorByInRangeUnitEvent = {}
34
+ local listenerByBehaviorByInRangeUnitEvent = {}
35
+ local inRangeUnitEventsByBehavior = {}
29
36
  ____exports.UnitBehavior = __TS__Class()
30
37
  local UnitBehavior = ____exports.UnitBehavior
31
38
  UnitBehavior.name = "UnitBehavior"
32
39
  __TS__ClassExtends(UnitBehavior, Behavior)
33
- function UnitBehavior.prototype.____constructor(self, unit)
34
- Behavior.prototype.____constructor(self, unit)
40
+ function UnitBehavior.prototype.____constructor(self, unit, priority)
41
+ Behavior.prototype.____constructor(self, unit, priority)
35
42
  end
36
43
  function UnitBehavior.prototype.onDestroy(self)
37
- local events = eventsByBehavior[self]
38
- if events ~= nil then
39
- for event in pairs(events) do
40
- 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]
41
48
  if ____opt_0 ~= nil then
42
49
  ____opt_0:remove(self)
43
50
  end
44
- local ____opt_2 = rangeByBehaviorByEvent[event]
51
+ local ____opt_2 = listenerByBehaviorByOwningPlayerEvent[event]
45
52
  if ____opt_2 ~= nil then
46
53
  ____opt_2[self] = nil
47
54
  end
48
- 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]
49
62
  if ____opt_4 ~= nil then
50
- ____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
51
72
  end
52
73
  end
53
- eventsByBehavior[self] = nil
74
+ inRangeUnitEventsByBehavior[self] = nil
54
75
  end
55
76
  if self._bonusIdByBonusType ~= nil then
56
77
  for bonusType, bonusId in pairs(self._bonusIdByBonusType) do
@@ -60,28 +81,60 @@ function UnitBehavior.prototype.onDestroy(self)
60
81
  return Behavior.prototype.onDestroy(self)
61
82
  end
62
83
  function UnitBehavior.prototype.getUnitBonus(self, bonusType)
63
- local ____opt_6 = self._bonusIdByBonusType
64
- local bonusId = ____opt_6 and ____opt_6[bonusType]
84
+ local ____opt_10 = self._bonusIdByBonusType
85
+ local bonusId = ____opt_10 and ____opt_10:get(bonusType)
65
86
  return bonusId == nil and 0 or getUnitBonus(self.object, bonusType, bonusId)
66
87
  end
67
88
  function UnitBehavior.prototype.addOrUpdateOrRemoveUnitBonus(self, bonusType, value)
68
89
  local bonusIdByBonusType = self._bonusIdByBonusType
69
90
  if bonusIdByBonusType == nil then
70
- bonusIdByBonusType = {}
91
+ bonusIdByBonusType = __TS__New(LinkedMap)
71
92
  self._bonusIdByBonusType = bonusIdByBonusType
72
93
  end
73
- bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self.object, bonusType, bonusIdByBonusType[bonusType], value)
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)
74
127
  end
75
128
  function UnitBehavior.prototype.registerInRangeUnitEvent(self, event, extractUnit, range, listener)
76
- local rangeByBehavior = getOrPut(rangeByBehaviorByEvent, event, mutableLuaMap)
129
+ local rangeByBehavior = getOrPut(rangeByBehaviorByInRangeUnitEvent, event, mutableLuaMap)
77
130
  rangeByBehavior[self] = range
78
- local listenerByBehavior = getOrPut(listenerByBehaviorByEvent, event, mutableLuaMap)
131
+ local listenerByBehavior = getOrPut(listenerByBehaviorByInRangeUnitEvent, event, mutableLuaMap)
79
132
  listenerByBehavior[self] = listener
80
- getOrPut(eventsByBehavior, self, mutableLuaSet)[event] = true
81
- local behaviors = behaviorsByEvent[event]
133
+ getOrPut(inRangeUnitEventsByBehavior, self, mutableLuaSet)[event] = true
134
+ local behaviors = behaviorsByInRangeUnitEvent[event]
82
135
  if behaviors == nil then
83
136
  event:addListener(function(...)
84
- local behaviors = behaviorsByEvent[event]
137
+ local behaviors = behaviorsByInRangeUnitEvent[event]
85
138
  if behaviors ~= nil then
86
139
  local unit = extractUnit(...)
87
140
  if unit ~= nil then
@@ -95,7 +148,7 @@ function UnitBehavior.prototype.registerInRangeUnitEvent(self, event, extractUni
95
148
  end
96
149
  end)
97
150
  behaviors = __TS__New(LinkedSet)
98
- behaviorsByEvent[event] = behaviors
151
+ behaviorsByInRangeUnitEvent[event] = behaviors
99
152
  end
100
153
  behaviors:add(self)
101
154
  end
@@ -151,6 +204,8 @@ function UnitBehavior.prototype.onTargetingAbilityImpact(self, ability, source)
151
204
  end
152
205
  function UnitBehavior.prototype.onBuffGained(self, buff)
153
206
  end
207
+ function UnitBehavior.prototype.onBuffLost(self, buff)
208
+ end
154
209
  function UnitBehavior.prototype.onItemDropped(self, item)
155
210
  end
156
211
  function UnitBehavior.prototype.onItemPickedUp(self, item)
@@ -165,6 +220,23 @@ function UnitBehavior.prototype.onKill(self, target)
165
220
  end
166
221
  function UnitBehavior.prototype.onDeath(self, source)
167
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
168
240
  __TS__SetDescriptor(
169
241
  UnitBehavior.prototype,
170
242
  "unit",
@@ -276,7 +348,18 @@ __TS__SetDescriptor(
276
348
  Unit.itemChargesChangedEvent:addListener(function(unit, item)
277
349
  ____exports.UnitBehavior:forAll(unit, "onItemChargesChanged", item)
278
350
  end)
351
+ Unit.onOwnerChange:addListener(function(unit, previousOwner)
352
+ ____exports.UnitBehavior:forAll(unit, "onOwnerChange", previousOwner)
353
+ end)
279
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)
280
363
  Unit.destroyEvent:addListener(function(unit)
281
364
  ____exports.UnitBehavior:forAll(unit, "destroy")
282
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,15 +221,20 @@ 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?;
@@ -203,7 +242,7 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
203
242
  private readonly [BuffPropertyKey.MISS_PROBABILITY]?;
204
243
  private readonly _abilityTypeIds?;
205
244
  private _behaviors?;
206
- constructor(target: Unit, ...parameters: BuffConstructorParameters<AdditionalParameters>);
245
+ constructor(target: Unit, ...parameters: BuffConstructorParameters<Buff<AdditionalParameters>>);
207
246
  get level(): number;
208
247
  get remainingDamageOverDuration(): number;
209
248
  set remainingDamageOverDuration(remainingDamageOverDuration: number);
@@ -229,8 +268,14 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
229
268
  set damageFactor(damageFactor: number);
230
269
  get receivedDamageFactor(): number;
231
270
  set receivedDamageFactor(receivedDamageFactor: number);
271
+ get returnedMeleeDamageFactor(): number;
272
+ set returnedMeleeDamageFactor(returnedMeleeDamageFactor: number);
232
273
  get armorIncrease(): number;
233
274
  set armorIncrease(armorIncrease: number);
275
+ get maxHealthIncrease(): number;
276
+ set maxHealthIncrease(maxHealthIncrease: number);
277
+ get maxManaIncrease(): number;
278
+ set maxManaIncrease(maxManaIncrease: number);
234
279
  get turnsIntoGhost(): boolean;
235
280
  set turnsIntoGhost(turnsIntoGhost: boolean);
236
281
  get stuns(): boolean;
@@ -245,6 +290,8 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
245
290
  set killsOnExpiration(killsOnExpiration: boolean);
246
291
  get explodesOnExpiration(): boolean;
247
292
  set explodesOnExpiration(killsOnExpiration: boolean);
293
+ get sharesVisionWithSource(): boolean;
294
+ set sharesVisionWithSource(sharesVisionWithSource: boolean);
248
295
  get maximumDamageDealtEventCount(): number;
249
296
  set maximumDamageDealtEventCount(maximumDamageDealtEventCount: number);
250
297
  get maximumDamageReceivedEventCount(): number;
@@ -259,18 +306,41 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
259
306
  set movementSpeedIncreaseFactor(movementSpeedIncreaseFactor: number);
260
307
  get evasionProbability(): number;
261
308
  set evasionProbability(evasionProbability: number);
309
+ get manaRegenerationRateIncreaseFactor(): number;
310
+ set manaRegenerationRateIncreaseFactor(manaRegenerationRateIncreaseFactor: number);
262
311
  get duration(): number;
312
+ set duration(duration: number);
263
313
  get remainingDuration(): number;
264
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;
265
326
  flashEffect(...parameters: [
266
327
  ...widgetOrXY: [] | [Widget] | [x: number, x: number],
267
328
  ...parametersOrDuration: [] | [EffectParameters] | [number]
268
329
  ]): void;
269
- 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;
270
338
  protected onCreate(): void;
271
339
  protected onDestroy(): Destructor;
272
340
  static apply<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, ...args: Args): T | undefined;
273
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;
274
344
  onExpiration(): void;
275
345
  onDeath(source: Unit | undefined): void;
276
346
  onDamageDealt(target: Unit, event: DamageEvent): void;