warscript 0.0.1-dev.2fcfd45 → 0.0.1-dev.2fd8394

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 (348) hide show
  1. package/core/dummy.lua +4 -2
  2. package/core/types/effect.d.ts +11 -1
  3. package/core/types/effect.lua +43 -77
  4. package/core/types/frame.d.ts +16 -2
  5. package/core/types/frame.lua +128 -67
  6. package/core/types/handle.lua +9 -9
  7. package/core/types/item.d.ts +1 -0
  8. package/core/types/item.lua +1 -0
  9. package/core/types/missile.lua +8 -7
  10. package/core/types/player.d.ts +3 -1
  11. package/core/types/player.lua +22 -14
  12. package/core/types/playerColor.lua +4 -3
  13. package/core/types/sound.d.ts +1 -1
  14. package/core/types/sound.lua +14 -9
  15. package/core/types/tileCell.d.ts +9 -3
  16. package/core/types/tileCell.lua +16 -0
  17. package/core/types/unit.d.ts +5 -0
  18. package/core/types/unit.lua +5 -0
  19. package/core/util.d.ts +3 -1
  20. package/core/util.lua +109 -3
  21. package/decl/native.d.ts +706 -7
  22. package/destroyable.d.ts +1 -0
  23. package/destroyable.lua +9 -0
  24. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  25. package/engine/ability-type-extended-tooltip.lua +44 -0
  26. package/engine/behavior.d.ts +10 -2
  27. package/engine/behavior.lua +157 -76
  28. package/engine/behaviour/ability/apply-buff.lua +4 -4
  29. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  30. package/engine/behaviour/ability/damage.d.ts +4 -0
  31. package/engine/behaviour/ability/damage.lua +19 -15
  32. package/engine/behaviour/ability/emulate-impact.d.ts +14 -0
  33. package/engine/behaviour/ability/emulate-impact.lua +79 -5
  34. package/engine/behaviour/ability/instant-impact.d.ts +12 -1
  35. package/engine/behaviour/ability/instant-impact.lua +17 -2
  36. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  37. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  38. package/engine/behaviour/ability.d.ts +19 -6
  39. package/engine/behaviour/ability.lua +120 -9
  40. package/engine/behaviour/unit/stun-immunity.d.ts +7 -5
  41. package/engine/behaviour/unit/stun-immunity.lua +6 -5
  42. package/engine/behaviour/unit.d.ts +8 -3
  43. package/engine/behaviour/unit.lua +102 -24
  44. package/engine/buff.d.ts +112 -54
  45. package/engine/buff.lua +559 -280
  46. package/engine/index.d.ts +2 -1
  47. package/engine/internal/ability.d.ts +7 -0
  48. package/engine/internal/ability.lua +65 -36
  49. package/engine/internal/item/fields.d.ts +12 -0
  50. package/engine/internal/item/fields.lua +33 -0
  51. package/engine/internal/item/owner-cache.d.ts +5 -0
  52. package/engine/internal/item/owner-cache.lua +4 -0
  53. package/engine/internal/item+owner.d.ts +2 -0
  54. package/engine/internal/item+owner.lua +27 -4
  55. package/engine/internal/item.d.ts +20 -5
  56. package/engine/internal/item.lua +146 -57
  57. package/engine/internal/mechanics/cast-ability.lua +6 -3
  58. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  59. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  60. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  61. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  62. package/engine/internal/object-data/health-bonus.lua +16 -0
  63. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  64. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  65. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  66. package/engine/internal/object-data/mana-bonus.lua +16 -0
  67. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  68. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  69. package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
  70. package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
  71. package/engine/internal/unit/ability.lua +16 -0
  72. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  73. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  74. package/engine/internal/unit/appearance.d.ts +15 -0
  75. package/engine/internal/unit/appearance.lua +85 -0
  76. package/engine/internal/unit/attributes.d.ts +17 -0
  77. package/engine/internal/unit/attributes.lua +46 -0
  78. package/engine/internal/unit/bonus.d.ts +17 -0
  79. package/engine/internal/unit/bonus.lua +113 -8
  80. package/engine/internal/unit/buff.d.ts +2 -2
  81. package/engine/internal/unit/buff.lua +34 -19
  82. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  83. package/engine/internal/unit/equipment-inventory.lua +233 -0
  84. package/engine/internal/unit/expiration-timer.lua +1 -1
  85. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  86. package/engine/internal/unit/extended-inventory.lua +99 -0
  87. package/engine/internal/unit/fly-height.d.ts +7 -0
  88. package/engine/internal/unit/fly-height.lua +20 -0
  89. package/engine/internal/unit/ignore-events-items.lua +10 -1
  90. package/engine/internal/unit/interrupts.d.ts +12 -0
  91. package/engine/internal/unit/interrupts.lua +28 -0
  92. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  93. package/engine/internal/unit/inventory.lua +87 -0
  94. package/engine/internal/unit/item-container.d.ts +25 -0
  95. package/engine/internal/unit/item-container.lua +11 -0
  96. package/engine/internal/unit/item-order-events.d.ts +17 -0
  97. package/engine/internal/unit/item-order-events.lua +67 -0
  98. package/engine/internal/unit/item-slot.d.ts +27 -0
  99. package/engine/internal/unit/item-slot.lua +92 -0
  100. package/engine/internal/unit/order.d.ts +3 -3
  101. package/engine/internal/unit/order.lua +10 -10
  102. package/engine/internal/unit/range-event.d.ts +12 -0
  103. package/engine/internal/unit/range-event.lua +90 -0
  104. package/engine/internal/unit/scale.d.ts +7 -0
  105. package/engine/internal/unit/scale.lua +20 -0
  106. package/engine/internal/unit+ability.d.ts +2 -1
  107. package/engine/internal/unit+ability.lua +73 -2
  108. package/engine/internal/unit+bonus.lua +3 -3
  109. package/engine/internal/unit+damage.d.ts +9 -0
  110. package/engine/internal/unit+damage.lua +33 -0
  111. package/engine/internal/unit+rally.lua +9 -31
  112. package/engine/internal/unit-missile-data.lua +96 -68
  113. package/engine/internal/unit-missile-launch.lua +29 -19
  114. package/engine/internal/unit.d.ts +15 -29
  115. package/engine/internal/unit.lua +192 -272
  116. package/engine/lightning.lua +4 -4
  117. package/engine/local-client.d.ts +28 -0
  118. package/engine/local-client.lua +324 -54
  119. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  120. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  121. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  122. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  123. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  124. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  125. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  126. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  127. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  128. package/engine/object-data/auxiliary/item-class.lua +2 -0
  129. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  130. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  131. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  132. package/engine/object-data/auxiliary/order-type.lua +2 -0
  133. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  134. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  135. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  136. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  137. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  138. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  139. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  140. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  141. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  142. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  143. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  144. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  145. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  146. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  147. package/engine/object-data/entry/ability-type/barrage.d.ts +12 -0
  148. package/engine/object-data/entry/ability-type/barrage.lua +52 -0
  149. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  150. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  151. package/engine/object-data/entry/ability-type/blank-configurable.lua +2 -2
  152. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  153. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  154. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  155. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  156. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  157. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  158. package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
  159. package/engine/object-data/entry/ability-type/channel.lua +3 -3
  160. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  161. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  162. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  163. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  164. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  165. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  166. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  167. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  168. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  169. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  170. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  171. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  172. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  173. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  174. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  175. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  176. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  177. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  178. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  179. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  180. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  181. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  182. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  183. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  184. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  185. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  186. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  187. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  188. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  189. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  190. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  191. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  192. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  193. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  194. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  195. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  196. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  197. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  198. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  199. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  200. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  201. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  202. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  203. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  204. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  205. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  206. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  207. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  208. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  209. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  210. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  211. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  212. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  213. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  214. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  215. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  216. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  217. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  218. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  219. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  220. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  221. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  222. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  223. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  224. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  225. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  226. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  227. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  228. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  229. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  230. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  231. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  232. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  233. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  234. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  235. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  236. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  237. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  238. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  239. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  240. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  241. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  242. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  243. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  244. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  245. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  246. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  247. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  248. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  249. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  250. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  251. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  252. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  253. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  254. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  255. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  256. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  257. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  258. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  259. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  260. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  261. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  262. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  263. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  264. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  265. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  266. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  267. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  268. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  269. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  270. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  271. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  272. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  273. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  274. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  275. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  276. package/engine/object-data/entry/ability-type.d.ts +35 -8
  277. package/engine/object-data/entry/ability-type.lua +299 -11
  278. package/engine/object-data/entry/buff-type/applicable.lua +122 -111
  279. package/engine/object-data/entry/buff-type.d.ts +6 -2
  280. package/engine/object-data/entry/buff-type.lua +26 -0
  281. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  282. package/engine/object-data/entry/destructible-type.lua +181 -0
  283. package/engine/object-data/entry/item-type.d.ts +18 -3
  284. package/engine/object-data/entry/item-type.lua +84 -0
  285. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  286. package/engine/object-data/entry/lightning-type.lua +1 -1
  287. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  288. package/engine/object-data/entry/unit-type.d.ts +61 -2
  289. package/engine/object-data/entry/unit-type.lua +444 -52
  290. package/engine/object-data/entry/upgrade.d.ts +2 -2
  291. package/engine/object-data/entry.d.ts +6 -1
  292. package/engine/object-data/entry.lua +8 -0
  293. package/engine/object-field/ability.lua +2 -2
  294. package/engine/object-field/item.d.ts +22 -0
  295. package/engine/object-field/item.lua +118 -0
  296. package/engine/object-field/unit.d.ts +20 -5
  297. package/engine/object-field/unit.lua +61 -0
  298. package/engine/object-field.d.ts +10 -2
  299. package/engine/object-field.lua +268 -123
  300. package/engine/random.d.ts +1 -0
  301. package/engine/random.lua +8 -0
  302. package/engine/standard/entries/ability-type.d.ts +3102 -7
  303. package/engine/standard/entries/ability-type.lua +0 -6
  304. package/engine/standard/entries/buff-type.d.ts +45 -0
  305. package/engine/standard/entries/buff-type.lua +43 -0
  306. package/engine/standard/entries/item-type.d.ts +1299 -0
  307. package/engine/standard/entries/item-type.lua +2 -0
  308. package/engine/standard/entries/lightning-type.d.ts +42 -15
  309. package/engine/standard/entries/lightning-type.lua +0 -14
  310. package/engine/standard/entries/unit-type.d.ts +5 -0
  311. package/engine/standard/entries/unit-type.lua +5 -0
  312. package/engine/standard/fields/ability.d.ts +4 -4
  313. package/engine/standard/fields/ability.lua +4 -4
  314. package/engine/standard/fields/item.d.ts +4 -0
  315. package/engine/standard/fields/item.lua +6 -0
  316. package/engine/standard/fields/unit.d.ts +11 -3
  317. package/engine/standard/fields/unit.lua +15 -2
  318. package/engine/text-tag.d.ts +13 -1
  319. package/engine/text-tag.lua +80 -42
  320. package/engine/unit.d.ts +10 -1
  321. package/engine/unit.lua +10 -1
  322. package/event.d.ts +1 -1
  323. package/lualib_bundle.lua +1 -1
  324. package/math.d.ts +2 -0
  325. package/math.lua +14 -0
  326. package/network.lua +25 -1
  327. package/objutil/buff.lua +10 -8
  328. package/objutil/object.lua +1 -1
  329. package/operation.d.ts +8 -1
  330. package/operation.lua +38 -18
  331. package/package.json +3 -23
  332. package/patch-lua.lua +15 -0
  333. package/utility/arrays.d.ts +7 -1
  334. package/utility/arrays.lua +17 -0
  335. package/utility/linked-map.d.ts +35 -0
  336. package/utility/linked-map.lua +107 -0
  337. package/utility/linked-set.d.ts +3 -1
  338. package/utility/linked-set.lua +27 -0
  339. package/utility/random.d.ts +102 -0
  340. package/utility/random.lua +273 -0
  341. package/utility/records.lua +20 -1
  342. package/utility/unordered-map.d.ts +27 -0
  343. package/utility/unordered-map.lua +99 -0
  344. package/engine/internal/unit/item.lua +0 -78
  345. /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
  346. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  347. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  348. /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)
@@ -167,6 +222,21 @@ function UnitBehavior.prototype.onDeath(self, source)
167
222
  end
168
223
  function UnitBehavior.prototype.onOwnerChange(self, previousOwner)
169
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
170
240
  __TS__SetDescriptor(
171
241
  UnitBehavior.prototype,
172
242
  "unit",
@@ -282,6 +352,14 @@ __TS__SetDescriptor(
282
352
  ____exports.UnitBehavior:forAll(unit, "onOwnerChange", previousOwner)
283
353
  end)
284
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)
285
363
  Unit.destroyEvent:addListener(function(unit)
286
364
  ____exports.UnitBehavior:forAll(unit, "destroy")
287
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,17 @@ 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;
82
92
  uniqueGroup?: BuffUniqueGroup;
93
+ /** Played on the unit whenever the buff is destroyed, whatever the reason. */
94
+ destructionSoundPresetId?: SoundPresetId;
83
95
  } : BuffParameters & (T extends Buff<infer AdditionalParameters> ? AdditionalParameters : object);
84
96
  declare const enum BuffPropertyKey {
85
97
  STATE = 100,
@@ -87,50 +99,57 @@ declare const enum BuffPropertyKey {
87
99
  SOURCE = 102,
88
100
  DURATION = 103,
89
101
  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
102
+ DESTRUCTION_SOUND_PRESET_ID = 105,
103
+ EFFECT_MODEL_PATH = 106,
104
+ SPECIAL_EFFECT_MODEL_PATH = 107,
105
+ DURATION_INCREASE_ON_AUTO_ATTACK = 108,
106
+ MAXIMUM_DURATION = 109,
107
+ MAXIMUM_REMAINING_DURATION = 110,
108
+ DAMAGE_OVER_DURATION = 111,
109
+ DAMAGE_PER_INTERVAL = 112,
110
+ DAMAGE_INTERVAL = 113,
111
+ REMAINING_DAMAGE_OVER_DURATION = 114,
112
+ DAMAGE_INTERVAL_TIMER = 115,
113
+ HEALING_OVER_DURATION = 116,
114
+ HEALING_PER_INTERVAL = 117,
115
+ HEALING_INTERVAL = 118,
116
+ REMAINING_HEALING_OVER_DURATION = 119,
117
+ HEALING_INTERVAL_TIMER = 120,
118
+ DAMAGE_ON_EXPIRATION = 121,
119
+ HEALING_ON_EXPIRATION = 122,
120
+ DAMAGE_UPON_DEATH_ALLOWED_TARGET_CLASSIFICATIONS = 123,
121
+ DAMAGE_UPON_DEATH = 124,
122
+ DAMAGE_UPON_DEATH_RANGE = 125,
123
+ MEDIUM_DAMAGE_UPON_DEATH = 126,
124
+ MEDIUM_DAMAGE_UPON_DEATH_RANGE = 127,
125
+ SMALL_DAMAGE_UPON_DEATH = 128,
126
+ SMALL_DAMAGE_UPON_DEATH_RANGE = 129,
127
+ AUTO_ATTACK_COUNT = 130,
128
+ MAXIMUM_AUTO_ATTACK_COUNT = 131,
129
+ DAMAGE_DEALT_EVENT_COUNT = 132,
130
+ MAXIMUM_DAMAGE_DEALT_EVENT_COUNT = 133,
131
+ DAMAGE_RECEIVED_EVENT_COUNT = 134,
132
+ MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT = 135,
133
+ ABSORBED_DAMAGE_FACTOR = 136,
134
+ MAXIMUM_DAMAGE_ABSORBED = 137,
135
+ DAMAGE_ABSORBED = 138,
136
+ DESTROYS_ON_MAXIMUM_DAMAGE_ABSORBED = 139,
137
+ TURNS_INTO_GHOST = 140,
138
+ STUNS = 141,
139
+ IGNORES_STUN_IMMUNITY = 142,
140
+ DISABLES_AUTO_ATTACK = 143,
141
+ PROVIDES_INVULNERABILITY = 144,
142
+ KILLS_ON_EXPIRATION = 145,
143
+ EXPLODES_ON_EXPIRATION = 146,
144
+ MISS_PROBABILITY = 147,
145
+ ABILITY_COOLDOWN_FACTOR = 148,
146
+ ABILITY_COOLDOWN_MODIFIER = 149
128
147
  }
129
148
  export declare const enum BuffTypeIdSelectionPolicy {
130
149
  LEAST_DURATION = 0
131
150
  }
132
151
  export type BuffAdditionalParameters = Prohibit<Record<string, any>, keyof BuffParameters>;
133
- export type BuffConstructorParameters<AdditionalParameters extends BuffAdditionalParameters> = [
152
+ export type BuffConstructorParameters<T extends Buff<BuffAdditionalParameters>> = T extends Buff<infer AdditionalParameters> ? [
134
153
  ...typeId: [ApplicableBuffTypeId] | [
135
154
  typeIds: ReadonlyNonEmptyArray<ApplicableBuffTypeId>,
136
155
  typeIdSelectionPolicy: BuffTypeIdSelectionPolicy
@@ -138,10 +157,12 @@ export type BuffConstructorParameters<AdditionalParameters extends BuffAdditiona
138
157
  polarity: BuffPolarityParameterType,
139
158
  resistanceType: BuffResistanceTypeParameterType,
140
159
  ...abilityOrParameters: [
141
- ability?: Ability,
160
+ ability?: Ability | AbilityBehavior,
142
161
  parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
143
- ] | [parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>]
144
- ];
162
+ ] | [
163
+ parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
164
+ ]
165
+ ] : never;
145
166
  export declare class Buff<AdditionalParameters extends Prohibit<Record<string, any>, keyof BuffParameters> = object> extends UnitBehavior {
146
167
  private _unit;
147
168
  protected readonly __additionalParametersBrand?: AdditionalParameters;
@@ -150,6 +171,7 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
150
171
  private [BuffPropertyKey.SOURCE]?;
151
172
  private [BuffPropertyKey.DURATION];
152
173
  private [BuffPropertyKey.UNIQUE_GROUP]?;
174
+ private [BuffPropertyKey.DESTRUCTION_SOUND_PRESET_ID]?;
153
175
  private [BuffPropertyKey.EFFECT_MODEL_PATH];
154
176
  private [BuffPropertyKey.SPECIAL_EFFECT_MODEL_PATH];
155
177
  private [BuffPropertyKey.DURATION_INCREASE_ON_AUTO_ATTACK]?;
@@ -180,6 +202,10 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
180
202
  private [BuffPropertyKey.DAMAGE_DEALT_EVENT_COUNT]?;
181
203
  private [BuffPropertyKey.MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT]?;
182
204
  private [BuffPropertyKey.DAMAGE_RECEIVED_EVENT_COUNT]?;
205
+ private [BuffPropertyKey.ABSORBED_DAMAGE_FACTOR]?;
206
+ private [BuffPropertyKey.MAXIMUM_DAMAGE_ABSORBED]?;
207
+ private [BuffPropertyKey.DAMAGE_ABSORBED]?;
208
+ private [BuffPropertyKey.DESTROYS_ON_MAXIMUM_DAMAGE_ABSORBED]?;
183
209
  private [BuffPropertyKey.TURNS_INTO_GHOST]?;
184
210
  private [BuffPropertyKey.STUNS]?;
185
211
  private [BuffPropertyKey.IGNORES_STUN_IMMUNITY]?;
@@ -187,15 +213,18 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
187
213
  private [BuffPropertyKey.PROVIDES_INVULNERABILITY]?;
188
214
  private [BuffPropertyKey.KILLS_ON_EXPIRATION]?;
189
215
  private [BuffPropertyKey.EXPLODES_ON_EXPIRATION]?;
216
+ private [BuffPropertyKey.ABILITY_COOLDOWN_FACTOR]?;
217
+ private [BuffPropertyKey.ABILITY_COOLDOWN_MODIFIER]?;
190
218
  protected static readonly defaultParameters: BuffParameters;
191
219
  get source(): Unit;
192
220
  readonly typeId: ApplicableBuffTypeId;
193
221
  readonly polarity: BuffPolarity;
194
222
  readonly resistanceType: BuffResistanceType;
195
- readonly parameters: IsExactlyAny<AdditionalParameters> extends true ? any : keyof AdditionalParameters extends never ? undefined : {
223
+ readonly parameters: IsExactlyAny<AdditionalParameters> extends true ? any : AdditionalParameters extends Record<PropertyKey, never> ? undefined : {
196
224
  [K in keyof Omit<AdditionalParameters, keyof BuffParameters>]: AdditionalParameters[K] extends AbilityDependentValue<infer T> ? T : AdditionalParameters[K];
197
225
  };
198
226
  private readonly handle;
227
+ readonly previousBuff?: Buff;
199
228
  private _timer?;
200
229
  private readonly _level?;
201
230
  private readonly _spellStealPriority?;
@@ -203,7 +232,7 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
203
232
  private readonly [BuffPropertyKey.MISS_PROBABILITY]?;
204
233
  private readonly _abilityTypeIds?;
205
234
  private _behaviors?;
206
- constructor(target: Unit, ...parameters: BuffConstructorParameters<AdditionalParameters>);
235
+ constructor(target: Unit, ...parameters: BuffConstructorParameters<Buff<AdditionalParameters>>);
207
236
  get level(): number;
208
237
  get remainingDamageOverDuration(): number;
209
238
  set remainingDamageOverDuration(remainingDamageOverDuration: number);
@@ -229,8 +258,14 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
229
258
  set damageFactor(damageFactor: number);
230
259
  get receivedDamageFactor(): number;
231
260
  set receivedDamageFactor(receivedDamageFactor: number);
261
+ get returnedMeleeDamageFactor(): number;
262
+ set returnedMeleeDamageFactor(returnedMeleeDamageFactor: number);
232
263
  get armorIncrease(): number;
233
264
  set armorIncrease(armorIncrease: number);
265
+ get maxHealthIncrease(): number;
266
+ set maxHealthIncrease(maxHealthIncrease: number);
267
+ get maxManaIncrease(): number;
268
+ set maxManaIncrease(maxManaIncrease: number);
234
269
  get turnsIntoGhost(): boolean;
235
270
  set turnsIntoGhost(turnsIntoGhost: boolean);
236
271
  get stuns(): boolean;
@@ -259,18 +294,41 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
259
294
  set movementSpeedIncreaseFactor(movementSpeedIncreaseFactor: number);
260
295
  get evasionProbability(): number;
261
296
  set evasionProbability(evasionProbability: number);
297
+ get manaRegenerationRateIncreaseFactor(): number;
298
+ set manaRegenerationRateIncreaseFactor(manaRegenerationRateIncreaseFactor: number);
262
299
  get duration(): number;
300
+ set duration(duration: number);
263
301
  get remainingDuration(): number;
264
302
  set remainingDuration(remainingDuration: number);
303
+ get absorbedDamageFactor(): number;
304
+ set absorbedDamageFactor(absorbedDamageFactor: number);
305
+ get maximumDamageAbsorbed(): number;
306
+ set maximumDamageAbsorbed(maximumDamageAbsorbed: number);
307
+ get damageAbsorbed(): number;
308
+ get destroysOnMaximumDamageAbsorbed(): boolean;
309
+ set destroysOnMaximumDamageAbsorbed(destroysOnMaximumDamageAbsorbed: boolean);
310
+ get abilityCooldownFactor(): number;
311
+ set abilityCooldownFactor(abilityCooldownFactor: number);
312
+ onAbilityGained(ability: Ability): void;
313
+ onAbilityLost(ability: Ability): void;
265
314
  flashEffect(...parameters: [
266
315
  ...widgetOrXY: [] | [Widget] | [x: number, x: number],
267
316
  ...parametersOrDuration: [] | [EffectParameters] | [number]
268
317
  ]): void;
269
- flashSpecialEffect(...parameters: [...widget: [] | [Widget], ...duration: [] | [number]]): void;
318
+ flashSpecialEffect(...parameters: [
319
+ ...widgetOrXY: [] | [Widget] | [x: number, x: number],
320
+ ...parametersOrDuration: [] | [EffectParameters] | [number]
321
+ ]): void;
322
+ private flash;
323
+ expire(): void;
324
+ /** Dispels this buff, invoking onDispel before removing it. */
325
+ dispel(source?: Unit): void;
270
326
  protected onCreate(): void;
271
327
  protected onDestroy(): Destructor;
272
328
  static apply<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, ...args: Args): T | undefined;
273
329
  static getByTypeId<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, unit: Unit, typeId: ApplicableBuffTypeId): T | undefined;
330
+ /** Called for dispelling, never for a direct destroy() or replacement. */
331
+ onDispel(source: Unit | undefined): void;
274
332
  onExpiration(): void;
275
333
  onDeath(source: Unit | undefined): void;
276
334
  onDamageDealt(target: Unit, event: DamageEvent): void;