warscript 0.0.1-dev.724bf08 → 0.0.1-dev.72620d4

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 (436) 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/dummy.lua +4 -2
  6. package/core/types/effect.d.ts +13 -4
  7. package/core/types/effect.lua +136 -123
  8. package/core/types/frame.d.ts +16 -2
  9. package/core/types/frame.lua +141 -77
  10. package/core/types/handle.lua +9 -9
  11. package/core/types/item.d.ts +1 -0
  12. package/core/types/item.lua +1 -0
  13. package/core/types/player.d.ts +18 -1
  14. package/core/types/player.lua +76 -26
  15. package/core/types/playerCamera.d.ts +2 -0
  16. package/core/types/playerCamera.lua +123 -5
  17. package/core/types/playerColor.lua +4 -3
  18. package/core/types/sound.d.ts +18 -25
  19. package/core/types/sound.lua +113 -33
  20. package/core/types/tileCell.d.ts +11 -1
  21. package/core/types/tileCell.lua +97 -0
  22. package/core/types/timer.d.ts +9 -8
  23. package/core/types/timer.lua +45 -23
  24. package/core/types/unit.d.ts +5 -0
  25. package/core/types/unit.lua +5 -0
  26. package/core/util.d.ts +3 -1
  27. package/core/util.lua +121 -4
  28. package/decl/native.d.ts +1718 -964
  29. package/destroyable.d.ts +1 -0
  30. package/destroyable.lua +9 -0
  31. package/engine/behavior.d.ts +14 -1
  32. package/engine/behavior.lua +230 -70
  33. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  34. package/engine/behaviour/ability/always-enabled.lua +31 -0
  35. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  36. package/engine/behaviour/ability/apply-buff.lua +36 -4
  37. package/engine/behaviour/ability/apply-unit-behavior.lua +6 -0
  38. package/engine/behaviour/ability/damage.d.ts +13 -3
  39. package/engine/behaviour/ability/damage.lua +41 -49
  40. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  41. package/engine/behaviour/ability/emulate-impact.lua +20 -6
  42. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  43. package/engine/behaviour/ability/on-command-impact.lua +8 -0
  44. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  45. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  46. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  47. package/engine/behaviour/ability/restore-mana.lua +6 -6
  48. package/engine/behaviour/ability.d.ts +23 -6
  49. package/engine/behaviour/ability.lua +133 -24
  50. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  51. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  52. package/engine/behaviour/unit.d.ts +41 -2
  53. package/engine/behaviour/unit.lua +270 -6
  54. package/engine/buff.d.ts +121 -59
  55. package/engine/buff.lua +605 -301
  56. package/engine/index.d.ts +2 -1
  57. package/engine/internal/ability.d.ts +25 -2
  58. package/engine/internal/ability.lua +164 -30
  59. package/engine/internal/item/ability.lua +162 -4
  60. package/engine/internal/item/fields.d.ts +12 -0
  61. package/engine/internal/item/fields.lua +33 -0
  62. package/engine/internal/item/owner-cache.d.ts +5 -0
  63. package/engine/internal/item/owner-cache.lua +4 -0
  64. package/engine/internal/item+owner.d.ts +2 -0
  65. package/engine/internal/item+owner.lua +37 -8
  66. package/engine/internal/item.d.ts +34 -18
  67. package/engine/internal/item.lua +308 -102
  68. package/engine/internal/mechanics/ability-duration.lua +1 -1
  69. package/engine/internal/mechanics/cast-ability.lua +6 -3
  70. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  71. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  72. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  73. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  74. package/engine/internal/misc/frame-coordinates.lua +21 -0
  75. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  76. package/engine/internal/misc/get-terrain-z.lua +11 -0
  77. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  78. package/engine/internal/misc/player-local-handle.lua +5 -0
  79. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  80. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  81. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  82. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  83. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  84. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  85. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  86. package/engine/internal/object-data/evasion-probability.lua +16 -0
  87. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  88. package/engine/internal/object-data/health-bonus.lua +16 -0
  89. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  90. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  91. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  92. package/engine/internal/object-data/mana-bonus.lua +16 -0
  93. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  94. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  95. package/engine/internal/unit/ability.d.ts +35 -0
  96. package/engine/internal/unit/ability.lua +113 -12
  97. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  98. package/engine/internal/unit/add-item-to-slot-init.lua +12 -0
  99. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  100. package/engine/internal/unit/add-item-to-slot.lua +93 -0
  101. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  102. package/engine/internal/unit/allowed-targets.lua +9 -1
  103. package/engine/internal/unit/appearance.d.ts +15 -0
  104. package/engine/internal/unit/appearance.lua +85 -0
  105. package/engine/internal/unit/attributes.d.ts +17 -0
  106. package/engine/internal/unit/attributes.lua +46 -0
  107. package/engine/internal/unit/bonus.d.ts +16 -0
  108. package/engine/internal/unit/bonus.lua +119 -8
  109. package/engine/internal/unit/buff.d.ts +2 -2
  110. package/engine/internal/unit/buff.lua +34 -19
  111. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  112. package/engine/internal/unit/equipment-inventory.lua +233 -0
  113. package/engine/internal/unit/expiration-timer.lua +1 -1
  114. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  115. package/engine/internal/unit/extended-inventory.lua +99 -0
  116. package/engine/internal/unit/fly-height.d.ts +7 -0
  117. package/engine/internal/unit/fly-height.lua +20 -0
  118. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  119. package/engine/internal/unit/ignore-events-items.lua +14 -0
  120. package/engine/internal/unit/interrupts.d.ts +12 -0
  121. package/engine/internal/unit/interrupts.lua +28 -0
  122. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  123. package/engine/internal/unit/inventory.lua +87 -0
  124. package/engine/internal/unit/item-container.d.ts +25 -0
  125. package/engine/internal/unit/item-container.lua +11 -0
  126. package/engine/internal/unit/item-order-events.d.ts +17 -0
  127. package/engine/internal/unit/item-order-events.lua +67 -0
  128. package/engine/internal/unit/item-slot.d.ts +27 -0
  129. package/engine/internal/unit/item-slot.lua +92 -0
  130. package/engine/internal/unit/main-selected.lua +12 -27
  131. package/engine/internal/unit/order.d.ts +20 -0
  132. package/engine/internal/unit/order.lua +136 -0
  133. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  134. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  135. package/engine/internal/unit/range-event.d.ts +12 -0
  136. package/engine/internal/unit/range-event.lua +90 -0
  137. package/engine/internal/unit/scale.d.ts +7 -0
  138. package/engine/internal/unit/scale.lua +20 -0
  139. package/engine/internal/unit+ability.d.ts +2 -1
  140. package/engine/internal/unit+ability.lua +73 -3
  141. package/engine/internal/unit+bonus.lua +3 -3
  142. package/engine/internal/unit+damage.d.ts +11 -11
  143. package/engine/internal/unit+damage.lua +43 -14
  144. package/engine/internal/unit+rally.lua +9 -31
  145. package/engine/internal/unit+spellSteal.lua +1 -2
  146. package/engine/internal/unit-missile-data.lua +58 -32
  147. package/engine/internal/unit-missile-launch.lua +65 -27
  148. package/engine/internal/unit.d.ts +45 -33
  149. package/engine/internal/unit.lua +432 -308
  150. package/engine/internal/utility.lua +12 -0
  151. package/engine/lightning.d.ts +12 -5
  152. package/engine/lightning.lua +48 -14
  153. package/engine/local-client.d.ts +28 -0
  154. package/engine/local-client.lua +324 -54
  155. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  156. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  157. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  158. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  159. package/engine/object-data/auxiliary/attachment-preset.d.ts +14 -2
  160. package/engine/object-data/auxiliary/attachment-preset.lua +11 -3
  161. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  162. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  163. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  164. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  165. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  166. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  167. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  168. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  169. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  170. package/engine/object-data/auxiliary/item-class.lua +2 -0
  171. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  172. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  173. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  174. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  175. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  176. package/engine/object-data/auxiliary/order-type.lua +2 -0
  177. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  178. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  179. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  180. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  181. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  182. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  183. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  184. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  185. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  186. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  187. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  188. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  189. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  190. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  191. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  192. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  193. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  194. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  195. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  196. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  197. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  198. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  199. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  200. package/engine/object-data/entry/ability-type/blank-configurable.lua +42 -1
  201. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  202. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  203. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  204. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  205. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  206. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  207. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  208. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  209. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  210. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  211. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  212. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  213. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  214. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  215. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  216. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  217. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  218. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  219. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  220. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  221. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  222. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  223. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  224. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  225. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  226. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  227. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  228. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  229. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  230. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  231. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  232. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  233. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  234. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  235. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  236. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  237. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  238. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  239. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  240. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  241. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  242. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  243. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  244. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  245. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  246. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  247. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  248. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  249. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  250. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  251. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  252. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  253. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  254. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  255. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  256. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  257. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  258. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  259. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  260. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  261. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  262. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  263. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  264. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  265. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  266. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  267. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  268. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  269. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  270. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  271. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  272. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  273. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  274. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  275. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  276. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  277. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  278. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  279. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  280. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  281. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  282. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  283. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  284. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  285. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  286. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  287. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  288. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  289. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  290. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  291. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  292. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  293. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  294. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  295. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  296. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  297. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  298. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  299. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  300. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  301. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  302. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  303. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  304. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  305. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  306. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  307. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  308. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  309. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  310. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  311. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  312. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  313. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  314. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  315. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  316. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  317. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  318. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  319. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  320. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  321. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  322. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  323. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  324. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  325. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  326. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  327. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  328. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  329. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  330. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  331. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  332. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  333. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  334. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  335. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  336. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  337. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  338. package/engine/object-data/entry/ability-type/web.lua +52 -0
  339. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  340. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  341. package/engine/object-data/entry/ability-type.d.ts +41 -20
  342. package/engine/object-data/entry/ability-type.lua +337 -44
  343. package/engine/object-data/entry/buff-type/applicable.lua +122 -137
  344. package/engine/object-data/entry/buff-type.d.ts +10 -12
  345. package/engine/object-data/entry/buff-type.lua +39 -29
  346. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  347. package/engine/object-data/entry/destructible-type.lua +181 -0
  348. package/engine/object-data/entry/item-type.d.ts +20 -3
  349. package/engine/object-data/entry/item-type.lua +99 -2
  350. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  351. package/engine/object-data/entry/lightning-type.lua +1 -1
  352. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  353. package/engine/object-data/entry/sound-preset.lua +140 -0
  354. package/engine/object-data/entry/unit-type.d.ts +71 -6
  355. package/engine/object-data/entry/unit-type.lua +592 -93
  356. package/engine/object-data/entry/upgrade.d.ts +2 -2
  357. package/engine/object-data/entry/upgrade.lua +4 -4
  358. package/engine/object-data/entry.d.ts +21 -14
  359. package/engine/object-data/entry.lua +68 -32
  360. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  361. package/engine/object-field/ability.d.ts +8 -5
  362. package/engine/object-field/ability.lua +10 -6
  363. package/engine/object-field/item.d.ts +22 -0
  364. package/engine/object-field/item.lua +118 -0
  365. package/engine/object-field/unit.d.ts +72 -3
  366. package/engine/object-field/unit.lua +268 -7
  367. package/engine/object-field.d.ts +26 -7
  368. package/engine/object-field.lua +362 -117
  369. package/engine/random.d.ts +10 -0
  370. package/engine/random.lua +21 -0
  371. package/engine/standard/entries/ability-type.d.ts +3102 -7
  372. package/engine/standard/entries/ability-type.lua +0 -6
  373. package/engine/standard/entries/buff-type.d.ts +48 -0
  374. package/engine/standard/entries/buff-type.lua +46 -0
  375. package/engine/standard/entries/item-type.d.ts +1299 -0
  376. package/engine/standard/entries/item-type.lua +2 -0
  377. package/engine/standard/entries/lightning-type.d.ts +42 -15
  378. package/engine/standard/entries/lightning-type.lua +0 -14
  379. package/engine/standard/entries/sound-preset.d.ts +10 -0
  380. package/engine/standard/entries/sound-preset.lua +10 -0
  381. package/engine/standard/entries/unit-type.d.ts +5 -0
  382. package/engine/standard/entries/unit-type.lua +5 -0
  383. package/engine/standard/fields/ability.d.ts +2 -2
  384. package/engine/standard/fields/ability.lua +2 -2
  385. package/engine/standard/fields/item.d.ts +4 -0
  386. package/engine/standard/fields/item.lua +6 -0
  387. package/engine/standard/fields/unit.d.ts +12 -0
  388. package/engine/standard/fields/unit.lua +20 -0
  389. package/engine/synchronization.d.ts +11 -0
  390. package/engine/synchronization.lua +77 -0
  391. package/engine/text-tag.d.ts +36 -2
  392. package/engine/text-tag.lua +250 -10
  393. package/engine/unit.d.ts +12 -1
  394. package/engine/unit.lua +12 -1
  395. package/event.d.ts +1 -1
  396. package/lualib_bundle.lua +1 -1
  397. package/math.d.ts +2 -0
  398. package/math.lua +14 -0
  399. package/net/socket.lua +1 -1
  400. package/network.lua +25 -1
  401. package/objutil/buff.lua +12 -11
  402. package/objutil/object.lua +1 -1
  403. package/objutil/unit.lua +8 -0
  404. package/operation.d.ts +8 -1
  405. package/operation.lua +38 -18
  406. package/package.json +3 -23
  407. package/patch-lua.lua +15 -0
  408. package/patch-lualib.lua +1 -1
  409. package/utility/arrays.d.ts +3 -0
  410. package/utility/arrays.lua +23 -0
  411. package/utility/callback-array.d.ts +17 -0
  412. package/utility/callback-array.lua +61 -0
  413. package/utility/functions.d.ts +8 -0
  414. package/utility/functions.lua +13 -0
  415. package/utility/linked-map.d.ts +35 -0
  416. package/utility/linked-map.lua +107 -0
  417. package/utility/linked-set.d.ts +5 -1
  418. package/utility/linked-set.lua +49 -1
  419. package/utility/lua-maps.d.ts +15 -2
  420. package/utility/lua-maps.lua +53 -2
  421. package/utility/lua-sets.d.ts +2 -0
  422. package/utility/lua-sets.lua +7 -0
  423. package/utility/random.d.ts +102 -0
  424. package/utility/random.lua +273 -0
  425. package/utility/records.lua +20 -1
  426. package/utility/reflection.lua +11 -7
  427. package/utility/types.d.ts +3 -0
  428. package/utility/unordered-map.d.ts +27 -0
  429. package/utility/unordered-map.lua +99 -0
  430. package/core/types/order.d.ts +0 -25
  431. package/core/types/order.lua +0 -55
  432. package/engine/internal/unit/item.lua +0 -84
  433. /package/engine/internal/{object-data/armor-increase.d.ts → misc/ability-disable-counter.d.ts} +0 -0
  434. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  435. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  436. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -4,12 +4,12 @@ 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
+ require("engine.internal.unit+damage")
11
+ ____exports.DamageAbilityBehavior = __TS__Class()
12
+ local DamageAbilityBehavior = ____exports.DamageAbilityBehavior
13
13
  DamageAbilityBehavior.name = "DamageAbilityBehavior"
14
14
  __TS__ClassExtends(DamageAbilityBehavior, AbilityBehavior)
15
15
  function DamageAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
@@ -34,75 +34,67 @@ function DamageAbilityBehavior.prototype.calculateDamage(self, caster)
34
34
  end
35
35
  return damage
36
36
  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)
37
+ function DamageAbilityBehavior.prototype.damageTarget(self, caster, target, damage)
45
38
  local parameters = self.parameters
46
39
  caster:damageTarget(
47
- caster,
48
- self:calculateDamage(caster),
40
+ target,
41
+ damage or self.precalculatedDamage or self:calculateDamage(caster),
49
42
  nil,
50
43
  nil,
51
- parameters and parameters.attackType,
44
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.attackType),
52
45
  parameters and parameters.damageType,
53
- parameters and parameters.weaponType
46
+ parameters and parameters.weaponType,
47
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.metadata)
54
48
  )
55
49
  end
50
+ function DamageAbilityBehavior.prototype.onChannelingStart(self, caster)
51
+ self.precalculatedDamage = self:calculateDamage(caster)
52
+ end
53
+ function DamageAbilityBehavior.prototype.onStop(self)
54
+ self.precalculatedDamage = nil
55
+ end
56
+ ____exports.DamageSelfAbilityBehavior = __TS__Class()
57
+ local DamageSelfAbilityBehavior = ____exports.DamageSelfAbilityBehavior
58
+ DamageSelfAbilityBehavior.name = "DamageSelfAbilityBehavior"
59
+ __TS__ClassExtends(DamageSelfAbilityBehavior, ____exports.DamageAbilityBehavior)
60
+ function DamageSelfAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
61
+ DamageSelfAbilityBehavior.____super.prototype.____constructor(self, ability, damage, parameters)
62
+ end
63
+ function DamageSelfAbilityBehavior.prototype.onImpact(self, caster)
64
+ self:damageTarget(caster, caster)
65
+ end
56
66
  ____exports.DamageTargetAbilityBehavior = __TS__Class()
57
67
  local DamageTargetAbilityBehavior = ____exports.DamageTargetAbilityBehavior
58
68
  DamageTargetAbilityBehavior.name = "DamageTargetAbilityBehavior"
59
- __TS__ClassExtends(DamageTargetAbilityBehavior, DamageAbilityBehavior)
69
+ __TS__ClassExtends(DamageTargetAbilityBehavior, ____exports.DamageAbilityBehavior)
60
70
  function DamageTargetAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
61
- DamageAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
71
+ DamageTargetAbilityBehavior.____super.prototype.____constructor(self, ability, damage, parameters)
62
72
  end
63
73
  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
- )
74
+ self:damageTarget(caster, target)
74
75
  end
75
76
  local DamageAreaAbilityBehavior = __TS__Class()
76
77
  DamageAreaAbilityBehavior.name = "DamageAreaAbilityBehavior"
77
- __TS__ClassExtends(DamageAreaAbilityBehavior, DamageAbilityBehavior)
78
+ __TS__ClassExtends(DamageAreaAbilityBehavior, ____exports.DamageAbilityBehavior)
78
79
  function DamageAreaAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
79
- DamageAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
80
+ DamageAreaAbilityBehavior.____super.prototype.____constructor(self, ability, damage, parameters)
80
81
  end
81
82
  function DamageAreaAbilityBehavior.prototype.damageArea(self, caster, x, y)
82
83
  local parameters = self.parameters
83
- local targets = Unit.getAllowedTargetsInCollisionRange(
84
- caster,
85
- self:resolveCurrentAbilityDependentValue(ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD),
84
+ caster:damageArea(
86
85
  x,
87
86
  y,
88
- self:resolveCurrentAbilityDependentValue(AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD)
87
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.areaOfEffect or AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD),
88
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.allowedTargetCombatClassifications or ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD),
89
+ self.precalculatedDamage or self:calculateDamage(caster),
90
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.maximumDamage or 0),
91
+ nil,
92
+ nil,
93
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.attackType),
94
+ parameters and parameters.damageType,
95
+ parameters and parameters.weaponType,
96
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.metadata)
89
97
  )
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
98
  end
107
99
  ____exports.DamageSelfAreaAbilityBehavior = __TS__Class()
108
100
  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,30 +1,44 @@
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
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
10
20
  ____exports.EmulateImpactAbilityBehavior = __TS__Class()
11
21
  local EmulateImpactAbilityBehavior = ____exports.EmulateImpactAbilityBehavior
12
22
  EmulateImpactAbilityBehavior.name = "EmulateImpactAbilityBehavior"
13
23
  __TS__ClassExtends(EmulateImpactAbilityBehavior, AbilityBehavior)
14
24
  function EmulateImpactAbilityBehavior.prototype.emulateImpact(self, caster)
15
- local abilityTypeId = self.ability.typeId
16
25
  local manaCost = self:resolveCurrentAbilityDependentValue(MANA_COST_ABILITY_INTEGER_LEVEL_FIELD)
17
26
  local cooldown = self:resolveCurrentAbilityDependentValue(COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD)
18
- if caster:getAbilityRemainingCooldown(abilityTypeId) ~= 0 or caster.mana < manaCost then
19
- 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
20
29
  end
21
30
  caster.mana = caster.mana - manaCost
22
31
  if cooldown == 0 then
23
- caster:interruptCast(self.ability.typeId)
32
+ self.ability:interruptCast()
24
33
  else
25
- caster:startAbilityCooldown(self.ability.typeId, cooldown)
34
+ self.ability:startCooldown(cooldown)
26
35
  end
27
36
  self:flashCasterEffect(caster)
28
- 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
29
43
  end
30
44
  return ____exports
@@ -1,5 +1,6 @@
1
1
  /** @noSelfInFile */
2
2
  import { Unit } from "../../internal/unit";
3
+ import "../../internal/unit/item-order-events";
3
4
  import { EmulateImpactAbilityBehavior } from "./emulate-impact";
4
5
  import { Ability } from "../../internal/ability";
5
6
  export declare class OnCommandImpactAbilityBehavior extends EmulateImpactAbilityBehavior {
@@ -2,6 +2,9 @@ local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
4
  local ____exports = {}
5
+ local ____unit = require("engine.internal.unit")
6
+ local Unit = ____unit.Unit
7
+ require("engine.internal.unit.item-order-events")
5
8
  local ____emulate_2Dimpact = require("engine.behaviour.ability.emulate-impact")
6
9
  local EmulateImpactAbilityBehavior = ____emulate_2Dimpact.EmulateImpactAbilityBehavior
7
10
  ____exports.OnCommandImpactAbilityBehavior = __TS__Class()
@@ -15,4 +18,9 @@ end
15
18
  function OnCommandImpactAbilityBehavior.prototype.onCommand(self, caster)
16
19
  self:emulateImpact(caster)
17
20
  end
21
+ Unit.itemUseOrderEvent:addListener(function(unit, item)
22
+ for ____, ability in ipairs(item.abilities) do
23
+ ____exports.OnCommandImpactAbilityBehavior:forAll(ability, "onCommand", unit)
24
+ end
25
+ end)
18
26
  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,13 +1,16 @@
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";
5
+ import "../internal/unit+ability";
4
6
  import { Ability } from "../internal/ability";
5
7
  import { AbilityTypeId } from "../object-data/entry/ability-type";
6
8
  import { Widget } from "../../core/types/widget";
7
9
  import { Item } from "../internal/item";
8
10
  import { Destructable } from "../../core/types/destructable";
9
11
  import { EffectParameters } from "../../core/types/effect";
10
- import { AbilityDependentValue } from "../object-field/ability";
12
+ import { AbilityDependentValue, ReadonlySubscribableAbilityDependentValue, SubscribableAbilityDependentValue } from "../object-field/ability";
13
+ import { Destructor } from "../../destroyable";
11
14
  export type AbilityBehaviorConstructor<Args extends any[]> = new (ability: Ability, ...args: Args) => AbilityBehavior;
12
15
  export type AbilityBehaviorParameters = {
13
16
  isExclusiveOnImpactHandler?: boolean;
@@ -17,16 +20,30 @@ export declare abstract class AbilityBehavior<Parameters extends {
17
20
  missileParameters?: any[];
18
21
  } = {}> extends Behavior<Ability, NonNullable<Parameters["periodicActionParameters"]>> {
19
22
  constructor(ability: Ability, parameters?: AbilityBehaviorParameters);
23
+ protected onDestroy(): Destructor;
24
+ protected subscribe<T extends boolean | number | string>(value: SubscribableAbilityDependentValue<T>): void;
20
25
  protected registerCommandEvent(orderTypeStringId?: string): void;
21
26
  get ability(): Ability;
27
+ get unit(): Unit | undefined;
22
28
  protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value: AbilityDependentValue<T>): T;
23
29
  protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value?: AbilityDependentValue<T>): T | undefined;
24
- protected flashCasterEffect(widget: Widget): void;
25
- protected flashAreaEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
26
- protected flashEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
27
- protected flashSpecialEffect(...args: [...pointOrWidget: [x: number, y: number] | [widget: Widget], duration?: number]): void;
30
+ protected getDuration(widget: Widget): number;
31
+ flashCasterEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
32
+ flashTargetEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
33
+ flashAreaEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
34
+ flashEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
35
+ flashSpecialEffect(...args: [
36
+ ...pointOrWidget: [x: number, y: number] | [widget: Widget],
37
+ ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]
38
+ ]): void;
28
39
  private static MissileLaunchConfig;
29
40
  private get missileLaunchConfig();
41
+ protected launchMissile(source: Unit, ...args: [
42
+ ...pointOrWidget: [x: number, y: number] | [widget: Unit /** TODO: support Widget */],
43
+ ...parameters: NonNullable<Parameters["missileParameters"]>
44
+ ]): void;
45
+ protected onCreate(): void;
46
+ onValueChange(_value: ReadonlySubscribableAbilityDependentValue<string | number | boolean>): void;
30
47
  onMissileArrival(...parameters: NonNullable<Parameters["missileParameters"]>): void;
31
48
  onUnitGainAbility(_unit: Unit): void;
32
49
  onUnitLoseAbility(_unit: Unit): void;
@@ -1,14 +1,17 @@
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 __TS__New = ____lualib.__TS__New
5
6
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
6
7
  local ____exports = {}
7
- local createUnitEventListener
8
8
  local ____behavior = require("engine.behavior")
9
9
  local Behavior = ____behavior.Behavior
10
- local ____unit = require("engine.unit")
10
+ local ____unit = require("engine.internal.unit")
11
11
  local Unit = ____unit.Unit
12
+ local UnitClassification = ____unit.UnitClassification
13
+ require("engine.internal.unit.ability")
14
+ require("engine.internal.unit+ability")
12
15
  local ____ability = require("engine.internal.ability")
13
16
  local Ability = ____ability.Ability
14
17
  local ____effect = require("core.types.effect")
@@ -17,30 +20,36 @@ local ____ability = require("engine.standard.fields.ability")
17
20
  local AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
18
21
  local CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = ____ability.CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD
19
22
  local CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
23
+ local DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD = ____ability.DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD
24
+ local DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD = ____ability.DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD
20
25
  local EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
21
26
  local MISSILE_ARC_ABILITY_FLOAT_FIELD = ____ability.MISSILE_ARC_ABILITY_FLOAT_FIELD
22
27
  local MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
23
28
  local MISSILE_SPEED_ABILITY_INTEGER_FIELD = ____ability.MISSILE_SPEED_ABILITY_INTEGER_FIELD
24
29
  local SPECIAL_EFFECT_ATTACHMENT_POINT_STRING_FIELD = ____ability.SPECIAL_EFFECT_ATTACHMENT_POINT_STRING_FIELD
25
30
  local SPECIAL_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.SPECIAL_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
31
+ local TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = ____ability.TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD
32
+ local TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
26
33
  local ____ability = require("engine.object-field.ability")
34
+ local AbilityField = ____ability.AbilityField
35
+ local AbilityLevelField = ____ability.AbilityLevelField
27
36
  local resolveCurrentAbilityDependentValue = ____ability.resolveCurrentAbilityDependentValue
28
- local ____timer = require("core.types.timer")
29
- local Timer = ____timer.Timer
37
+ local ____missile = require("core.types.missile")
38
+ local Missile = ____missile.Missile
30
39
  local createBehaviorFunctionsByAbilityTypeId = {}
31
- local exclusiveOnImpactHandlerAbilityBehaviorByAbility = setmetatable({}, {__mode = "k"})
32
- local function createZeroTimerUnitEventListener(key)
33
- local unitEventListener = createUnitEventListener(key)
34
- return function(unit, ability, ...)
35
- Timer:run(unitEventListener, unit, ability, ...)
40
+ local function invokeOnMissileArrival(_missile, success, abilityBehavior, ...)
41
+ if success then
42
+ abilityBehavior:onMissileArrival(...)
36
43
  end
37
44
  end
38
- createUnitEventListener = function(key)
45
+ local exclusiveOnImpactHandlerAbilityBehaviorByAbility = setmetatable({}, {__mode = "k"})
46
+ local function createUnitEventListener(key)
39
47
  return function(unit, ability, ...)
40
48
  ____exports.AbilityBehavior:forAll(ability, key, unit, ...)
41
49
  end
42
50
  end
43
51
  local registeredCommandEventIds = {}
52
+ local subscribedValuesByAbilityBehavior = {}
44
53
  local ____class_2 = __TS__Class()
45
54
  ____class_2.name = ""
46
55
  function ____class_2.prototype.____constructor(self, abilityBehavior)
@@ -79,6 +88,21 @@ function AbilityBehavior.prototype.____constructor(self, ability, parameters)
79
88
  if parameters and parameters.isExclusiveOnImpactHandler then
80
89
  exclusiveOnImpactHandlerAbilityBehaviorByAbility[ability] = self
81
90
  end
91
+ self:onCreate()
92
+ end
93
+ function AbilityBehavior.prototype.onDestroy(self)
94
+ subscribedValuesByAbilityBehavior[self] = nil
95
+ return Behavior.prototype.onDestroy(self)
96
+ end
97
+ function AbilityBehavior.prototype.subscribe(self, value)
98
+ if __TS__InstanceOf(value, AbilityField) or __TS__InstanceOf(value, AbilityLevelField) then
99
+ local subscribedValues = subscribedValuesByAbilityBehavior[self]
100
+ if subscribedValues == nil then
101
+ subscribedValues = {}
102
+ subscribedValuesByAbilityBehavior[self] = subscribedValues
103
+ end
104
+ subscribedValues[value] = true
105
+ end
82
106
  end
83
107
  function AbilityBehavior.prototype.registerCommandEvent(self, orderTypeStringId)
84
108
  if orderTypeStringId == nil then
@@ -93,11 +117,30 @@ end
93
117
  function AbilityBehavior.prototype.resolveCurrentAbilityDependentValue(self, value)
94
118
  return resolveCurrentAbilityDependentValue(self.ability, value)
95
119
  end
96
- function AbilityBehavior.prototype.flashCasterEffect(self, widget)
120
+ function AbilityBehavior.prototype.getDuration(self, widget)
121
+ if __TS__InstanceOf(widget, Unit) then
122
+ if widget.isHero or widget:getField(UNIT_IF_LEVEL) >= 6 or widget:hasClassification(UnitClassification.RESISTANT) then
123
+ return self:resolveCurrentAbilityDependentValue(DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD)
124
+ end
125
+ end
126
+ return self:resolveCurrentAbilityDependentValue(DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD)
127
+ end
128
+ function AbilityBehavior.prototype.flashCasterEffect(self, widget, ...)
129
+ local attachmentPoint = CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
97
130
  Effect:flash(
98
131
  CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
99
132
  widget,
100
- CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
133
+ attachmentPoint ~= "" and attachmentPoint or "origin",
134
+ ...
135
+ )
136
+ end
137
+ function AbilityBehavior.prototype.flashTargetEffect(self, widget, ...)
138
+ local attachmentPoint = TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
139
+ Effect:flash(
140
+ TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
141
+ widget,
142
+ attachmentPoint ~= "" and attachmentPoint or "origin",
143
+ ...
101
144
  )
102
145
  end
103
146
  function AbilityBehavior.prototype.flashAreaEffect(self, x, y, ...)
@@ -116,23 +159,52 @@ function AbilityBehavior.prototype.flashEffect(self, x, y, ...)
116
159
  ...
117
160
  )
118
161
  end
119
- function AbilityBehavior.prototype.flashSpecialEffect(self, xOrWidget, yOrDuration, duration)
162
+ function AbilityBehavior.prototype.flashSpecialEffect(self, xOrWidget, yOrParametersOrDuration, durationOrParameters, parameters)
120
163
  if type(xOrWidget) == "number" then
121
164
  Effect:flash(
122
165
  SPECIAL_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
123
166
  xOrWidget,
124
- yOrDuration,
125
- duration
167
+ yOrParametersOrDuration,
168
+ durationOrParameters,
169
+ parameters
126
170
  )
127
171
  else
172
+ local attachmentPoint = SPECIAL_EFFECT_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
128
173
  Effect:flash(
129
174
  SPECIAL_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
130
175
  xOrWidget,
131
- SPECIAL_EFFECT_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability),
132
- yOrDuration
176
+ attachmentPoint ~= "" and attachmentPoint or "origin",
177
+ yOrParametersOrDuration,
178
+ durationOrParameters
133
179
  )
134
180
  end
135
181
  end
182
+ function AbilityBehavior.prototype.launchMissile(self, source, xOrWidget, yOrParameter, ...)
183
+ if type(xOrWidget) ~= "number" then
184
+ Missile:launch(
185
+ self.missileLaunchConfig,
186
+ source,
187
+ xOrWidget,
188
+ invokeOnMissileArrival,
189
+ self,
190
+ yOrParameter,
191
+ ...
192
+ )
193
+ else
194
+ Missile:launch(
195
+ self.missileLaunchConfig,
196
+ source,
197
+ vec2(xOrWidget, yOrParameter),
198
+ invokeOnMissileArrival,
199
+ self,
200
+ ...
201
+ )
202
+ end
203
+ end
204
+ function AbilityBehavior.prototype.onCreate(self)
205
+ end
206
+ function AbilityBehavior.prototype.onValueChange(self, _value)
207
+ end
136
208
  function AbilityBehavior.prototype.onMissileArrival(self, ...)
137
209
  end
138
210
  function AbilityBehavior.prototype.onUnitGainAbility(self, _unit)
@@ -200,6 +272,18 @@ __TS__SetDescriptor(
200
272
  end},
201
273
  true
202
274
  )
275
+ __TS__SetDescriptor(
276
+ AbilityBehavior.prototype,
277
+ "unit",
278
+ {get = function(self)
279
+ local owner = self.object.owner
280
+ if __TS__InstanceOf(owner, Unit) then
281
+ return owner
282
+ end
283
+ return owner.owner
284
+ end},
285
+ true
286
+ )
203
287
  AbilityBehavior.MissileLaunchConfig = ____class_2
204
288
  __TS__SetDescriptor(
205
289
  AbilityBehavior.prototype,
@@ -223,16 +307,41 @@ __TS__SetDescriptor(
223
307
  Unit.abilityDestructibleTargetChannelingStartEvent:addListener(createUnitEventListener("onDestructibleTargetChannelingStart"))
224
308
  Unit.abilityPointTargetChannelingStartEvent:addListener(createUnitEventListener("onPointTargetChannelingStart"))
225
309
  Unit.abilityNoTargetChannelingStartEvent:addListener(createUnitEventListener("onNoTargetChannelingStart"))
226
- Unit.abilityChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onImpact"))
227
- Unit.abilityWidgetTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onWidgetTargetImpact"))
228
- Unit.abilityUnitTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onUnitTargetImpact"))
229
- Unit.abilityItemTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onItemTargetImpact"))
230
- Unit.abilityDestructibleTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onDestructibleTargetImpact"))
231
- Unit.abilityPointTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onPointTargetImpact"))
232
- Unit.abilityNoTargetChannelingStartEvent:addListener(createZeroTimerUnitEventListener("onNoTargetImpact"))
310
+ Unit.abilityImpactEvent:addListener(createUnitEventListener("onImpact"))
311
+ Unit.abilityWidgetTargetImpactEvent:addListener(createUnitEventListener("onWidgetTargetImpact"))
312
+ Unit.abilityUnitTargetImpactEvent:addListener(createUnitEventListener("onUnitTargetImpact"))
313
+ Unit.abilityItemTargetImpactEvent:addListener(createUnitEventListener("onItemTargetImpact"))
314
+ Unit.abilityDestructibleTargetImpactEvent:addListener(createUnitEventListener("onDestructibleTargetImpact"))
315
+ Unit.abilityPointTargetImpactEvent:addListener(createUnitEventListener("onPointTargetImpact"))
316
+ Unit.abilityNoTargetImpactEvent:addListener(createUnitEventListener("onNoTargetImpact"))
233
317
  Unit.abilityChannelingFinishEvent:addListener(createUnitEventListener("onChannelingFinish"))
234
318
  Unit.abilityStopEvent:addListener(createUnitEventListener("onStop"))
235
319
  end)(AbilityBehavior)
320
+ local function checkBehaviorOnValueChange(behavior, field)
321
+ local subscribedValues = subscribedValuesByAbilityBehavior[behavior]
322
+ if subscribedValues ~= nil and subscribedValues[field] ~= nil then
323
+ behavior:onValueChange(field)
324
+ end
325
+ end
326
+ AbilityField.valueChangeEvent:addListener(function(ability, field)
327
+ ____exports.AbilityBehavior:forAll(ability, checkBehaviorOnValueChange, field)
328
+ end)
329
+ AbilityLevelField.valueChangeEvent:addListener(function(ability, field)
330
+ ____exports.AbilityBehavior:forAll(ability, checkBehaviorOnValueChange, field)
331
+ end)
332
+ local function checkBehaviorOnLevelChange(behavior)
333
+ local subscribedValues = subscribedValuesByAbilityBehavior[behavior]
334
+ if subscribedValues ~= nil then
335
+ for value in pairs(subscribedValues) do
336
+ if __TS__InstanceOf(value, AbilityLevelField) then
337
+ behavior:onValueChange(value)
338
+ end
339
+ end
340
+ end
341
+ end
342
+ Unit.abilityLevelChangedEvent:addListener(function(_, ability)
343
+ ____exports.AbilityBehavior:forAll(ability, checkBehaviorOnLevelChange)
344
+ end)
236
345
  Ability.onCreate:addListener(function(ability)
237
346
  local createBehaviorFunctions = createBehaviorFunctionsByAbilityTypeId[ability.typeId]
238
347
  if createBehaviorFunctions ~= nil then
@@ -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
  }