warscript 0.0.1-dev.5abc199 → 0.0.1-dev.5bc80ec

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 (312) hide show
  1. package/core/dummy.lua +4 -2
  2. package/core/types/effect.d.ts +11 -1
  3. package/core/types/effect.lua +43 -77
  4. package/core/types/frame.d.ts +16 -2
  5. package/core/types/frame.lua +128 -67
  6. package/core/types/handle.lua +9 -9
  7. package/core/types/item.d.ts +1 -0
  8. package/core/types/item.lua +1 -0
  9. package/core/types/missile.lua +7 -6
  10. package/core/types/player.d.ts +2 -1
  11. package/core/types/player.lua +18 -13
  12. package/core/types/playerColor.lua +4 -3
  13. package/core/types/sound.d.ts +1 -1
  14. package/core/types/sound.lua +14 -9
  15. package/core/types/tileCell.d.ts +7 -2
  16. package/core/types/tileCell.lua +11 -0
  17. package/core/types/unit.d.ts +5 -0
  18. package/core/types/unit.lua +5 -0
  19. package/core/util.d.ts +3 -1
  20. package/core/util.lua +109 -3
  21. package/decl/native.d.ts +706 -7
  22. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  23. package/engine/ability-type-extended-tooltip.lua +44 -0
  24. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  25. package/engine/behaviour/ability/damage.d.ts +4 -0
  26. package/engine/behaviour/ability/damage.lua +19 -15
  27. package/engine/behaviour/ability/emulate-impact.d.ts +14 -0
  28. package/engine/behaviour/ability/emulate-impact.lua +79 -5
  29. package/engine/behaviour/ability/instant-impact.d.ts +12 -1
  30. package/engine/behaviour/ability/instant-impact.lua +17 -2
  31. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  32. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  33. package/engine/behaviour/ability.d.ts +13 -5
  34. package/engine/behaviour/ability.lua +89 -8
  35. package/engine/behaviour/unit.d.ts +1 -0
  36. package/engine/behaviour/unit.lua +1 -0
  37. package/engine/buff.d.ts +92 -53
  38. package/engine/buff.lua +427 -246
  39. package/engine/index.d.ts +2 -1
  40. package/engine/internal/ability.d.ts +7 -0
  41. package/engine/internal/ability.lua +65 -36
  42. package/engine/internal/item/fields.d.ts +12 -0
  43. package/engine/internal/item/fields.lua +33 -0
  44. package/engine/internal/item/owner-cache.d.ts +5 -0
  45. package/engine/internal/item/owner-cache.lua +4 -0
  46. package/engine/internal/item+owner.d.ts +2 -0
  47. package/engine/internal/item+owner.lua +27 -4
  48. package/engine/internal/item.d.ts +20 -5
  49. package/engine/internal/item.lua +146 -57
  50. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  51. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  52. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  53. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  54. package/engine/internal/object-data/health-bonus.lua +16 -0
  55. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  56. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  57. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  58. package/engine/internal/object-data/mana-bonus.lua +16 -0
  59. package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
  60. package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
  61. package/engine/internal/unit/ability.lua +16 -0
  62. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  63. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  64. package/engine/internal/unit/appearance.d.ts +15 -0
  65. package/engine/internal/unit/appearance.lua +85 -0
  66. package/engine/internal/unit/bonus.d.ts +15 -0
  67. package/engine/internal/unit/bonus.lua +103 -8
  68. package/engine/internal/unit/buff.d.ts +2 -2
  69. package/engine/internal/unit/buff.lua +34 -19
  70. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  71. package/engine/internal/unit/equipment-inventory.lua +233 -0
  72. package/engine/internal/unit/expiration-timer.lua +1 -1
  73. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  74. package/engine/internal/unit/extended-inventory.lua +99 -0
  75. package/engine/internal/unit/ignore-events-items.lua +10 -1
  76. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  77. package/engine/internal/unit/inventory.lua +87 -0
  78. package/engine/internal/unit/item-container.d.ts +25 -0
  79. package/engine/internal/unit/item-container.lua +11 -0
  80. package/engine/internal/unit/item-order-events.d.ts +17 -0
  81. package/engine/internal/unit/item-order-events.lua +67 -0
  82. package/engine/internal/unit/item-slot.d.ts +27 -0
  83. package/engine/internal/unit/item-slot.lua +92 -0
  84. package/engine/internal/unit/order.d.ts +3 -3
  85. package/engine/internal/unit/order.lua +10 -10
  86. package/engine/internal/unit+ability.d.ts +2 -1
  87. package/engine/internal/unit+ability.lua +73 -2
  88. package/engine/internal/unit+bonus.lua +3 -3
  89. package/engine/internal/unit+damage.d.ts +9 -0
  90. package/engine/internal/unit+damage.lua +33 -0
  91. package/engine/internal/unit+rally.lua +9 -31
  92. package/engine/internal/unit-missile-data.lua +58 -32
  93. package/engine/internal/unit-missile-launch.lua +13 -13
  94. package/engine/internal/unit.d.ts +2 -10
  95. package/engine/internal/unit.lua +53 -100
  96. package/engine/local-client.d.ts +26 -0
  97. package/engine/local-client.lua +294 -54
  98. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  99. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  100. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  101. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  102. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  103. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  104. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  105. package/engine/object-data/auxiliary/item-class.lua +2 -0
  106. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  107. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  108. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  109. package/engine/object-data/auxiliary/order-type.lua +2 -0
  110. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  111. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  112. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  113. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  114. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  115. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  116. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  117. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  118. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  119. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  120. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  121. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  122. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  123. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  124. package/engine/object-data/entry/ability-type/barrage.d.ts +12 -0
  125. package/engine/object-data/entry/ability-type/barrage.lua +52 -0
  126. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  127. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  128. package/engine/object-data/entry/ability-type/blank-configurable.lua +2 -2
  129. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  130. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  131. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  132. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  133. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  134. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  135. package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
  136. package/engine/object-data/entry/ability-type/channel.lua +3 -3
  137. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  138. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  139. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  140. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  141. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  142. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  143. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  144. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  145. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  146. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  147. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  148. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  149. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  150. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  151. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  152. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  153. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  154. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  155. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  156. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  157. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  158. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  159. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  160. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  161. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  162. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  163. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  164. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  165. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  166. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  167. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  168. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  169. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  170. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  171. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  172. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  173. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  174. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  175. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  176. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  177. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  178. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  179. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  180. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  181. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  182. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  183. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  184. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  185. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  186. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  187. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  188. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  189. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  190. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  191. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  192. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  193. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  194. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  195. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  196. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  197. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  198. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  199. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  200. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  201. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  202. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  203. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  204. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  205. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  206. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  207. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  208. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  209. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  210. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  211. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  212. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  213. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  214. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  215. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  216. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  217. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  218. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  219. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  220. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  221. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  222. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  223. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  224. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  225. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  226. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  227. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  228. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  229. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  230. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  231. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  232. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  233. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  234. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  235. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  236. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  237. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  238. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  239. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  240. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  241. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  242. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  243. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  244. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  245. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  246. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  247. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  248. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  249. package/engine/object-data/entry/ability-type.d.ts +33 -8
  250. package/engine/object-data/entry/ability-type.lua +259 -47
  251. package/engine/object-data/entry/buff-type/applicable.lua +122 -111
  252. package/engine/object-data/entry/buff-type.d.ts +6 -2
  253. package/engine/object-data/entry/buff-type.lua +26 -0
  254. package/engine/object-data/entry/destructible-type.d.ts +6 -2
  255. package/engine/object-data/entry/destructible-type.lua +26 -0
  256. package/engine/object-data/entry/item-type.d.ts +18 -3
  257. package/engine/object-data/entry/item-type.lua +84 -0
  258. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  259. package/engine/object-data/entry/lightning-type.lua +1 -1
  260. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  261. package/engine/object-data/entry/unit-type.d.ts +57 -2
  262. package/engine/object-data/entry/unit-type.lua +412 -64
  263. package/engine/object-data/entry/upgrade.d.ts +2 -2
  264. package/engine/object-data/entry.d.ts +6 -1
  265. package/engine/object-data/entry.lua +8 -0
  266. package/engine/object-field/ability.lua +2 -2
  267. package/engine/object-field/item.d.ts +22 -0
  268. package/engine/object-field/item.lua +118 -0
  269. package/engine/object-field.d.ts +1 -1
  270. package/engine/object-field.lua +9 -7
  271. package/engine/random.lua +1 -1
  272. package/engine/standard/entries/ability-type.d.ts +3102 -7
  273. package/engine/standard/entries/ability-type.lua +0 -6
  274. package/engine/standard/entries/buff-type.d.ts +45 -0
  275. package/engine/standard/entries/buff-type.lua +43 -0
  276. package/engine/standard/entries/item-type.d.ts +1299 -0
  277. package/engine/standard/entries/item-type.lua +2 -0
  278. package/engine/standard/entries/lightning-type.d.ts +42 -15
  279. package/engine/standard/entries/lightning-type.lua +0 -14
  280. package/engine/standard/entries/unit-type.d.ts +5 -0
  281. package/engine/standard/entries/unit-type.lua +5 -0
  282. package/engine/standard/fields/ability.d.ts +2 -2
  283. package/engine/standard/fields/ability.lua +2 -2
  284. package/engine/standard/fields/item.d.ts +4 -0
  285. package/engine/standard/fields/item.lua +6 -0
  286. package/engine/unit.d.ts +5 -1
  287. package/engine/unit.lua +5 -1
  288. package/event.d.ts +1 -1
  289. package/lualib_bundle.lua +1 -1
  290. package/math.d.ts +2 -0
  291. package/math.lua +14 -0
  292. package/network.lua +25 -1
  293. package/objutil/buff.lua +1 -1
  294. package/objutil/object.lua +1 -1
  295. package/operation.d.ts +8 -1
  296. package/operation.lua +38 -18
  297. package/package.json +3 -23
  298. package/utility/arrays.d.ts +7 -1
  299. package/utility/arrays.lua +17 -0
  300. package/utility/linked-map.d.ts +2 -1
  301. package/utility/linked-map.lua +6 -0
  302. package/utility/linked-set.d.ts +1 -0
  303. package/utility/linked-set.lua +6 -0
  304. package/utility/random.d.ts +102 -0
  305. package/utility/random.lua +273 -0
  306. package/utility/unordered-map.d.ts +27 -0
  307. package/utility/unordered-map.lua +99 -0
  308. package/engine/internal/unit/item.lua +0 -78
  309. /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
  310. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  311. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  312. /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;
@@ -31,16 +32,24 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
31
32
  set casterCastingEffectPresets(casterCastingEffectPresets: EffectPresetWithParametersInput[]);
32
33
  get casterChannelingEffectPresets(): EffectPresetWithParameters[];
33
34
  set casterChannelingEffectPresets(casterChannelingEffectPresets: EffectPresetWithParametersInput[]);
34
- get casterAttachmentPresets(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2>;
35
- set casterAttachmentPresets(casterAttachmentPresets: TupleOf<AttachmentPresetInput, 0 | 1 | 2>);
35
+ get casterEffectPresets(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2>;
36
+ set casterEffectPresets(casterEffectPresets: 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,22 +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[]);
70
85
  get targetChannelingEffectPresets(): EffectPresetWithParameters[];
71
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[]);
72
93
  get targetEffectPresets(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
73
94
  set targetEffectPresets(targetEffectPresets: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
74
95
  get targetEffectPresetsSD(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
75
96
  set targetEffectPresetsSD(targetEffectPresetsSD: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
76
97
  get targetEffectPresetsHD(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
77
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>);
78
101
  get turnOffButtonPositionX(): number;
79
102
  set turnOffButtonPositionX(buttonPositionX: number);
80
103
  get turnOffButtonPositionY(): number;
@@ -137,6 +160,8 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
137
160
  set effectBuffTypeIds(effectBuffTypeIds: ObjectDataEntryLevelFieldValueSupplier<BuffTypeId[]>);
138
161
  get heroBuffDuration(): number[];
139
162
  set heroBuffDuration(heroBuffDuration: ObjectDataEntryLevelFieldValueSupplier<number>);
163
+ get isHeroAbility(): boolean;
164
+ set isHeroAbility(isHeroAbility: boolean);
140
165
  get learnLevelMinimum(): number;
141
166
  set learnLevelMinimum(learnLevelMinimum: number);
142
167
  get learnLevelStep(): 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
@@ -40,12 +43,17 @@ local Sound3D = ____sound.Sound3D
40
43
  local SoundSettings = ____sound.SoundSettings
41
44
  local ____lua_2Dsets = require("utility.lua-sets")
42
45
  local luaSetOf = ____lua_2Dsets.luaSetOf
46
+ local ____local_2Dclient = require("engine.local-client")
47
+ local LocalClient = ____local_2Dclient.LocalClient
43
48
  local castAnimationFQNByAbilityTypeId = {}
44
49
  local isButtonVisibleFalseAbilityTypes = {}
45
50
  local casterCastingEffectPresetsByAbilityTypeId = {}
46
51
  local casterChannelingEffectPresetsByAbilityTypeId = {}
47
52
  local targetCastingEffectPresetsByAbilityTypeId = {}
48
53
  local targetChannelingEffectPresetsByAbilityTypeId = {}
54
+ local targetChannelingEffectPresetsSDByAbilityTypeId = {}
55
+ local targetChannelingEffectPresetsHDByAbilityTypeId = {}
56
+ local targetChannelingEffectPresetsDEByAbilityTypeId = {}
49
57
  local targetEffectSoundPresetByAbilityTypeId = {}
50
58
  ____exports.AbilityType = __TS__Class()
51
59
  local AbilityType = ____exports.AbilityType
@@ -142,13 +150,13 @@ __TS__SetDescriptor(
142
150
  )
143
151
  __TS__SetDescriptor(
144
152
  AbilityType.prototype,
145
- "casterAttachmentPresets",
153
+ "casterEffectPresets",
146
154
  {
147
155
  get = function(self)
148
156
  return self:getAttachmentPresetListField("acat", {"acap", "aca1"})
149
157
  end,
150
- set = function(self, casterAttachmentPresets)
151
- self:setAttachmentPresetListField("acat", {"acap", "aca1"}, "acac", casterAttachmentPresets)
158
+ set = function(self, casterEffectPresets)
159
+ self:setAttachmentPresetListField("acat", {"acap", "aca1"}, "acac", casterEffectPresets)
152
160
  end
153
161
  },
154
162
  true
@@ -166,6 +174,45 @@ __TS__SetDescriptor(
166
174
  },
167
175
  true
168
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
+ )
169
216
  __TS__SetDescriptor(
170
217
  AbilityType.prototype,
171
218
  "iconPath",
@@ -205,6 +252,19 @@ __TS__SetDescriptor(
205
252
  },
206
253
  true
207
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
+ )
208
268
  __TS__SetDescriptor(
209
269
  AbilityType.prototype,
210
270
  "isButtonVisible",
@@ -327,6 +387,19 @@ __TS__SetDescriptor(
327
387
  },
328
388
  true
329
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
+ )
330
403
  __TS__SetDescriptor(
331
404
  AbilityType.prototype,
332
405
  "missileMovementArc",
@@ -355,13 +428,30 @@ __TS__SetDescriptor(
355
428
  )
356
429
  __TS__SetDescriptor(
357
430
  AbilityType.prototype,
358
- "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",
359
445
  {
360
446
  get = function(self)
361
- return self:getAttachmentPresetField("asat", "aspt")
447
+ local nodeName, nodeQualifiers = splitAttachmentNodeFQN(self:getStringField("aspt"))
448
+ return {nodeName = nodeName, nodeQualifiers = nodeQualifiers}
362
449
  end,
363
- set = function(self, specialAttachmentPreset)
364
- self:setAttachmentPresetField("asat", "aspt", specialAttachmentPreset)
450
+ set = function(self, specialEffectAttachmentPoint)
451
+ self:setStringField(
452
+ "aspt",
453
+ attachmentPointToNodeFQN(specialEffectAttachmentPoint)
454
+ )
365
455
  end
366
456
  },
367
457
  true
@@ -392,6 +482,45 @@ __TS__SetDescriptor(
392
482
  },
393
483
  true
394
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
+ )
395
524
  __TS__SetDescriptor(
396
525
  AbilityType.prototype,
397
526
  "targetEffectPresets",
@@ -473,6 +602,33 @@ __TS__SetDescriptor(
473
602
  },
474
603
  true
475
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
+ )
476
632
  __TS__SetDescriptor(
477
633
  AbilityType.prototype,
478
634
  "turnOffButtonPositionX",
@@ -905,6 +1061,19 @@ __TS__SetDescriptor(
905
1061
  },
906
1062
  true
907
1063
  )
1064
+ __TS__SetDescriptor(
1065
+ AbilityType.prototype,
1066
+ "isHeroAbility",
1067
+ {
1068
+ get = function(self)
1069
+ return self:getBooleanField("aher")
1070
+ end,
1071
+ set = function(self, isHeroAbility)
1072
+ self:setBooleanField("aher", isHeroAbility)
1073
+ end
1074
+ },
1075
+ true
1076
+ )
908
1077
  __TS__SetDescriptor(
909
1078
  AbilityType.prototype,
910
1079
  "learnLevelMinimum",
@@ -1113,58 +1282,97 @@ local function handleAbilityChannelingStartEvent(caster, ability)
1113
1282
  end
1114
1283
  casterChannelingEffectsByCaster[caster] = effects
1115
1284
  end
1116
- local targetChannelingEffectModelPathsByAbilityTypeId = postcompile(function()
1117
- return mapValues(
1118
- targetChannelingEffectPresetsByAbilityTypeId,
1119
- function(targetChannelingEffectPresets) return map(targetChannelingEffectPresets, extractAttachmentPresetInputModelPath) end
1120
- )
1121
- end)
1122
- local targetChannelingEffectAttachmentPointsByAbilityTypeId = postcompile(function()
1123
- return mapValues(
1124
- targetChannelingEffectPresetsByAbilityTypeId,
1125
- function(targetChannelingEffectPresets) return map(targetChannelingEffectPresets, extractAttachmentPresetInputNodeFQN) end
1126
- )
1127
- end)
1128
- local targetChannelingEffectParametersByAbilityTypeId = postcompile(function()
1129
- return mapValues(
1130
- targetChannelingEffectPresetsByAbilityTypeId,
1131
- function(targetChannelingEffectPresets) return map(targetChannelingEffectPresets, "parameters") end
1132
- )
1285
+ local targetChannelingEffectsDataByAbilityTypeId = postcompile(function()
1286
+ local function toData(presets)
1287
+ if presets == nil then
1288
+ return nil
1289
+ end
1290
+ local attachmentPoints = map(presets, extractAttachmentPresetInputNodeFQN)
1291
+ local parameters = map(presets, "parameters")
1292
+ return {
1293
+ modelPaths = map(presets, extractAttachmentPresetInputModelPath),
1294
+ attachmentPoints = __TS__ArraySome(
1295
+ attachmentPoints,
1296
+ function(____, attachmentPoint) return attachmentPoint ~= "" end
1297
+ ) and attachmentPoints or nil,
1298
+ parameters = __TS__ArraySome(
1299
+ presets,
1300
+ function(____, preset) return preset.parameters ~= nil end
1301
+ ) and parameters or nil
1302
+ }
1303
+ end
1304
+ local abilityTypeIds = {}
1305
+ for ____, presetsByAbilityTypeId in ipairs({targetChannelingEffectPresetsByAbilityTypeId, targetChannelingEffectPresetsSDByAbilityTypeId, targetChannelingEffectPresetsHDByAbilityTypeId, targetChannelingEffectPresetsDEByAbilityTypeId}) do
1306
+ for abilityTypeId in pairs(presetsByAbilityTypeId) do
1307
+ abilityTypeIds[abilityTypeId] = true
1308
+ end
1309
+ end
1310
+ local result = {}
1311
+ for abilityTypeId in pairs(abilityTypeIds) do
1312
+ local presets = targetChannelingEffectPresetsByAbilityTypeId[abilityTypeId]
1313
+ local presetsSD = targetChannelingEffectPresetsSDByAbilityTypeId[abilityTypeId]
1314
+ local presetsHD = targetChannelingEffectPresetsHDByAbilityTypeId[abilityTypeId]
1315
+ local presetsDE = targetChannelingEffectPresetsDEByAbilityTypeId[abilityTypeId]
1316
+ local ____math_max_8 = math.max
1317
+ local ____opt_0 = presetsSD or presets
1318
+ local ____temp_6 = ____opt_0 and #____opt_0 or 0
1319
+ local ____opt_2 = presetsHD or presets
1320
+ local ____temp_7 = ____opt_2 and #____opt_2 or 0
1321
+ local ____opt_4 = presetsDE or presets
1322
+ result[abilityTypeId] = {
1323
+ effectCount = ____math_max_8(____temp_6, ____temp_7, ____opt_4 and #____opt_4 or 0),
1324
+ data = toData(presets),
1325
+ dataSD = toData(presetsSD),
1326
+ dataHD = toData(presetsHD),
1327
+ dataDE = toData(presetsDE)
1328
+ }
1329
+ end
1330
+ return result
1133
1331
  end)
1134
1332
  local targetChannelingEffectsByCaster = {}
1135
- local function handleAbilityWidgetTargetChannelingStartEvent(caster, ability, target)
1136
- local effectModelPaths = targetChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
1137
- local attachmentPoints = targetChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1138
- local parameters = targetChannelingEffectParametersByAbilityTypeId[ability.typeId]
1333
+ local function createTargetChannelingEffects(caster, abilityTypeId, xOrWidget, y)
1334
+ local effectsData = targetChannelingEffectsDataByAbilityTypeId[abilityTypeId]
1335
+ if effectsData == nil then
1336
+ return
1337
+ end
1338
+ local graphicsMode = LocalClient.graphicsMode
1339
+ local ____temp_10
1340
+ if graphicsMode == 0 then
1341
+ ____temp_10 = effectsData.dataSD
1342
+ else
1343
+ local ____temp_9
1344
+ if graphicsMode == 1 then
1345
+ ____temp_9 = effectsData.dataHD
1346
+ else
1347
+ ____temp_9 = effectsData.dataDE
1348
+ end
1349
+ ____temp_10 = ____temp_9
1350
+ end
1351
+ local data = ____temp_10 or effectsData.data
1352
+ local modelPaths = data and data.modelPaths
1353
+ local attachmentPoints = data and data.attachmentPoints
1354
+ local parameters = data and data.parameters
1139
1355
  local effects = {}
1140
- if effectModelPaths ~= nil then
1141
- for i = 1, #effectModelPaths do
1142
- local effectModelPath = effectModelPaths[i]
1356
+ for i = 1, effectsData.effectCount do
1357
+ local effectModelPath = modelPaths and modelPaths[i] or ""
1358
+ local effectParameters = parameters and parameters[i]
1359
+ if type(xOrWidget) == "number" then
1360
+ effects[i] = Effect:create(effectModelPath, xOrWidget, y, effectParameters)
1361
+ else
1143
1362
  local attachmentPoint = attachmentPoints and attachmentPoints[i]
1144
1363
  if attachmentPoint == nil or attachmentPoint == "" then
1145
1364
  attachmentPoint = "origin"
1146
1365
  end
1147
- effects[i] = Effect:create(effectModelPath, target, attachmentPoint, parameters and parameters[i])
1366
+ effects[i] = Effect:create(effectModelPath, xOrWidget, attachmentPoint, effectParameters)
1148
1367
  end
1149
1368
  end
1150
1369
  targetChannelingEffectsByCaster[caster] = effects
1151
1370
  end
1371
+ local function handleAbilityWidgetTargetChannelingStartEvent(caster, ability, target)
1372
+ createTargetChannelingEffects(caster, ability.typeId, target)
1373
+ end
1152
1374
  local function handleAbilityPointTargetChannelingStartEvent(caster, ability, x, y)
1153
- local effectModelPaths = targetChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
1154
- local attachmentPoints = targetChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1155
- local parameters = targetChannelingEffectParametersByAbilityTypeId[ability.typeId]
1156
- local effects = {}
1157
- if effectModelPaths ~= nil then
1158
- for i = 1, #effectModelPaths do
1159
- local effectModelPath = effectModelPaths[i]
1160
- local attachmentPoint = attachmentPoints and attachmentPoints[i]
1161
- if attachmentPoint == nil or attachmentPoint == "" then
1162
- attachmentPoint = "origin"
1163
- end
1164
- effects[i] = Effect:create(effectModelPath, x, y, parameters and parameters[i])
1165
- end
1166
- end
1167
- targetChannelingEffectsByCaster[caster] = effects
1375
+ createTargetChannelingEffects(caster, ability.typeId, x, y)
1168
1376
  end
1169
1377
  local function handleAbilityStopChannelingEvent(caster)
1170
1378
  local casterEffects = casterChannelingEffectsByCaster[caster]
@@ -1184,6 +1392,10 @@ local function handleAbilityStopChannelingEvent(caster)
1184
1392
  end
1185
1393
  for abilityTypeId in pairs(casterChannelingEffectModelPathsByAbilityTypeId) do
1186
1394
  Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityChannelingStartEvent)
1395
+ Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1396
+ Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1397
+ end
1398
+ for abilityTypeId in pairs(targetChannelingEffectsDataByAbilityTypeId) do
1187
1399
  Unit.abilityWidgetTargetChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityWidgetTargetChannelingStartEvent)
1188
1400
  Unit.abilityPointTargetChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityPointTargetChannelingStartEvent)
1189
1401
  Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)