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
@@ -0,0 +1,169 @@
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 ____unit = require("engine.internal.unit")
7
+ local Unit = ____unit.Unit
8
+ local UnitTriggerEvent = ____unit.UnitTriggerEvent
9
+ local ____item = require("engine.internal.item")
10
+ local Item = ____item.Item
11
+ local ____event = require("event")
12
+ local IgnoreEvent = ____event.IgnoreEvent
13
+ local ____dummy = require("objutil.dummy")
14
+ local dummyUnitId = ____dummy.dummyUnitId
15
+ local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
16
+ local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
17
+ local convertEquipmentType = ConvertEquipmentType
18
+ local convertLoadoutSlot = ConvertLoadoutSlot
19
+ local getEquippedItem = GetEquippedItem
20
+ local getStackingItemSource = BlzGetStackingItemSource
21
+ local getStackingItemTarget = BlzGetStackingItemTarget
22
+ local getStackingItemTargetPreviousCharges = BlzGetStackingItemTargetPreviousCharges
23
+ local getTriggerUnit = GetTriggerUnit
24
+ local getUnequippedItem = GetUnequippedItem
25
+ local getUnitTypeId = GetUnitTypeId
26
+ local unitCanEquipItemOfEquipmentType = UnitCanEquipItemOfEquipmentType
27
+ local unitEquipItem = UnitEquipItem
28
+ local unitHasAnyItemEquiped = UnitHasAnyItemEquiped
29
+ local unitHasItemEquipmentOfType = UnitHasItemEquipmentOfType
30
+ local unitHasItemEquipped = UnitHasItemEquipped
31
+ local unitHasLoadoutSlotEmpty = UnitHasLoadoutSlotEmpty
32
+ local unitItemInEquipmentSlot = UnitItemInEquipmentSlot
33
+ local unitUnequipItem = UnitUnequipItem
34
+ local unitUnequipItemFromSlot = UnitUnequipItemFromSlot
35
+ local ____rawget = _G.rawget
36
+ local rawset = _G.rawset
37
+ local ____type = _G.type
38
+ local EQUIPMENT_SLOT_COUNT = bj_MAX_EQUIPMENT_INVENTORY
39
+ local handleByUnitEquipment = setmetatable({}, {__mode = "k"})
40
+ local function unitEquipmentNext(handle, slot)
41
+ if slot >= EQUIPMENT_SLOT_COUNT then
42
+ return nil, nil
43
+ end
44
+ return slot + 1, Item:of(unitItemInEquipmentSlot(
45
+ handle,
46
+ convertLoadoutSlot(slot)
47
+ ))
48
+ end
49
+ --- A live view indexed by EquipmentSlot. Equip operations let the engine choose the slot.
50
+ ____exports.UnitEquipment = __TS__Class()
51
+ local UnitEquipment = ____exports.UnitEquipment
52
+ UnitEquipment.name = "UnitEquipment"
53
+ function UnitEquipment.prototype.____constructor(self, handle)
54
+ handleByUnitEquipment[self] = handle
55
+ end
56
+ function UnitEquipment.prototype.equip(self, item)
57
+ return unitEquipItem(handleByUnitEquipment[self], item.handle)
58
+ end
59
+ function UnitEquipment.prototype.unequip(self, item)
60
+ unitUnequipItem(handleByUnitEquipment[self], item.handle)
61
+ end
62
+ function UnitEquipment.prototype.unequipSlot(self, slot)
63
+ return Item:of(unitUnequipItemFromSlot(
64
+ handleByUnitEquipment[self],
65
+ convertLoadoutSlot(slot)
66
+ ))
67
+ end
68
+ function UnitEquipment.prototype.has(self, item)
69
+ return unitHasItemEquipped(handleByUnitEquipment[self], item.handle)
70
+ end
71
+ function UnitEquipment.prototype.hasAny(self)
72
+ return unitHasAnyItemEquiped(handleByUnitEquipment[self])
73
+ end
74
+ function UnitEquipment.prototype.isSlotEmpty(self, slot)
75
+ return unitHasLoadoutSlotEmpty(
76
+ handleByUnitEquipment[self],
77
+ convertLoadoutSlot(slot)
78
+ )
79
+ end
80
+ function UnitEquipment.prototype.hasType(self, ____type)
81
+ return unitHasItemEquipmentOfType(
82
+ handleByUnitEquipment[self],
83
+ convertEquipmentType(____type)
84
+ )
85
+ end
86
+ function UnitEquipment.prototype.canEquipType(self, ____type)
87
+ return unitCanEquipItemOfEquipmentType(
88
+ handleByUnitEquipment[self],
89
+ convertEquipmentType(____type)
90
+ )
91
+ end
92
+ function UnitEquipment.prototype.findSlot(self, item)
93
+ local handle = handleByUnitEquipment[self]
94
+ for slot = 0, EQUIPMENT_SLOT_COUNT - 1 do
95
+ if unitItemInEquipmentSlot(
96
+ handle,
97
+ convertLoadoutSlot(slot)
98
+ ) == item.handle then
99
+ return slot
100
+ end
101
+ end
102
+ return nil
103
+ end
104
+ function UnitEquipment.prototype.__index(self, key)
105
+ if ____type(key) == "number" then
106
+ return Item:of(unitItemInEquipmentSlot(
107
+ handleByUnitEquipment[self],
108
+ convertLoadoutSlot(key - 1)
109
+ ))
110
+ end
111
+ return ____rawget(____exports.UnitEquipment.prototype, key)
112
+ end
113
+ function UnitEquipment.prototype.__len(self)
114
+ return EQUIPMENT_SLOT_COUNT
115
+ end
116
+ function UnitEquipment.prototype.__ipairs(self)
117
+ return unitEquipmentNext, handleByUnitEquipment[self], 0
118
+ end
119
+ __TS__ObjectDefineProperty(
120
+ Unit.prototype,
121
+ "equipment",
122
+ {get = function(self)
123
+ local equipment = __TS__New(____exports.UnitEquipment, self.handle)
124
+ rawset(self, "equipment", equipment)
125
+ return equipment
126
+ end}
127
+ )
128
+ rawset(
129
+ Unit,
130
+ "itemEquippedEvent",
131
+ __TS__New(
132
+ UnitTriggerEvent,
133
+ EVENT_PLAYER_UNIT_EQUIP_ITEM,
134
+ function()
135
+ local unit = getTriggerUnit()
136
+ local item = getEquippedItem()
137
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
138
+ return Unit:of(unit), Item:of(item)
139
+ end
140
+ return IgnoreEvent
141
+ end
142
+ )
143
+ )
144
+ rawset(
145
+ Unit,
146
+ "itemUnequippedEvent",
147
+ __TS__New(
148
+ UnitTriggerEvent,
149
+ EVENT_PLAYER_UNIT_UNEQUIP_ITEM,
150
+ function()
151
+ local unit = getTriggerUnit()
152
+ local item = getUnequippedItem()
153
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
154
+ return Unit:of(unit), Item:of(item)
155
+ end
156
+ return IgnoreEvent
157
+ end
158
+ )
159
+ )
160
+ rawset(
161
+ Unit,
162
+ "itemStackedEvent",
163
+ __TS__New(
164
+ UnitTriggerEvent,
165
+ EVENT_PLAYER_UNIT_STACK_ITEM,
166
+ function() return Unit:of(getTriggerUnit()), Item:of(getStackingItemTarget()), Item:of(getStackingItemSource()), getStackingItemTargetPreviousCharges() end
167
+ )
168
+ )
169
+ return ____exports
@@ -0,0 +1,7 @@
1
+ /** @noSelfInFile */
2
+ declare module "../unit" {
3
+ interface Unit {
4
+ flyHeight: number;
5
+ }
6
+ }
7
+ export {};
@@ -0,0 +1,20 @@
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 FLY_HEIGHT_UNIT_FIELD = ____unit.FLY_HEIGHT_UNIT_FIELD
8
+ __TS__ObjectDefineProperty(
9
+ Unit.prototype,
10
+ "flyHeight",
11
+ {
12
+ get = function(self)
13
+ return FLY_HEIGHT_UNIT_FIELD:getValue(self)
14
+ end,
15
+ set = function(self, value)
16
+ FLY_HEIGHT_UNIT_FIELD:setValue(self, value)
17
+ end
18
+ }
19
+ )
20
+ return ____exports
@@ -0,0 +1,12 @@
1
+ /** @noSelfInFile */
2
+ declare module "../unit" {
3
+ interface Unit {
4
+ interruptAttack(this: Unit): void;
5
+ }
6
+ }
7
+ declare module "../unit" {
8
+ interface Unit {
9
+ interruptMovement(this: Unit): void;
10
+ }
11
+ }
12
+ export {};
@@ -0,0 +1,28 @@
1
+ local ____exports = {}
2
+ local ____unit = require("engine.internal.unit")
3
+ local Unit = ____unit.Unit
4
+ local ____unit_2Dmissile_2Dlaunch = require("engine.internal.unit-missile-launch")
5
+ local resetAutoAttackTimer = ____unit_2Dmissile_2Dlaunch.resetAutoAttackTimer
6
+ local unitDisableAbility = BlzUnitDisableAbility
7
+ local unitInterruptAttack = BlzUnitInterruptAttack
8
+ Unit.prototype.interruptAttack = function(self)
9
+ unitInterruptAttack(self.handle)
10
+ resetAutoAttackTimer(self)
11
+ end
12
+ Unit.prototype.interruptMovement = function(self)
13
+ local handle = self.handle
14
+ unitDisableAbility(
15
+ handle,
16
+ fourCC("Amov"),
17
+ true,
18
+ false
19
+ )
20
+ unitDisableAbility(
21
+ handle,
22
+ fourCC("Amov"),
23
+ false,
24
+ false
25
+ )
26
+ resetAutoAttackTimer(self)
27
+ end
28
+ return ____exports
@@ -1,6 +1,6 @@
1
1
  /** @noSelfInFile */
2
2
  import { Item } from "../item";
3
- export interface UnitItems extends ReadonlyArray<Item | undefined> {
3
+ export interface UnitInventory extends ReadonlyArray<Item | undefined> {
4
4
  readonly length: 0 | 1 | 2 | 3 | 4 | 5 | 6;
5
5
  [0]: Item | undefined;
6
6
  [1]: Item | undefined;
@@ -9,7 +9,7 @@ export interface UnitItems extends ReadonlyArray<Item | undefined> {
9
9
  [4]: Item | undefined;
10
10
  [5]: Item | undefined;
11
11
  }
12
- export declare class UnitItems {
12
+ export declare class UnitInventory {
13
13
  constructor(handle: junit);
14
14
  findSlot(item: Item): 0 | 1 | 2 | 3 | 4 | 5 | undefined;
15
15
  protected __newindex(slot: number, item: Item | undefined): void;
@@ -19,6 +19,6 @@ export declare class UnitItems {
19
19
  }
20
20
  declare module "../unit" {
21
21
  interface Unit {
22
- readonly items: UnitItems;
22
+ readonly inventory: UnitInventory;
23
23
  }
24
24
  }
@@ -18,25 +18,24 @@ local setItemBooleanField = BlzSetItemBooleanField
18
18
  local unitInventorySize = UnitInventorySize
19
19
  local unitItemInSlot = UnitItemInSlot
20
20
  local unitRemoveItemFromSlot = UnitRemoveItemFromSlot
21
- local handleByUnitItems = setmetatable({}, {__mode = "k"})
22
- local function unitItemsNext(handle, index)
23
- local slot = index & 7
24
- if index >> 3 == slot then
21
+ local handleByUnitInventory = setmetatable({}, {__mode = "k"})
22
+ local function unitInventoryNext(handle, slot)
23
+ if slot >= unitInventorySize(handle) then
25
24
  return nil, nil
26
25
  end
27
- return index + 1, Item:of(unitItemInSlot(handle, slot))
26
+ return slot + 1, Item:of(unitItemInSlot(handle, slot))
28
27
  end
29
- ____exports.UnitItems = __TS__Class()
30
- local UnitItems = ____exports.UnitItems
31
- UnitItems.name = "UnitItems"
32
- function UnitItems.prototype.____constructor(self, handle)
33
- handleByUnitItems[self] = handle
28
+ ____exports.UnitInventory = __TS__Class()
29
+ local UnitInventory = ____exports.UnitInventory
30
+ UnitInventory.name = "UnitInventory"
31
+ function UnitInventory.prototype.____constructor(self, handle)
32
+ handleByUnitInventory[self] = handle
34
33
  end
35
- function UnitItems.prototype.findSlot(self, item)
36
- return findUnitItemSlot(handleByUnitItems[self], item.handle)
34
+ function UnitInventory.prototype.findSlot(self, item)
35
+ return findUnitItemSlot(handleByUnitInventory[self], item.handle)
37
36
  end
38
- function UnitItems.prototype.__newindex(self, slot, item)
39
- local handle = handleByUnitItems[self]
37
+ function UnitInventory.prototype.__newindex(self, slot, item)
38
+ local handle = handleByUnitInventory[self]
40
39
  if slot < 1 or slot > unitInventorySize(handle) then
41
40
  return
42
41
  end
@@ -53,26 +52,26 @@ function UnitItems.prototype.__newindex(self, slot, item)
53
52
  end
54
53
  end
55
54
  end
56
- function UnitItems.prototype.__index(self, key)
55
+ function UnitInventory.prototype.__index(self, key)
57
56
  if ____type(key) == "number" then
58
- return Item:of(unitItemInSlot(handleByUnitItems[self], key - 1))
57
+ return Item:of(unitItemInSlot(handleByUnitInventory[self], key - 1))
59
58
  end
60
- return rawget(____exports.UnitItems.prototype, key)
59
+ return rawget(____exports.UnitInventory.prototype, key)
61
60
  end
62
- function UnitItems.prototype.__len(self)
63
- return unitInventorySize(handleByUnitItems[self])
61
+ function UnitInventory.prototype.__len(self)
62
+ return unitInventorySize(handleByUnitInventory[self])
64
63
  end
65
- function UnitItems.prototype.__ipairs(self)
66
- local handle = handleByUnitItems[self]
67
- return unitItemsNext, handle, unitInventorySize(handle) << 3
64
+ function UnitInventory.prototype.__ipairs(self)
65
+ local handle = handleByUnitInventory[self]
66
+ return unitInventoryNext, handle, 0
68
67
  end
69
68
  __TS__ObjectDefineProperty(
70
69
  Unit.prototype,
71
- "items",
70
+ "inventory",
72
71
  {get = function(self)
73
- local items = __TS__New(____exports.UnitItems, self.handle)
74
- rawset(self, "items", items)
75
- return items
72
+ local inventory = __TS__New(____exports.UnitInventory, self.handle)
73
+ rawset(self, "inventory", inventory)
74
+ return inventory
76
75
  end}
77
76
  )
78
77
  return ____exports
@@ -1,46 +1,31 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__New = ____lualib.__TS__New
3
3
  local ____exports = {}
4
- local ____player = require("core.types.player")
5
- local Player = ____player.Player
6
- local ____math = require("math")
7
- local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
8
- local MINIMUM_INTEGER = ____math.MINIMUM_INTEGER
9
4
  local ____local_2Dclient = require("engine.local-client")
10
5
  local LocalClient = ____local_2Dclient.LocalClient
11
6
  local ____unit = require("engine.internal.unit")
12
7
  local Unit = ____unit.Unit
13
8
  local ____event = require("event")
14
9
  local Event = ____event.Event
10
+ local ____synchronization = require("engine.synchronization")
11
+ local ObjectBus = ____synchronization.ObjectBus
15
12
  local mainSelectedUnitChangeEvent = __TS__New(Event)
16
13
  rawset(Unit, "mainSelectedUnitChangeEvent", mainSelectedUnitChangeEvent)
17
14
  local mainSelectedUnitByPlayer = {}
18
- local syncSlider = BlzCreateFrameByType(
19
- "SLIDER",
20
- "UnitSyncId",
21
- BlzGetOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0),
22
- "",
23
- 0
15
+ local unitBus = __TS__New(
16
+ ObjectBus,
17
+ function(unit) return unit.syncId end,
18
+ function(syncId) return Unit:getBySyncId(syncId) end
24
19
  )
25
- BlzFrameSetMinMaxValue(syncSlider, MINIMUM_INTEGER, MAXIMUM_INTEGER)
26
20
  LocalClient.mainSelectedUnitChangeEvent:addListener(function()
27
- local ____opt_0 = LocalClient.mainSelectedUnit
28
- local syncId = ____opt_0 and ____opt_0.syncId
29
- BlzFrameSetValue(syncSlider, syncId or 0)
21
+ unitBus:send(LocalClient.mainSelectedUnit)
30
22
  end)
31
- local trg = CreateTrigger()
32
- BlzTriggerRegisterFrameEvent(trg, syncSlider, FRAMEEVENT_SLIDER_VALUE_CHANGED)
33
- TriggerAddAction(
34
- trg,
35
- function()
36
- local player = Player:of(GetTriggerPlayer())
37
- local mainSelectedUnit = Unit:getBySyncId(BlzGetTriggerFrameValue())
38
- if mainSelectedUnit ~= mainSelectedUnitByPlayer[player] then
39
- mainSelectedUnitByPlayer[player] = mainSelectedUnit
40
- Event.invoke(mainSelectedUnitChangeEvent, player)
41
- end
23
+ unitBus.event:addListener(function(player, unit)
24
+ if unit ~= mainSelectedUnitByPlayer[player] then
25
+ mainSelectedUnitByPlayer[player] = unit
26
+ Event.invoke(mainSelectedUnitChangeEvent, player)
42
27
  end
43
- )
28
+ end)
44
29
  rawset(
45
30
  Unit,
46
31
  "getMainSelectedOf",
@@ -0,0 +1,2 @@
1
+ /** @noSelfInFile */
2
+ export {};
@@ -0,0 +1,11 @@
1
+ local ____exports = {}
2
+ ---
3
+ -- @internal For use by internal systems only.
4
+ ____exports.compiletimePseudoPassiveAbilityTypeIds = {}
5
+ ---
6
+ -- @internal For use by internal systems only.
7
+ ____exports.pseudoPassiveAbilityTypeIds = postcompile(function() return ____exports.compiletimePseudoPassiveAbilityTypeIds end)
8
+ ---
9
+ -- @internal For use by internal systems only.
10
+ ____exports.pseudoPassiveAbilityOrderTypeStringId = "channel"
11
+ return ____exports
@@ -0,0 +1,12 @@
1
+ /** @noSelfInFile */
2
+ import { Event } from "../../../event";
3
+ declare module "../unit" {
4
+ interface Unit {
5
+ readonly unitInRangeEvent: Record<number, Event<[unit: Unit, range: number, unitInRange: Unit]>>;
6
+ }
7
+ }
8
+ declare module "../unit" {
9
+ interface Unit {
10
+ readonly unitOutOfRangeEvent: Record<number, Event<[unit: Unit, range: number, unitOutOfRange: Unit]>>;
11
+ }
12
+ }
@@ -0,0 +1,90 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__New = ____lualib.__TS__New
3
+ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
4
+ local ____exports = {}
5
+ local ____event = require("event")
6
+ local Event = ____event.Event
7
+ local InitializingEvent = ____event.InitializingEvent
8
+ local TriggerEvent = ____event.TriggerEvent
9
+ local ____unit = require("engine.internal.unit")
10
+ local Unit = ____unit.Unit
11
+ local ____timer = require("core.types.timer")
12
+ local Timer = ____timer.Timer
13
+ local ____attributes = require("attributes")
14
+ local attribute = ____attributes.attribute
15
+ local ____linked_2Dmap = require("utility.linked-map")
16
+ local mutableLinkedMap = ____linked_2Dmap.mutableLinkedMap
17
+ local ____linked_2Dset = require("utility.linked-set")
18
+ local LinkedSet = ____linked_2Dset.LinkedSet
19
+ local mutableLinkedSet = ____linked_2Dset.mutableLinkedSet
20
+ local getTriggerUnit = GetTriggerUnit
21
+ local triggerRegisterUnitInRange = TriggerRegisterUnitInRange
22
+ local eventInvoke = Event.invoke
23
+ __TS__ObjectDefineProperty(
24
+ Unit.prototype,
25
+ "unitInRangeEvent",
26
+ {get = function(self)
27
+ local unit = self
28
+ local handle = self.handle
29
+ local unitInRangeEvent = setmetatable(
30
+ {},
31
+ {__index = function(self, value)
32
+ local event = __TS__New(
33
+ TriggerEvent,
34
+ function(trigger)
35
+ triggerRegisterUnitInRange(trigger, handle, value, nil)
36
+ end,
37
+ function() return unit, value, Unit:of(getTriggerUnit()) end
38
+ )
39
+ rawset(self, value, event)
40
+ return event
41
+ end}
42
+ )
43
+ rawset(self, "unitInRangeEvent", unitInRangeEvent)
44
+ return unitInRangeEvent
45
+ end}
46
+ )
47
+ local units = __TS__New(LinkedSet)
48
+ local unitsInRangeByRangeAttribute = attribute()
49
+ local function registerUnitOfRangeEvent(unit, range, unitInRange)
50
+ units:add(unit)
51
+ unit:getOrPut(unitsInRangeByRangeAttribute, mutableLinkedMap):getOrPut(range, mutableLinkedSet):add(unitInRange)
52
+ end
53
+ __TS__ObjectDefineProperty(
54
+ Unit.prototype,
55
+ "unitOutOfRangeEvent",
56
+ {get = function(self)
57
+ local unit = self
58
+ local unitOutOfRangeEvent = setmetatable(
59
+ {},
60
+ {__index = function(self, value)
61
+ local event = __TS__New(
62
+ InitializingEvent,
63
+ function()
64
+ unit.unitInRangeEvent[value]:addListener(999999, registerUnitOfRangeEvent)
65
+ end
66
+ )
67
+ rawset(self, value, event)
68
+ return event
69
+ end}
70
+ )
71
+ rawset(self, "unitOutOfRangeEvent", unitOutOfRangeEvent)
72
+ return unitOutOfRangeEvent
73
+ end}
74
+ )
75
+ Timer.onPeriod[1]:addListener(function()
76
+ for unit in pairs(units) do
77
+ local unitsInRangeByRange = unit[unitsInRangeByRangeAttribute]
78
+ if unitsInRangeByRange ~= nil then
79
+ for range, unitsInRange in pairs(unitsInRangeByRange) do
80
+ for unitInRange in pairs(unitsInRange) do
81
+ if unit:getDistanceTo(unitInRange) > range then
82
+ unitsInRange:remove(unitInRange)
83
+ eventInvoke(unit.unitOutOfRangeEvent[range], unit, range, unitInRange)
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end)
90
+ return ____exports
@@ -0,0 +1,7 @@
1
+ /** @noSelfInFile */
2
+ declare module "../unit" {
3
+ interface Unit {
4
+ scale: number;
5
+ }
6
+ }
7
+ export {};
@@ -0,0 +1,20 @@
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 SCALING_VALUE_UNIT_FIELD = ____unit.SCALING_VALUE_UNIT_FIELD
8
+ __TS__ObjectDefineProperty(
9
+ Unit.prototype,
10
+ "scale",
11
+ {
12
+ get = function(self)
13
+ return SCALING_VALUE_UNIT_FIELD:getValue(self)
14
+ end,
15
+ set = function(self, value)
16
+ SCALING_VALUE_UNIT_FIELD:setValue(self, value)
17
+ end
18
+ }
19
+ )
20
+ return ____exports
@@ -7,8 +7,8 @@ local UnitAbility = ____ability.UnitAbility
7
7
  local ____unit = require("engine.internal.unit")
8
8
  local Unit = ____unit.Unit
9
9
  local ____event = require("event")
10
- local Event = ____event.Event
11
10
  local createDispatchingEvent = ____event.createDispatchingEvent
11
+ local Event = ____event.Event
12
12
  local abilityGainedEvent = createDispatchingEvent(
13
13
  __TS__New(Event),
14
14
  function(unit, ability) return ability.typeId end
@@ -40,6 +40,15 @@ ItemAbility.onCreate:addListener(
40
40
  end
41
41
  end
42
42
  )
43
+ ItemAbility.destroyEvent:addListener(
44
+ 4,
45
+ function(ability)
46
+ local unit = ability.owner.owner
47
+ if unit ~= nil then
48
+ Event.invoke(abilityLostEvent, unit, ability)
49
+ end
50
+ end
51
+ )
43
52
  Unit.itemPickedUpEvent:addListener(
44
53
  0,
45
54
  function(unit, item)
@@ -3,9 +3,9 @@ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
3
3
  local ____exports = {}
4
4
  local ____unit = require("engine.internal.unit")
5
5
  local Unit = ____unit.Unit
6
- local ____armor_2Dincrease = require("engine.internal.object-data.armor-increase")
7
- local ARMOR_BONUS_DUMMY_ABILITY_FIELD = ____armor_2Dincrease.ARMOR_BONUS_DUMMY_ABILITY_FIELD
8
- local ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID = ____armor_2Dincrease.ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID
6
+ local ____armor_2Dbonus = require("engine.internal.object-data.armor-bonus")
7
+ local ARMOR_BONUS_DUMMY_ABILITY_FIELD = ____armor_2Dbonus.ARMOR_BONUS_DUMMY_ABILITY_FIELD
8
+ local ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID = ____armor_2Dbonus.ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID
9
9
  local getUnitAbility = BlzGetUnitAbility
10
10
  local setAbilityRealLevelField = BlzSetAbilityRealLevelField
11
11
  local unitAddAbility = UnitAddAbility
@@ -1,6 +1,8 @@
1
1
  /** @noSelfInFile */
2
+ import "./unit/allowed-targets";
2
3
  import { Widget } from "../../core/types/widget";
3
4
  import { AttackType } from "../object-data/auxiliary/attack-type";
5
+ import { CombatClassifications } from "../object-data/auxiliary/combat-classification";
4
6
  export type DamageType = jdamagetype;
5
7
  export declare namespace DamageType {
6
8
  const UNKNOWN: jdamagetype;
@@ -56,5 +58,12 @@ export declare namespace WeaponType {
56
58
  declare module "./unit" {
57
59
  interface Unit {
58
60
  damageTarget(target: Widget, amount: number, attack?: boolean, ranged?: boolean, attackType?: AttackType, damageType?: DamageType, weaponType?: WeaponType, metadata?: unknown): boolean;
61
+ /**
62
+ * Deals amount to each allowed unit in collision range of (x, y).
63
+ * A positive maximumDamage caps the total requested damage, shared equally
64
+ * between the targets. Zero or omitted means unlimited; damage mitigation
65
+ * and damage-event modifiers are applied afterward by damageTarget.
66
+ */
67
+ damageArea(x: number, y: number, range: number, allowedTargetCombatClassifications: CombatClassifications, amount: number, maximumDamage?: number, attack?: boolean, ranged?: boolean, attackType?: AttackType, damageType?: DamageType, weaponType?: WeaponType, metadata?: unknown): void;
59
68
  }
60
69
  }
@@ -3,6 +3,7 @@ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
3
3
  local ____exports = {}
4
4
  local ____unit = require("engine.internal.unit")
5
5
  local Unit = ____unit.Unit
6
+ require("engine.internal.unit.allowed-targets")
6
7
  local ____player = require("core.types.player")
7
8
  local Player = ____player.Player
8
9
  local ____dummy = require("objutil.dummy")
@@ -11,6 +12,8 @@ local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
11
12
  local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
12
13
  local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
13
14
  local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
15
+ local ____math = require("math")
16
+ local min = ____math.min
14
17
  local createUnit = CreateUnit
15
18
  local getOwningPlayer = GetOwningPlayer
16
19
  local showUnit = ShowUnit
@@ -116,4 +119,34 @@ Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, att
116
119
  weaponType
117
120
  )
118
121
  end
122
+ Unit.prototype.damageArea = function(self, x, y, range, allowedTargetCombatClassifications, amount, maximumDamage, attack, ranged, attackType, damageType, weaponType, metadata)
123
+ if maximumDamage == nil then
124
+ maximumDamage = 0
125
+ end
126
+ local targets = Unit.getAllowedTargetsInCollisionRange(
127
+ self,
128
+ allowedTargetCombatClassifications,
129
+ x,
130
+ y,
131
+ range
132
+ )
133
+ if #targets == 0 then
134
+ return
135
+ end
136
+ if maximumDamage > 0 then
137
+ amount = min(amount, maximumDamage / #targets)
138
+ end
139
+ for ____, target in ipairs(targets) do
140
+ self:damageTarget(
141
+ target,
142
+ amount,
143
+ attack,
144
+ ranged,
145
+ attackType,
146
+ damageType,
147
+ weaponType,
148
+ metadata
149
+ )
150
+ end
151
+ end
119
152
  return ____exports