warscript 0.0.1-dev.3eed609 → 0.0.1-dev.3f0a5ea

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 (346) 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 +2 -1
  11. package/core/types/player.lua +18 -13
  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 +7 -2
  16. package/core/types/tileCell.lua +11 -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 +4 -2
  27. package/engine/behavior.lua +69 -11
  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 +1 -1
  41. package/engine/behaviour/unit/stun-immunity.lua +5 -4
  42. package/engine/behaviour/unit.d.ts +1 -0
  43. package/engine/behaviour/unit.lua +14 -3
  44. package/engine/buff.d.ts +103 -55
  45. package/engine/buff.lua +486 -270
  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.lua +3 -3
  88. package/engine/internal/unit/ignore-events-items.lua +10 -1
  89. package/engine/internal/unit/interrupts.d.ts +12 -0
  90. package/engine/internal/unit/interrupts.lua +28 -0
  91. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  92. package/engine/internal/unit/inventory.lua +87 -0
  93. package/engine/internal/unit/item-container.d.ts +25 -0
  94. package/engine/internal/unit/item-container.lua +11 -0
  95. package/engine/internal/unit/item-order-events.d.ts +17 -0
  96. package/engine/internal/unit/item-order-events.lua +67 -0
  97. package/engine/internal/unit/item-slot.d.ts +27 -0
  98. package/engine/internal/unit/item-slot.lua +92 -0
  99. package/engine/internal/unit/order.d.ts +3 -3
  100. package/engine/internal/unit/order.lua +10 -10
  101. package/engine/internal/unit/range-event.d.ts +12 -0
  102. package/engine/internal/unit/range-event.lua +90 -0
  103. package/engine/internal/unit/scale.lua +3 -3
  104. package/engine/internal/unit+ability.d.ts +2 -1
  105. package/engine/internal/unit+ability.lua +73 -2
  106. package/engine/internal/unit+bonus.lua +3 -3
  107. package/engine/internal/unit+damage.d.ts +9 -0
  108. package/engine/internal/unit+damage.lua +33 -0
  109. package/engine/internal/unit+rally.lua +9 -31
  110. package/engine/internal/unit-missile-data.lua +96 -68
  111. package/engine/internal/unit-missile-launch.lua +25 -18
  112. package/engine/internal/unit.d.ts +4 -19
  113. package/engine/internal/unit.lua +132 -221
  114. package/engine/lightning.lua +4 -4
  115. package/engine/local-client.d.ts +27 -1
  116. package/engine/local-client.lua +298 -58
  117. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  118. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  119. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  120. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  121. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  122. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  123. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  124. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  125. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  126. package/engine/object-data/auxiliary/item-class.lua +2 -0
  127. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  128. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  129. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  130. package/engine/object-data/auxiliary/order-type.lua +2 -0
  131. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  132. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  133. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  134. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  135. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  136. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  137. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  138. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  139. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  140. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  141. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  142. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  143. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  144. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  145. package/engine/object-data/entry/ability-type/barrage.d.ts +12 -0
  146. package/engine/object-data/entry/ability-type/barrage.lua +52 -0
  147. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  148. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  149. package/engine/object-data/entry/ability-type/blank-configurable.lua +2 -2
  150. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  151. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  152. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  153. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  154. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  155. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  156. package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
  157. package/engine/object-data/entry/ability-type/channel.lua +3 -3
  158. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  159. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  160. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  161. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  162. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  163. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  164. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  165. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  166. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  167. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  168. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  169. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  170. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  171. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  172. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  173. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  174. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  175. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  176. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  177. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  178. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  179. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  180. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  181. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  182. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  183. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  184. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  185. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  186. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  187. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  188. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  189. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  190. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  191. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  192. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  193. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  194. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  195. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  196. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  197. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  198. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  199. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  200. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  201. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  202. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  203. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  204. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  205. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  206. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  207. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  208. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  209. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  210. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  211. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  212. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  213. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  214. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  215. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  216. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  217. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  218. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  219. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  220. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  221. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  222. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  223. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  224. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  225. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  226. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  227. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  228. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  229. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  230. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  231. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  232. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  233. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  234. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  235. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  236. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  237. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  238. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  239. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  240. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  241. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  242. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  243. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  244. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  245. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  246. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  247. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  248. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  249. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  250. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  251. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  252. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  253. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  254. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  255. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  256. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  257. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  258. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  259. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  260. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  261. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  262. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  263. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  264. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  265. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  266. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  267. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  268. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  269. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  270. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  271. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  272. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  273. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  274. package/engine/object-data/entry/ability-type.d.ts +35 -8
  275. package/engine/object-data/entry/ability-type.lua +299 -11
  276. package/engine/object-data/entry/buff-type/applicable.lua +122 -111
  277. package/engine/object-data/entry/buff-type.d.ts +6 -2
  278. package/engine/object-data/entry/buff-type.lua +26 -0
  279. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  280. package/engine/object-data/entry/destructible-type.lua +181 -0
  281. package/engine/object-data/entry/item-type.d.ts +18 -3
  282. package/engine/object-data/entry/item-type.lua +84 -0
  283. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  284. package/engine/object-data/entry/lightning-type.lua +1 -1
  285. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  286. package/engine/object-data/entry/unit-type.d.ts +57 -2
  287. package/engine/object-data/entry/unit-type.lua +412 -64
  288. package/engine/object-data/entry/upgrade.d.ts +2 -2
  289. package/engine/object-data/entry.d.ts +6 -1
  290. package/engine/object-data/entry.lua +8 -0
  291. package/engine/object-field/ability.lua +2 -2
  292. package/engine/object-field/item.d.ts +22 -0
  293. package/engine/object-field/item.lua +118 -0
  294. package/engine/object-field/unit.d.ts +7 -4
  295. package/engine/object-field/unit.lua +4 -0
  296. package/engine/object-field.d.ts +3 -1
  297. package/engine/object-field.lua +177 -119
  298. package/engine/random.d.ts +1 -0
  299. package/engine/random.lua +8 -0
  300. package/engine/standard/entries/ability-type.d.ts +3102 -7
  301. package/engine/standard/entries/ability-type.lua +0 -6
  302. package/engine/standard/entries/buff-type.d.ts +45 -0
  303. package/engine/standard/entries/buff-type.lua +43 -0
  304. package/engine/standard/entries/item-type.d.ts +1299 -0
  305. package/engine/standard/entries/item-type.lua +2 -0
  306. package/engine/standard/entries/lightning-type.d.ts +42 -15
  307. package/engine/standard/entries/lightning-type.lua +0 -14
  308. package/engine/standard/entries/unit-type.d.ts +5 -0
  309. package/engine/standard/entries/unit-type.lua +5 -0
  310. package/engine/standard/fields/ability.d.ts +2 -2
  311. package/engine/standard/fields/ability.lua +2 -2
  312. package/engine/standard/fields/item.d.ts +4 -0
  313. package/engine/standard/fields/item.lua +6 -0
  314. package/engine/standard/fields/unit.d.ts +11 -5
  315. package/engine/standard/fields/unit.lua +13 -4
  316. package/engine/text-tag.d.ts +17 -1
  317. package/engine/text-tag.lua +77 -40
  318. package/engine/unit.d.ts +8 -1
  319. package/engine/unit.lua +8 -1
  320. package/event.d.ts +1 -1
  321. package/lualib_bundle.lua +1 -1
  322. package/math.d.ts +2 -0
  323. package/math.lua +14 -0
  324. package/network.lua +25 -1
  325. package/objutil/buff.lua +10 -8
  326. package/objutil/object.lua +1 -1
  327. package/operation.d.ts +8 -1
  328. package/operation.lua +38 -18
  329. package/package.json +3 -23
  330. package/patch-lua.lua +15 -0
  331. package/utility/arrays.d.ts +7 -1
  332. package/utility/arrays.lua +17 -0
  333. package/utility/linked-map.d.ts +35 -0
  334. package/utility/linked-map.lua +107 -0
  335. package/utility/linked-set.d.ts +3 -1
  336. package/utility/linked-set.lua +27 -0
  337. package/utility/random.d.ts +102 -0
  338. package/utility/random.lua +273 -0
  339. package/utility/records.lua +20 -1
  340. package/utility/unordered-map.d.ts +27 -0
  341. package/utility/unordered-map.lua +99 -0
  342. package/engine/internal/unit/item.lua +0 -78
  343. /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
  344. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  345. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  346. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -7,29 +7,77 @@ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
7
7
  local ____exports = {}
8
8
  local ____behavior = require("engine.behavior")
9
9
  local Behavior = ____behavior.Behavior
10
- local ____unit = require("engine.unit")
10
+ local ____unit = require("engine.internal.unit")
11
11
  local Unit = ____unit.Unit
12
+ local UnitClassification = ____unit.UnitClassification
13
+ require("engine.internal.unit.ability")
14
+ require("engine.internal.unit+ability")
12
15
  local ____ability = require("engine.internal.ability")
13
16
  local Ability = ____ability.Ability
14
17
  local ____effect = require("core.types.effect")
15
18
  local Effect = ____effect.Effect
16
19
  local ____ability = require("engine.standard.fields.ability")
17
20
  local AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
21
+ local CASTER_EFFECT_COUNT_ABILITY_INTEGER_FIELD = ____ability.CASTER_EFFECT_COUNT_ABILITY_INTEGER_FIELD
18
22
  local CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = ____ability.CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD
19
23
  local CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
24
+ local CASTER_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD = ____ability.CASTER_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD
25
+ local DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD = ____ability.DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD
26
+ local DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD = ____ability.DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD
20
27
  local EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
21
28
  local MISSILE_ARC_ABILITY_FLOAT_FIELD = ____ability.MISSILE_ARC_ABILITY_FLOAT_FIELD
22
29
  local MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
23
30
  local MISSILE_SPEED_ABILITY_INTEGER_FIELD = ____ability.MISSILE_SPEED_ABILITY_INTEGER_FIELD
24
31
  local SPECIAL_EFFECT_ATTACHMENT_POINT_STRING_FIELD = ____ability.SPECIAL_EFFECT_ATTACHMENT_POINT_STRING_FIELD
25
32
  local SPECIAL_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.SPECIAL_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
33
+ local TARGET_EFFECT_COUNT_ABILITY_INTEGER_FIELD = ____ability.TARGET_EFFECT_COUNT_ABILITY_INTEGER_FIELD
34
+ local TARGET_EFFECT_FIFTH_ATTACHMENT_POINT_STRING_FIELD = ____ability.TARGET_EFFECT_FIFTH_ATTACHMENT_POINT_STRING_FIELD
26
35
  local TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = ____ability.TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD
36
+ local TARGET_EFFECT_FOURTH_ATTACHMENT_POINT_STRING_FIELD = ____ability.TARGET_EFFECT_FOURTH_ATTACHMENT_POINT_STRING_FIELD
27
37
  local TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
38
+ local TARGET_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD = ____ability.TARGET_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD
39
+ local TARGET_EFFECT_SIXTH_ATTACHMENT_POINT_STRING_FIELD = ____ability.TARGET_EFFECT_SIXTH_ATTACHMENT_POINT_STRING_FIELD
40
+ local TARGET_EFFECT_THIRD_ATTACHMENT_POINT_STRING_FIELD = ____ability.TARGET_EFFECT_THIRD_ATTACHMENT_POINT_STRING_FIELD
28
41
  local ____ability = require("engine.object-field.ability")
29
42
  local AbilityField = ____ability.AbilityField
30
43
  local AbilityLevelField = ____ability.AbilityLevelField
31
44
  local resolveCurrentAbilityDependentValue = ____ability.resolveCurrentAbilityDependentValue
45
+ local ____missile = require("core.types.missile")
46
+ local Missile = ____missile.Missile
47
+ local CASTER_EFFECT_ATTACHMENT_POINT_STRING_FIELDS = {CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD, CASTER_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD}
48
+ local TARGET_EFFECT_ATTACHMENT_POINT_STRING_FIELDS = {
49
+ TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD,
50
+ TARGET_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD,
51
+ TARGET_EFFECT_THIRD_ATTACHMENT_POINT_STRING_FIELD,
52
+ TARGET_EFFECT_FOURTH_ATTACHMENT_POINT_STRING_FIELD,
53
+ TARGET_EFFECT_FIFTH_ATTACHMENT_POINT_STRING_FIELD,
54
+ TARGET_EFFECT_SIXTH_ATTACHMENT_POINT_STRING_FIELD
55
+ }
56
+ --- Flashes every preset of an effect preset list (caster/target effects): each model at
57
+ -- its own attachment point. The effect count field limits the list; at least the first
58
+ -- model is always flashed, as abilities without the count set expect.
59
+ local function flashEffectPresets(ability, modelPathsField, attachmentPointFields, effectCountField, widget, ...)
60
+ local count = math.min(
61
+ math.max(
62
+ effectCountField:getValue(ability),
63
+ 1
64
+ ),
65
+ #attachmentPointFields
66
+ )
67
+ for i = 0, count - 1 do
68
+ local modelPath = modelPathsField:getValue(ability, i)
69
+ if modelPath ~= "" then
70
+ local attachmentPoint = attachmentPointFields[i + 1]:getValue(ability)
71
+ Effect:flash(modelPath, widget, attachmentPoint ~= "" and attachmentPoint or "origin", ...)
72
+ end
73
+ end
74
+ end
32
75
  local createBehaviorFunctionsByAbilityTypeId = {}
76
+ local function invokeOnMissileArrival(_missile, success, abilityBehavior, ...)
77
+ if success then
78
+ abilityBehavior:onMissileArrival(...)
79
+ end
80
+ end
33
81
  local exclusiveOnImpactHandlerAbilityBehaviorByAbility = setmetatable({}, {__mode = "k"})
34
82
  local function createUnitEventListener(key)
35
83
  return function(unit, ability, ...)
@@ -105,21 +153,31 @@ end
105
153
  function AbilityBehavior.prototype.resolveCurrentAbilityDependentValue(self, value)
106
154
  return resolveCurrentAbilityDependentValue(self.ability, value)
107
155
  end
156
+ function AbilityBehavior.prototype.getDuration(self, widget)
157
+ if __TS__InstanceOf(widget, Unit) then
158
+ if widget.isHero or widget:getField(UNIT_IF_LEVEL) >= 6 or widget:hasClassification(UnitClassification.RESISTANT) then
159
+ return self:resolveCurrentAbilityDependentValue(DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD)
160
+ end
161
+ end
162
+ return self:resolveCurrentAbilityDependentValue(DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD)
163
+ end
108
164
  function AbilityBehavior.prototype.flashCasterEffect(self, widget, ...)
109
- local attachmentPoint = CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
110
- Effect:flash(
111
- CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
165
+ flashEffectPresets(
166
+ self.ability,
167
+ CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD,
168
+ CASTER_EFFECT_ATTACHMENT_POINT_STRING_FIELDS,
169
+ CASTER_EFFECT_COUNT_ABILITY_INTEGER_FIELD,
112
170
  widget,
113
- attachmentPoint ~= "" and attachmentPoint or "origin",
114
171
  ...
115
172
  )
116
173
  end
117
174
  function AbilityBehavior.prototype.flashTargetEffect(self, widget, ...)
118
- local attachmentPoint = TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
119
- Effect:flash(
120
- TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
175
+ flashEffectPresets(
176
+ self.ability,
177
+ TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD,
178
+ TARGET_EFFECT_ATTACHMENT_POINT_STRING_FIELDS,
179
+ TARGET_EFFECT_COUNT_ABILITY_INTEGER_FIELD,
121
180
  widget,
122
- attachmentPoint ~= "" and attachmentPoint or "origin",
123
181
  ...
124
182
  )
125
183
  end
@@ -159,6 +217,28 @@ function AbilityBehavior.prototype.flashSpecialEffect(self, xOrWidget, yOrParame
159
217
  )
160
218
  end
161
219
  end
220
+ function AbilityBehavior.prototype.launchMissile(self, source, xOrWidget, yOrParameter, ...)
221
+ if type(xOrWidget) ~= "number" then
222
+ Missile:launch(
223
+ self.missileLaunchConfig,
224
+ source,
225
+ xOrWidget,
226
+ invokeOnMissileArrival,
227
+ self,
228
+ yOrParameter,
229
+ ...
230
+ )
231
+ else
232
+ Missile:launch(
233
+ self.missileLaunchConfig,
234
+ source,
235
+ vec2(xOrWidget, yOrParameter),
236
+ invokeOnMissileArrival,
237
+ self,
238
+ ...
239
+ )
240
+ end
241
+ end
162
242
  function AbilityBehavior.prototype.onCreate(self)
163
243
  end
164
244
  function AbilityBehavior.prototype.onValueChange(self, _value)
@@ -173,6 +253,18 @@ function AbilityBehavior.prototype.onCommand(self, caster, orderTypeStringId)
173
253
  end
174
254
  function AbilityBehavior.prototype.onCastingStart(self, caster)
175
255
  end
256
+ function AbilityBehavior.prototype.onWidgetTargetCastingStart(self, caster, target)
257
+ end
258
+ function AbilityBehavior.prototype.onUnitTargetCastingStart(self, caster, target)
259
+ end
260
+ function AbilityBehavior.prototype.onItemTargetCastingStart(self, caster, target)
261
+ end
262
+ function AbilityBehavior.prototype.onDestructibleTargetCastingStart(self, caster, target)
263
+ end
264
+ function AbilityBehavior.prototype.onPointTargetCastingStart(self, caster, x, y)
265
+ end
266
+ function AbilityBehavior.prototype.onNoTargetCastingStart(self, caster)
267
+ end
176
268
  function AbilityBehavior.prototype.onCastingFinish(self, caster)
177
269
  end
178
270
  function AbilityBehavior.prototype.onChannelingStart(self, caster)
@@ -257,6 +349,12 @@ __TS__SetDescriptor(
257
349
  Unit.abilityGainedEvent:addListener(createUnitEventListener("onUnitGainAbility"))
258
350
  Unit.abilityLostEvent:addListener(createUnitEventListener("onUnitLoseAbility"))
259
351
  Unit.abilityCastingStartEvent:addListener(createUnitEventListener("onCastingStart"))
352
+ Unit.abilityWidgetTargetCastingStartEvent:addListener(createUnitEventListener("onWidgetTargetCastingStart"))
353
+ Unit.abilityUnitTargetCastingStartEvent:addListener(createUnitEventListener("onUnitTargetCastingStart"))
354
+ Unit.abilityItemTargetCastingStartEvent:addListener(createUnitEventListener("onItemTargetCastingStart"))
355
+ Unit.abilityDestructibleTargetCastingStartEvent:addListener(createUnitEventListener("onDestructibleTargetCastingStart"))
356
+ Unit.abilityPointTargetCastingStartEvent:addListener(createUnitEventListener("onPointTargetCastingStart"))
357
+ Unit.abilityNoTargetCastingStartEvent:addListener(createUnitEventListener("onNoTargetCastingStart"))
260
358
  Unit.abilityCastingFinishEvent:addListener(createUnitEventListener("onCastingFinish"))
261
359
  Unit.abilityChannelingStartEvent:addListener(createUnitEventListener("onChannelingStart"))
262
360
  Unit.abilityWidgetTargetChannelingStartEvent:addListener(createUnitEventListener("onWidgetTargetChannelingStart"))
@@ -287,6 +385,19 @@ end)
287
385
  AbilityLevelField.valueChangeEvent:addListener(function(ability, field)
288
386
  ____exports.AbilityBehavior:forAll(ability, checkBehaviorOnValueChange, field)
289
387
  end)
388
+ local function checkBehaviorOnLevelChange(behavior)
389
+ local subscribedValues = subscribedValuesByAbilityBehavior[behavior]
390
+ if subscribedValues ~= nil then
391
+ for value in pairs(subscribedValues) do
392
+ if __TS__InstanceOf(value, AbilityLevelField) then
393
+ behavior:onValueChange(value)
394
+ end
395
+ end
396
+ end
397
+ end
398
+ Unit.abilityLevelChangedEvent:addListener(function(_, ability)
399
+ ____exports.AbilityBehavior:forAll(ability, checkBehaviorOnLevelChange)
400
+ end)
290
401
  Ability.onCreate:addListener(function(ability)
291
402
  local createBehaviorFunctions = createBehaviorFunctionsByAbilityTypeId[ability.typeId]
292
403
  if createBehaviorFunctions ~= nil then
@@ -7,7 +7,7 @@ import { Destructor } from "../../../destroyable";
7
7
  import { BehaviorPriority } from "../../behavior";
8
8
  export type StunImmunityUnitBehaviorParameters = {
9
9
  readonly priority?: BehaviorPriority;
10
- buffTypeIds?: LuaSet<BuffTypeId>;
10
+ buffTypeIds?: readonly BuffTypeId[];
11
11
  textTagPreset?: TextTagPreset;
12
12
  textTagText?: string;
13
13
  additionalAction?: (this: void, unit: Unit) => void;
@@ -8,14 +8,15 @@ local UnitBehavior = ____unit.UnitBehavior
8
8
  local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
9
9
  local AbilityType = ____ability_2Dtype.AbilityType
10
10
  local ____arrays = require("utility.arrays")
11
- local flatMapToLuaSet = ____arrays.flatMapToLuaSet
11
+ local distinct = ____arrays.distinct
12
+ local flatMap = ____arrays.flatMap
12
13
  local map = ____arrays.map
13
14
  local ____text_2Dtag = require("engine.text-tag")
14
15
  local TextTag = ____text_2Dtag.TextTag
15
16
  local ____timer = require("core.types.timer")
16
17
  local Timer = ____timer.Timer
17
18
  local DEFAULT_BUFF_TYPE_IDS = postcompile(function()
18
- return flatMapToLuaSet(
19
+ return distinct(flatMap(
19
20
  AbilityType:getAllByBaseIds(map({
20
21
  "AHtb",
21
22
  "AHbh",
@@ -41,11 +42,11 @@ local DEFAULT_BUFF_TYPE_IDS = postcompile(function()
41
42
  "ACcb"
42
43
  }, fourCC)),
43
44
  function(abilityType) return __TS__ArrayFlat(abilityType.buffTypeIds) end
44
- )
45
+ ))
45
46
  end)
46
47
  local function process(behavior)
47
48
  local hasRemovedBuffs = false
48
- for buffTypeId in pairs(behavior.parameters.buffTypeIds or DEFAULT_BUFF_TYPE_IDS) do
49
+ for ____, buffTypeId in ipairs(behavior.parameters.buffTypeIds or DEFAULT_BUFF_TYPE_IDS) do
49
50
  hasRemovedBuffs = hasRemovedBuffs or behavior.unit:removeBuff(buffTypeId)
50
51
  end
51
52
  if hasRemovedBuffs then
@@ -2,6 +2,7 @@
2
2
  import { Behavior, BehaviorPriority } from "../behavior";
3
3
  import { Ability } from "../internal/ability";
4
4
  import { DamageEvent, DamagingEvent, Unit } from "../internal/unit";
5
+ import "../internal/unit/equipment-inventory";
5
6
  import "../internal/unit+ability";
6
7
  import "../internal/unit-missile-launch";
7
8
  import { Item } from "../internal/item";
@@ -8,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,6 +22,8 @@ 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
28
  local createBehaviorFunctionsByUnitTypeId = {}
26
29
  local behaviorsByOwningPlayerEvent = {}
@@ -79,16 +82,24 @@ function UnitBehavior.prototype.onDestroy(self)
79
82
  end
80
83
  function UnitBehavior.prototype.getUnitBonus(self, bonusType)
81
84
  local ____opt_10 = self._bonusIdByBonusType
82
- local bonusId = ____opt_10 and ____opt_10[bonusType]
85
+ local bonusId = ____opt_10 and ____opt_10:get(bonusType)
83
86
  return bonusId == nil and 0 or getUnitBonus(self.object, bonusType, bonusId)
84
87
  end
85
88
  function UnitBehavior.prototype.addOrUpdateOrRemoveUnitBonus(self, bonusType, value)
86
89
  local bonusIdByBonusType = self._bonusIdByBonusType
87
90
  if bonusIdByBonusType == nil then
88
- bonusIdByBonusType = {}
91
+ bonusIdByBonusType = __TS__New(LinkedMap)
89
92
  self._bonusIdByBonusType = bonusIdByBonusType
90
93
  end
91
- 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
+ )
92
103
  end
93
104
  function UnitBehavior.prototype.registerOwningPlayerEvent(self, event, extractPlayer, listener)
94
105
  local listenerByBehavior = getOrPut(listenerByBehaviorByOwningPlayerEvent, event, mutableLuaMap)
package/engine/buff.d.ts CHANGED
@@ -14,6 +14,7 @@ import type { Widget } from "../core/types/widget";
14
14
  import { Destructor } from "../destroyable";
15
15
  import { Event } from "../event";
16
16
  import { AbilityBehavior } from "./behaviour/ability";
17
+ import { SoundPresetId } from "./object-data/entry/sound-preset";
17
18
  export type BuffConstructor<T extends Buff<any> = Buff<any>, Args extends any[] = any> = OmitConstructor<typeof Buff<any>> & (new (...args: Args) => T);
18
19
  type EnumParameterValueType<T extends number> = T | AbilityEnumLevelField<T>;
19
20
  type NumberParameterValueType = number | AbilityNumberField | AbilityNumberLevelField;
@@ -23,6 +24,13 @@ export type BuffPolarityParameterType = EnumParameterValueType<BuffPolarity>;
23
24
  export type BuffResistanceTypeParameterType = EnumParameterValueType<BuffResistanceType>;
24
25
  export declare class BuffUniqueGroup {
25
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
+ };
26
34
  export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
27
35
  spellStealPriority?: number;
28
36
  level?: number;
@@ -30,14 +38,7 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
30
38
  learnLevelMinimum?: number;
31
39
  source?: Unit;
32
40
  behaviorConstructors?: (new (unit: Unit) => UnitBehavior)[];
33
- abilityTypeIds?: Record<AbilityTypeId, {
34
- [numberField: (AbilityNumberField | AbilityNumberLevelField) & symbol]: NumberParameterValueType;
35
- } & {
36
- /** Default `true`. */
37
- readonly isButtonVisible?: boolean;
38
- /** Default is the level of the source ability or 0 if it is absent. */
39
- readonly level?: number;
40
- }>;
41
+ abilityTypeIds?: Partial<Record<AbilityTypeId, BuffAbilityParameters>>;
41
42
  damageUponDeathAllowedTargetCombatClassifications?: CombatClassifications | AbilityCombatClassificationsLevelField;
42
43
  damageUponDeath?: NumberParameterValueType;
43
44
  damageUponDeathRange?: NumberParameterValueType;
@@ -54,13 +55,17 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
54
55
  damageIncrease?: NumberParameterValueType;
55
56
  damageIncreaseFactor?: NumberParameterValueType;
56
57
  armorIncrease?: NumberParameterValueType;
57
- armorIncreaseFactor?: NumberParameterValueType;
58
+ maxHealthIncrease?: NumberParameterValueType;
59
+ maxManaIncrease?: NumberParameterValueType;
58
60
  attackSpeedIncreaseFactor?: NumberParameterValueType;
59
61
  movementSpeedIncreaseFactor?: NumberParameterValueType;
62
+ manaRegenerationRateIncreaseFactor?: NumberParameterValueType;
60
63
  evasionProbability?: NumberParameterValueType;
61
64
  missProbability?: NumberParameterValueType;
62
65
  damageFactor?: NumberParameterValueType;
63
66
  receivedDamageFactor?: NumberParameterValueType;
67
+ /** The factor of melee attack damage returned to the attacker, as Spiked Carapace. */
68
+ returnedMeleeDamageFactor?: NumberParameterValueType;
64
69
  receivedMagicDamageFactor?: NumberParameterValueType;
65
70
  durationIncreaseOnAutoAttack?: NumberParameterValueType;
66
71
  maximumRemainingDuration?: NumberParameterValueType;
@@ -76,12 +81,17 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
76
81
  maximumAutoAttackCount?: IntegerParameterValueType;
77
82
  maximumDamageDealtEventCount?: IntegerParameterValueType;
78
83
  maximumDamageReceivedEventCount?: IntegerParameterValueType;
84
+ absorbedDamageFactor?: NumberParameterValueType;
85
+ maximumDamageAbsorbed?: NumberParameterValueType;
86
+ destroysOnMaximumDamageAbsorbed?: BooleanParameterValueType;
79
87
  damageOnExpiration?: NumberParameterValueType;
80
88
  healingOnExpiration?: NumberParameterValueType;
81
89
  killsOnExpiration?: BooleanParameterValueType;
82
90
  explodesOnExpiration?: BooleanParameterValueType;
83
91
  abilityCooldownFactor?: NumberParameterValueType;
84
92
  uniqueGroup?: BuffUniqueGroup;
93
+ /** Played on the unit whenever the buff is destroyed, whatever the reason. */
94
+ destructionSoundPresetId?: SoundPresetId;
85
95
  } : BuffParameters & (T extends Buff<infer AdditionalParameters> ? AdditionalParameters : object);
86
96
  declare const enum BuffPropertyKey {
87
97
  STATE = 100,
@@ -89,52 +99,57 @@ declare const enum BuffPropertyKey {
89
99
  SOURCE = 102,
90
100
  DURATION = 103,
91
101
  UNIQUE_GROUP = 104,
92
- EFFECT_MODEL_PATH = 105,
93
- SPECIAL_EFFECT_MODEL_PATH = 106,
94
- DURATION_INCREASE_ON_AUTO_ATTACK = 107,
95
- MAXIMUM_DURATION = 108,
96
- MAXIMUM_REMAINING_DURATION = 109,
97
- DAMAGE_OVER_DURATION = 110,
98
- DAMAGE_PER_INTERVAL = 111,
99
- DAMAGE_INTERVAL = 112,
100
- REMAINING_DAMAGE_OVER_DURATION = 113,
101
- DAMAGE_INTERVAL_TIMER = 114,
102
- HEALING_OVER_DURATION = 115,
103
- HEALING_PER_INTERVAL = 116,
104
- HEALING_INTERVAL = 117,
105
- REMAINING_HEALING_OVER_DURATION = 118,
106
- HEALING_INTERVAL_TIMER = 119,
107
- DAMAGE_ON_EXPIRATION = 120,
108
- HEALING_ON_EXPIRATION = 121,
109
- DAMAGE_UPON_DEATH_ALLOWED_TARGET_CLASSIFICATIONS = 122,
110
- DAMAGE_UPON_DEATH = 123,
111
- DAMAGE_UPON_DEATH_RANGE = 124,
112
- MEDIUM_DAMAGE_UPON_DEATH = 125,
113
- MEDIUM_DAMAGE_UPON_DEATH_RANGE = 126,
114
- SMALL_DAMAGE_UPON_DEATH = 127,
115
- SMALL_DAMAGE_UPON_DEATH_RANGE = 128,
116
- AUTO_ATTACK_COUNT = 129,
117
- MAXIMUM_AUTO_ATTACK_COUNT = 130,
118
- DAMAGE_DEALT_EVENT_COUNT = 131,
119
- MAXIMUM_DAMAGE_DEALT_EVENT_COUNT = 132,
120
- DAMAGE_RECEIVED_EVENT_COUNT = 133,
121
- MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT = 134,
122
- TURNS_INTO_GHOST = 135,
123
- STUNS = 136,
124
- IGNORES_STUN_IMMUNITY = 137,
125
- DISABLES_AUTO_ATTACK = 138,
126
- PROVIDES_INVULNERABILITY = 139,
127
- KILLS_ON_EXPIRATION = 140,
128
- EXPLODES_ON_EXPIRATION = 141,
129
- MISS_PROBABILITY = 142,
130
- ABILITY_COOLDOWN_FACTOR = 143,
131
- ABILITY_COOLDOWN_MODIFIER = 144
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
132
147
  }
133
148
  export declare const enum BuffTypeIdSelectionPolicy {
134
149
  LEAST_DURATION = 0
135
150
  }
136
151
  export type BuffAdditionalParameters = Prohibit<Record<string, any>, keyof BuffParameters>;
137
- export type BuffConstructorParameters<AdditionalParameters extends BuffAdditionalParameters> = [
152
+ export type BuffConstructorParameters<T extends Buff<BuffAdditionalParameters>> = T extends Buff<infer AdditionalParameters> ? [
138
153
  ...typeId: [ApplicableBuffTypeId] | [
139
154
  typeIds: ReadonlyNonEmptyArray<ApplicableBuffTypeId>,
140
155
  typeIdSelectionPolicy: BuffTypeIdSelectionPolicy
@@ -144,8 +159,10 @@ export type BuffConstructorParameters<AdditionalParameters extends BuffAdditiona
144
159
  ...abilityOrParameters: [
145
160
  ability?: Ability | AbilityBehavior,
146
161
  parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
147
- ] | [parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>]
148
- ];
162
+ ] | [
163
+ parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
164
+ ]
165
+ ] : never;
149
166
  export declare class Buff<AdditionalParameters extends Prohibit<Record<string, any>, keyof BuffParameters> = object> extends UnitBehavior {
150
167
  private _unit;
151
168
  protected readonly __additionalParametersBrand?: AdditionalParameters;
@@ -154,6 +171,7 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
154
171
  private [BuffPropertyKey.SOURCE]?;
155
172
  private [BuffPropertyKey.DURATION];
156
173
  private [BuffPropertyKey.UNIQUE_GROUP]?;
174
+ private [BuffPropertyKey.DESTRUCTION_SOUND_PRESET_ID]?;
157
175
  private [BuffPropertyKey.EFFECT_MODEL_PATH];
158
176
  private [BuffPropertyKey.SPECIAL_EFFECT_MODEL_PATH];
159
177
  private [BuffPropertyKey.DURATION_INCREASE_ON_AUTO_ATTACK]?;
@@ -184,6 +202,10 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
184
202
  private [BuffPropertyKey.DAMAGE_DEALT_EVENT_COUNT]?;
185
203
  private [BuffPropertyKey.MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT]?;
186
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]?;
187
209
  private [BuffPropertyKey.TURNS_INTO_GHOST]?;
188
210
  private [BuffPropertyKey.STUNS]?;
189
211
  private [BuffPropertyKey.IGNORES_STUN_IMMUNITY]?;
@@ -198,10 +220,11 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
198
220
  readonly typeId: ApplicableBuffTypeId;
199
221
  readonly polarity: BuffPolarity;
200
222
  readonly resistanceType: BuffResistanceType;
201
- 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 : {
202
224
  [K in keyof Omit<AdditionalParameters, keyof BuffParameters>]: AdditionalParameters[K] extends AbilityDependentValue<infer T> ? T : AdditionalParameters[K];
203
225
  };
204
226
  private readonly handle;
227
+ readonly previousBuff?: Buff;
205
228
  private _timer?;
206
229
  private readonly _level?;
207
230
  private readonly _spellStealPriority?;
@@ -209,7 +232,7 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
209
232
  private readonly [BuffPropertyKey.MISS_PROBABILITY]?;
210
233
  private readonly _abilityTypeIds?;
211
234
  private _behaviors?;
212
- constructor(target: Unit, ...parameters: BuffConstructorParameters<AdditionalParameters>);
235
+ constructor(target: Unit, ...parameters: BuffConstructorParameters<Buff<AdditionalParameters>>);
213
236
  get level(): number;
214
237
  get remainingDamageOverDuration(): number;
215
238
  set remainingDamageOverDuration(remainingDamageOverDuration: number);
@@ -235,8 +258,14 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
235
258
  set damageFactor(damageFactor: number);
236
259
  get receivedDamageFactor(): number;
237
260
  set receivedDamageFactor(receivedDamageFactor: number);
261
+ get returnedMeleeDamageFactor(): number;
262
+ set returnedMeleeDamageFactor(returnedMeleeDamageFactor: number);
238
263
  get armorIncrease(): number;
239
264
  set armorIncrease(armorIncrease: number);
265
+ get maxHealthIncrease(): number;
266
+ set maxHealthIncrease(maxHealthIncrease: number);
267
+ get maxManaIncrease(): number;
268
+ set maxManaIncrease(maxManaIncrease: number);
240
269
  get turnsIntoGhost(): boolean;
241
270
  set turnsIntoGhost(turnsIntoGhost: boolean);
242
271
  get stuns(): boolean;
@@ -265,9 +294,19 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
265
294
  set movementSpeedIncreaseFactor(movementSpeedIncreaseFactor: number);
266
295
  get evasionProbability(): number;
267
296
  set evasionProbability(evasionProbability: number);
297
+ get manaRegenerationRateIncreaseFactor(): number;
298
+ set manaRegenerationRateIncreaseFactor(manaRegenerationRateIncreaseFactor: number);
268
299
  get duration(): number;
300
+ set duration(duration: number);
269
301
  get remainingDuration(): number;
270
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);
271
310
  get abilityCooldownFactor(): number;
272
311
  set abilityCooldownFactor(abilityCooldownFactor: number);
273
312
  onAbilityGained(ability: Ability): void;
@@ -276,11 +315,20 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
276
315
  ...widgetOrXY: [] | [Widget] | [x: number, x: number],
277
316
  ...parametersOrDuration: [] | [EffectParameters] | [number]
278
317
  ]): void;
279
- 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;
280
326
  protected onCreate(): void;
281
327
  protected onDestroy(): Destructor;
282
328
  static apply<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, ...args: Args): T | undefined;
283
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;
284
332
  onExpiration(): void;
285
333
  onDeath(source: Unit | undefined): void;
286
334
  onDamageDealt(target: Unit, event: DamageEvent): void;