warscript 0.0.1-dev.8bfb72f → 0.0.1-dev.8d8d605

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 (372) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/config.d.ts +5 -0
  4. package/config.lua +10 -0
  5. package/core/types/effect.d.ts +1 -3
  6. package/core/types/effect.lua +26 -29
  7. package/core/types/frame.d.ts +1 -0
  8. package/core/types/frame.lua +136 -58
  9. package/core/types/handle.lua +9 -9
  10. package/core/types/item.d.ts +1 -0
  11. package/core/types/item.lua +1 -0
  12. package/core/types/player.d.ts +18 -1
  13. package/core/types/player.lua +76 -26
  14. package/core/types/playerCamera.d.ts +2 -0
  15. package/core/types/playerCamera.lua +123 -5
  16. package/core/types/playerColor.lua +4 -3
  17. package/core/types/sound.d.ts +18 -25
  18. package/core/types/sound.lua +113 -33
  19. package/core/types/tileCell.d.ts +11 -1
  20. package/core/types/tileCell.lua +97 -0
  21. package/core/types/timer.d.ts +9 -8
  22. package/core/types/timer.lua +45 -23
  23. package/core/types/unit.d.ts +4 -0
  24. package/core/types/unit.lua +4 -0
  25. package/core/util.lua +6 -1
  26. package/decl/native.d.ts +1718 -964
  27. package/destroyable.d.ts +1 -0
  28. package/destroyable.lua +9 -0
  29. package/engine/behavior.d.ts +14 -1
  30. package/engine/behavior.lua +230 -70
  31. package/engine/behaviour/ability/apply-buff.lua +5 -5
  32. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  33. package/engine/behaviour/ability/damage.d.ts +12 -3
  34. package/engine/behaviour/ability/damage.lua +40 -49
  35. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  36. package/engine/behaviour/ability/emulate-impact.lua +23 -7
  37. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  38. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  39. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  40. package/engine/behaviour/ability/restore-mana.lua +6 -6
  41. package/engine/behaviour/ability.d.ts +16 -6
  42. package/engine/behaviour/ability.lua +67 -21
  43. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  44. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  45. package/engine/behaviour/unit.d.ts +41 -2
  46. package/engine/behaviour/unit.lua +270 -6
  47. package/engine/buff.d.ts +117 -60
  48. package/engine/buff.lua +587 -303
  49. package/engine/index.d.ts +2 -1
  50. package/engine/internal/ability.d.ts +11 -1
  51. package/engine/internal/ability.lua +100 -41
  52. package/engine/internal/item/ability.lua +63 -11
  53. package/engine/internal/item/fields.d.ts +12 -0
  54. package/engine/internal/item/fields.lua +33 -0
  55. package/engine/internal/item+owner.d.ts +1 -0
  56. package/engine/internal/item+owner.lua +19 -6
  57. package/engine/internal/item.d.ts +28 -16
  58. package/engine/internal/item.lua +265 -83
  59. package/engine/internal/mechanics/ability-duration.lua +1 -1
  60. package/engine/internal/mechanics/cast-ability.lua +6 -3
  61. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  62. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  63. package/engine/internal/misc/frame-coordinates.lua +21 -0
  64. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  65. package/engine/internal/misc/get-terrain-z.lua +11 -0
  66. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  67. package/engine/internal/misc/player-local-handle.lua +5 -0
  68. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  69. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  70. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  71. package/engine/internal/object-data/health-bonus.lua +16 -0
  72. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  73. package/engine/internal/object-data/mana-bonus.lua +16 -0
  74. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  75. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  76. package/engine/internal/unit/ability.d.ts +35 -0
  77. package/engine/internal/unit/ability.lua +113 -12
  78. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  79. package/engine/internal/unit/allowed-targets.lua +9 -1
  80. package/engine/internal/unit/appearance.d.ts +15 -0
  81. package/engine/internal/unit/appearance.lua +85 -0
  82. package/engine/internal/unit/attributes.d.ts +17 -0
  83. package/engine/internal/unit/attributes.lua +46 -0
  84. package/engine/internal/unit/bag.d.ts +18 -0
  85. package/engine/internal/unit/bag.lua +63 -0
  86. package/engine/internal/unit/bonus.d.ts +6 -0
  87. package/engine/internal/unit/bonus.lua +33 -3
  88. package/engine/internal/unit/buff.d.ts +2 -2
  89. package/engine/internal/unit/buff.lua +34 -19
  90. package/engine/internal/unit/equipment.d.ts +36 -0
  91. package/engine/internal/unit/equipment.lua +169 -0
  92. package/engine/internal/unit/fly-height.d.ts +7 -0
  93. package/engine/internal/unit/fly-height.lua +20 -0
  94. package/engine/internal/unit/interrupts.d.ts +12 -0
  95. package/engine/internal/unit/interrupts.lua +28 -0
  96. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +3 -3
  97. package/engine/internal/unit/{item.lua → inventory.lua} +25 -26
  98. package/engine/internal/unit/main-selected.lua +12 -27
  99. package/engine/internal/unit/order.d.ts +20 -0
  100. package/engine/internal/unit/order.lua +136 -0
  101. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  102. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  103. package/engine/internal/unit/range-event.d.ts +12 -0
  104. package/engine/internal/unit/range-event.lua +90 -0
  105. package/engine/internal/unit/scale.d.ts +7 -0
  106. package/engine/internal/unit/scale.lua +20 -0
  107. package/engine/internal/unit+ability.lua +10 -1
  108. package/engine/internal/unit+bonus.lua +3 -3
  109. package/engine/internal/unit+damage.d.ts +11 -11
  110. package/engine/internal/unit+damage.lua +43 -14
  111. package/engine/internal/unit+spellSteal.lua +1 -2
  112. package/engine/internal/unit-missile-data.lua +58 -32
  113. package/engine/internal/unit-missile-launch.lua +52 -14
  114. package/engine/internal/unit.d.ts +42 -25
  115. package/engine/internal/unit.lua +384 -265
  116. package/engine/lightning.d.ts +4 -3
  117. package/engine/lightning.lua +21 -12
  118. package/engine/local-client.d.ts +27 -0
  119. package/engine/local-client.lua +343 -54
  120. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  121. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  122. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  123. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  124. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  125. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  126. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  127. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  128. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  129. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  130. package/engine/object-data/auxiliary/equipment-type.d.ts +13 -0
  131. package/engine/object-data/auxiliary/equipment-type.lua +2 -0
  132. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  133. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  134. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  135. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  136. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  137. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  138. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  139. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  140. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  141. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  142. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  143. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  144. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  145. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  146. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  147. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  148. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  149. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  150. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  151. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  152. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  153. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  154. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  155. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  156. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  157. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  158. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  159. package/engine/object-data/entry/ability-type/blank-configurable.lua +42 -1
  160. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  161. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  162. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  163. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  164. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  165. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  166. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  167. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  168. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  169. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  170. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  171. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  172. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  173. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  174. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  175. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  176. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  177. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  178. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  179. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  180. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  181. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  182. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  183. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  184. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  185. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  186. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  187. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  188. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  189. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  190. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  191. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  192. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  193. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  194. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  195. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  196. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  197. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  198. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  199. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  200. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  201. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  202. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  203. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  204. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  205. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  206. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  207. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  208. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  209. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  210. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  211. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  212. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  213. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  214. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  215. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  216. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  217. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  218. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  219. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  220. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  221. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  222. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  223. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  224. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  225. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  226. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  227. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  228. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  229. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  230. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  231. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  232. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  233. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  234. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  235. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  236. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  237. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  238. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  239. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  240. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  241. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  242. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  243. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  244. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  245. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  246. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  247. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  248. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  249. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  250. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  251. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  252. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  253. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  254. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  255. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  256. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  257. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  258. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  259. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  260. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  261. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  262. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  263. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  264. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  265. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  266. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  267. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  268. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  269. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  270. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  271. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  272. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  273. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  274. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  275. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  276. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  277. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  278. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  279. package/engine/object-data/entry/ability-type/web.lua +52 -0
  280. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  281. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  282. package/engine/object-data/entry/ability-type.d.ts +30 -19
  283. package/engine/object-data/entry/ability-type.lua +222 -28
  284. package/engine/object-data/entry/buff-type/applicable.lua +122 -137
  285. package/engine/object-data/entry/buff-type.d.ts +10 -12
  286. package/engine/object-data/entry/buff-type.lua +39 -29
  287. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  288. package/engine/object-data/entry/destructible-type.lua +181 -0
  289. package/engine/object-data/entry/item-type.d.ts +12 -3
  290. package/engine/object-data/entry/item-type.lua +56 -4
  291. package/engine/object-data/entry/lightning-type.d.ts +2 -2
  292. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  293. package/engine/object-data/entry/sound-preset.lua +140 -0
  294. package/engine/object-data/entry/unit-type.d.ts +71 -6
  295. package/engine/object-data/entry/unit-type.lua +592 -93
  296. package/engine/object-data/entry/upgrade.d.ts +2 -2
  297. package/engine/object-data/entry/upgrade.lua +4 -4
  298. package/engine/object-data/entry.d.ts +19 -14
  299. package/engine/object-data/entry.lua +60 -32
  300. package/engine/object-field/ability.d.ts +4 -4
  301. package/engine/object-field/ability.lua +9 -8
  302. package/engine/object-field/item.d.ts +22 -0
  303. package/engine/object-field/item.lua +118 -0
  304. package/engine/object-field/unit.d.ts +72 -3
  305. package/engine/object-field/unit.lua +268 -7
  306. package/engine/object-field.d.ts +26 -7
  307. package/engine/object-field.lua +360 -119
  308. package/engine/random.d.ts +10 -0
  309. package/engine/random.lua +21 -0
  310. package/engine/standard/entries/ability-type.d.ts +3102 -7
  311. package/engine/standard/entries/ability-type.lua +0 -6
  312. package/engine/standard/entries/buff-type.d.ts +3 -0
  313. package/engine/standard/entries/buff-type.lua +3 -0
  314. package/engine/standard/entries/item-type.d.ts +1299 -0
  315. package/engine/standard/entries/item-type.lua +2 -0
  316. package/engine/standard/entries/sound-preset.d.ts +10 -0
  317. package/engine/standard/entries/sound-preset.lua +10 -0
  318. package/engine/standard/entries/unit-type.d.ts +5 -0
  319. package/engine/standard/entries/unit-type.lua +5 -0
  320. package/engine/standard/fields/ability.d.ts +2 -2
  321. package/engine/standard/fields/ability.lua +2 -2
  322. package/engine/standard/fields/item.d.ts +4 -0
  323. package/engine/standard/fields/item.lua +6 -0
  324. package/engine/standard/fields/unit.d.ts +12 -0
  325. package/engine/standard/fields/unit.lua +20 -0
  326. package/engine/synchronization.d.ts +11 -0
  327. package/engine/synchronization.lua +77 -0
  328. package/engine/text-tag.d.ts +36 -2
  329. package/engine/text-tag.lua +250 -10
  330. package/engine/unit.d.ts +10 -1
  331. package/engine/unit.lua +10 -1
  332. package/event.d.ts +1 -1
  333. package/lualib_bundle.lua +1 -1
  334. package/math.d.ts +2 -0
  335. package/math.lua +14 -0
  336. package/net/socket.lua +1 -1
  337. package/network.lua +25 -1
  338. package/objutil/buff.lua +11 -10
  339. package/objutil/object.lua +1 -1
  340. package/objutil/unit.lua +8 -0
  341. package/operation.d.ts +8 -1
  342. package/operation.lua +38 -18
  343. package/package.json +3 -23
  344. package/patch-lua.lua +15 -0
  345. package/patch-lualib.lua +1 -1
  346. package/utility/arrays.d.ts +2 -0
  347. package/utility/arrays.lua +11 -0
  348. package/utility/callback-array.d.ts +17 -0
  349. package/utility/callback-array.lua +61 -0
  350. package/utility/functions.d.ts +8 -0
  351. package/utility/functions.lua +13 -0
  352. package/utility/linked-map.d.ts +35 -0
  353. package/utility/linked-map.lua +107 -0
  354. package/utility/linked-set.d.ts +5 -1
  355. package/utility/linked-set.lua +49 -1
  356. package/utility/lua-maps.d.ts +15 -2
  357. package/utility/lua-maps.lua +53 -2
  358. package/utility/lua-sets.d.ts +2 -0
  359. package/utility/lua-sets.lua +7 -0
  360. package/utility/random.d.ts +102 -0
  361. package/utility/random.lua +273 -0
  362. package/utility/records.lua +20 -1
  363. package/utility/reflection.lua +11 -7
  364. package/utility/types.d.ts +3 -0
  365. package/utility/unordered-map.d.ts +27 -0
  366. package/utility/unordered-map.lua +99 -0
  367. package/core/types/order.d.ts +0 -25
  368. package/core/types/order.lua +0 -55
  369. /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
  370. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  371. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  372. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -4,12 +4,11 @@ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
4
  local ____exports = {}
5
5
  local ____ability = require("engine.behaviour.ability")
6
6
  local AbilityBehavior = ____ability.AbilityBehavior
7
- local ____unit = require("engine.internal.unit")
8
- local Unit = ____unit.Unit
9
7
  local ____ability = require("engine.standard.fields.ability")
10
8
  local ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD = ____ability.ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD
11
9
  local AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD = ____ability.AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD
12
- local DamageAbilityBehavior = __TS__Class()
10
+ ____exports.DamageAbilityBehavior = __TS__Class()
11
+ local DamageAbilityBehavior = ____exports.DamageAbilityBehavior
13
12
  DamageAbilityBehavior.name = "DamageAbilityBehavior"
14
13
  __TS__ClassExtends(DamageAbilityBehavior, AbilityBehavior)
15
14
  function DamageAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
@@ -34,75 +33,67 @@ function DamageAbilityBehavior.prototype.calculateDamage(self, caster)
34
33
  end
35
34
  return damage
36
35
  end
37
- ____exports.DamageSelfAbilityBehavior = __TS__Class()
38
- local DamageSelfAbilityBehavior = ____exports.DamageSelfAbilityBehavior
39
- DamageSelfAbilityBehavior.name = "DamageSelfAbilityBehavior"
40
- __TS__ClassExtends(DamageSelfAbilityBehavior, DamageAbilityBehavior)
41
- function DamageSelfAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
42
- DamageAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
43
- end
44
- function DamageSelfAbilityBehavior.prototype.onImpact(self, caster)
36
+ function DamageAbilityBehavior.prototype.damageTarget(self, caster, target, damage)
45
37
  local parameters = self.parameters
46
38
  caster:damageTarget(
47
- caster,
48
- self:calculateDamage(caster),
39
+ target,
40
+ damage or self.precalculatedDamage or self:calculateDamage(caster),
49
41
  nil,
50
42
  nil,
51
- parameters and parameters.attackType,
43
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.attackType),
52
44
  parameters and parameters.damageType,
53
- parameters and parameters.weaponType
45
+ parameters and parameters.weaponType,
46
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.metadata)
54
47
  )
55
48
  end
49
+ function DamageAbilityBehavior.prototype.onChannelingStart(self, caster)
50
+ self.precalculatedDamage = self:calculateDamage(caster)
51
+ end
52
+ function DamageAbilityBehavior.prototype.onStop(self)
53
+ self.precalculatedDamage = nil
54
+ end
55
+ ____exports.DamageSelfAbilityBehavior = __TS__Class()
56
+ local DamageSelfAbilityBehavior = ____exports.DamageSelfAbilityBehavior
57
+ DamageSelfAbilityBehavior.name = "DamageSelfAbilityBehavior"
58
+ __TS__ClassExtends(DamageSelfAbilityBehavior, ____exports.DamageAbilityBehavior)
59
+ function DamageSelfAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
60
+ DamageSelfAbilityBehavior.____super.prototype.____constructor(self, ability, damage, parameters)
61
+ end
62
+ function DamageSelfAbilityBehavior.prototype.onImpact(self, caster)
63
+ self:damageTarget(caster, caster)
64
+ end
56
65
  ____exports.DamageTargetAbilityBehavior = __TS__Class()
57
66
  local DamageTargetAbilityBehavior = ____exports.DamageTargetAbilityBehavior
58
67
  DamageTargetAbilityBehavior.name = "DamageTargetAbilityBehavior"
59
- __TS__ClassExtends(DamageTargetAbilityBehavior, DamageAbilityBehavior)
68
+ __TS__ClassExtends(DamageTargetAbilityBehavior, ____exports.DamageAbilityBehavior)
60
69
  function DamageTargetAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
61
- DamageAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
70
+ DamageTargetAbilityBehavior.____super.prototype.____constructor(self, ability, damage, parameters)
62
71
  end
63
72
  function DamageTargetAbilityBehavior.prototype.onWidgetTargetImpact(self, caster, target)
64
- local parameters = self.parameters
65
- caster:damageTarget(
66
- target,
67
- self:calculateDamage(caster),
68
- nil,
69
- nil,
70
- parameters and parameters.attackType,
71
- parameters and parameters.damageType,
72
- parameters and parameters.weaponType
73
- )
73
+ self:damageTarget(caster, target)
74
74
  end
75
75
  local DamageAreaAbilityBehavior = __TS__Class()
76
76
  DamageAreaAbilityBehavior.name = "DamageAreaAbilityBehavior"
77
- __TS__ClassExtends(DamageAreaAbilityBehavior, DamageAbilityBehavior)
77
+ __TS__ClassExtends(DamageAreaAbilityBehavior, ____exports.DamageAbilityBehavior)
78
78
  function DamageAreaAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
79
- DamageAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
79
+ DamageAreaAbilityBehavior.____super.prototype.____constructor(self, ability, damage, parameters)
80
80
  end
81
81
  function DamageAreaAbilityBehavior.prototype.damageArea(self, caster, x, y)
82
82
  local parameters = self.parameters
83
- local targets = Unit.getAllowedTargetsInCollisionRange(
84
- caster,
85
- self:resolveCurrentAbilityDependentValue(ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD),
83
+ caster:damageArea(
86
84
  x,
87
85
  y,
88
- self:resolveCurrentAbilityDependentValue(AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD)
86
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.areaOfEffect or AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD),
87
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.allowedTargetCombatClassifications or ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD),
88
+ self.precalculatedDamage or self:calculateDamage(caster),
89
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.maximumDamage or 0),
90
+ nil,
91
+ nil,
92
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.attackType),
93
+ parameters and parameters.damageType,
94
+ parameters and parameters.weaponType,
95
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.metadata)
89
96
  )
90
- local damage = self:calculateDamage(caster)
91
- local maximumDamage = self:resolveCurrentAbilityDependentValue(parameters and parameters.maximumDamage or 0)
92
- if maximumDamage ~= 0 and damage > maximumDamage then
93
- damage = maximumDamage / #targets
94
- end
95
- for ____, target in ipairs(targets) do
96
- caster:damageTarget(
97
- target,
98
- damage,
99
- nil,
100
- nil,
101
- parameters and parameters.attackType,
102
- parameters and parameters.damageType,
103
- parameters and parameters.weaponType
104
- )
105
- end
106
97
  end
107
98
  ____exports.DamageSelfAreaAbilityBehavior = __TS__Class()
108
99
  local DamageSelfAreaAbilityBehavior = ____exports.DamageSelfAreaAbilityBehavior
@@ -2,5 +2,5 @@
2
2
  import { AbilityBehavior } from "../ability";
3
3
  import { Unit } from "../../internal/unit";
4
4
  export declare abstract class EmulateImpactAbilityBehavior extends AbilityBehavior {
5
- protected emulateImpact(caster: Unit): void;
5
+ protected emulateImpact(caster: Unit): boolean;
6
6
  }
@@ -1,15 +1,22 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
4
5
  local ____exports = {}
5
6
  local ____ability = require("engine.behaviour.ability")
6
7
  local AbilityBehavior = ____ability.AbilityBehavior
8
+ local ____unit = require("engine.internal.unit")
9
+ local Unit = ____unit.Unit
7
10
  local ____ability = require("engine.standard.fields.ability")
8
11
  local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
9
12
  local MANA_COST_ABILITY_INTEGER_LEVEL_FIELD = ____ability.MANA_COST_ABILITY_INTEGER_LEVEL_FIELD
10
- local ____math = require("math")
11
- local max = ____math.max
12
- local MINIMUM_POSITIVE_NORMALIZED_FLOAT = ____math.MINIMUM_POSITIVE_NORMALIZED_FLOAT
13
+ local ____sound = require("core.types.sound")
14
+ local Sound3D = ____sound.Sound3D
15
+ local SoundSettings = ____sound.SoundSettings
16
+ local ____ability = require("engine.internal.ability")
17
+ local UnitAbility = ____ability.UnitAbility
18
+ local ____event = require("event")
19
+ local Event = ____event.Event
13
20
  ____exports.EmulateImpactAbilityBehavior = __TS__Class()
14
21
  local EmulateImpactAbilityBehavior = ____exports.EmulateImpactAbilityBehavior
15
22
  EmulateImpactAbilityBehavior.name = "EmulateImpactAbilityBehavior"
@@ -17,12 +24,21 @@ __TS__ClassExtends(EmulateImpactAbilityBehavior, AbilityBehavior)
17
24
  function EmulateImpactAbilityBehavior.prototype.emulateImpact(self, caster)
18
25
  local manaCost = self:resolveCurrentAbilityDependentValue(MANA_COST_ABILITY_INTEGER_LEVEL_FIELD)
19
26
  local cooldown = self:resolveCurrentAbilityDependentValue(COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD)
20
- if self.ability.cooldownRemaining ~= 0 or caster.mana < manaCost then
21
- return
27
+ if self.ability.cooldownRemaining ~= 0 or caster.mana < manaCost or __TS__InstanceOf(self.ability, UnitAbility) and self.ability.isDisabled then
28
+ return false
22
29
  end
23
30
  caster.mana = caster.mana - manaCost
24
- self.ability.cooldownRemaining = max(cooldown, MINIMUM_POSITIVE_NORMALIZED_FLOAT)
31
+ if cooldown == 0 then
32
+ self.ability:interruptCast()
33
+ else
34
+ self.ability.cooldownRemaining = cooldown
35
+ end
25
36
  self:flashCasterEffect(caster)
26
- AbilityBehavior:forAll(self.ability, "onImpact", caster)
37
+ local soundPresetId = self.ability:getField(ABILITY_SF_EFFECT_SOUND)
38
+ if soundPresetId ~= "" then
39
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, caster)
40
+ end
41
+ Event.invoke(Unit.abilityImpactEvent, caster, self.ability)
42
+ return true
27
43
  end
28
44
  return ____exports
@@ -14,3 +14,12 @@ export declare class RemoveBuffsSelfAbilityBehavior extends AbilityBehavior {
14
14
  constructor(ability: Ability, polarity?: AbilityDependentValue<BuffPolarity> | undefined, resistanceType?: AbilityDependentValue<BuffResistanceType> | undefined, includeExpirationTimers?: AbilityDependentValue<boolean> | undefined, includeAuras?: AbilityDependentValue<boolean> | undefined, autoDispel?: AbilityDependentValue<boolean> | undefined);
15
15
  onImpact(caster: Unit): void;
16
16
  }
17
+ export declare class RemoveBuffsTargetAbilityBehavior extends AbilityBehavior {
18
+ private readonly polarity?;
19
+ private readonly resistanceType?;
20
+ private readonly includeExpirationTimers?;
21
+ private readonly includeAuras?;
22
+ private readonly autoDispel?;
23
+ constructor(ability: Ability, polarity?: AbilityDependentValue<BuffPolarity> | undefined, resistanceType?: AbilityDependentValue<BuffResistanceType> | undefined, includeExpirationTimers?: AbilityDependentValue<boolean> | undefined, includeAuras?: AbilityDependentValue<boolean> | undefined, autoDispel?: AbilityDependentValue<boolean> | undefined);
24
+ onUnitTargetImpact(_: Unit, target: Unit): void;
25
+ }
@@ -25,4 +25,25 @@ function RemoveBuffsSelfAbilityBehavior.prototype.onImpact(self, caster)
25
25
  self:resolveCurrentAbilityDependentValue(self.autoDispel)
26
26
  )
27
27
  end
28
+ ____exports.RemoveBuffsTargetAbilityBehavior = __TS__Class()
29
+ local RemoveBuffsTargetAbilityBehavior = ____exports.RemoveBuffsTargetAbilityBehavior
30
+ RemoveBuffsTargetAbilityBehavior.name = "RemoveBuffsTargetAbilityBehavior"
31
+ __TS__ClassExtends(RemoveBuffsTargetAbilityBehavior, AbilityBehavior)
32
+ function RemoveBuffsTargetAbilityBehavior.prototype.____constructor(self, ability, polarity, resistanceType, includeExpirationTimers, includeAuras, autoDispel)
33
+ AbilityBehavior.prototype.____constructor(self, ability)
34
+ self.polarity = polarity
35
+ self.resistanceType = resistanceType
36
+ self.includeExpirationTimers = includeExpirationTimers
37
+ self.includeAuras = includeAuras
38
+ self.autoDispel = autoDispel
39
+ end
40
+ function RemoveBuffsTargetAbilityBehavior.prototype.onUnitTargetImpact(self, _, target)
41
+ target:removeBuffs(
42
+ self:resolveCurrentAbilityDependentValue(self.polarity),
43
+ self:resolveCurrentAbilityDependentValue(self.resistanceType),
44
+ self:resolveCurrentAbilityDependentValue(self.includeExpirationTimers),
45
+ self:resolveCurrentAbilityDependentValue(self.includeAuras),
46
+ self:resolveCurrentAbilityDependentValue(self.autoDispel)
47
+ )
48
+ end
28
49
  return ____exports
@@ -8,7 +8,7 @@ export declare class RestoreManaSelfAbilityBehavior extends AbilityBehavior {
8
8
  constructor(ability: Ability, mana: AbilityDependentValue<number>);
9
9
  onImpact(caster: Unit): void;
10
10
  }
11
- export declare class RestoreManaAbilityBehavior extends AbilityBehavior {
11
+ export declare class RestoreManaTargetAbilityBehavior extends AbilityBehavior {
12
12
  private readonly mana;
13
13
  constructor(ability: Ability, mana: AbilityDependentValue<number>);
14
14
  onUnitTargetImpact(caster: Unit, target: Unit): void;
@@ -15,15 +15,15 @@ end
15
15
  function RestoreManaSelfAbilityBehavior.prototype.onImpact(self, caster)
16
16
  caster.mana = caster.mana + self:resolveCurrentAbilityDependentValue(self.mana)
17
17
  end
18
- ____exports.RestoreManaAbilityBehavior = __TS__Class()
19
- local RestoreManaAbilityBehavior = ____exports.RestoreManaAbilityBehavior
20
- RestoreManaAbilityBehavior.name = "RestoreManaAbilityBehavior"
21
- __TS__ClassExtends(RestoreManaAbilityBehavior, AbilityBehavior)
22
- function RestoreManaAbilityBehavior.prototype.____constructor(self, ability, mana)
18
+ ____exports.RestoreManaTargetAbilityBehavior = __TS__Class()
19
+ local RestoreManaTargetAbilityBehavior = ____exports.RestoreManaTargetAbilityBehavior
20
+ RestoreManaTargetAbilityBehavior.name = "RestoreManaTargetAbilityBehavior"
21
+ __TS__ClassExtends(RestoreManaTargetAbilityBehavior, AbilityBehavior)
22
+ function RestoreManaTargetAbilityBehavior.prototype.____constructor(self, ability, mana)
23
23
  AbilityBehavior.prototype.____constructor(self, ability)
24
24
  self.mana = mana
25
25
  end
26
- function RestoreManaAbilityBehavior.prototype.onUnitTargetImpact(self, caster, target)
26
+ function RestoreManaTargetAbilityBehavior.prototype.onUnitTargetImpact(self, caster, target)
27
27
  target.mana = target.mana + self:resolveCurrentAbilityDependentValue(self.mana)
28
28
  end
29
29
  return ____exports
@@ -1,6 +1,7 @@
1
1
  /** @noSelfInFile */
2
2
  import { Behavior } from "../behavior";
3
- import { Unit } from "../unit";
3
+ import { Unit } from "../internal/unit";
4
+ import "../internal/unit/ability";
4
5
  import { Ability } from "../internal/ability";
5
6
  import { AbilityTypeId } from "../object-data/entry/ability-type";
6
7
  import { Widget } from "../../core/types/widget";
@@ -22,15 +23,24 @@ export declare abstract class AbilityBehavior<Parameters extends {
22
23
  protected subscribe<T extends boolean | number | string>(value: SubscribableAbilityDependentValue<T>): void;
23
24
  protected registerCommandEvent(orderTypeStringId?: string): void;
24
25
  get ability(): Ability;
26
+ get unit(): Unit | undefined;
25
27
  protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value: AbilityDependentValue<T>): T;
26
28
  protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value?: AbilityDependentValue<T>): T | undefined;
27
- protected flashCasterEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
28
- protected flashTargetEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
29
- protected flashAreaEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
30
- protected flashEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
31
- protected flashSpecialEffect(...args: [...pointOrWidget: [x: number, y: number] | [widget: Widget], duration?: number]): void;
29
+ protected getDuration(widget: Widget): number;
30
+ flashCasterEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
31
+ flashTargetEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
32
+ flashAreaEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
33
+ flashEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
34
+ flashSpecialEffect(...args: [
35
+ ...pointOrWidget: [x: number, y: number] | [widget: Widget],
36
+ ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]
37
+ ]): void;
32
38
  private static MissileLaunchConfig;
33
39
  private get missileLaunchConfig();
40
+ protected launchMissile(source: Unit, ...args: [
41
+ ...pointOrWidget: [x: number, y: number] | [widget: Unit /** TODO: support Widget */],
42
+ ...parameters: NonNullable<Parameters["missileParameters"]>
43
+ ]): void;
34
44
  protected onCreate(): void;
35
45
  onValueChange(_value: ReadonlySubscribableAbilityDependentValue<string | number | boolean>): void;
36
46
  onMissileArrival(...parameters: NonNullable<Parameters["missileParameters"]>): void;
@@ -5,11 +5,12 @@ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
5
5
  local __TS__New = ____lualib.__TS__New
6
6
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
7
7
  local ____exports = {}
8
- local createUnitEventListener
9
8
  local ____behavior = require("engine.behavior")
10
9
  local Behavior = ____behavior.Behavior
11
- local ____unit = require("engine.unit")
10
+ local ____unit = require("engine.internal.unit")
12
11
  local Unit = ____unit.Unit
12
+ local UnitClassification = ____unit.UnitClassification
13
+ require("engine.internal.unit.ability")
13
14
  local ____ability = require("engine.internal.ability")
14
15
  local Ability = ____ability.Ability
15
16
  local ____effect = require("core.types.effect")
@@ -18,6 +19,8 @@ local ____ability = require("engine.standard.fields.ability")
18
19
  local AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
19
20
  local CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = ____ability.CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD
20
21
  local CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
22
+ local DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD = ____ability.DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD
23
+ local DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD = ____ability.DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD
21
24
  local EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
22
25
  local MISSILE_ARC_ABILITY_FLOAT_FIELD = ____ability.MISSILE_ARC_ABILITY_FLOAT_FIELD
23
26
  local MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
@@ -30,17 +33,16 @@ local ____ability = require("engine.object-field.ability")
30
33
  local AbilityField = ____ability.AbilityField
31
34
  local AbilityLevelField = ____ability.AbilityLevelField
32
35
  local resolveCurrentAbilityDependentValue = ____ability.resolveCurrentAbilityDependentValue
33
- local ____timer = require("core.types.timer")
34
- local Timer = ____timer.Timer
36
+ local ____missile = require("core.types.missile")
37
+ local Missile = ____missile.Missile
35
38
  local createBehaviorFunctionsByAbilityTypeId = {}
36
- local exclusiveOnImpactHandlerAbilityBehaviorByAbility = setmetatable({}, {__mode = "k"})
37
- local function createZeroTimerUnitEventListener(key)
38
- local unitEventListener = createUnitEventListener(key)
39
- return function(unit, ability, ...)
40
- Timer:run(unitEventListener, unit, ability, ...)
39
+ local function invokeOnMissileArrival(_missile, success, abilityBehavior, ...)
40
+ if success then
41
+ abilityBehavior:onMissileArrival(...)
41
42
  end
42
43
  end
43
- createUnitEventListener = function(key)
44
+ local exclusiveOnImpactHandlerAbilityBehaviorByAbility = setmetatable({}, {__mode = "k"})
45
+ local function createUnitEventListener(key)
44
46
  return function(unit, ability, ...)
45
47
  ____exports.AbilityBehavior:forAll(ability, key, unit, ...)
46
48
  end
@@ -114,6 +116,14 @@ end
114
116
  function AbilityBehavior.prototype.resolveCurrentAbilityDependentValue(self, value)
115
117
  return resolveCurrentAbilityDependentValue(self.ability, value)
116
118
  end
119
+ function AbilityBehavior.prototype.getDuration(self, widget)
120
+ if __TS__InstanceOf(widget, Unit) then
121
+ if widget.isHero or widget:getField(UNIT_IF_LEVEL) >= 6 or widget:hasClassification(UnitClassification.RESISTANT) then
122
+ return self:resolveCurrentAbilityDependentValue(DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD)
123
+ end
124
+ end
125
+ return self:resolveCurrentAbilityDependentValue(DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD)
126
+ end
117
127
  function AbilityBehavior.prototype.flashCasterEffect(self, widget, ...)
118
128
  local attachmentPoint = CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
119
129
  Effect:flash(
@@ -148,13 +158,14 @@ function AbilityBehavior.prototype.flashEffect(self, x, y, ...)
148
158
  ...
149
159
  )
150
160
  end
151
- function AbilityBehavior.prototype.flashSpecialEffect(self, xOrWidget, yOrDuration, duration)
161
+ function AbilityBehavior.prototype.flashSpecialEffect(self, xOrWidget, yOrParametersOrDuration, durationOrParameters, parameters)
152
162
  if type(xOrWidget) == "number" then
153
163
  Effect:flash(
154
164
  SPECIAL_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
155
165
  xOrWidget,
156
- yOrDuration,
157
- duration
166
+ yOrParametersOrDuration,
167
+ durationOrParameters,
168
+ parameters
158
169
  )
159
170
  else
160
171
  local attachmentPoint = SPECIAL_EFFECT_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
@@ -162,7 +173,30 @@ function AbilityBehavior.prototype.flashSpecialEffect(self, xOrWidget, yOrDurati
162
173
  SPECIAL_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
163
174
  xOrWidget,
164
175
  attachmentPoint ~= "" and attachmentPoint or "origin",
165
- yOrDuration
176
+ yOrParametersOrDuration,
177
+ durationOrParameters
178
+ )
179
+ end
180
+ end
181
+ function AbilityBehavior.prototype.launchMissile(self, source, xOrWidget, yOrParameter, ...)
182
+ if type(xOrWidget) ~= "number" then
183
+ Missile:launch(
184
+ self.missileLaunchConfig,
185
+ source,
186
+ xOrWidget,
187
+ invokeOnMissileArrival,
188
+ self,
189
+ yOrParameter,
190
+ ...
191
+ )
192
+ else
193
+ Missile:launch(
194
+ self.missileLaunchConfig,
195
+ source,
196
+ vec2(xOrWidget, yOrParameter),
197
+ invokeOnMissileArrival,
198
+ self,
199
+ ...
166
200
  )
167
201
  end
168
202
  end
@@ -237,6 +271,18 @@ __TS__SetDescriptor(
237
271
  end},
238
272
  true
239
273
  )
274
+ __TS__SetDescriptor(
275
+ AbilityBehavior.prototype,
276
+ "unit",
277
+ {get = function(self)
278
+ local owner = self.object.owner
279
+ if __TS__InstanceOf(owner, Unit) then
280
+ return owner
281
+ end
282
+ return owner.owner
283
+ end},
284
+ true
285
+ )
240
286
  AbilityBehavior.MissileLaunchConfig = ____class_2
241
287
  __TS__SetDescriptor(
242
288
  AbilityBehavior.prototype,
@@ -260,13 +306,13 @@ __TS__SetDescriptor(
260
306
  Unit.abilityDestructibleTargetChannelingStartEvent:addListener(createUnitEventListener("onDestructibleTargetChannelingStart"))
261
307
  Unit.abilityPointTargetChannelingStartEvent:addListener(createUnitEventListener("onPointTargetChannelingStart"))
262
308
  Unit.abilityNoTargetChannelingStartEvent:addListener(createUnitEventListener("onNoTargetChannelingStart"))
263
- Unit.abilityChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onImpact"))
264
- Unit.abilityWidgetTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onWidgetTargetImpact"))
265
- Unit.abilityUnitTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onUnitTargetImpact"))
266
- Unit.abilityItemTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onItemTargetImpact"))
267
- Unit.abilityDestructibleTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onDestructibleTargetImpact"))
268
- Unit.abilityPointTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onPointTargetImpact"))
269
- Unit.abilityNoTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onNoTargetImpact"))
309
+ Unit.abilityImpactEvent:addListener(createUnitEventListener("onImpact"))
310
+ Unit.abilityWidgetTargetImpactEvent:addListener(createUnitEventListener("onWidgetTargetImpact"))
311
+ Unit.abilityUnitTargetImpactEvent:addListener(createUnitEventListener("onUnitTargetImpact"))
312
+ Unit.abilityItemTargetImpactEvent:addListener(createUnitEventListener("onItemTargetImpact"))
313
+ Unit.abilityDestructibleTargetImpactEvent:addListener(createUnitEventListener("onDestructibleTargetImpact"))
314
+ Unit.abilityPointTargetImpactEvent:addListener(createUnitEventListener("onPointTargetImpact"))
315
+ Unit.abilityNoTargetImpactEvent:addListener(createUnitEventListener("onNoTargetImpact"))
270
316
  Unit.abilityChannelingFinishEvent:addListener(createUnitEventListener("onChannelingFinish"))
271
317
  Unit.abilityStopEvent:addListener(createUnitEventListener("onStop"))
272
318
  end)(AbilityBehavior)
@@ -4,15 +4,21 @@ import { Unit } from "../../unit";
4
4
  import { BuffTypeId } from "../../object-data/entry/buff-type";
5
5
  import { TextTagPreset } from "../../text-tag";
6
6
  import { Destructor } from "../../../destroyable";
7
- export type StunImmunityUnitBehaviourParameters = {
8
- buffTypeIds?: LuaSet<BuffTypeId>;
7
+ import { BehaviorPriority } from "../../behavior";
8
+ export type StunImmunityUnitBehaviorParameters = {
9
+ readonly priority?: BehaviorPriority;
10
+ buffTypeIds?: readonly BuffTypeId[];
9
11
  textTagPreset?: TextTagPreset;
10
12
  textTagText?: string;
13
+ additionalAction?: (this: void, unit: Unit) => void;
11
14
  };
12
15
  export declare class StunImmunityUnitBehavior extends UnitBehavior {
13
- private readonly parameters;
14
- static defaultParameters: StunImmunityUnitBehaviourParameters;
15
- constructor(unit: Unit, parameters?: StunImmunityUnitBehaviourParameters);
16
+ readonly parameters: Readonly<StunImmunityUnitBehaviorParameters>;
17
+ static defaultParameters: StunImmunityUnitBehaviorParameters;
18
+ constructor(unit: Unit, parameters?: Readonly<StunImmunityUnitBehaviorParameters>);
16
19
  protected onDestroy(): Destructor;
17
- private onBuffsCheck;
20
+ onDamageReceived(): void;
21
+ onTargetingAbilityChannelingStart(): void;
22
+ onTargetingAbilityImpact(): void;
23
+ protected onEffect(): void;
18
24
  }
@@ -8,35 +8,58 @@ local UnitBehavior = ____unit.UnitBehavior
8
8
  local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
9
9
  local AbilityType = ____ability_2Dtype.AbilityType
10
10
  local ____arrays = require("utility.arrays")
11
- local flatMapToLuaSet = ____arrays.flatMapToLuaSet
11
+ local distinct = ____arrays.distinct
12
+ local flatMap = ____arrays.flatMap
12
13
  local map = ____arrays.map
13
14
  local ____text_2Dtag = require("engine.text-tag")
14
15
  local TextTag = ____text_2Dtag.TextTag
16
+ local ____timer = require("core.types.timer")
17
+ local Timer = ____timer.Timer
15
18
  local DEFAULT_BUFF_TYPE_IDS = postcompile(function()
16
- return flatMapToLuaSet(
19
+ return distinct(flatMap(
17
20
  AbilityType:getAllByBaseIds(map({
18
- "Aslo",
19
- "AHtc",
20
- "Aens",
21
- "Aprg",
22
- "Apg2",
23
- "AOeq",
24
- "SNeq",
25
- "Aweb",
26
- "Afra",
27
- "Afrb",
28
- "Afrc",
29
- "Afr2",
30
- "Acri",
31
- "Scri",
32
- "AUfn",
33
- "Aspo",
34
- "AEer",
35
- "ACwb"
21
+ "AHtb",
22
+ "AHbh",
23
+ "AOws",
24
+ "AOw2",
25
+ "AUim",
26
+ "Acyc",
27
+ "ANfb",
28
+ "ANsb",
29
+ "ANcs",
30
+ "ANc1",
31
+ "ANc2",
32
+ "ANc3",
33
+ "ACbh",
34
+ "ANbh",
35
+ "SCc1",
36
+ "ACcy",
37
+ "ANb2",
38
+ "Awrs",
39
+ "Awrh",
40
+ "Awrg",
41
+ "ACtb",
42
+ "ACcb"
36
43
  }, fourCC)),
37
44
  function(abilityType) return __TS__ArrayFlat(abilityType.buffTypeIds) end
38
- )
45
+ ))
39
46
  end)
47
+ local function process(behavior)
48
+ local hasRemovedBuffs = false
49
+ for ____, buffTypeId in ipairs(behavior.parameters.buffTypeIds or DEFAULT_BUFF_TYPE_IDS) do
50
+ hasRemovedBuffs = hasRemovedBuffs or behavior.unit:removeBuff(buffTypeId)
51
+ end
52
+ if hasRemovedBuffs then
53
+ behavior.onEffect(behavior)
54
+ if behavior.parameters.textTagText ~= nil then
55
+ TextTag:flash(TextTag.MISS, behavior.parameters.textTagText, behavior.unit.x, behavior.unit.y)
56
+ end
57
+ local ____opt_0 = behavior.parameters.additionalAction
58
+ if ____opt_0 ~= nil then
59
+ ____opt_0(behavior.unit)
60
+ end
61
+ end
62
+ end
40
63
  ____exports.StunImmunityUnitBehavior = __TS__Class()
41
64
  local StunImmunityUnitBehavior = ____exports.StunImmunityUnitBehavior
42
65
  StunImmunityUnitBehavior.name = "StunImmunityUnitBehavior"
@@ -45,23 +68,26 @@ function StunImmunityUnitBehavior.prototype.____constructor(self, unit, paramete
45
68
  if parameters == nil then
46
69
  parameters = ____exports.StunImmunityUnitBehavior.defaultParameters
47
70
  end
48
- UnitBehavior.prototype.____constructor(self, unit)
71
+ UnitBehavior.prototype.____constructor(self, unit, parameters.priority)
49
72
  self.parameters = parameters
50
73
  unit:decrementStunCounter()
51
- self:onBuffsCheck()
74
+ process(self)
52
75
  end
53
76
  function StunImmunityUnitBehavior.prototype.onDestroy(self)
54
77
  self.unit:incrementStunCounter()
55
78
  return UnitBehavior.prototype.onDestroy(self)
56
79
  end
57
- function StunImmunityUnitBehavior.prototype.onBuffsCheck(self)
58
- local hasRemovedBuffs = false
59
- for buffTypeId in pairs(self.parameters.buffTypeIds or DEFAULT_BUFF_TYPE_IDS) do
60
- hasRemovedBuffs = hasRemovedBuffs or self.unit:removeBuff(buffTypeId)
61
- end
62
- if hasRemovedBuffs and self.parameters.textTagText ~= nil then
63
- TextTag:flash(TextTag.MISS, self.parameters.textTagText, self.unit.x, self.unit.y)
64
- end
80
+ function StunImmunityUnitBehavior.prototype.onDamageReceived(self)
81
+ process(self)
82
+ Timer:run(process, self)
83
+ end
84
+ function StunImmunityUnitBehavior.prototype.onTargetingAbilityChannelingStart(self)
85
+ process(self)
86
+ end
87
+ function StunImmunityUnitBehavior.prototype.onTargetingAbilityImpact(self)
88
+ process(self)
89
+ end
90
+ function StunImmunityUnitBehavior.prototype.onEffect(self)
65
91
  end
66
92
  StunImmunityUnitBehavior.defaultParameters = {buffTypeIds = DEFAULT_BUFF_TYPE_IDS, textTagPreset = TextTag.MISS, textTagText = nil}
67
93
  return ____exports