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