warscript 0.0.1-dev.9c98c3a → 0.0.1-dev.9d07b64

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 (345) 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/player.d.ts +18 -1
  10. package/core/types/player.lua +73 -25
  11. package/core/types/playerColor.lua +4 -3
  12. package/core/types/sound.d.ts +1 -1
  13. package/core/types/sound.lua +14 -9
  14. package/core/types/tileCell.d.ts +9 -3
  15. package/core/types/tileCell.lua +16 -0
  16. package/core/types/unit.d.ts +5 -0
  17. package/core/types/unit.lua +5 -0
  18. package/core/util.d.ts +3 -1
  19. package/core/util.lua +109 -3
  20. package/decl/native.d.ts +705 -7
  21. package/destroyable.d.ts +1 -0
  22. package/destroyable.lua +9 -0
  23. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  24. package/engine/ability-type-extended-tooltip.lua +44 -0
  25. package/engine/behavior.d.ts +10 -2
  26. package/engine/behavior.lua +157 -76
  27. package/engine/behaviour/ability/apply-buff.lua +4 -4
  28. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  29. package/engine/behaviour/ability/damage.d.ts +4 -0
  30. package/engine/behaviour/ability/damage.lua +19 -15
  31. package/engine/behaviour/ability/emulate-impact.lua +5 -4
  32. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  33. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  34. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  35. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  36. package/engine/behaviour/ability.d.ts +13 -6
  37. package/engine/behaviour/ability.lua +102 -9
  38. package/engine/behaviour/unit/stun-immunity.d.ts +7 -5
  39. package/engine/behaviour/unit/stun-immunity.lua +6 -5
  40. package/engine/behaviour/unit.d.ts +8 -3
  41. package/engine/behaviour/unit.lua +102 -24
  42. package/engine/buff.d.ts +112 -54
  43. package/engine/buff.lua +559 -280
  44. package/engine/index.d.ts +2 -1
  45. package/engine/internal/ability.d.ts +7 -0
  46. package/engine/internal/ability.lua +65 -36
  47. package/engine/internal/item/fields.d.ts +12 -0
  48. package/engine/internal/item/fields.lua +33 -0
  49. package/engine/internal/item/owner-cache.d.ts +5 -0
  50. package/engine/internal/item/owner-cache.lua +4 -0
  51. package/engine/internal/item+owner.d.ts +2 -0
  52. package/engine/internal/item+owner.lua +27 -4
  53. package/engine/internal/item.d.ts +20 -5
  54. package/engine/internal/item.lua +146 -57
  55. package/engine/internal/mechanics/cast-ability.lua +6 -3
  56. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  57. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  58. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  59. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  60. package/engine/internal/object-data/health-bonus.lua +16 -0
  61. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  62. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  63. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  64. package/engine/internal/object-data/mana-bonus.lua +16 -0
  65. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  66. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  67. package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
  68. package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
  69. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  70. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  71. package/engine/internal/unit/appearance.d.ts +15 -0
  72. package/engine/internal/unit/appearance.lua +85 -0
  73. package/engine/internal/unit/attributes.d.ts +17 -0
  74. package/engine/internal/unit/attributes.lua +46 -0
  75. package/engine/internal/unit/bonus.d.ts +17 -0
  76. package/engine/internal/unit/bonus.lua +113 -8
  77. package/engine/internal/unit/buff.d.ts +2 -2
  78. package/engine/internal/unit/buff.lua +34 -19
  79. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  80. package/engine/internal/unit/equipment-inventory.lua +233 -0
  81. package/engine/internal/unit/expiration-timer.lua +1 -1
  82. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  83. package/engine/internal/unit/extended-inventory.lua +99 -0
  84. package/engine/internal/unit/fly-height.d.ts +7 -0
  85. package/engine/internal/unit/fly-height.lua +20 -0
  86. package/engine/internal/unit/ignore-events-items.lua +10 -1
  87. package/engine/internal/unit/interrupts.d.ts +12 -0
  88. package/engine/internal/unit/interrupts.lua +28 -0
  89. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  90. package/engine/internal/unit/inventory.lua +87 -0
  91. package/engine/internal/unit/item-container.d.ts +25 -0
  92. package/engine/internal/unit/item-container.lua +11 -0
  93. package/engine/internal/unit/item-order-events.d.ts +17 -0
  94. package/engine/internal/unit/item-order-events.lua +67 -0
  95. package/engine/internal/unit/item-slot.d.ts +27 -0
  96. package/engine/internal/unit/item-slot.lua +92 -0
  97. package/engine/internal/unit/main-selected.lua +12 -27
  98. package/engine/internal/unit/order.d.ts +3 -3
  99. package/engine/internal/unit/order.lua +10 -10
  100. package/engine/internal/unit/range-event.d.ts +12 -0
  101. package/engine/internal/unit/range-event.lua +90 -0
  102. package/engine/internal/unit/scale.d.ts +7 -0
  103. package/engine/internal/unit/scale.lua +20 -0
  104. package/engine/internal/unit+ability.d.ts +2 -1
  105. package/engine/internal/unit+ability.lua +63 -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 +58 -32
  111. package/engine/internal/unit-missile-launch.lua +29 -19
  112. package/engine/internal/unit.d.ts +15 -29
  113. package/engine/internal/unit.lua +192 -272
  114. package/engine/local-client.d.ts +28 -0
  115. package/engine/local-client.lua +324 -54
  116. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  117. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  118. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  119. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  120. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  121. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  122. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  123. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  124. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  125. package/engine/object-data/auxiliary/item-class.lua +2 -0
  126. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  127. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  128. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  129. package/engine/object-data/auxiliary/order-type.lua +2 -0
  130. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  131. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  132. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  133. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  134. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  135. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  136. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  137. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  138. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  139. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  140. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  141. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  142. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  143. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  144. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  145. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  146. package/engine/object-data/entry/ability-type/blank-configurable.lua +2 -2
  147. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  148. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  149. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  150. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  151. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  152. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  153. package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
  154. package/engine/object-data/entry/ability-type/channel.lua +3 -3
  155. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  156. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  157. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  158. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  159. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  160. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  161. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  162. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  163. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  164. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  165. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  166. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  167. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  168. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  169. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  170. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  171. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  172. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  173. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  174. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  175. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  176. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  177. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  178. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  179. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  180. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  181. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  182. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  183. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  184. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  185. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  186. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  187. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  188. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  189. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  190. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  191. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  192. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  193. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  194. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  195. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  196. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  197. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  198. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  199. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  200. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  201. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  202. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  203. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  204. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  205. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  206. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  207. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  208. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  209. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  210. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  211. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  212. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  213. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  214. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  215. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  216. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  217. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  218. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  219. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  220. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  221. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  222. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  223. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  224. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  225. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  226. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  227. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  228. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  229. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  230. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  231. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  232. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  233. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  234. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  235. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  236. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  237. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  238. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  239. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  240. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  241. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  242. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  243. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  244. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  245. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  246. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  247. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  248. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  249. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  250. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  251. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  252. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  253. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  254. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  255. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  256. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  257. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  258. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  259. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  260. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  261. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  262. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  263. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  264. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  265. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  266. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  267. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  268. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  269. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  270. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  271. package/engine/object-data/entry/ability-type.d.ts +33 -8
  272. package/engine/object-data/entry/ability-type.lua +286 -11
  273. package/engine/object-data/entry/buff-type/applicable.lua +122 -111
  274. package/engine/object-data/entry/buff-type.d.ts +6 -2
  275. package/engine/object-data/entry/buff-type.lua +26 -0
  276. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  277. package/engine/object-data/entry/destructible-type.lua +181 -0
  278. package/engine/object-data/entry/item-type.d.ts +18 -3
  279. package/engine/object-data/entry/item-type.lua +84 -0
  280. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  281. package/engine/object-data/entry/lightning-type.lua +1 -1
  282. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  283. package/engine/object-data/entry/unit-type.d.ts +61 -2
  284. package/engine/object-data/entry/unit-type.lua +444 -52
  285. package/engine/object-data/entry/upgrade.d.ts +2 -2
  286. package/engine/object-data/entry.d.ts +6 -1
  287. package/engine/object-data/entry.lua +8 -0
  288. package/engine/object-field/ability.lua +2 -2
  289. package/engine/object-field/item.d.ts +22 -0
  290. package/engine/object-field/item.lua +118 -0
  291. package/engine/object-field/unit.d.ts +20 -5
  292. package/engine/object-field/unit.lua +61 -0
  293. package/engine/object-field.d.ts +10 -2
  294. package/engine/object-field.lua +268 -123
  295. package/engine/random.d.ts +1 -0
  296. package/engine/random.lua +8 -0
  297. package/engine/standard/entries/ability-type.d.ts +3102 -7
  298. package/engine/standard/entries/ability-type.lua +0 -6
  299. package/engine/standard/entries/buff-type.d.ts +45 -0
  300. package/engine/standard/entries/buff-type.lua +43 -0
  301. package/engine/standard/entries/item-type.d.ts +1299 -0
  302. package/engine/standard/entries/item-type.lua +2 -0
  303. package/engine/standard/entries/lightning-type.d.ts +42 -15
  304. package/engine/standard/entries/lightning-type.lua +0 -14
  305. package/engine/standard/entries/unit-type.d.ts +5 -0
  306. package/engine/standard/entries/unit-type.lua +5 -0
  307. package/engine/standard/fields/ability.d.ts +4 -4
  308. package/engine/standard/fields/ability.lua +4 -4
  309. package/engine/standard/fields/item.d.ts +4 -0
  310. package/engine/standard/fields/item.lua +6 -0
  311. package/engine/standard/fields/unit.d.ts +11 -3
  312. package/engine/standard/fields/unit.lua +15 -2
  313. package/engine/synchronization.d.ts +11 -0
  314. package/engine/synchronization.lua +77 -0
  315. package/engine/text-tag.lua +2 -1
  316. package/engine/unit.d.ts +10 -1
  317. package/engine/unit.lua +10 -1
  318. package/event.d.ts +1 -1
  319. package/lualib_bundle.lua +1 -1
  320. package/math.d.ts +2 -0
  321. package/math.lua +14 -0
  322. package/net/socket.lua +1 -1
  323. package/network.lua +25 -1
  324. package/objutil/buff.lua +10 -8
  325. package/objutil/object.lua +1 -1
  326. package/operation.d.ts +8 -1
  327. package/operation.lua +38 -18
  328. package/package.json +3 -23
  329. package/patch-lua.lua +15 -0
  330. package/utility/arrays.d.ts +7 -1
  331. package/utility/arrays.lua +17 -0
  332. package/utility/linked-map.d.ts +35 -0
  333. package/utility/linked-map.lua +107 -0
  334. package/utility/linked-set.d.ts +3 -1
  335. package/utility/linked-set.lua +27 -0
  336. package/utility/random.d.ts +102 -0
  337. package/utility/random.lua +273 -0
  338. package/utility/records.lua +20 -1
  339. package/utility/unordered-map.d.ts +27 -0
  340. package/utility/unordered-map.lua +99 -0
  341. package/engine/internal/unit/item.lua +0 -78
  342. /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
  343. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  344. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  345. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -3,6 +3,7 @@ local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
4
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
5
  local __TS__InstanceOf = ____lualib.__TS__InstanceOf
6
+ local __TS__ArraySome = ____lualib.__TS__ArraySome
6
7
  local ____exports = {}
7
8
  local ____unit = require("engine.internal.unit")
8
9
  local Unit = ____unit.Unit
@@ -18,8 +19,10 @@ local array = ____arrays.array
18
19
  local map = ____arrays.map
19
20
  local mapIndexed = ____arrays.mapIndexed
20
21
  local ____attachment_2Dpreset = require("engine.object-data.auxiliary.attachment-preset")
22
+ local attachmentPointToNodeFQN = ____attachment_2Dpreset.attachmentPointToNodeFQN
21
23
  local extractAttachmentPresetInputModelPath = ____attachment_2Dpreset.extractAttachmentPresetInputModelPath
22
24
  local extractAttachmentPresetInputNodeFQN = ____attachment_2Dpreset.extractAttachmentPresetInputNodeFQN
25
+ local splitAttachmentNodeFQN = ____attachment_2Dpreset.splitAttachmentNodeFQN
23
26
  local toEffectPreset = ____attachment_2Dpreset.toEffectPreset
24
27
  local ____combat_2Dclassification = require("engine.object-data.auxiliary.combat-classification")
25
28
  local combatClassificationsToStringArray = ____combat_2Dclassification.combatClassificationsToStringArray
@@ -40,11 +43,17 @@ local Sound3D = ____sound.Sound3D
40
43
  local SoundSettings = ____sound.SoundSettings
41
44
  local ____lua_2Dsets = require("utility.lua-sets")
42
45
  local luaSetOf = ____lua_2Dsets.luaSetOf
46
+ local ____local_2Dclient = require("engine.local-client")
47
+ local LocalClient = ____local_2Dclient.LocalClient
43
48
  local castAnimationFQNByAbilityTypeId = {}
44
49
  local isButtonVisibleFalseAbilityTypes = {}
45
50
  local casterCastingEffectPresetsByAbilityTypeId = {}
46
51
  local casterChannelingEffectPresetsByAbilityTypeId = {}
47
52
  local targetCastingEffectPresetsByAbilityTypeId = {}
53
+ local targetChannelingEffectPresetsByAbilityTypeId = {}
54
+ local targetChannelingEffectPresetsSDByAbilityTypeId = {}
55
+ local targetChannelingEffectPresetsHDByAbilityTypeId = {}
56
+ local targetChannelingEffectPresetsDEByAbilityTypeId = {}
48
57
  local targetEffectSoundPresetByAbilityTypeId = {}
49
58
  ____exports.AbilityType = __TS__Class()
50
59
  local AbilityType = ____exports.AbilityType
@@ -141,13 +150,13 @@ __TS__SetDescriptor(
141
150
  )
142
151
  __TS__SetDescriptor(
143
152
  AbilityType.prototype,
144
- "casterAttachmentPresets",
153
+ "casterEffectPresets",
145
154
  {
146
155
  get = function(self)
147
156
  return self:getAttachmentPresetListField("acat", {"acap", "aca1"})
148
157
  end,
149
- set = function(self, casterAttachmentPresets)
150
- self:setAttachmentPresetListField("acat", {"acap", "aca1"}, "acac", casterAttachmentPresets)
158
+ set = function(self, casterEffectPresets)
159
+ self:setAttachmentPresetListField("acat", {"acap", "aca1"}, "acac", casterEffectPresets)
151
160
  end
152
161
  },
153
162
  true
@@ -165,6 +174,45 @@ __TS__SetDescriptor(
165
174
  },
166
175
  true
167
176
  )
177
+ __TS__SetDescriptor(
178
+ AbilityType.prototype,
179
+ "effectModelPathsSD",
180
+ {
181
+ get = function(self)
182
+ return self:getStringsField("aeat:sd")
183
+ end,
184
+ set = function(self, effectModelPathsSD)
185
+ self:setStringsField("aeat:sd", effectModelPathsSD)
186
+ end
187
+ },
188
+ true
189
+ )
190
+ __TS__SetDescriptor(
191
+ AbilityType.prototype,
192
+ "effectModelPathsHD",
193
+ {
194
+ get = function(self)
195
+ return self:getStringsField("aeat:hd")
196
+ end,
197
+ set = function(self, effectModelPathsHD)
198
+ self:setStringsField("aeat:hd", effectModelPathsHD)
199
+ end
200
+ },
201
+ true
202
+ )
203
+ __TS__SetDescriptor(
204
+ AbilityType.prototype,
205
+ "effectModelPathsDE",
206
+ {
207
+ get = function(self)
208
+ return self:getStringsField("aeat:de")
209
+ end,
210
+ set = function(self, effectModelPathsDE)
211
+ self:setStringsField("aeat:de", effectModelPathsDE)
212
+ end
213
+ },
214
+ true
215
+ )
168
216
  __TS__SetDescriptor(
169
217
  AbilityType.prototype,
170
218
  "iconPath",
@@ -204,6 +252,19 @@ __TS__SetDescriptor(
204
252
  },
205
253
  true
206
254
  )
255
+ __TS__SetDescriptor(
256
+ AbilityType.prototype,
257
+ "iconPathDE",
258
+ {
259
+ get = function(self)
260
+ return self:getStringField("aart:de")
261
+ end,
262
+ set = function(self, iconPathDE)
263
+ self:setStringField("aart:de", iconPathDE)
264
+ end
265
+ },
266
+ true
267
+ )
207
268
  __TS__SetDescriptor(
208
269
  AbilityType.prototype,
209
270
  "isButtonVisible",
@@ -326,6 +387,19 @@ __TS__SetDescriptor(
326
387
  },
327
388
  true
328
389
  )
390
+ __TS__SetDescriptor(
391
+ AbilityType.prototype,
392
+ "missileModelPathDE",
393
+ {
394
+ get = function(self)
395
+ return self:getStringField("amat:de")
396
+ end,
397
+ set = function(self, missileModelPathDE)
398
+ self:setStringField("amat:de", missileModelPathDE)
399
+ end
400
+ },
401
+ true
402
+ )
329
403
  __TS__SetDescriptor(
330
404
  AbilityType.prototype,
331
405
  "missileMovementArc",
@@ -354,13 +428,30 @@ __TS__SetDescriptor(
354
428
  )
355
429
  __TS__SetDescriptor(
356
430
  AbilityType.prototype,
357
- "specialAttachmentPreset",
431
+ "specialEffectModelPaths",
432
+ {
433
+ get = function(self)
434
+ return self:getStringsField("asat")
435
+ end,
436
+ set = function(self, specialEffectModelPaths)
437
+ self:setStringsField("asat", specialEffectModelPaths)
438
+ end
439
+ },
440
+ true
441
+ )
442
+ __TS__SetDescriptor(
443
+ AbilityType.prototype,
444
+ "specialEffectAttachmentPoint",
358
445
  {
359
446
  get = function(self)
360
- return self:getAttachmentPresetField("asat", "aspt")
447
+ local nodeName, nodeQualifiers = splitAttachmentNodeFQN(self:getStringField("aspt"))
448
+ return {nodeName = nodeName, nodeQualifiers = nodeQualifiers}
361
449
  end,
362
- set = function(self, specialAttachmentPreset)
363
- self:setAttachmentPresetField("asat", "aspt", specialAttachmentPreset)
450
+ set = function(self, specialEffectAttachmentPoint)
451
+ self:setStringField(
452
+ "aspt",
453
+ attachmentPointToNodeFQN(specialEffectAttachmentPoint)
454
+ )
364
455
  end
365
456
  },
366
457
  true
@@ -378,6 +469,58 @@ __TS__SetDescriptor(
378
469
  },
379
470
  true
380
471
  )
472
+ __TS__SetDescriptor(
473
+ AbilityType.prototype,
474
+ "targetChannelingEffectPresets",
475
+ {
476
+ get = function(self)
477
+ return targetChannelingEffectPresetsByAbilityTypeId[self.id] or ({})
478
+ end,
479
+ set = function(self, targetChannelingEffectPresets)
480
+ targetChannelingEffectPresetsByAbilityTypeId[self.id] = map(targetChannelingEffectPresets, toEffectPreset)
481
+ end
482
+ },
483
+ true
484
+ )
485
+ __TS__SetDescriptor(
486
+ AbilityType.prototype,
487
+ "targetChannelingEffectPresetsSD",
488
+ {
489
+ get = function(self)
490
+ return targetChannelingEffectPresetsSDByAbilityTypeId[self.id] or self.targetChannelingEffectPresets
491
+ end,
492
+ set = function(self, targetChannelingEffectPresetsSD)
493
+ targetChannelingEffectPresetsSDByAbilityTypeId[self.id] = map(targetChannelingEffectPresetsSD, toEffectPreset)
494
+ end
495
+ },
496
+ true
497
+ )
498
+ __TS__SetDescriptor(
499
+ AbilityType.prototype,
500
+ "targetChannelingEffectPresetsHD",
501
+ {
502
+ get = function(self)
503
+ return targetChannelingEffectPresetsHDByAbilityTypeId[self.id] or self.targetChannelingEffectPresets
504
+ end,
505
+ set = function(self, targetChannelingEffectPresetsHD)
506
+ targetChannelingEffectPresetsHDByAbilityTypeId[self.id] = map(targetChannelingEffectPresetsHD, toEffectPreset)
507
+ end
508
+ },
509
+ true
510
+ )
511
+ __TS__SetDescriptor(
512
+ AbilityType.prototype,
513
+ "targetChannelingEffectPresetsDE",
514
+ {
515
+ get = function(self)
516
+ return targetChannelingEffectPresetsDEByAbilityTypeId[self.id] or self.targetChannelingEffectPresets
517
+ end,
518
+ set = function(self, targetChannelingEffectPresetsDE)
519
+ targetChannelingEffectPresetsDEByAbilityTypeId[self.id] = map(targetChannelingEffectPresetsDE, toEffectPreset)
520
+ end
521
+ },
522
+ true
523
+ )
381
524
  __TS__SetDescriptor(
382
525
  AbilityType.prototype,
383
526
  "targetEffectPresets",
@@ -459,6 +602,33 @@ __TS__SetDescriptor(
459
602
  },
460
603
  true
461
604
  )
605
+ __TS__SetDescriptor(
606
+ AbilityType.prototype,
607
+ "targetEffectPresetsDE",
608
+ {
609
+ get = function(self)
610
+ return self:getAttachmentPresetListField(
611
+ "atat:de",
612
+ array(
613
+ 6,
614
+ function(i) return ("ata" .. tostring(i)) .. ":de" end
615
+ )
616
+ )
617
+ end,
618
+ set = function(self, targetEffectPresetsDE)
619
+ self:setAttachmentPresetListField(
620
+ "atat:de",
621
+ array(
622
+ 6,
623
+ function(i) return ("ata" .. tostring(i)) .. ":de" end
624
+ ),
625
+ "atac:de",
626
+ targetEffectPresetsDE
627
+ )
628
+ end
629
+ },
630
+ true
631
+ )
462
632
  __TS__SetDescriptor(
463
633
  AbilityType.prototype,
464
634
  "turnOffButtonPositionX",
@@ -1099,18 +1269,123 @@ local function handleAbilityChannelingStartEvent(caster, ability)
1099
1269
  end
1100
1270
  casterChannelingEffectsByCaster[caster] = effects
1101
1271
  end
1272
+ local targetChannelingEffectsDataByAbilityTypeId = postcompile(function()
1273
+ local function toData(presets)
1274
+ if presets == nil then
1275
+ return nil
1276
+ end
1277
+ local attachmentPoints = map(presets, extractAttachmentPresetInputNodeFQN)
1278
+ local parameters = map(presets, "parameters")
1279
+ return {
1280
+ modelPaths = map(presets, extractAttachmentPresetInputModelPath),
1281
+ attachmentPoints = __TS__ArraySome(
1282
+ attachmentPoints,
1283
+ function(____, attachmentPoint) return attachmentPoint ~= "" end
1284
+ ) and attachmentPoints or nil,
1285
+ parameters = __TS__ArraySome(
1286
+ presets,
1287
+ function(____, preset) return preset.parameters ~= nil end
1288
+ ) and parameters or nil
1289
+ }
1290
+ end
1291
+ local abilityTypeIds = {}
1292
+ for ____, presetsByAbilityTypeId in ipairs({targetChannelingEffectPresetsByAbilityTypeId, targetChannelingEffectPresetsSDByAbilityTypeId, targetChannelingEffectPresetsHDByAbilityTypeId, targetChannelingEffectPresetsDEByAbilityTypeId}) do
1293
+ for abilityTypeId in pairs(presetsByAbilityTypeId) do
1294
+ abilityTypeIds[abilityTypeId] = true
1295
+ end
1296
+ end
1297
+ local result = {}
1298
+ for abilityTypeId in pairs(abilityTypeIds) do
1299
+ local presets = targetChannelingEffectPresetsByAbilityTypeId[abilityTypeId]
1300
+ local presetsSD = targetChannelingEffectPresetsSDByAbilityTypeId[abilityTypeId]
1301
+ local presetsHD = targetChannelingEffectPresetsHDByAbilityTypeId[abilityTypeId]
1302
+ local presetsDE = targetChannelingEffectPresetsDEByAbilityTypeId[abilityTypeId]
1303
+ local ____math_max_8 = math.max
1304
+ local ____opt_0 = presetsSD or presets
1305
+ local ____temp_6 = ____opt_0 and #____opt_0 or 0
1306
+ local ____opt_2 = presetsHD or presets
1307
+ local ____temp_7 = ____opt_2 and #____opt_2 or 0
1308
+ local ____opt_4 = presetsDE or presets
1309
+ result[abilityTypeId] = {
1310
+ effectCount = ____math_max_8(____temp_6, ____temp_7, ____opt_4 and #____opt_4 or 0),
1311
+ data = toData(presets),
1312
+ dataSD = toData(presetsSD),
1313
+ dataHD = toData(presetsHD),
1314
+ dataDE = toData(presetsDE)
1315
+ }
1316
+ end
1317
+ return result
1318
+ end)
1319
+ local targetChannelingEffectsByCaster = {}
1320
+ local function createTargetChannelingEffects(caster, abilityTypeId, xOrWidget, y)
1321
+ local effectsData = targetChannelingEffectsDataByAbilityTypeId[abilityTypeId]
1322
+ if effectsData == nil then
1323
+ return
1324
+ end
1325
+ local graphicsMode = LocalClient.graphicsMode
1326
+ local ____temp_10
1327
+ if graphicsMode == 0 then
1328
+ ____temp_10 = effectsData.dataSD
1329
+ else
1330
+ local ____temp_9
1331
+ if graphicsMode == 1 then
1332
+ ____temp_9 = effectsData.dataHD
1333
+ else
1334
+ ____temp_9 = effectsData.dataDE
1335
+ end
1336
+ ____temp_10 = ____temp_9
1337
+ end
1338
+ local data = ____temp_10 or effectsData.data
1339
+ local modelPaths = data and data.modelPaths
1340
+ local attachmentPoints = data and data.attachmentPoints
1341
+ local parameters = data and data.parameters
1342
+ local effects = {}
1343
+ for i = 1, effectsData.effectCount do
1344
+ local effectModelPath = modelPaths and modelPaths[i] or ""
1345
+ local effectParameters = parameters and parameters[i]
1346
+ if type(xOrWidget) == "number" then
1347
+ effects[i] = Effect:create(effectModelPath, xOrWidget, y, effectParameters)
1348
+ else
1349
+ local attachmentPoint = attachmentPoints and attachmentPoints[i]
1350
+ if attachmentPoint == nil or attachmentPoint == "" then
1351
+ attachmentPoint = "origin"
1352
+ end
1353
+ effects[i] = Effect:create(effectModelPath, xOrWidget, attachmentPoint, effectParameters)
1354
+ end
1355
+ end
1356
+ targetChannelingEffectsByCaster[caster] = effects
1357
+ end
1358
+ local function handleAbilityWidgetTargetChannelingStartEvent(caster, ability, target)
1359
+ createTargetChannelingEffects(caster, ability.typeId, target)
1360
+ end
1361
+ local function handleAbilityPointTargetChannelingStartEvent(caster, ability, x, y)
1362
+ createTargetChannelingEffects(caster, ability.typeId, x, y)
1363
+ end
1102
1364
  local function handleAbilityStopChannelingEvent(caster)
1103
- local effects = casterChannelingEffectsByCaster[caster]
1104
- if effects ~= nil then
1105
- for i = 1, #effects do
1106
- effects[i]:destroy()
1365
+ local casterEffects = casterChannelingEffectsByCaster[caster]
1366
+ if casterEffects ~= nil then
1367
+ for i = 1, #casterEffects do
1368
+ casterEffects[i]:destroy()
1107
1369
  end
1108
1370
  casterChannelingEffectsByCaster[caster] = nil
1109
1371
  end
1372
+ local targetEffects = targetChannelingEffectsByCaster[caster]
1373
+ if targetEffects ~= nil then
1374
+ for i = 1, #targetEffects do
1375
+ targetEffects[i]:destroy()
1376
+ end
1377
+ targetChannelingEffectsByCaster[caster] = nil
1378
+ end
1110
1379
  end
1111
1380
  for abilityTypeId in pairs(casterChannelingEffectModelPathsByAbilityTypeId) do
1112
1381
  Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityChannelingStartEvent)
1113
1382
  Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1114
1383
  Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1115
1384
  end
1385
+ for abilityTypeId in pairs(targetChannelingEffectsDataByAbilityTypeId) do
1386
+ Unit.abilityWidgetTargetChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityWidgetTargetChannelingStartEvent)
1387
+ Unit.abilityPointTargetChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityPointTargetChannelingStartEvent)
1388
+ Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1389
+ Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1390
+ end
1116
1391
  return ____exports
@@ -65,123 +65,127 @@ function ApplicableBuffType.wrap(self, other)
65
65
  return __TS__New(____exports.ApplicableBuffType, other.object)
66
66
  end
67
67
  ApplicableBuffType.BASE_ID = fourCC("BHbz")
68
- local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorUpgradeIdByApplicatorAbilityTypeId = table.unpack(postcompile(function()
69
- local function prepareAbilityType(abilityTypeConstructor, applicableBuffType)
70
- local abilityType = abilityTypeConstructor:create()
71
- abilityType.isInternal = true
72
- abilityType.levelCount = applicableBuffType.levelCount
73
- abilityType.buttonPositionX = 0
74
- abilityType.buttonPositionY = -11
75
- abilityType.casterAttachmentPresets = {}
76
- abilityType.targetEffectPresets = {}
77
- abilityType.casterEffectSoundPresetId = nil
78
- abilityType.learnLevelMinimum = 6
79
- abilityType.race = "other"
80
- abilityType.shouldCheckTechTreeDependencies = false
81
- abilityType.techTreeDependencies = {}
82
- abilityType.allowedTargetCombatClassifications = combatClassificationsOf(
83
- 4,
84
- 2,
85
- 2097152,
86
- 8,
87
- 1048576,
88
- 16
89
- )
90
- abilityType.areaOfEffect = 0
91
- abilityType.castRange = 999999
92
- abilityType.cooldown = 0
93
- abilityType.manaCost = 0
94
- abilityType.buffDuration = 0
95
- abilityType.heroBuffDuration = 0
96
- return abilityType
97
- end
98
- local multilevelPhysicalPositiveApplicatorAbilityTypes = {}
99
- local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId = {}
100
- for applicableBuffType in pairs(compiletimeApplicableBuffTypes) do
101
- local applicatorAbilityTypeIdByApplicatorType = {}
102
- if applicableBuffType.resistanceType == 1 or applicableBuffType.resistanceType == nil then
103
- if applicableBuffType.polarity == 2 or applicableBuffType.polarity == nil then
104
- local applicatorAbilityType = prepareAbilityType(CurseAbilityType, applicableBuffType)
105
- applicatorAbilityType.missProbability = 0
106
- applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
107
- applicatorAbilityTypeIdByApplicatorType[852190] = applicatorAbilityType.id
68
+ local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorUpgradeIdByApplicatorAbilityTypeId = table.unpack(
69
+ postcompile(function()
70
+ local function prepareAbilityType(abilityTypeConstructor, applicableBuffType)
71
+ local abilityType = abilityTypeConstructor:create()
72
+ abilityType.isInternal = true
73
+ abilityType.levelCount = applicableBuffType.levelCount
74
+ abilityType.buttonPositionX = 0
75
+ abilityType.buttonPositionY = -11
76
+ abilityType.casterEffectPresets = {}
77
+ abilityType.targetEffectPresets = {}
78
+ abilityType.casterEffectSoundPresetId = nil
79
+ abilityType.learnLevelMinimum = 6
80
+ abilityType.race = "other"
81
+ abilityType.shouldCheckTechTreeDependencies = false
82
+ abilityType.techTreeDependencies = {}
83
+ abilityType.allowedTargetCombatClassifications = combatClassificationsOf(
84
+ 4,
85
+ 2,
86
+ 2097152,
87
+ 8,
88
+ 1048576,
89
+ 16
90
+ )
91
+ abilityType.areaOfEffect = 0
92
+ abilityType.castRange = 999999
93
+ abilityType.cooldown = 0
94
+ abilityType.manaCost = 0
95
+ abilityType.buffDuration = 0
96
+ abilityType.heroBuffDuration = 0
97
+ return abilityType
98
+ end
99
+ local multilevelPhysicalPositiveApplicatorAbilityTypes = {}
100
+ local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId = {}
101
+ for applicableBuffType in pairs(compiletimeApplicableBuffTypes) do
102
+ local applicatorAbilityTypeIdByApplicatorType = {}
103
+ if applicableBuffType.resistanceType == 1 or applicableBuffType.resistanceType == nil then
104
+ if applicableBuffType.polarity == 2 or applicableBuffType.polarity == nil then
105
+ local applicatorAbilityType = prepareAbilityType(CurseAbilityType, applicableBuffType)
106
+ applicatorAbilityType.missProbability = 0
107
+ applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
108
+ applicatorAbilityTypeIdByApplicatorType[852190] = applicatorAbilityType.id
109
+ end
110
+ if applicableBuffType.polarity == 1 or applicableBuffType.polarity == nil then
111
+ local applicatorAbilityType = prepareAbilityType(BloodLustAbilityType, applicableBuffType)
112
+ applicatorAbilityType.attackSpeedIncreaseFactor = 0
113
+ applicatorAbilityType.movementSpeedIncreaseFactor = 0
114
+ applicatorAbilityType.scaleIncrease = 0
115
+ applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
116
+ applicatorAbilityTypeIdByApplicatorType[852101] = applicatorAbilityType.id
117
+ end
108
118
  end
109
- if applicableBuffType.polarity == 1 or applicableBuffType.polarity == nil then
110
- local applicatorAbilityType = prepareAbilityType(BloodLustAbilityType, applicableBuffType)
111
- applicatorAbilityType.attackSpeedIncreaseFactor = 0
112
- applicatorAbilityType.movementSpeedIncreaseFactor = 0
113
- applicatorAbilityType.scaleIncrease = 0
119
+ if applicableBuffType.resistanceType == 2 or applicableBuffType.resistanceType == nil then
120
+ if applicableBuffType.polarity == 2 or applicableBuffType.polarity == nil then
121
+ local applicatorAbilityType = prepareAbilityType(SlowPoisonAbilityType, applicableBuffType)
122
+ applicatorAbilityType.damagePerSecond = 0
123
+ applicatorAbilityType.movementSpeedDecreaseFactor = 0
124
+ applicatorAbilityType.attackSpeedDecreaseFactor = 0
125
+ applicatorAbilityType.isDamageStacking = false
126
+ applicatorAbilityType.isMovementSpeedFactorStacking = false
127
+ applicatorAbilityType.isAttackSpeedFactorStacking = false
128
+ applicatorAbilityType.isAbleToKill = false
129
+ applicatorAbilityType.buffTypeIds = {applicableBuffType.id, applicableBuffType.id}
130
+ applicatorAbilityTypeIdByApplicatorType[852173] = applicatorAbilityType.id
131
+ end
132
+ if applicableBuffType.polarity == 1 or applicableBuffType.polarity == nil then
133
+ local applicatorAbilityType = prepareAbilityType(BerserkAbilityType, applicableBuffType)
134
+ applicatorAbilityType.attackSpeedIncreaseFactor = 0
135
+ applicatorAbilityType.movementSpeedIncreaseFactor = 0
136
+ applicatorAbilityType.receivedDamageIncreaseFactor = 0
137
+ applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
138
+ if applicatorAbilityType.levelCount > 1 then
139
+ multilevelPhysicalPositiveApplicatorAbilityTypes[#multilevelPhysicalPositiveApplicatorAbilityTypes + 1] = applicatorAbilityType
140
+ end
141
+ applicatorAbilityTypeIdByApplicatorType[852100] = applicatorAbilityType.id
142
+ end
143
+ end
144
+ if applicableBuffType.polarity == 0 or applicableBuffType.polarity == nil then
145
+ local applicatorAbilityType = prepareAbilityType(PermanentImmolationAbilityType, applicableBuffType)
146
+ applicatorAbilityType.levelCount = 1
147
+ applicatorAbilityType.damagePerInterval = 0
148
+ applicatorAbilityType.castRange = 0
149
+ applicatorAbilityType.buffDuration = MAXIMUM_INTEGER
150
+ applicatorAbilityType.heroBuffDuration = MAXIMUM_INTEGER
151
+ applicatorAbilityType.allowedTargetCombatClassifications = combatClassificationsOf(1)
114
152
  applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
115
- applicatorAbilityTypeIdByApplicatorType[852101] = applicatorAbilityType.id
153
+ applicatorAbilityTypeIdByApplicatorType[0] = applicatorAbilityType.id
116
154
  end
155
+ applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId[applicableBuffType.id] = applicatorAbilityTypeIdByApplicatorType
117
156
  end
118
- if applicableBuffType.resistanceType == 2 or applicableBuffType.resistanceType == nil then
119
- if applicableBuffType.polarity == 2 or applicableBuffType.polarity == nil then
120
- local applicatorAbilityType = prepareAbilityType(SlowPoisonAbilityType, applicableBuffType)
121
- applicatorAbilityType.damagePerSecond = 0
122
- applicatorAbilityType.movementSpeedDecreaseFactor = 0
123
- applicatorAbilityType.attackSpeedDecreaseFactor = 0
124
- applicatorAbilityType.isDamageStacking = false
125
- applicatorAbilityType.isMovementSpeedFactorStacking = false
126
- applicatorAbilityType.isAttackSpeedFactorStacking = false
127
- applicatorAbilityType.isAbleToKill = false
128
- applicatorAbilityType.buffTypeIds = {applicableBuffType.id, applicableBuffType.id}
129
- applicatorAbilityTypeIdByApplicatorType[852173] = applicatorAbilityType.id
130
- end
131
- if applicableBuffType.polarity == 1 or applicableBuffType.polarity == nil then
132
- local applicatorAbilityType = prepareAbilityType(BerserkAbilityType, applicableBuffType)
133
- applicatorAbilityType.attackSpeedIncreaseFactor = 0
134
- applicatorAbilityType.movementSpeedIncreaseFactor = 0
135
- applicatorAbilityType.receivedDamageIncreaseFactor = 0
136
- applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
137
- if applicatorAbilityType.levelCount > 1 then
138
- multilevelPhysicalPositiveApplicatorAbilityTypes[#multilevelPhysicalPositiveApplicatorAbilityTypes + 1] = applicatorAbilityType
157
+ local applicatorUpgradeIds = {}
158
+ local applicatorUpgradeIdByApplicatorAbilityTypeId = {}
159
+ for ____, multilevelPhysicalPositiveApplicatorAbilityTypesChunk in ipairs(chunked(multilevelPhysicalPositiveApplicatorAbilityTypes, 4)) do
160
+ local maxLevelCount = max(map(multilevelPhysicalPositiveApplicatorAbilityTypesChunk, "levelCount"))
161
+ local applicatorAbilityTypeIds = map(multilevelPhysicalPositiveApplicatorAbilityTypesChunk, "id")
162
+ local applicatorUpgrade = BlankUpgrade:create()
163
+ applicatorUpgrade.isInternal = true
164
+ applicatorUpgrade.levelCount = maxLevelCount - 1
165
+ applicatorUpgrade.effects = map(
166
+ applicatorAbilityTypeIds,
167
+ function(applicatorAbilityTypeId)
168
+ return {type = "rlev", bonusBase = 1, bonusIncrement = 1, abilityTypeId = applicatorAbilityTypeId}
139
169
  end
140
- applicatorAbilityTypeIdByApplicatorType[852100] = applicatorAbilityType.id
170
+ )
171
+ applicatorUpgradeIds[#applicatorUpgradeIds + 1] = applicatorUpgrade.id
172
+ for ____, applicatorAbilityTypeId in ipairs(applicatorAbilityTypeIds) do
173
+ applicatorUpgradeIdByApplicatorAbilityTypeId[applicatorAbilityTypeId] = applicatorUpgrade.id
141
174
  end
142
175
  end
143
- if applicableBuffType.polarity == 0 or applicableBuffType.polarity == nil then
144
- local applicatorAbilityType = prepareAbilityType(PermanentImmolationAbilityType, applicableBuffType)
145
- applicatorAbilityType.levelCount = 1
146
- applicatorAbilityType.damagePerInterval = 0
147
- applicatorAbilityType.castRange = 0
148
- applicatorAbilityType.buffDuration = MAXIMUM_INTEGER
149
- applicatorAbilityType.heroBuffDuration = MAXIMUM_INTEGER
150
- applicatorAbilityType.allowedTargetCombatClassifications = combatClassificationsOf(1)
151
- applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
152
- applicatorAbilityTypeIdByApplicatorType[0] = applicatorAbilityType.id
176
+ for ____, unitType in ipairs(UnitType:getAll()) do
177
+ local ____array_0 = __TS__SparseArrayNew(table.unpack(unitType.affectingUpgradeIds))
178
+ __TS__SparseArrayPush(
179
+ ____array_0,
180
+ table.unpack(applicatorUpgradeIds)
181
+ )
182
+ unitType.affectingUpgradeIds = {__TS__SparseArraySpread(____array_0)}
153
183
  end
154
- applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId[applicableBuffType.id] = applicatorAbilityTypeIdByApplicatorType
155
- end
156
- local applicatorUpgradeIds = {}
157
- local applicatorUpgradeIdByApplicatorAbilityTypeId = {}
158
- for ____, multilevelPhysicalPositiveApplicatorAbilityTypesChunk in ipairs(chunked(multilevelPhysicalPositiveApplicatorAbilityTypes, 4)) do
159
- local maxLevelCount = max(map(multilevelPhysicalPositiveApplicatorAbilityTypesChunk, "levelCount"))
160
- local applicatorAbilityTypeIds = map(multilevelPhysicalPositiveApplicatorAbilityTypesChunk, "id")
161
- local applicatorUpgrade = BlankUpgrade:create()
162
- applicatorUpgrade.isInternal = true
163
- applicatorUpgrade.levelCount = maxLevelCount - 1
164
- applicatorUpgrade.effects = map(
165
- applicatorAbilityTypeIds,
166
- function(applicatorAbilityTypeId)
167
- return {type = "rlev", bonusBase = 1, bonusIncrement = 1, abilityTypeId = applicatorAbilityTypeId}
168
- end
169
- )
170
- applicatorUpgradeIds[#applicatorUpgradeIds + 1] = applicatorUpgrade.id
171
- for ____, applicatorAbilityTypeId in ipairs(applicatorAbilityTypeIds) do
172
- applicatorUpgradeIdByApplicatorAbilityTypeId[applicatorAbilityTypeId] = applicatorUpgrade.id
173
- end
174
- end
175
- for ____, unitType in ipairs(UnitType:getAll()) do
176
- local ____array_0 = __TS__SparseArrayNew(table.unpack(unitType.affectingUpgradeIds))
177
- __TS__SparseArrayPush(
178
- ____array_0,
179
- table.unpack(applicatorUpgradeIds)
180
- )
181
- unitType.affectingUpgradeIds = {__TS__SparseArraySpread(____array_0)}
182
- end
183
- return {applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorUpgradeIdByApplicatorAbilityTypeId}
184
- end))
184
+ return {applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorUpgradeIdByApplicatorAbilityTypeId}
185
+ end),
186
+ 1,
187
+ 2
188
+ )
185
189
  local EVASION_ABILITY_TYPE_IDS = postcompile(function()
186
190
  return AbilityType:getAllIdsByBaseIds(map({
187
191
  "AEev",
@@ -301,14 +305,21 @@ preparePhysicalPositiveApplicatorAbility = function(ability, level, duration)
301
305
  setAbilityRealLevelField(ability, ABILITY_RLF_DURATION_NORMAL, level, duration)
302
306
  setAbilityRealLevelField(ability, ABILITY_RLF_DURATION_HERO, level, duration)
303
307
  end
304
- ---
308
+ --- Removes the ability that keeps a hidden buff on the unit. A leftover applicator
309
+ -- makes the next hidden application fail, since the unit already has the ability.
310
+ --
305
311
  -- @internal For use by internal systems only.
306
- ____exports.removeBuff = function(unit, applicableBuffTypeId)
312
+ ____exports.removeBuffApplicator = function(unit, applicableBuffTypeId)
307
313
  local ____opt_3 = applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId[applicableBuffTypeId]
308
314
  local applicatorAbilityTypeId = ____opt_3 and ____opt_3[0]
309
315
  if applicatorAbilityTypeId ~= nil then
310
316
  unitRemoveAbility(unit, applicatorAbilityTypeId)
311
317
  end
318
+ end
319
+ ---
320
+ -- @internal For use by internal systems only.
321
+ ____exports.removeBuff = function(unit, applicableBuffTypeId)
322
+ ____exports.removeBuffApplicator(unit, applicableBuffTypeId)
312
323
  return unitRemoveAbility(unit, applicableBuffTypeId)
313
324
  end
314
325
  return ____exports