warscript 0.0.1-dev.0fdd287 → 0.0.1-dev.10e558e

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