warscript 0.0.1-dev.88cffdd → 0.0.1-dev.89bc33b

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 (388) 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 +396 -328
  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/blank-passive-with-cooldown.d.ts +23 -0
  175. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  176. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  177. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  178. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  179. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  180. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  181. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  182. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  183. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  184. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  185. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  186. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  187. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  188. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  189. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  190. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  191. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  192. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  193. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  194. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  195. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  196. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  197. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  198. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  199. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  200. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  201. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  202. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  203. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  204. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  205. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  206. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  207. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  208. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  209. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  210. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  211. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  212. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  213. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  214. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  215. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  216. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  217. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  218. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  219. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  220. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  221. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  222. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  223. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  224. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  225. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  226. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  227. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  228. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  229. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  230. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  231. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  232. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  233. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  234. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  235. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  236. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  237. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  238. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  239. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  240. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  241. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  242. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  243. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  244. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  245. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  246. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  247. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  248. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  249. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  250. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  251. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  252. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  253. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  254. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  255. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  256. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  257. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  258. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  259. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  260. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  261. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  262. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  263. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  264. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  265. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  266. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  267. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  268. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  269. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  270. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  271. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  272. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  273. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  274. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  275. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  276. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  277. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  278. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  279. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  280. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  281. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  282. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  283. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  284. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  285. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  286. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  287. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  288. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  289. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  290. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  291. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  292. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  293. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  294. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  295. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  296. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  297. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  298. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  299. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  300. package/engine/object-data/entry/ability-type.d.ts +25 -6
  301. package/engine/object-data/entry/ability-type.lua +255 -11
  302. package/engine/object-data/entry/buff-type/applicable.lua +113 -105
  303. package/engine/object-data/entry/buff-type.d.ts +10 -12
  304. package/engine/object-data/entry/buff-type.lua +37 -27
  305. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  306. package/engine/object-data/entry/destructible-type.lua +181 -0
  307. package/engine/object-data/entry/item-type.d.ts +18 -3
  308. package/engine/object-data/entry/item-type.lua +84 -0
  309. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  310. package/engine/object-data/entry/lightning-type.lua +1 -1
  311. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  312. package/engine/object-data/entry/unit-type.d.ts +64 -6
  313. package/engine/object-data/entry/unit-type.lua +531 -85
  314. package/engine/object-data/entry/upgrade.d.ts +2 -2
  315. package/engine/object-data/entry.d.ts +6 -1
  316. package/engine/object-data/entry.lua +8 -0
  317. package/engine/object-field/ability.d.ts +4 -4
  318. package/engine/object-field/ability.lua +9 -8
  319. package/engine/object-field/item.d.ts +22 -0
  320. package/engine/object-field/item.lua +118 -0
  321. package/engine/object-field/unit.d.ts +72 -3
  322. package/engine/object-field/unit.lua +268 -7
  323. package/engine/object-field.d.ts +26 -7
  324. package/engine/object-field.lua +360 -119
  325. package/engine/random.d.ts +10 -0
  326. package/engine/random.lua +21 -0
  327. package/engine/standard/entries/ability-type.d.ts +3102 -7
  328. package/engine/standard/entries/ability-type.lua +0 -6
  329. package/engine/standard/entries/buff-type.d.ts +48 -0
  330. package/engine/standard/entries/buff-type.lua +46 -0
  331. package/engine/standard/entries/item-type.d.ts +1299 -0
  332. package/engine/standard/entries/item-type.lua +2 -0
  333. package/engine/standard/entries/lightning-type.d.ts +42 -15
  334. package/engine/standard/entries/lightning-type.lua +0 -14
  335. package/engine/standard/entries/unit-type.d.ts +5 -0
  336. package/engine/standard/entries/unit-type.lua +5 -0
  337. package/engine/standard/fields/ability.d.ts +2 -2
  338. package/engine/standard/fields/ability.lua +2 -2
  339. package/engine/standard/fields/item.d.ts +4 -0
  340. package/engine/standard/fields/item.lua +6 -0
  341. package/engine/standard/fields/unit.d.ts +12 -0
  342. package/engine/standard/fields/unit.lua +20 -0
  343. package/engine/synchronization.d.ts +11 -0
  344. package/engine/synchronization.lua +77 -0
  345. package/engine/text-tag.d.ts +36 -2
  346. package/engine/text-tag.lua +250 -10
  347. package/engine/unit.d.ts +11 -1
  348. package/engine/unit.lua +11 -1
  349. package/event.d.ts +1 -1
  350. package/lualib_bundle.lua +1 -1
  351. package/math.d.ts +2 -0
  352. package/math.lua +14 -0
  353. package/net/socket.lua +1 -1
  354. package/network.lua +25 -1
  355. package/objutil/buff.lua +12 -11
  356. package/objutil/object.lua +1 -1
  357. package/operation.d.ts +8 -1
  358. package/operation.lua +38 -18
  359. package/package.json +3 -23
  360. package/patch-lua.lua +15 -0
  361. package/patch-lualib.lua +1 -1
  362. package/utility/arrays.d.ts +9 -1
  363. package/utility/arrays.lua +28 -0
  364. package/utility/callback-array.d.ts +17 -0
  365. package/utility/callback-array.lua +61 -0
  366. package/utility/functions.d.ts +8 -0
  367. package/utility/functions.lua +13 -0
  368. package/utility/linked-map.d.ts +35 -0
  369. package/utility/linked-map.lua +107 -0
  370. package/utility/linked-set.d.ts +5 -1
  371. package/utility/linked-set.lua +49 -1
  372. package/utility/lua-maps.d.ts +15 -2
  373. package/utility/lua-maps.lua +53 -2
  374. package/utility/lua-sets.d.ts +2 -0
  375. package/utility/lua-sets.lua +7 -0
  376. package/utility/random.d.ts +102 -0
  377. package/utility/random.lua +273 -0
  378. package/utility/records.lua +20 -1
  379. package/utility/types.d.ts +3 -0
  380. package/utility/unordered-map.d.ts +27 -0
  381. package/utility/unordered-map.lua +99 -0
  382. package/core/types/order.d.ts +0 -25
  383. package/core/types/order.lua +0 -55
  384. package/engine/internal/unit/item.lua +0 -78
  385. /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
  386. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  387. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  388. /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;
@@ -41,6 +42,8 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
41
42
  set iconPathSD(iconPathSD: string);
42
43
  get iconPathHD(): string;
43
44
  set iconPathHD(iconPathHD: string);
45
+ get iconPathDE(): string;
46
+ set iconPathDE(iconPathDE: string);
44
47
  get isButtonVisible(): boolean;
45
48
  set isButtonVisible(isButtonVisible: boolean);
46
49
  get isMissileHoming(): boolean;
@@ -59,20 +62,36 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
59
62
  set missileModelPathSD(missileModelPathSD: string);
60
63
  get missileModelPathHD(): string;
61
64
  set missileModelPathHD(missileModelPathHD: string);
65
+ get missileModelPathDE(): string;
66
+ set missileModelPathDE(missileModelPathDE: string);
62
67
  get missileMovementArc(): number;
63
68
  set missileMovementArc(missileMovementArc: number);
64
69
  get missileMovementSpeed(): number;
65
70
  set missileMovementSpeed(missileMovementSpeed: number);
66
- get specialAttachmentPreset(): EffectPresetWithParameters | undefined;
67
- set specialAttachmentPreset(specialAttachmentPreset: AttachmentPresetInput | undefined);
71
+ /** Model paths of the special art (`asat`); Flame Strike, for one, uses three. */
72
+ get specialEffectModelPaths(): string[];
73
+ set specialEffectModelPaths(specialEffectModelPaths: string[]);
74
+ /** Where the special art attaches (`aspt`), shared by all its models. */
75
+ get specialEffectAttachmentPoint(): AttachmentPoint;
76
+ set specialEffectAttachmentPoint(specialEffectAttachmentPoint: AttachmentPointInput);
68
77
  get targetCastingEffectPresets(): EffectPresetWithParameters[];
69
78
  set targetCastingEffectPresets(targetCastingEffectPresets: AttachmentPresetInput[]);
79
+ get targetChannelingEffectPresets(): EffectPresetWithParameters[];
80
+ set targetChannelingEffectPresets(targetChannelingEffectPresets: EffectPresetWithParametersInput[]);
81
+ get targetChannelingEffectPresetsSD(): EffectPresetWithParameters[];
82
+ set targetChannelingEffectPresetsSD(targetChannelingEffectPresetsSD: EffectPresetWithParametersInput[]);
83
+ get targetChannelingEffectPresetsHD(): EffectPresetWithParameters[];
84
+ set targetChannelingEffectPresetsHD(targetChannelingEffectPresetsHD: EffectPresetWithParametersInput[]);
85
+ get targetChannelingEffectPresetsDE(): EffectPresetWithParameters[];
86
+ set targetChannelingEffectPresetsDE(targetChannelingEffectPresetsDE: EffectPresetWithParametersInput[]);
70
87
  get targetEffectPresets(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
71
88
  set targetEffectPresets(targetEffectPresets: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
72
89
  get targetEffectPresetsSD(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
73
90
  set targetEffectPresetsSD(targetEffectPresetsSD: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
74
91
  get targetEffectPresetsHD(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
75
92
  set targetEffectPresetsHD(targetEffectPresetsHD: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
93
+ get targetEffectPresetsDE(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
94
+ set targetEffectPresetsDE(targetEffectPresetsDE: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
76
95
  get turnOffButtonPositionX(): number;
77
96
  set turnOffButtonPositionX(buttonPositionX: number);
78
97
  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
@@ -201,6 +213,19 @@ __TS__SetDescriptor(
201
213
  },
202
214
  true
203
215
  )
216
+ __TS__SetDescriptor(
217
+ AbilityType.prototype,
218
+ "iconPathDE",
219
+ {
220
+ get = function(self)
221
+ return self:getStringField("aart:de")
222
+ end,
223
+ set = function(self, iconPathDE)
224
+ self:setStringField("aart:de", iconPathDE)
225
+ end
226
+ },
227
+ true
228
+ )
204
229
  __TS__SetDescriptor(
205
230
  AbilityType.prototype,
206
231
  "isButtonVisible",
@@ -323,6 +348,19 @@ __TS__SetDescriptor(
323
348
  },
324
349
  true
325
350
  )
351
+ __TS__SetDescriptor(
352
+ AbilityType.prototype,
353
+ "missileModelPathDE",
354
+ {
355
+ get = function(self)
356
+ return self:getStringField("amat:de")
357
+ end,
358
+ set = function(self, missileModelPathDE)
359
+ self:setStringField("amat:de", missileModelPathDE)
360
+ end
361
+ },
362
+ true
363
+ )
326
364
  __TS__SetDescriptor(
327
365
  AbilityType.prototype,
328
366
  "missileMovementArc",
@@ -351,13 +389,30 @@ __TS__SetDescriptor(
351
389
  )
352
390
  __TS__SetDescriptor(
353
391
  AbilityType.prototype,
354
- "specialAttachmentPreset",
392
+ "specialEffectModelPaths",
393
+ {
394
+ get = function(self)
395
+ return self:getStringsField("asat")
396
+ end,
397
+ set = function(self, specialEffectModelPaths)
398
+ self:setStringsField("asat", specialEffectModelPaths)
399
+ end
400
+ },
401
+ true
402
+ )
403
+ __TS__SetDescriptor(
404
+ AbilityType.prototype,
405
+ "specialEffectAttachmentPoint",
355
406
  {
356
407
  get = function(self)
357
- return self:getAttachmentPresetField("asat", "aspt")
408
+ local nodeName, nodeQualifiers = splitAttachmentNodeFQN(self:getStringField("aspt"))
409
+ return {nodeName = nodeName, nodeQualifiers = nodeQualifiers}
358
410
  end,
359
- set = function(self, specialAttachmentPreset)
360
- self:setAttachmentPresetField("asat", "aspt", specialAttachmentPreset)
411
+ set = function(self, specialEffectAttachmentPoint)
412
+ self:setStringField(
413
+ "aspt",
414
+ attachmentPointToNodeFQN(specialEffectAttachmentPoint)
415
+ )
361
416
  end
362
417
  },
363
418
  true
@@ -375,6 +430,58 @@ __TS__SetDescriptor(
375
430
  },
376
431
  true
377
432
  )
433
+ __TS__SetDescriptor(
434
+ AbilityType.prototype,
435
+ "targetChannelingEffectPresets",
436
+ {
437
+ get = function(self)
438
+ return targetChannelingEffectPresetsByAbilityTypeId[self.id] or ({})
439
+ end,
440
+ set = function(self, targetChannelingEffectPresets)
441
+ targetChannelingEffectPresetsByAbilityTypeId[self.id] = map(targetChannelingEffectPresets, toEffectPreset)
442
+ end
443
+ },
444
+ true
445
+ )
446
+ __TS__SetDescriptor(
447
+ AbilityType.prototype,
448
+ "targetChannelingEffectPresetsSD",
449
+ {
450
+ get = function(self)
451
+ return targetChannelingEffectPresetsSDByAbilityTypeId[self.id] or self.targetChannelingEffectPresets
452
+ end,
453
+ set = function(self, targetChannelingEffectPresetsSD)
454
+ targetChannelingEffectPresetsSDByAbilityTypeId[self.id] = map(targetChannelingEffectPresetsSD, toEffectPreset)
455
+ end
456
+ },
457
+ true
458
+ )
459
+ __TS__SetDescriptor(
460
+ AbilityType.prototype,
461
+ "targetChannelingEffectPresetsHD",
462
+ {
463
+ get = function(self)
464
+ return targetChannelingEffectPresetsHDByAbilityTypeId[self.id] or self.targetChannelingEffectPresets
465
+ end,
466
+ set = function(self, targetChannelingEffectPresetsHD)
467
+ targetChannelingEffectPresetsHDByAbilityTypeId[self.id] = map(targetChannelingEffectPresetsHD, toEffectPreset)
468
+ end
469
+ },
470
+ true
471
+ )
472
+ __TS__SetDescriptor(
473
+ AbilityType.prototype,
474
+ "targetChannelingEffectPresetsDE",
475
+ {
476
+ get = function(self)
477
+ return targetChannelingEffectPresetsDEByAbilityTypeId[self.id] or self.targetChannelingEffectPresets
478
+ end,
479
+ set = function(self, targetChannelingEffectPresetsDE)
480
+ targetChannelingEffectPresetsDEByAbilityTypeId[self.id] = map(targetChannelingEffectPresetsDE, toEffectPreset)
481
+ end
482
+ },
483
+ true
484
+ )
378
485
  __TS__SetDescriptor(
379
486
  AbilityType.prototype,
380
487
  "targetEffectPresets",
@@ -456,6 +563,33 @@ __TS__SetDescriptor(
456
563
  },
457
564
  true
458
565
  )
566
+ __TS__SetDescriptor(
567
+ AbilityType.prototype,
568
+ "targetEffectPresetsDE",
569
+ {
570
+ get = function(self)
571
+ return self:getAttachmentPresetListField(
572
+ "atat:de",
573
+ array(
574
+ 6,
575
+ function(i) return ("ata" .. tostring(i)) .. ":de" end
576
+ )
577
+ )
578
+ end,
579
+ set = function(self, targetEffectPresetsDE)
580
+ self:setAttachmentPresetListField(
581
+ "atat:de",
582
+ array(
583
+ 6,
584
+ function(i) return ("ata" .. tostring(i)) .. ":de" end
585
+ ),
586
+ "atac:de",
587
+ targetEffectPresetsDE
588
+ )
589
+ end
590
+ },
591
+ true
592
+ )
459
593
  __TS__SetDescriptor(
460
594
  AbilityType.prototype,
461
595
  "turnOffButtonPositionX",
@@ -978,9 +1112,7 @@ for abilityTypeId, animationFQN in pairs(postcompile(function() return castAnima
978
1112
  4,
979
1113
  function(caster, ability)
980
1114
  if ability:getField(ABILITY_RLF_CASTING_TIME) ~= 0 then
981
- Timer:run(function()
982
- caster:playAnimation(animationFQN)
983
- end)
1115
+ Timer:run(caster, "playAnimation", animationFQN)
984
1116
  end
985
1117
  end
986
1118
  )
@@ -1005,6 +1137,13 @@ for abilityTypeId, soundPresetId in pairs(postcompile(function() return targetEf
1005
1137
  )
1006
1138
  end
1007
1139
  end
1140
+ local unsupportedEffectSoundAbilityTypeIds = luaSetOf(fourCC("AAns"))
1141
+ Unit.abilityChannelingStartEvent:addListener(function(caster, ability)
1142
+ local soundPresetId = ability:getField(ABILITY_SF_EFFECT_SOUND)
1143
+ if isSoundLabelCustom(soundPresetId) or soundPresetId ~= "" and unsupportedEffectSoundAbilityTypeIds[ability.parentTypeId] ~= nil then
1144
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, caster)
1145
+ end
1146
+ end)
1008
1147
  local casterCastingEffectModelPathsByAbilityTypeId = postcompile(function()
1009
1148
  return mapValues(
1010
1149
  casterCastingEffectPresetsByAbilityTypeId,
@@ -1091,18 +1230,123 @@ local function handleAbilityChannelingStartEvent(caster, ability)
1091
1230
  end
1092
1231
  casterChannelingEffectsByCaster[caster] = effects
1093
1232
  end
1233
+ local targetChannelingEffectsDataByAbilityTypeId = postcompile(function()
1234
+ local function toData(presets)
1235
+ if presets == nil then
1236
+ return nil
1237
+ end
1238
+ local attachmentPoints = map(presets, extractAttachmentPresetInputNodeFQN)
1239
+ local parameters = map(presets, "parameters")
1240
+ return {
1241
+ modelPaths = map(presets, extractAttachmentPresetInputModelPath),
1242
+ attachmentPoints = __TS__ArraySome(
1243
+ attachmentPoints,
1244
+ function(____, attachmentPoint) return attachmentPoint ~= "" end
1245
+ ) and attachmentPoints or nil,
1246
+ parameters = __TS__ArraySome(
1247
+ presets,
1248
+ function(____, preset) return preset.parameters ~= nil end
1249
+ ) and parameters or nil
1250
+ }
1251
+ end
1252
+ local abilityTypeIds = {}
1253
+ for ____, presetsByAbilityTypeId in ipairs({targetChannelingEffectPresetsByAbilityTypeId, targetChannelingEffectPresetsSDByAbilityTypeId, targetChannelingEffectPresetsHDByAbilityTypeId, targetChannelingEffectPresetsDEByAbilityTypeId}) do
1254
+ for abilityTypeId in pairs(presetsByAbilityTypeId) do
1255
+ abilityTypeIds[abilityTypeId] = true
1256
+ end
1257
+ end
1258
+ local result = {}
1259
+ for abilityTypeId in pairs(abilityTypeIds) do
1260
+ local presets = targetChannelingEffectPresetsByAbilityTypeId[abilityTypeId]
1261
+ local presetsSD = targetChannelingEffectPresetsSDByAbilityTypeId[abilityTypeId]
1262
+ local presetsHD = targetChannelingEffectPresetsHDByAbilityTypeId[abilityTypeId]
1263
+ local presetsDE = targetChannelingEffectPresetsDEByAbilityTypeId[abilityTypeId]
1264
+ local ____math_max_8 = math.max
1265
+ local ____opt_0 = presetsSD or presets
1266
+ local ____temp_6 = ____opt_0 and #____opt_0 or 0
1267
+ local ____opt_2 = presetsHD or presets
1268
+ local ____temp_7 = ____opt_2 and #____opt_2 or 0
1269
+ local ____opt_4 = presetsDE or presets
1270
+ result[abilityTypeId] = {
1271
+ effectCount = ____math_max_8(____temp_6, ____temp_7, ____opt_4 and #____opt_4 or 0),
1272
+ data = toData(presets),
1273
+ dataSD = toData(presetsSD),
1274
+ dataHD = toData(presetsHD),
1275
+ dataDE = toData(presetsDE)
1276
+ }
1277
+ end
1278
+ return result
1279
+ end)
1280
+ local targetChannelingEffectsByCaster = {}
1281
+ local function createTargetChannelingEffects(caster, abilityTypeId, xOrWidget, y)
1282
+ local effectsData = targetChannelingEffectsDataByAbilityTypeId[abilityTypeId]
1283
+ if effectsData == nil then
1284
+ return
1285
+ end
1286
+ local graphicsMode = LocalClient.graphicsMode
1287
+ local ____temp_10
1288
+ if graphicsMode == 0 then
1289
+ ____temp_10 = effectsData.dataSD
1290
+ else
1291
+ local ____temp_9
1292
+ if graphicsMode == 1 then
1293
+ ____temp_9 = effectsData.dataHD
1294
+ else
1295
+ ____temp_9 = effectsData.dataDE
1296
+ end
1297
+ ____temp_10 = ____temp_9
1298
+ end
1299
+ local data = ____temp_10 or effectsData.data
1300
+ local modelPaths = data and data.modelPaths
1301
+ local attachmentPoints = data and data.attachmentPoints
1302
+ local parameters = data and data.parameters
1303
+ local effects = {}
1304
+ for i = 1, effectsData.effectCount do
1305
+ local effectModelPath = modelPaths and modelPaths[i] or ""
1306
+ local effectParameters = parameters and parameters[i]
1307
+ if type(xOrWidget) == "number" then
1308
+ effects[i] = Effect:create(effectModelPath, xOrWidget, y, effectParameters)
1309
+ else
1310
+ local attachmentPoint = attachmentPoints and attachmentPoints[i]
1311
+ if attachmentPoint == nil or attachmentPoint == "" then
1312
+ attachmentPoint = "origin"
1313
+ end
1314
+ effects[i] = Effect:create(effectModelPath, xOrWidget, attachmentPoint, effectParameters)
1315
+ end
1316
+ end
1317
+ targetChannelingEffectsByCaster[caster] = effects
1318
+ end
1319
+ local function handleAbilityWidgetTargetChannelingStartEvent(caster, ability, target)
1320
+ createTargetChannelingEffects(caster, ability.typeId, target)
1321
+ end
1322
+ local function handleAbilityPointTargetChannelingStartEvent(caster, ability, x, y)
1323
+ createTargetChannelingEffects(caster, ability.typeId, x, y)
1324
+ end
1094
1325
  local function handleAbilityStopChannelingEvent(caster)
1095
- local effects = casterChannelingEffectsByCaster[caster]
1096
- if effects ~= nil then
1097
- for i = 1, #effects do
1098
- effects[i]:destroy()
1326
+ local casterEffects = casterChannelingEffectsByCaster[caster]
1327
+ if casterEffects ~= nil then
1328
+ for i = 1, #casterEffects do
1329
+ casterEffects[i]:destroy()
1099
1330
  end
1100
1331
  casterChannelingEffectsByCaster[caster] = nil
1101
1332
  end
1333
+ local targetEffects = targetChannelingEffectsByCaster[caster]
1334
+ if targetEffects ~= nil then
1335
+ for i = 1, #targetEffects do
1336
+ targetEffects[i]:destroy()
1337
+ end
1338
+ targetChannelingEffectsByCaster[caster] = nil
1339
+ end
1102
1340
  end
1103
1341
  for abilityTypeId in pairs(casterChannelingEffectModelPathsByAbilityTypeId) do
1104
1342
  Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityChannelingStartEvent)
1105
1343
  Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1106
1344
  Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1107
1345
  end
1346
+ for abilityTypeId in pairs(targetChannelingEffectsDataByAbilityTypeId) do
1347
+ Unit.abilityWidgetTargetChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityWidgetTargetChannelingStartEvent)
1348
+ Unit.abilityPointTargetChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityPointTargetChannelingStartEvent)
1349
+ Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1350
+ Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1351
+ end
1108
1352
  return ____exports