warscript 0.0.1-dev.e0e46c4 → 0.0.1-dev.e147c49

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 (308) hide show
  1. package/attributes.d.ts +1 -0
  2. package/attributes.lua +9 -0
  3. package/core/types/frame.d.ts +1 -0
  4. package/core/types/frame.lua +136 -58
  5. package/core/types/handle.lua +9 -9
  6. package/core/types/item.d.ts +1 -0
  7. package/core/types/item.lua +1 -0
  8. package/core/types/player.d.ts +18 -1
  9. package/core/types/player.lua +76 -26
  10. package/core/types/playerCamera.d.ts +2 -0
  11. package/core/types/playerCamera.lua +123 -5
  12. package/core/types/playerColor.lua +4 -3
  13. package/core/types/sound.d.ts +1 -1
  14. package/core/types/sound.lua +14 -9
  15. package/core/types/tileCell.d.ts +11 -1
  16. package/core/types/tileCell.lua +97 -0
  17. package/core/types/timer.d.ts +3 -1
  18. package/core/types/timer.lua +27 -2
  19. package/core/types/unit.d.ts +4 -0
  20. package/core/types/unit.lua +4 -0
  21. package/decl/native.d.ts +711 -11
  22. package/destroyable.d.ts +1 -0
  23. package/destroyable.lua +9 -0
  24. package/engine/behavior.d.ts +14 -1
  25. package/engine/behavior.lua +230 -70
  26. package/engine/behaviour/ability/apply-buff.lua +4 -4
  27. package/engine/behaviour/ability/damage.d.ts +3 -0
  28. package/engine/behaviour/ability/damage.lua +18 -15
  29. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  30. package/engine/behaviour/ability/emulate-impact.lua +7 -5
  31. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  32. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  33. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  34. package/engine/behaviour/ability/restore-mana.lua +6 -6
  35. package/engine/behaviour/ability.d.ts +12 -6
  36. package/engine/behaviour/ability.lua +42 -1
  37. package/engine/behaviour/unit/stun-immunity.d.ts +9 -5
  38. package/engine/behaviour/unit/stun-immunity.lua +17 -7
  39. package/engine/behaviour/unit.d.ts +16 -5
  40. package/engine/behaviour/unit.lua +133 -26
  41. package/engine/buff.d.ts +73 -27
  42. package/engine/buff.lua +424 -193
  43. package/engine/index.d.ts +2 -1
  44. package/engine/internal/ability.d.ts +7 -1
  45. package/engine/internal/ability.lua +86 -44
  46. package/engine/internal/item/fields.d.ts +12 -0
  47. package/engine/internal/item/fields.lua +33 -0
  48. package/engine/internal/item+owner.d.ts +1 -0
  49. package/engine/internal/item+owner.lua +19 -6
  50. package/engine/internal/item.d.ts +23 -14
  51. package/engine/internal/item.lua +169 -82
  52. package/engine/internal/mechanics/cast-ability.lua +6 -3
  53. package/engine/internal/misc/frame-coordinates.lua +21 -0
  54. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  55. package/engine/internal/misc/get-terrain-z.lua +11 -0
  56. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  57. package/engine/internal/misc/player-local-handle.lua +5 -0
  58. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  59. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  60. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  61. package/engine/internal/object-data/health-bonus.lua +16 -0
  62. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  63. package/engine/internal/object-data/mana-bonus.lua +16 -0
  64. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  65. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  66. package/engine/internal/unit/ability.d.ts +14 -14
  67. package/engine/internal/unit/ability.lua +86 -47
  68. package/engine/internal/unit/appearance.d.ts +15 -0
  69. package/engine/internal/unit/appearance.lua +85 -0
  70. package/engine/internal/unit/attributes.d.ts +17 -0
  71. package/engine/internal/unit/attributes.lua +46 -0
  72. package/engine/internal/unit/bag.d.ts +18 -0
  73. package/engine/internal/unit/bag.lua +63 -0
  74. package/engine/internal/unit/bonus.d.ts +6 -0
  75. package/engine/internal/unit/bonus.lua +33 -3
  76. package/engine/internal/unit/buff.d.ts +2 -2
  77. package/engine/internal/unit/buff.lua +34 -19
  78. package/engine/internal/unit/equipment.d.ts +36 -0
  79. package/engine/internal/unit/equipment.lua +169 -0
  80. package/engine/internal/unit/fly-height.d.ts +7 -0
  81. package/engine/internal/unit/fly-height.lua +20 -0
  82. package/engine/internal/unit/interrupts.d.ts +12 -0
  83. package/engine/internal/unit/interrupts.lua +28 -0
  84. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +3 -3
  85. package/engine/internal/unit/{item.lua → inventory.lua} +25 -26
  86. package/engine/internal/unit/main-selected.lua +12 -27
  87. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  88. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  89. package/engine/internal/unit/range-event.d.ts +12 -0
  90. package/engine/internal/unit/range-event.lua +90 -0
  91. package/engine/internal/unit/scale.d.ts +7 -0
  92. package/engine/internal/unit/scale.lua +20 -0
  93. package/engine/internal/unit+ability.lua +10 -1
  94. package/engine/internal/unit+bonus.lua +3 -3
  95. package/engine/internal/unit+damage.d.ts +9 -0
  96. package/engine/internal/unit+damage.lua +33 -0
  97. package/engine/internal/unit-missile-data.lua +58 -32
  98. package/engine/internal/unit-missile-launch.lua +52 -14
  99. package/engine/internal/unit.d.ts +18 -24
  100. package/engine/internal/unit.lua +180 -206
  101. package/engine/local-client.d.ts +27 -0
  102. package/engine/local-client.lua +518 -54
  103. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  104. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  105. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  106. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  107. package/engine/object-data/auxiliary/equipment-type.d.ts +13 -0
  108. package/engine/object-data/auxiliary/equipment-type.lua +2 -0
  109. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  110. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  111. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  112. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  113. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  114. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  115. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  116. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  117. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  118. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  119. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  120. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  121. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  122. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  123. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  124. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  125. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  126. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  127. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  128. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  129. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  130. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  131. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  132. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  133. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  134. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  135. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  136. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  137. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  138. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  139. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  140. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  141. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  142. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  143. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  144. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  145. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  146. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  147. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  148. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  149. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  150. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  151. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  152. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  153. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  154. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  155. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  156. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  157. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  158. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  159. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  160. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  161. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  162. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  163. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  164. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  165. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  166. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  167. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  168. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  169. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  170. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  171. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  172. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  173. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  174. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  175. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  176. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  177. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  178. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  179. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  180. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  181. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  182. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  183. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  184. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  185. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  186. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  187. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  188. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  189. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  190. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  191. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  192. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  193. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  194. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  195. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  196. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  197. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  198. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  199. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  200. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  201. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  202. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  203. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  204. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  205. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  206. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  207. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  208. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  209. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  210. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  211. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  212. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  213. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  214. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  215. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  216. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  217. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  218. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  219. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  220. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  221. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  222. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  223. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  224. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  225. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  226. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  227. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  228. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  229. package/engine/object-data/entry/ability-type.d.ts +12 -3
  230. package/engine/object-data/entry/ability-type.lua +142 -8
  231. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  232. package/engine/object-data/entry/buff-type.d.ts +6 -2
  233. package/engine/object-data/entry/buff-type.lua +26 -0
  234. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  235. package/engine/object-data/entry/destructible-type.lua +181 -0
  236. package/engine/object-data/entry/item-type.d.ts +12 -3
  237. package/engine/object-data/entry/item-type.lua +52 -0
  238. package/engine/object-data/entry/lightning-type.d.ts +2 -2
  239. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  240. package/engine/object-data/entry/unit-type.d.ts +62 -4
  241. package/engine/object-data/entry/unit-type.lua +474 -38
  242. package/engine/object-data/entry/upgrade.d.ts +2 -2
  243. package/engine/object-data/entry.d.ts +4 -1
  244. package/engine/object-field/ability.d.ts +3 -3
  245. package/engine/object-field/ability.lua +9 -8
  246. package/engine/object-field/item.d.ts +22 -0
  247. package/engine/object-field/item.lua +118 -0
  248. package/engine/object-field/unit.d.ts +27 -5
  249. package/engine/object-field/unit.lua +82 -0
  250. package/engine/object-field.d.ts +12 -4
  251. package/engine/object-field.lua +273 -126
  252. package/engine/random.d.ts +10 -0
  253. package/engine/random.lua +21 -0
  254. package/engine/standard/entries/ability-type.d.ts +3102 -7
  255. package/engine/standard/entries/ability-type.lua +0 -6
  256. package/engine/standard/entries/item-type.d.ts +1299 -0
  257. package/engine/standard/entries/item-type.lua +2 -0
  258. package/engine/standard/entries/unit-type.d.ts +5 -0
  259. package/engine/standard/entries/unit-type.lua +5 -0
  260. package/engine/standard/fields/ability.d.ts +2 -2
  261. package/engine/standard/fields/ability.lua +2 -2
  262. package/engine/standard/fields/item.d.ts +4 -0
  263. package/engine/standard/fields/item.lua +6 -0
  264. package/engine/standard/fields/unit.d.ts +11 -2
  265. package/engine/standard/fields/unit.lua +16 -1
  266. package/engine/synchronization.d.ts +11 -0
  267. package/engine/synchronization.lua +77 -0
  268. package/engine/text-tag.d.ts +1 -1
  269. package/engine/text-tag.lua +92 -17
  270. package/engine/unit.d.ts +9 -1
  271. package/engine/unit.lua +9 -1
  272. package/event.d.ts +1 -1
  273. package/lualib_bundle.lua +1 -1
  274. package/math.d.ts +2 -0
  275. package/math.lua +14 -0
  276. package/net/socket.lua +1 -1
  277. package/network.lua +25 -1
  278. package/objutil/buff.lua +10 -8
  279. package/objutil/object.lua +1 -1
  280. package/operation.d.ts +8 -1
  281. package/operation.lua +38 -18
  282. package/package.json +3 -23
  283. package/patch-lua.lua +15 -0
  284. package/patch-lualib.lua +1 -1
  285. package/utility/arrays.d.ts +1 -0
  286. package/utility/arrays.lua +8 -0
  287. package/utility/callback-array.d.ts +17 -0
  288. package/utility/callback-array.lua +61 -0
  289. package/utility/functions.d.ts +4 -0
  290. package/utility/functions.lua +9 -0
  291. package/utility/linked-map.d.ts +35 -0
  292. package/utility/linked-map.lua +107 -0
  293. package/utility/linked-set.d.ts +4 -1
  294. package/utility/linked-set.lua +46 -1
  295. package/utility/lua-maps.d.ts +11 -2
  296. package/utility/lua-maps.lua +33 -2
  297. package/utility/lua-sets.d.ts +1 -0
  298. package/utility/lua-sets.lua +4 -0
  299. package/utility/random.d.ts +102 -0
  300. package/utility/random.lua +273 -0
  301. package/utility/records.lua +20 -1
  302. package/utility/types.d.ts +3 -0
  303. package/utility/unordered-map.d.ts +27 -0
  304. package/utility/unordered-map.lua +99 -0
  305. /package/engine/internal/{object-data/armor-increase.d.ts → misc/frame-coordinates.d.ts} +0 -0
  306. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  307. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  308. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -22,7 +22,15 @@ local checkNotNull = ____preconditions.checkNotNull
22
22
  local ____lazy = require("utility.lazy")
23
23
  local lazyRecord = ____lazy.lazyRecord
24
24
  local ____timer = require("core.types.timer")
25
+ local consumeZeroTimerCallback = ____timer.consumeZeroTimerCallback
25
26
  local Timer = ____timer.Timer
27
+ local ____lua_2Dsets = require("utility.lua-sets")
28
+ local luaSetOf = ____lua_2Dsets.luaSetOf
29
+ local ____attributes = require("attributes")
30
+ local attribute = ____attributes.attribute
31
+ local ____pseudo_2Dpassive_2Dabilities = require("engine.internal.unit.pseudo-passive-abilities")
32
+ local pseudoPassiveAbilityOrderTypeStringId = ____pseudo_2Dpassive_2Dabilities.pseudoPassiveAbilityOrderTypeStringId
33
+ local pseudoPassiveAbilityTypeIds = ____pseudo_2Dpassive_2Dabilities.pseudoPassiveAbilityTypeIds
26
34
  local eventInvoke = Event.invoke
27
35
  local condition = Condition
28
36
  local createTrigger = CreateTrigger
@@ -85,7 +93,7 @@ local function createCommonEvent(underlyingEvent)
85
93
  underlyingEvent,
86
94
  3,
87
95
  function(caster, ability)
88
- return true, caster, ability
96
+ return not (pseudoPassiveAbilityTypeIds[ability.typeId] ~= nil), caster, ability
89
97
  end
90
98
  )
91
99
  end
@@ -165,7 +173,7 @@ local function createNoTargetEvent(underlyingEvent)
165
173
  underlyingEvent,
166
174
  1,
167
175
  function(caster, ability, targetUnit, targetItem, targetDestructible, x, y)
168
- if x == 0 and y == 0 and targetUnit == nil and targetItem == nil and targetDestructible == nil then
176
+ if x == 0 and y == 0 and targetUnit == nil and targetItem == nil and targetDestructible == nil and not (pseudoPassiveAbilityTypeIds[ability.typeId] ~= nil) then
169
177
  return true, caster, ability
170
178
  else
171
179
  return false
@@ -347,10 +355,69 @@ rawset(
347
355
  extractAbilityTypeId
348
356
  )
349
357
  )
358
+ local internalAbilityChannelingFinishEvent = __TS__New(UnitTriggerEvent, EVENT_PLAYER_UNIT_SPELL_FINISH, collectUnitAbilityEventParameters)
359
+ rawset(
360
+ Unit,
361
+ "abilityChannelingFinishEvent",
362
+ createDispatchingEvent(internalAbilityChannelingFinishEvent, extractAbilityTypeId)
363
+ )
364
+ local internalAbilityStopEvent = __TS__New(UnitTriggerEvent, EVENT_PLAYER_UNIT_SPELL_ENDCAST, collectUnitAbilityEventParameters)
365
+ rawset(
366
+ Unit,
367
+ "abilityStopEvent",
368
+ createDispatchingEvent(internalAbilityStopEvent, extractAbilityTypeId)
369
+ )
370
+ rawset(
371
+ Unit,
372
+ "abilityCommandEvent",
373
+ lazyRecord(function(abilityTypeId)
374
+ return lazyRecord(function(orderTypeStringId)
375
+ return __TS__New(
376
+ InitializingEvent,
377
+ function(event)
378
+ local trigger = createTrigger()
379
+ triggerRegisterCommandEvent(trigger, abilityTypeId, orderTypeStringId)
380
+ triggerAddCondition(
381
+ trigger,
382
+ condition(function()
383
+ local unit = Unit:of(getTriggerUnit())
384
+ if unit ~= nil then
385
+ local ability = unit:getAbility(abilityTypeId)
386
+ if ability ~= nil then
387
+ if pseudoPassiveAbilityTypeIds[ability.typeId] ~= nil then
388
+ ability:interruptCast()
389
+ else
390
+ eventInvoke(event, unit, ability, orderTypeStringId)
391
+ end
392
+ end
393
+ end
394
+ end)
395
+ )
396
+ end
397
+ )
398
+ end)
399
+ end)
400
+ )
350
401
  local internalAbilityImpactEvent = __TS__New(Event)
351
- internalAbilityChannelingStartEvent:addListener(function(...)
352
- Timer:run(eventInvoke, internalAbilityImpactEvent, ...)
353
- end)
402
+ local impactCallbackIdAttribute = attribute()
403
+ local function invokeImpactEvent(unit, ability, ...)
404
+ ability[impactCallbackIdAttribute] = nil
405
+ eventInvoke(internalAbilityImpactEvent, unit, ability, ...)
406
+ end
407
+ internalAbilityChannelingStartEvent:addListener(
408
+ 999999,
409
+ function(unit, ability, ...)
410
+ ability[impactCallbackIdAttribute] = Timer:run(invokeImpactEvent, unit, ability, ...)
411
+ end
412
+ )
413
+ local function consumeImpactCallback(_, ability)
414
+ local impactCallbackId = ability[impactCallbackIdAttribute]
415
+ if impactCallbackId ~= nil then
416
+ consumeZeroTimerCallback(impactCallbackId)
417
+ end
418
+ end
419
+ internalAbilityChannelingFinishEvent:addListener(999999, consumeImpactCallback)
420
+ internalAbilityStopEvent:addListener(999999, consumeImpactCallback)
354
421
  rawset(
355
422
  Unit,
356
423
  "abilityImpactEvent",
@@ -407,47 +474,19 @@ rawset(
407
474
  extractAbilityTypeId
408
475
  )
409
476
  )
410
- rawset(
411
- Unit,
412
- "abilityChannelingFinishEvent",
413
- createDispatchingEvent(
414
- __TS__New(UnitTriggerEvent, EVENT_PLAYER_UNIT_SPELL_FINISH, collectUnitAbilityEventParameters),
415
- extractAbilityTypeId
416
- )
417
- )
418
- rawset(
419
- Unit,
420
- "abilityStopEvent",
421
- createDispatchingEvent(
422
- __TS__New(UnitTriggerEvent, EVENT_PLAYER_UNIT_SPELL_ENDCAST, collectUnitAbilityEventParameters),
423
- extractAbilityTypeId
424
- )
425
- )
426
- rawset(
427
- Unit,
428
- "abilityCommandEvent",
429
- lazyRecord(function(abilityTypeId)
430
- return lazyRecord(function(orderTypeStringId)
431
- return __TS__New(
432
- InitializingEvent,
433
- function(event)
434
- local trigger = createTrigger()
435
- triggerRegisterCommandEvent(trigger, abilityTypeId, orderTypeStringId)
436
- triggerAddCondition(
437
- trigger,
438
- condition(function()
439
- local unit = Unit:of(getTriggerUnit())
440
- if unit ~= nil then
441
- local ability = unit:getAbilityById(abilityTypeId)
442
- if ability ~= nil then
443
- eventInvoke(event, unit, ability, orderTypeStringId)
444
- end
445
- end
446
- end)
447
- )
448
- end
449
- )
450
- end)
451
- end)
477
+ local spellEffectOnlyAbilityTypeIds = luaSetOf(fourCC("AAns"))
478
+ internalAbilityChannelingStartEvent:addListener(
479
+ -999999,
480
+ function(unit, ability)
481
+ if spellEffectOnlyAbilityTypeIds[ability.parentTypeId] ~= nil then
482
+ eventInvoke(internalAbilityChannelingFinishEvent, unit, ability)
483
+ eventInvoke(internalAbilityStopEvent, unit, ability)
484
+ end
485
+ end
452
486
  )
487
+ local function doNothing()
488
+ end
489
+ for pseudoPassiveAbilityTypeId in pairs(pseudoPassiveAbilityTypeIds) do
490
+ Unit.abilityCommandEvent[pseudoPassiveAbilityTypeId][pseudoPassiveAbilityOrderTypeStringId]:addListener(999999, doNothing)
491
+ end
453
492
  return ____exports
@@ -0,0 +1,15 @@
1
+ /** @noSelfInFile */
2
+ declare module "../unit" {
3
+ interface Unit {
4
+ getAnimationDuration(this: Unit, animation: string | number): number;
5
+ setAurasEnabled(this: Unit, enabled: boolean, affectsUI?: boolean): void;
6
+ isHeroGlowAllowed: boolean;
7
+ maximumFlyHeight: number;
8
+ showsAirToGroundIndicator: boolean;
9
+ alwaysDisplaysHealth: boolean;
10
+ }
11
+ interface UnitWeapon {
12
+ resetAttack(this: UnitWeapon): void;
13
+ }
14
+ }
15
+ export {};
@@ -0,0 +1,85 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
3
+ local ____exports = {}
4
+ local ____unit = require("engine.internal.unit")
5
+ local Unit = ____unit.Unit
6
+ local UnitWeapon = ____unit.UnitWeapon
7
+ local allowHeroGlowOnUnit = AllowHeroGlowOnUnit
8
+ local disallowHeroGlowOnUnit = DisallowHeroGlowOnUnit
9
+ local getUnitAnimationDuration = BlzGetUnitAnimationDuration
10
+ local getUnitAnimationDurationByIndex = BlzGetUnitAnimationDurationByIndex
11
+ local getUnitBooleanField = BlzGetUnitBooleanField
12
+ local getUnitRealField = BlzGetUnitRealField
13
+ local heroGlowIsAllowedOnUnit = HeroGlowIsAllowedOnUnit
14
+ local resetUnitAttack = BlzResetUnitAttack
15
+ local setUnitBooleanField = BlzSetUnitBooleanField
16
+ local setUnitRealField = BlzSetUnitRealField
17
+ local unitEnableAuras = BlzUnitEnableAuras
18
+ Unit.prototype.getAnimationDuration = function(self, animation)
19
+ if type(animation) == "number" then
20
+ return getUnitAnimationDurationByIndex(self.handle, animation)
21
+ end
22
+ return getUnitAnimationDuration(self.handle, animation)
23
+ end
24
+ Unit.prototype.setAurasEnabled = function(self, enabled, affectsUI)
25
+ if affectsUI == nil then
26
+ affectsUI = true
27
+ end
28
+ unitEnableAuras(self.handle, enabled, affectsUI)
29
+ end
30
+ __TS__ObjectDefineProperty(
31
+ Unit.prototype,
32
+ "isHeroGlowAllowed",
33
+ {
34
+ get = function(self)
35
+ return heroGlowIsAllowedOnUnit(self.handle)
36
+ end,
37
+ set = function(self, allowed)
38
+ if allowed then
39
+ allowHeroGlowOnUnit(self.handle)
40
+ else
41
+ disallowHeroGlowOnUnit(self.handle)
42
+ end
43
+ end
44
+ }
45
+ )
46
+ __TS__ObjectDefineProperty(
47
+ Unit.prototype,
48
+ "maximumFlyHeight",
49
+ {
50
+ get = function(self)
51
+ return getUnitRealField(self.handle, UNIT_RF_FLY_MAX_HEIGHT)
52
+ end,
53
+ set = function(self, height)
54
+ setUnitRealField(self.handle, UNIT_RF_FLY_MAX_HEIGHT, height)
55
+ end
56
+ }
57
+ )
58
+ __TS__ObjectDefineProperty(
59
+ Unit.prototype,
60
+ "showsAirToGroundIndicator",
61
+ {
62
+ get = function(self)
63
+ return getUnitBooleanField(self.handle, UNIT_BF_SHOW_AIR_TO_GROUND)
64
+ end,
65
+ set = function(self, show)
66
+ setUnitBooleanField(self.handle, UNIT_BF_SHOW_AIR_TO_GROUND, show)
67
+ end
68
+ }
69
+ )
70
+ __TS__ObjectDefineProperty(
71
+ Unit.prototype,
72
+ "alwaysDisplaysHealth",
73
+ {
74
+ get = function(self)
75
+ return getUnitBooleanField(self.handle, UNIT_BF_FORCE_DISPLAY_HP)
76
+ end,
77
+ set = function(self, show)
78
+ setUnitBooleanField(self.handle, UNIT_BF_FORCE_DISPLAY_HP, show)
79
+ end
80
+ }
81
+ )
82
+ UnitWeapon.prototype.resetAttack = function(self)
83
+ resetUnitAttack(self.unit.handle, self.index)
84
+ end
85
+ return ____exports
@@ -0,0 +1,17 @@
1
+ /** @noSelfInFile */
2
+ declare module "../unit" {
3
+ interface Unit {
4
+ strengthBase: number;
5
+ }
6
+ }
7
+ declare module "../unit" {
8
+ interface Unit {
9
+ agilityBase: number;
10
+ }
11
+ }
12
+ declare module "../unit" {
13
+ interface Unit {
14
+ intelligenceBase: number;
15
+ }
16
+ }
17
+ export {};
@@ -0,0 +1,46 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
3
+ local ____exports = {}
4
+ local ____unit = require("engine.internal.unit")
5
+ local Unit = ____unit.Unit
6
+ local ____unit = require("engine.standard.fields.unit")
7
+ local AGILITY_UNIT_FIELD = ____unit.AGILITY_UNIT_FIELD
8
+ local INTELLIGENCE_UNIT_FIELD = ____unit.INTELLIGENCE_UNIT_FIELD
9
+ local STRENGTH_UNIT_FIELD = ____unit.STRENGTH_UNIT_FIELD
10
+ __TS__ObjectDefineProperty(
11
+ Unit.prototype,
12
+ "strengthBase",
13
+ {
14
+ get = function(self)
15
+ return STRENGTH_UNIT_FIELD:getValue(self)
16
+ end,
17
+ set = function(self, value)
18
+ STRENGTH_UNIT_FIELD:setValue(self, value)
19
+ end
20
+ }
21
+ )
22
+ __TS__ObjectDefineProperty(
23
+ Unit.prototype,
24
+ "agilityBase",
25
+ {
26
+ get = function(self)
27
+ return AGILITY_UNIT_FIELD:getValue(self)
28
+ end,
29
+ set = function(self, value)
30
+ AGILITY_UNIT_FIELD:setValue(self, value)
31
+ end
32
+ }
33
+ )
34
+ __TS__ObjectDefineProperty(
35
+ Unit.prototype,
36
+ "intelligenceBase",
37
+ {
38
+ get = function(self)
39
+ return INTELLIGENCE_UNIT_FIELD:getValue(self)
40
+ end,
41
+ set = function(self, value)
42
+ INTELLIGENCE_UNIT_FIELD:setValue(self, value)
43
+ end
44
+ }
45
+ )
46
+ return ____exports
@@ -0,0 +1,18 @@
1
+ /** @noSelfInFile */
2
+ import { Item } from "../item";
3
+ export interface UnitBag extends ReadonlyArray<Item | undefined> {
4
+ }
5
+ /** A live, zero-based view of a unit's bag. The engine does not expose bag-slot assignment. */
6
+ export declare class UnitBag {
7
+ constructor(handle: junit);
8
+ has(item: Item): boolean;
9
+ findSlot(item: Item): number | undefined;
10
+ protected __index(key: string | number): unknown;
11
+ protected __len(): number;
12
+ protected __ipairs(): LuaIterator<LuaMultiReturn<[number, Item | undefined]>, junit>;
13
+ }
14
+ declare module "../unit" {
15
+ interface Unit {
16
+ readonly bag: UnitBag;
17
+ }
18
+ }
@@ -0,0 +1,63 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__New = ____lualib.__TS__New
4
+ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
5
+ local ____exports = {}
6
+ local ____item = require("engine.internal.item")
7
+ local Item = ____item.Item
8
+ local ____unit = require("engine.internal.unit")
9
+ local Unit = ____unit.Unit
10
+ local unitExtendedInventorySize = UnitExtendedInventorySize
11
+ local unitHasItemBagged = UnitHasItemBagged
12
+ local unitItemInBagSlot = UnitItemInBagSlot
13
+ local ____rawget = _G.rawget
14
+ local rawset = _G.rawset
15
+ local ____type = _G.type
16
+ local handleByUnitBag = setmetatable({}, {__mode = "k"})
17
+ local function unitBagNext(handle, slot)
18
+ if slot >= unitExtendedInventorySize(handle) then
19
+ return nil, nil
20
+ end
21
+ return slot + 1, Item:of(unitItemInBagSlot(handle, slot))
22
+ end
23
+ --- A live, zero-based view of a unit's bag. The engine does not expose bag-slot assignment.
24
+ ____exports.UnitBag = __TS__Class()
25
+ local UnitBag = ____exports.UnitBag
26
+ UnitBag.name = "UnitBag"
27
+ function UnitBag.prototype.____constructor(self, handle)
28
+ handleByUnitBag[self] = handle
29
+ end
30
+ function UnitBag.prototype.has(self, item)
31
+ return unitHasItemBagged(handleByUnitBag[self], item.handle)
32
+ end
33
+ function UnitBag.prototype.findSlot(self, item)
34
+ local handle = handleByUnitBag[self]
35
+ for slot = 0, unitExtendedInventorySize(handle) - 1 do
36
+ if unitItemInBagSlot(handle, slot) == item.handle then
37
+ return slot
38
+ end
39
+ end
40
+ return nil
41
+ end
42
+ function UnitBag.prototype.__index(self, key)
43
+ if ____type(key) == "number" then
44
+ return Item:of(unitItemInBagSlot(handleByUnitBag[self], key - 1))
45
+ end
46
+ return ____rawget(____exports.UnitBag.prototype, key)
47
+ end
48
+ function UnitBag.prototype.__len(self)
49
+ return unitExtendedInventorySize(handleByUnitBag[self])
50
+ end
51
+ function UnitBag.prototype.__ipairs(self)
52
+ return unitBagNext, handleByUnitBag[self], 0
53
+ end
54
+ __TS__ObjectDefineProperty(
55
+ Unit.prototype,
56
+ "bag",
57
+ {get = function(self)
58
+ local bag = __TS__New(____exports.UnitBag, self.handle)
59
+ rawset(self, "bag", bag)
60
+ return bag
61
+ end}
62
+ )
63
+ return ____exports
@@ -5,6 +5,8 @@ export type UnitBonusId<Brand extends string = any> = number & {
5
5
  readonly __unitBonusId: unique symbol;
6
6
  readonly __unitBonusIdBrand: Brand;
7
7
  };
8
+ export type UnitMaxHealthBonusId = UnitBonusId<"maxHealth">;
9
+ export type UnitMaxManaBonusId = UnitBonusId<"maxMana">;
8
10
  export type UnitArmorBonusId = UnitBonusId<"armor">;
9
11
  export type UnitAttackSpeedFactorBonusId = UnitBonusId<"attackSpeedFactor">;
10
12
  export type UnitMovementSpeedFactorBonusId = UnitBonusId<"movementSpeedFactor">;
@@ -12,6 +14,7 @@ export type UnitAutoAttackDamageBonusId = UnitBonusId<"autoAttackDamage">;
12
14
  export type UnitDamageFactorBonusId = UnitBonusId<"damageFactor">;
13
15
  export type UnitReceivedDamageFactorBonusId = UnitBonusId<"receivedDamageFactor">;
14
16
  export type UnitEvasionProbabilityBonusId = UnitBonusId<"evasionProbability">;
17
+ export type UnitManaRegenerationRateFactorBonusId = UnitBonusId<"manaRegenerationRateFactor">;
15
18
  export type UnitBonusType<Id extends UnitBonusId = UnitBonusId> = ({
16
19
  abilityTypeId: AbilityTypeId;
17
20
  field: jabilityintegerlevelfield;
@@ -29,6 +32,8 @@ export type UnitBonusType<Id extends UnitBonusId = UnitBonusId> = ({
29
32
  readonly __unitBonusTypeId?: Id;
30
33
  };
31
34
  export declare namespace UnitBonusType {
35
+ const HEALTH: UnitBonusType<UnitMaxHealthBonusId>;
36
+ const MANA: UnitBonusType<UnitMaxManaBonusId>;
32
37
  const ARMOR: UnitBonusType<UnitArmorBonusId>;
33
38
  const ATTACK_SPEED_FACTOR: UnitBonusType<UnitAttackSpeedFactorBonusId>;
34
39
  const MOVEMENT_SPEED_FACTOR: UnitBonusType<UnitAttackSpeedFactorBonusId>;
@@ -36,6 +41,7 @@ export declare namespace UnitBonusType {
36
41
  const DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
37
42
  const RECEIVED_DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
38
43
  const EVASION_PROBABILITY: UnitBonusType<UnitEvasionProbabilityBonusId>;
44
+ const MANA_REGENERATION_RATE_FACTOR: UnitBonusType<UnitManaRegenerationRateFactorBonusId>;
39
45
  }
40
46
  export declare const addUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, value: number) => Id;
41
47
  export declare const removeUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, id: Id) => boolean;
@@ -1,9 +1,9 @@
1
1
  local ____exports = {}
2
2
  local ____unit = require("engine.internal.unit")
3
3
  local Unit = ____unit.Unit
4
- local ____armor_2Dincrease = require("engine.internal.object-data.armor-increase")
5
- local ARMOR_BONUS_DUMMY_ABILITY_FIELD = ____armor_2Dincrease.ARMOR_BONUS_DUMMY_ABILITY_FIELD
6
- local ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID = ____armor_2Dincrease.ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID
4
+ local ____armor_2Dbonus = require("engine.internal.object-data.armor-bonus")
5
+ local ARMOR_BONUS_DUMMY_ABILITY_FIELD = ____armor_2Dbonus.ARMOR_BONUS_DUMMY_ABILITY_FIELD
6
+ local ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID = ____armor_2Dbonus.ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID
7
7
  local ____utility = require("engine.internal.utility")
8
8
  local addInternalAbility = ____utility.addInternalAbility
9
9
  local ____arrays = require("utility.arrays")
@@ -24,6 +24,15 @@ local MOVEMENT_SPEED_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID = ____movement_2Dspee
24
24
  local ____evasion_2Dprobability = require("engine.internal.object-data.evasion-probability")
25
25
  local EVASION_PROBABILITY_ABILITY_FIELD = ____evasion_2Dprobability.EVASION_PROBABILITY_ABILITY_FIELD
26
26
  local EVASION_PROBABILITY_DUMMY_ABILITY_TYPE_ID = ____evasion_2Dprobability.EVASION_PROBABILITY_DUMMY_ABILITY_TYPE_ID
27
+ local ____health_2Dbonus = require("engine.internal.object-data.health-bonus")
28
+ local HEALTH_BONUS_DUMMY_ABILITY_FIELD = ____health_2Dbonus.HEALTH_BONUS_DUMMY_ABILITY_FIELD
29
+ local HEALTH_BONUS_DUMMY_ABILITY_TYPE_ID = ____health_2Dbonus.HEALTH_BONUS_DUMMY_ABILITY_TYPE_ID
30
+ local ____mana_2Dbonus = require("engine.internal.object-data.mana-bonus")
31
+ local MANA_BONUS_DUMMY_ABILITY_FIELD = ____mana_2Dbonus.MANA_BONUS_DUMMY_ABILITY_FIELD
32
+ local MANA_BONUS_DUMMY_ABILITY_TYPE_ID = ____mana_2Dbonus.MANA_BONUS_DUMMY_ABILITY_TYPE_ID
33
+ local ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor = require("engine.internal.object-data.mana-regeneration-rate-increase-factor")
34
+ local MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD = ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor.MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD
35
+ local MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID = ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor.MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID
27
36
  local damageFactorByUnit = {}
28
37
  local receivedDamageFactorByUnit = {}
29
38
  local function atLeastOnceProbability(array)
@@ -36,6 +45,20 @@ end
36
45
  ____exports.UnitBonusType = {}
37
46
  local UnitBonusType = ____exports.UnitBonusType
38
47
  do
48
+ UnitBonusType.HEALTH = {
49
+ abilityTypeId = HEALTH_BONUS_DUMMY_ABILITY_TYPE_ID,
50
+ field = HEALTH_BONUS_DUMMY_ABILITY_FIELD,
51
+ integer = true,
52
+ reduce = sum,
53
+ initialValue = 0
54
+ }
55
+ UnitBonusType.MANA = {
56
+ abilityTypeId = MANA_BONUS_DUMMY_ABILITY_TYPE_ID,
57
+ field = MANA_BONUS_DUMMY_ABILITY_FIELD,
58
+ integer = true,
59
+ reduce = sum,
60
+ initialValue = 0
61
+ }
39
62
  UnitBonusType.ARMOR = {
40
63
  abilityTypeId = ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID,
41
64
  field = ARMOR_BONUS_DUMMY_ABILITY_FIELD,
@@ -73,6 +96,13 @@ do
73
96
  reduce = atLeastOnceProbability,
74
97
  initialValue = 0
75
98
  }
99
+ UnitBonusType.MANA_REGENERATION_RATE_FACTOR = {
100
+ abilityTypeId = MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID,
101
+ field = MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD,
102
+ integer = false,
103
+ reduce = sum,
104
+ initialValue = 0
105
+ }
76
106
  end
77
107
  local bonusesByUnitByBonusType = {}
78
108
  local nextId = 1
@@ -32,7 +32,7 @@ declare module "../unit" {
32
32
  * @param includeAuras Whether to remove aura buffs. Default `true`.
33
33
  * @param autoDispel Unknown. Default `false`.
34
34
  */
35
- removeBuffs(polarity?: BuffPolarity, resistanceType?: BuffResistanceType, includeExpirationTimers?: boolean, includeAuras?: boolean, autoDispel?: boolean): void;
36
- removeBuffs(buffTypeIds: number[]): void;
35
+ removeBuffs(polarity?: BuffPolarity, resistanceType?: BuffResistanceType, includeExpirationTimers?: boolean, includeAuras?: boolean, autoDispel?: boolean): number;
36
+ removeBuffs(buffTypeIds: number[]): number;
37
37
  }
38
38
  }
@@ -1,7 +1,3 @@
1
- local ____lualib = require("lualib_bundle")
2
- local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
3
- local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
4
- local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
5
1
  local ____exports = {}
6
2
  local ____buff = require("engine.buff")
7
3
  local checkBuff = ____buff.checkBuff
@@ -19,7 +15,7 @@ Unit.prototype.hasBuff = function(self, buffTypeId)
19
15
  end
20
16
  Unit.prototype.removeBuff = function(self, buffTypeId)
21
17
  if removeBuff(self.handle, buffTypeId) then
22
- checkBuff(self, buffTypeId)
18
+ checkBuff(self, buffTypeId, false)
23
19
  return true
24
20
  end
25
21
  return false
@@ -46,36 +42,55 @@ Unit.prototype.countBuffs = function(self, polarity, resistanceType, includeExpi
46
42
  )
47
43
  end
48
44
  Unit.prototype.removeBuffs = function(self, polarityOrBuffTypeIds, resistanceType, includeExpirationTimers, includeAuras, autoDispel)
45
+ local handle = self.handle
46
+ local cnt
49
47
  if type(polarityOrBuffTypeIds) == "table" then
50
- local handle = self.handle
48
+ cnt = 0
51
49
  for i = 1, #polarityOrBuffTypeIds do
52
- unitRemoveAbility(handle, polarityOrBuffTypeIds[i])
50
+ cnt = cnt + (unitRemoveAbility(handle, polarityOrBuffTypeIds[i]) and 1 or 0)
53
51
  end
54
52
  else
55
- local ____array_3 = __TS__SparseArrayNew(
56
- self.handle,
57
- (polarityOrBuffTypeIds or 3) & 1 ~= 0,
58
- (polarityOrBuffTypeIds or 3) & 2 ~= 0,
59
- (resistanceType or 0) & 1 ~= 0,
60
- (resistanceType or 0) & 2 ~= 0
61
- )
53
+ local positive = (polarityOrBuffTypeIds or 3) & 1 ~= 0
54
+ local negative = (polarityOrBuffTypeIds or 3) & 2 ~= 0
55
+ local magic = (resistanceType or 0) & 1 ~= 0
56
+ local physical = (resistanceType or 0) & 2 ~= 0
62
57
  local ____includeExpirationTimers_0 = includeExpirationTimers
63
58
  if ____includeExpirationTimers_0 == nil then
64
59
  ____includeExpirationTimers_0 = true
65
60
  end
66
- __TS__SparseArrayPush(____array_3, ____includeExpirationTimers_0)
61
+ includeExpirationTimers = ____includeExpirationTimers_0
67
62
  local ____includeAuras_1 = includeAuras
68
63
  if ____includeAuras_1 == nil then
69
64
  ____includeAuras_1 = true
70
65
  end
71
- __TS__SparseArrayPush(____array_3, ____includeAuras_1)
66
+ includeAuras = ____includeAuras_1
72
67
  local ____autoDispel_2 = autoDispel
73
68
  if ____autoDispel_2 == nil then
74
69
  ____autoDispel_2 = false
75
70
  end
76
- __TS__SparseArrayPush(____array_3, ____autoDispel_2)
77
- unitRemoveBuffsEx(__TS__SparseArraySpread(____array_3))
71
+ autoDispel = ____autoDispel_2
72
+ cnt = unitCountBuffsEx(
73
+ handle,
74
+ positive,
75
+ negative,
76
+ magic,
77
+ physical,
78
+ includeExpirationTimers,
79
+ includeAuras,
80
+ autoDispel
81
+ )
82
+ unitRemoveBuffsEx(
83
+ handle,
84
+ positive,
85
+ negative,
86
+ magic,
87
+ physical,
88
+ includeExpirationTimers,
89
+ includeAuras,
90
+ autoDispel
91
+ )
78
92
  end
79
- checkBuffs(self)
93
+ checkBuffs(self, false)
94
+ return cnt
80
95
  end
81
96
  return ____exports
@@ -0,0 +1,36 @@
1
+ /** @noSelfInFile */
2
+ import { Item } from "../item";
3
+ import { EquipmentSlot } from "../../object-data/auxiliary/equipment-slot";
4
+ import { EquipmentType } from "../../object-data/auxiliary/equipment-type";
5
+ export interface UnitEquipment extends ReadonlyArray<Item | undefined> {
6
+ }
7
+ /** A live view indexed by EquipmentSlot. Equip operations let the engine choose the slot. */
8
+ export declare class UnitEquipment {
9
+ constructor(handle: junit);
10
+ equip(item: Item): boolean;
11
+ unequip(item: Item): void;
12
+ unequipSlot(slot: EquipmentSlot): Item | undefined;
13
+ has(item: Item): boolean;
14
+ hasAny(): boolean;
15
+ isSlotEmpty(slot: EquipmentSlot): boolean;
16
+ hasType(type: EquipmentType): boolean;
17
+ canEquipType(type: EquipmentType): boolean;
18
+ findSlot(item: Item): EquipmentSlot | undefined;
19
+ protected __index(key: string | number): unknown;
20
+ protected __len(): number;
21
+ protected __ipairs(): LuaIterator<LuaMultiReturn<[number, Item | undefined]>, junit>;
22
+ }
23
+ declare module "../unit" {
24
+ interface Unit {
25
+ readonly equipment: UnitEquipment;
26
+ }
27
+ namespace Unit {
28
+ const itemEquippedEvent: UnitTriggerEvent<[item: Item]>;
29
+ const itemUnequippedEvent: UnitTriggerEvent<[item: Item]>;
30
+ let itemStackedEvent: UnitTriggerEvent<[
31
+ target: Item,
32
+ source: Item,
33
+ previousTargetCharges: number
34
+ ]>;
35
+ }
36
+ }