warscript 0.0.1-dev.76448ae → 0.0.1-dev.7769f27

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 (354) hide show
  1. package/attributes.d.ts +1 -0
  2. package/attributes.lua +9 -0
  3. package/core/dummy.lua +4 -2
  4. package/core/types/effect.d.ts +11 -1
  5. package/core/types/effect.lua +43 -77
  6. package/core/types/frame.d.ts +16 -2
  7. package/core/types/frame.lua +131 -65
  8. package/core/types/handle.lua +9 -9
  9. package/core/types/item.d.ts +1 -0
  10. package/core/types/item.lua +1 -0
  11. package/core/types/player.d.ts +18 -1
  12. package/core/types/player.lua +73 -25
  13. package/core/types/playerCamera.lua +44 -0
  14. package/core/types/playerColor.lua +4 -3
  15. package/core/types/sound.d.ts +1 -1
  16. package/core/types/sound.lua +14 -9
  17. package/core/types/tileCell.d.ts +18 -3
  18. package/core/types/tileCell.lua +108 -0
  19. package/core/types/timer.d.ts +3 -2
  20. package/core/types/timer.lua +22 -2
  21. package/core/types/unit.d.ts +5 -0
  22. package/core/types/unit.lua +5 -0
  23. package/core/util.d.ts +3 -1
  24. package/core/util.lua +109 -3
  25. package/decl/native.d.ts +707 -9
  26. package/destroyable.d.ts +1 -0
  27. package/destroyable.lua +9 -0
  28. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  29. package/engine/ability-type-extended-tooltip.lua +44 -0
  30. package/engine/behavior.d.ts +12 -1
  31. package/engine/behavior.lua +199 -65
  32. package/engine/behaviour/ability/apply-buff.lua +4 -4
  33. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  34. package/engine/behaviour/ability/damage.d.ts +4 -0
  35. package/engine/behaviour/ability/damage.lua +19 -15
  36. package/engine/behaviour/ability/emulate-impact.lua +5 -4
  37. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  38. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  39. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  40. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  41. package/engine/behaviour/ability.d.ts +13 -6
  42. package/engine/behaviour/ability.lua +56 -1
  43. package/engine/behaviour/unit/stun-immunity.d.ts +9 -5
  44. package/engine/behaviour/unit/stun-immunity.lua +17 -7
  45. package/engine/behaviour/unit.d.ts +16 -5
  46. package/engine/behaviour/unit.lua +127 -22
  47. package/engine/buff.d.ts +73 -27
  48. package/engine/buff.lua +424 -193
  49. package/engine/index.d.ts +2 -1
  50. package/engine/internal/ability.d.ts +10 -1
  51. package/engine/internal/ability.lua +91 -45
  52. package/engine/internal/item/fields.d.ts +12 -0
  53. package/engine/internal/item/fields.lua +33 -0
  54. package/engine/internal/item/owner-cache.d.ts +5 -0
  55. package/engine/internal/item/owner-cache.lua +4 -0
  56. package/engine/internal/item+owner.d.ts +2 -0
  57. package/engine/internal/item+owner.lua +37 -8
  58. package/engine/internal/item.d.ts +27 -14
  59. package/engine/internal/item.lua +185 -82
  60. package/engine/internal/mechanics/cast-ability.lua +6 -3
  61. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  62. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  63. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  64. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  65. package/engine/internal/object-data/health-bonus.lua +16 -0
  66. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  67. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  68. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  69. package/engine/internal/object-data/mana-bonus.lua +16 -0
  70. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  71. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  72. package/engine/internal/unit/ability.d.ts +14 -14
  73. package/engine/internal/unit/ability.lua +72 -45
  74. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  75. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  76. package/engine/internal/unit/appearance.d.ts +15 -0
  77. package/engine/internal/unit/appearance.lua +85 -0
  78. package/engine/internal/unit/attributes.d.ts +17 -0
  79. package/engine/internal/unit/attributes.lua +46 -0
  80. package/engine/internal/unit/bonus.d.ts +14 -0
  81. package/engine/internal/unit/bonus.lua +102 -8
  82. package/engine/internal/unit/buff.d.ts +2 -2
  83. package/engine/internal/unit/buff.lua +34 -19
  84. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  85. package/engine/internal/unit/equipment-inventory.lua +233 -0
  86. package/engine/internal/unit/expiration-timer.lua +1 -1
  87. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  88. package/engine/internal/unit/extended-inventory.lua +99 -0
  89. package/engine/internal/unit/fly-height.d.ts +7 -0
  90. package/engine/internal/unit/fly-height.lua +20 -0
  91. package/engine/internal/unit/ignore-events-items.lua +10 -1
  92. package/engine/internal/unit/interrupts.d.ts +12 -0
  93. package/engine/internal/unit/interrupts.lua +28 -0
  94. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  95. package/engine/internal/unit/inventory.lua +87 -0
  96. package/engine/internal/unit/item-container.d.ts +25 -0
  97. package/engine/internal/unit/item-container.lua +11 -0
  98. package/engine/internal/unit/item-order-events.d.ts +17 -0
  99. package/engine/internal/unit/item-order-events.lua +67 -0
  100. package/engine/internal/unit/item-slot.d.ts +27 -0
  101. package/engine/internal/unit/item-slot.lua +92 -0
  102. package/engine/internal/unit/main-selected.lua +12 -27
  103. package/engine/internal/unit/order.d.ts +3 -3
  104. package/engine/internal/unit/order.lua +10 -10
  105. package/engine/internal/unit/range-event.d.ts +12 -0
  106. package/engine/internal/unit/range-event.lua +90 -0
  107. package/engine/internal/unit/scale.d.ts +7 -0
  108. package/engine/internal/unit/scale.lua +20 -0
  109. package/engine/internal/unit+ability.d.ts +2 -1
  110. package/engine/internal/unit+ability.lua +73 -3
  111. package/engine/internal/unit+bonus.lua +3 -3
  112. package/engine/internal/unit+damage.d.ts +9 -0
  113. package/engine/internal/unit+damage.lua +33 -0
  114. package/engine/internal/unit+rally.lua +9 -31
  115. package/engine/internal/unit-missile-data.lua +58 -32
  116. package/engine/internal/unit-missile-launch.lua +64 -33
  117. package/engine/internal/unit.d.ts +19 -31
  118. package/engine/internal/unit.lua +225 -296
  119. package/engine/local-client.d.ts +28 -0
  120. package/engine/local-client.lua +324 -54
  121. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  122. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  123. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  124. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  125. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  126. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  127. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  128. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  129. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  130. package/engine/object-data/auxiliary/item-class.lua +2 -0
  131. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  132. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  133. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  134. package/engine/object-data/auxiliary/order-type.lua +2 -0
  135. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  136. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  137. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  138. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  139. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  140. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  141. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  142. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  143. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  144. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  145. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  146. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  147. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  148. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  149. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  150. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  151. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  152. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  153. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  154. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  155. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  156. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  157. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  158. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  159. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  160. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  161. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  162. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  163. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  164. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  165. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  166. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  167. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  168. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  169. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  170. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  171. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  172. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  173. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  174. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  175. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  176. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  177. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  178. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  179. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  180. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  181. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  182. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  183. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  184. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  185. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  186. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  187. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  188. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  189. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  190. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  191. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  192. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  193. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  194. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  195. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  196. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  197. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  198. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  199. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  200. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  201. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  202. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  203. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  204. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  205. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  206. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  207. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  208. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  209. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  210. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  211. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  212. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  213. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  214. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  215. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  216. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  217. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  218. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  219. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  220. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  221. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  222. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  223. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  224. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  225. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  226. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  227. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  228. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  229. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  230. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  231. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  232. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  233. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  234. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  235. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  236. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  237. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  238. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  239. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  240. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  241. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  242. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  243. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  244. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  245. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  246. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  247. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  248. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  249. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  250. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  251. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  252. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  253. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  254. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  255. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  256. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  257. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  258. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  259. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  260. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  261. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  262. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  263. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  264. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  265. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  266. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  267. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  268. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  269. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  270. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  271. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  272. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  273. package/engine/object-data/entry/ability-type.d.ts +31 -6
  274. package/engine/object-data/entry/ability-type.lua +287 -9
  275. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  276. package/engine/object-data/entry/buff-type.d.ts +6 -2
  277. package/engine/object-data/entry/buff-type.lua +26 -0
  278. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  279. package/engine/object-data/entry/destructible-type.lua +181 -0
  280. package/engine/object-data/entry/item-type.d.ts +18 -3
  281. package/engine/object-data/entry/item-type.lua +84 -0
  282. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  283. package/engine/object-data/entry/lightning-type.lua +1 -1
  284. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  285. package/engine/object-data/entry/unit-type.d.ts +51 -2
  286. package/engine/object-data/entry/unit-type.lua +415 -37
  287. package/engine/object-data/entry/upgrade.d.ts +2 -2
  288. package/engine/object-data/entry.d.ts +6 -1
  289. package/engine/object-data/entry.lua +8 -0
  290. package/engine/object-field/ability.d.ts +3 -3
  291. package/engine/object-field/ability.lua +9 -8
  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 +20 -5
  295. package/engine/object-field/unit.lua +61 -0
  296. package/engine/object-field.d.ts +12 -4
  297. package/engine/object-field.lua +273 -126
  298. package/engine/random.d.ts +10 -0
  299. package/engine/random.lua +21 -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 -3
  315. package/engine/standard/fields/unit.lua +15 -2
  316. package/engine/synchronization.d.ts +11 -0
  317. package/engine/synchronization.lua +77 -0
  318. package/engine/text-tag.lua +4 -2
  319. package/engine/unit.d.ts +10 -1
  320. package/engine/unit.lua +10 -1
  321. package/event.d.ts +1 -1
  322. package/lualib_bundle.lua +1 -1
  323. package/math.d.ts +2 -0
  324. package/math.lua +14 -0
  325. package/net/socket.lua +1 -1
  326. package/network.lua +25 -1
  327. package/objutil/buff.lua +11 -9
  328. package/objutil/object.lua +1 -1
  329. package/operation.d.ts +8 -1
  330. package/operation.lua +38 -18
  331. package/package.json +3 -23
  332. package/patch-lua.lua +15 -0
  333. package/patch-lualib.lua +1 -1
  334. package/utility/arrays.d.ts +8 -1
  335. package/utility/arrays.lua +25 -0
  336. package/utility/callback-array.d.ts +17 -0
  337. package/utility/callback-array.lua +61 -0
  338. package/utility/linked-map.d.ts +35 -0
  339. package/utility/linked-map.lua +107 -0
  340. package/utility/linked-set.d.ts +4 -1
  341. package/utility/linked-set.lua +46 -1
  342. package/utility/lua-maps.d.ts +11 -2
  343. package/utility/lua-maps.lua +33 -2
  344. package/utility/random.d.ts +102 -0
  345. package/utility/random.lua +273 -0
  346. package/utility/records.lua +20 -1
  347. package/utility/types.d.ts +3 -0
  348. package/utility/unordered-map.d.ts +27 -0
  349. package/utility/unordered-map.lua +99 -0
  350. package/engine/internal/unit/item.lua +0 -78
  351. /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
  352. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  353. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  354. /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
@@ -38,11 +41,19 @@ local ____sound = require("core.types.sound")
38
41
  local isSoundLabelCustom = ____sound.isSoundLabelCustom
39
42
  local Sound3D = ____sound.Sound3D
40
43
  local SoundSettings = ____sound.SoundSettings
44
+ local ____lua_2Dsets = require("utility.lua-sets")
45
+ local luaSetOf = ____lua_2Dsets.luaSetOf
46
+ local ____local_2Dclient = require("engine.local-client")
47
+ local LocalClient = ____local_2Dclient.LocalClient
41
48
  local castAnimationFQNByAbilityTypeId = {}
42
49
  local isButtonVisibleFalseAbilityTypes = {}
43
50
  local casterCastingEffectPresetsByAbilityTypeId = {}
44
51
  local casterChannelingEffectPresetsByAbilityTypeId = {}
45
52
  local targetCastingEffectPresetsByAbilityTypeId = {}
53
+ local targetChannelingEffectPresetsByAbilityTypeId = {}
54
+ local targetChannelingEffectPresetsSDByAbilityTypeId = {}
55
+ local targetChannelingEffectPresetsHDByAbilityTypeId = {}
56
+ local targetChannelingEffectPresetsDEByAbilityTypeId = {}
46
57
  local targetEffectSoundPresetByAbilityTypeId = {}
47
58
  ____exports.AbilityType = __TS__Class()
48
59
  local AbilityType = ____exports.AbilityType
@@ -163,6 +174,45 @@ __TS__SetDescriptor(
163
174
  },
164
175
  true
165
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
+ )
166
216
  __TS__SetDescriptor(
167
217
  AbilityType.prototype,
168
218
  "iconPath",
@@ -202,6 +252,19 @@ __TS__SetDescriptor(
202
252
  },
203
253
  true
204
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
+ )
205
268
  __TS__SetDescriptor(
206
269
  AbilityType.prototype,
207
270
  "isButtonVisible",
@@ -324,6 +387,19 @@ __TS__SetDescriptor(
324
387
  },
325
388
  true
326
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
+ )
327
403
  __TS__SetDescriptor(
328
404
  AbilityType.prototype,
329
405
  "missileMovementArc",
@@ -352,13 +428,30 @@ __TS__SetDescriptor(
352
428
  )
353
429
  __TS__SetDescriptor(
354
430
  AbilityType.prototype,
355
- "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",
356
445
  {
357
446
  get = function(self)
358
- return self:getAttachmentPresetField("asat", "aspt")
447
+ local nodeName, nodeQualifiers = splitAttachmentNodeFQN(self:getStringField("aspt"))
448
+ return {nodeName = nodeName, nodeQualifiers = nodeQualifiers}
359
449
  end,
360
- set = function(self, specialAttachmentPreset)
361
- self:setAttachmentPresetField("asat", "aspt", specialAttachmentPreset)
450
+ set = function(self, specialEffectAttachmentPoint)
451
+ self:setStringField(
452
+ "aspt",
453
+ attachmentPointToNodeFQN(specialEffectAttachmentPoint)
454
+ )
362
455
  end
363
456
  },
364
457
  true
@@ -376,6 +469,58 @@ __TS__SetDescriptor(
376
469
  },
377
470
  true
378
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
+ )
379
524
  __TS__SetDescriptor(
380
525
  AbilityType.prototype,
381
526
  "targetEffectPresets",
@@ -457,6 +602,33 @@ __TS__SetDescriptor(
457
602
  },
458
603
  true
459
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
+ )
460
632
  __TS__SetDescriptor(
461
633
  AbilityType.prototype,
462
634
  "turnOffButtonPositionX",
@@ -1004,9 +1176,10 @@ for abilityTypeId, soundPresetId in pairs(postcompile(function() return targetEf
1004
1176
  )
1005
1177
  end
1006
1178
  end
1179
+ local unsupportedEffectSoundAbilityTypeIds = luaSetOf(fourCC("AAns"))
1007
1180
  Unit.abilityChannelingStartEvent:addListener(function(caster, ability)
1008
1181
  local soundPresetId = ability:getField(ABILITY_SF_EFFECT_SOUND)
1009
- if isSoundLabelCustom(soundPresetId) then
1182
+ if isSoundLabelCustom(soundPresetId) or soundPresetId ~= "" and unsupportedEffectSoundAbilityTypeIds[ability.parentTypeId] ~= nil then
1010
1183
  Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, caster)
1011
1184
  end
1012
1185
  end)
@@ -1096,18 +1269,123 @@ local function handleAbilityChannelingStartEvent(caster, ability)
1096
1269
  end
1097
1270
  casterChannelingEffectsByCaster[caster] = effects
1098
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
1099
1364
  local function handleAbilityStopChannelingEvent(caster)
1100
- local effects = casterChannelingEffectsByCaster[caster]
1101
- if effects ~= nil then
1102
- for i = 1, #effects do
1103
- effects[i]:destroy()
1365
+ local casterEffects = casterChannelingEffectsByCaster[caster]
1366
+ if casterEffects ~= nil then
1367
+ for i = 1, #casterEffects do
1368
+ casterEffects[i]:destroy()
1104
1369
  end
1105
1370
  casterChannelingEffectsByCaster[caster] = nil
1106
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
1107
1379
  end
1108
1380
  for abilityTypeId in pairs(casterChannelingEffectModelPathsByAbilityTypeId) do
1109
1381
  Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityChannelingStartEvent)
1110
1382
  Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1111
1383
  Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1112
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
1113
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.casterAttachmentPresets = {}
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
153
- 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
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)}
173
183
  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",
@@ -3,9 +3,9 @@ import { TupleOf } from "../../../utility/types";
3
3
  import { AttachmentPreset, AttachmentPresetInput } from "../auxiliary/attachment-preset";
4
4
  import { Race } from "../auxiliary/race";
5
5
  import { SoundPresetName } from "../auxiliary/sound-preset-name";
6
- import { ObjectDataEntry, ObjectDataEntryConstructor, ObjectDataEntryId } from "../entry";
6
+ import { ObjectDataEntry, ObjectDataEntryConstructor, CustomObjectDataEntryId } from "../entry";
7
7
  import { LightningTypeId } from "./lightning-type";
8
- export type BuffTypeId = ObjectDataEntryId & number & {
8
+ export type BuffTypeId = CustomObjectDataEntryId & number & {
9
9
  readonly __buffTypeId: unique symbol;
10
10
  };
11
11
  export type StandardBuffTypeId = BuffTypeId & {
@@ -24,6 +24,8 @@ export declare abstract class BuffType<Id extends BuffTypeId = BuffTypeId> exten
24
24
  set iconPathSD(iconPathSD: string);
25
25
  get iconPathHD(): string;
26
26
  set iconPathHD(iconPathHD: string);
27
+ get iconPathDE(): string;
28
+ set iconPathDE(iconPathDE: string);
27
29
  get isMissileHoming(): boolean;
28
30
  set isMissileHoming(isMissileHoming: boolean);
29
31
  get lightningTypeIds(): LightningTypeId[];
@@ -34,6 +36,8 @@ export declare abstract class BuffType<Id extends BuffTypeId = BuffTypeId> exten
34
36
  set missileModelPathSD(missileModelPathSD: string);
35
37
  get missileModelPathHD(): string;
36
38
  set missileModelPathHD(missileModelPathHD: string);
39
+ get missileModelPathDE(): string;
40
+ set missileModelPathDE(missileModelPathDE: string);
37
41
  get missileMovementArc(): number;
38
42
  set missileMovementArc(missileMovementArc: number);
39
43
  get missileMovementSpeed(): number;