warscript 0.0.1-dev.959b9a7 → 0.0.1-dev.96f1707

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 (212) hide show
  1. package/attributes.d.ts +12 -0
  2. package/attributes.lua +16 -0
  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 +8 -1
  10. package/core/types/frame.lua +93 -1
  11. package/core/types/group.d.ts +0 -1
  12. package/core/types/handle.d.ts +2 -1
  13. package/core/types/handle.lua +5 -0
  14. package/core/types/image.d.ts +0 -1
  15. package/core/types/missile.d.ts +2 -2
  16. package/core/types/missile.lua +8 -2
  17. package/core/types/sound.d.ts +17 -24
  18. package/core/types/sound.lua +99 -24
  19. package/core/types/timer.d.ts +6 -7
  20. package/core/types/timer.lua +18 -21
  21. package/core/types/unit.lua +8 -0
  22. package/core/util.d.ts +1 -1
  23. package/core/util.lua +18 -1
  24. package/decl/index.d.ts +1 -0
  25. package/engine/ability.d.ts +1 -1
  26. package/engine/behavior.d.ts +10 -10
  27. package/engine/behavior.lua +6 -6
  28. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  29. package/engine/behaviour/ability/always-enabled.lua +31 -0
  30. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  31. package/engine/behaviour/ability/apply-buff.lua +32 -0
  32. package/engine/behaviour/ability/apply-unit-behavior.d.ts +6 -1
  33. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  34. package/engine/behaviour/ability/damage.d.ts +36 -11
  35. package/engine/behaviour/ability/damage.lua +90 -32
  36. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  37. package/engine/behaviour/ability/emulate-impact.lua +35 -0
  38. package/engine/behaviour/ability/heal.d.ts +33 -6
  39. package/engine/behaviour/ability/heal.lua +89 -10
  40. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  41. package/engine/behaviour/ability/instant-impact.lua +4 -15
  42. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  43. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  44. package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
  45. package/engine/behaviour/ability/remove-buffs.lua +28 -0
  46. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  47. package/engine/behaviour/ability/restore-mana.lua +29 -0
  48. package/engine/behaviour/ability.d.ts +27 -4
  49. package/engine/behaviour/ability.lua +152 -17
  50. package/engine/behaviour/unit/stun-immunity.d.ts +0 -1
  51. package/engine/behaviour/unit.d.ts +10 -2
  52. package/engine/behaviour/unit.lua +27 -0
  53. package/engine/buff.d.ts +103 -41
  54. package/engine/buff.lua +465 -212
  55. package/engine/game-map.d.ts +7 -0
  56. package/engine/game-map.lua +32 -0
  57. package/engine/internal/ability.d.ts +16 -13
  58. package/engine/internal/ability.lua +80 -76
  59. package/engine/internal/item/ability.lua +106 -0
  60. package/engine/internal/item+owner.lua +2 -2
  61. package/engine/internal/item.d.ts +2 -2
  62. package/engine/internal/item.lua +56 -25
  63. package/engine/internal/mechanics/ability-duration.lua +1 -1
  64. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  65. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  66. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  67. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  68. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  69. package/engine/internal/object-data/evasion-probability.lua +16 -0
  70. package/engine/internal/unit/ability.d.ts +10 -1
  71. package/engine/internal/unit/ability.lua +36 -14
  72. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  73. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  74. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  75. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  76. package/engine/internal/unit/bonus.d.ts +11 -8
  77. package/engine/internal/unit/bonus.lua +23 -1
  78. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  79. package/engine/internal/unit/ignore-events-items.lua +5 -0
  80. package/engine/internal/unit/item.d.ts +24 -0
  81. package/engine/internal/unit/item.lua +78 -0
  82. package/engine/internal/unit/main-selected.d.ts +13 -0
  83. package/engine/internal/unit/main-selected.lua +51 -0
  84. package/engine/internal/unit+ability.lua +2 -2
  85. package/engine/internal/unit+transport.lua +4 -10
  86. package/engine/internal/unit-missile-launch.lua +25 -6
  87. package/engine/internal/unit.d.ts +70 -16
  88. package/engine/internal/unit.lua +407 -134
  89. package/engine/internal/utility.lua +12 -0
  90. package/engine/lightning.d.ts +12 -5
  91. package/engine/lightning.lua +48 -14
  92. package/engine/local-client.d.ts +7 -2
  93. package/engine/local-client.lua +82 -0
  94. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  95. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  96. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -3
  97. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  98. package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
  99. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  100. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  101. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  102. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  103. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  104. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  105. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  106. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  107. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  108. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  109. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
  110. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  111. package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
  112. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  113. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  114. package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
  115. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  116. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  117. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  118. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  119. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  120. package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
  121. package/engine/object-data/entry/ability-type/mine.lua +39 -0
  122. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  123. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  124. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  125. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  126. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  127. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  128. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  129. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  130. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  131. package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
  132. package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
  133. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  134. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  135. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  136. package/engine/object-data/entry/ability-type/web.lua +52 -0
  137. package/engine/object-data/entry/ability-type.d.ts +19 -18
  138. package/engine/object-data/entry/ability-type.lua +89 -33
  139. package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
  140. package/engine/object-data/entry/buff-type/applicable.lua +18 -37
  141. package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
  142. package/engine/object-data/entry/buff-type.d.ts +6 -13
  143. package/engine/object-data/entry/buff-type.lua +13 -29
  144. package/engine/object-data/entry/destructible-type.d.ts +1 -2
  145. package/engine/object-data/entry/item-type/blank.d.ts +0 -1
  146. package/engine/object-data/entry/item-type.d.ts +15 -2
  147. package/engine/object-data/entry/item-type.lua +93 -2
  148. package/engine/object-data/entry/lightning-type.d.ts +1 -2
  149. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  150. package/engine/object-data/entry/sound-preset.lua +140 -0
  151. package/engine/object-data/entry/unit-type.d.ts +45 -3
  152. package/engine/object-data/entry/unit-type.lua +402 -59
  153. package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
  154. package/engine/object-data/entry/upgrade.d.ts +1 -2
  155. package/engine/object-data/entry/upgrade.lua +4 -4
  156. package/engine/object-data/entry.d.ts +18 -17
  157. package/engine/object-data/entry.lua +60 -32
  158. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  159. package/engine/object-field/ability.d.ts +26 -3
  160. package/engine/object-field/ability.lua +54 -1
  161. package/engine/object-field.d.ts +2 -3
  162. package/engine/object-field.lua +4 -0
  163. package/engine/random.d.ts +1 -0
  164. package/engine/random.lua +9 -0
  165. package/engine/standard/entries/buff-type.d.ts +3 -0
  166. package/engine/standard/entries/buff-type.lua +3 -0
  167. package/engine/standard/entries/sound-preset.d.ts +10 -0
  168. package/engine/standard/entries/sound-preset.lua +10 -0
  169. package/engine/standard/entries/unit-type.d.ts +42 -1
  170. package/engine/standard/entries/unit-type.lua +42 -1
  171. package/engine/standard/fields/ability.d.ts +3 -1
  172. package/engine/standard/fields/ability.lua +3 -1
  173. package/engine/unit.d.ts +3 -0
  174. package/engine/unit.lua +12 -2
  175. package/event.d.ts +2 -3
  176. package/event.lua +9 -5
  177. package/index.d.ts +1 -0
  178. package/index.lua +1 -0
  179. package/lualib_bundle.lua +146 -42
  180. package/math/vec2.d.ts +2 -9
  181. package/math.d.ts +0 -2
  182. package/net/socket.d.ts +7 -1
  183. package/net/socket.lua +45 -4
  184. package/network.d.ts +1 -0
  185. package/network.lua +3 -2
  186. package/objutil/ability.d.ts +0 -1
  187. package/objutil/buff.d.ts +0 -1
  188. package/objutil/buff.lua +1 -1
  189. package/objutil/object.d.ts +0 -1
  190. package/objutil/unit.d.ts +0 -1
  191. package/objutil/unit.lua +8 -0
  192. package/package.json +13 -14
  193. package/patch-lua.d.ts +0 -0
  194. package/patch-lua.lua +10 -0
  195. package/property.d.ts +55 -0
  196. package/property.lua +374 -0
  197. package/string.d.ts +30 -0
  198. package/string.lua +14 -0
  199. package/util/stream.d.ts +0 -1
  200. package/utility/arrays.d.ts +11 -5
  201. package/utility/arrays.lua +34 -3
  202. package/utility/bit-set.d.ts +0 -2
  203. package/utility/lazy.d.ts +2 -0
  204. package/utility/lazy.lua +14 -0
  205. package/utility/linked-set.d.ts +11 -3
  206. package/utility/linked-set.lua +5 -2
  207. package/utility/lua-maps.d.ts +1 -2
  208. package/utility/lua-sets.d.ts +1 -2
  209. package/utility/reflection.lua +11 -7
  210. package/utility/types.d.ts +1 -0
  211. package/core/mapbounds.d.ts +0 -8
  212. package/core/mapbounds.lua +0 -12
@@ -5,9 +5,12 @@ local __TS__ArrayMap = ____lualib.__TS__ArrayMap
5
5
  local __TS__New = ____lualib.__TS__New
6
6
  local __TS__Class = ____lualib.__TS__Class
7
7
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
8
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
8
9
  local __TS__ArraySetLength = ____lualib.__TS__ArraySetLength
10
+ local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
11
+ local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
12
+ local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
9
13
  local __TS__InstanceOf = ____lualib.__TS__InstanceOf
10
- local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
11
14
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
12
15
  local Set = ____lualib.Set
13
16
  local __TS__Spread = ____lualib.__TS__Spread
@@ -48,11 +51,14 @@ local ____arrays = require("utility.arrays")
48
51
  local forEach = ____arrays.forEach
49
52
  local ____math = require("math")
50
53
  local min = ____math.min
54
+ local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
55
+ local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
51
56
  local match = string.match
52
57
  local ____tostring = _G.tostring
53
58
  local setUnitAnimation = SetUnitAnimation
54
59
  local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
55
60
  local setUnitAnimationByIndex = SetUnitAnimationByIndex
61
+ local resetUnitAnimation = ResetUnitAnimation
56
62
  local queueUnitAnimation = QueueUnitAnimation
57
63
  local getUnitIntegerField = BlzGetUnitIntegerField
58
64
  local getUnitRealField = BlzGetUnitRealField
@@ -72,6 +78,7 @@ local setUnitScale = SetUnitScale
72
78
  local setUnitPosition = SetUnitPosition
73
79
  local setUnitTimeScale = SetUnitTimeScale
74
80
  local getHandleId = GetHandleId
81
+ local getUnitCurrentOrder = GetUnitCurrentOrder
75
82
  local createUnit = CreateUnit
76
83
  local killUnit = KillUnit
77
84
  local setUnitExploded = SetUnitExploded
@@ -92,6 +99,10 @@ local isUnitInRangeXY = IsUnitInRangeXY
92
99
  local isUnitInRange = IsUnitInRange
93
100
  local setResourceAmount = SetResourceAmount
94
101
  local getResourceAmount = GetResourceAmount
102
+ local getUnitWeaponRealField = BlzGetUnitWeaponRealField
103
+ local setUnitWeaponRealField = BlzSetUnitWeaponRealField
104
+ local getUnitWeaponStringField = BlzGetUnitWeaponStringField
105
+ local setUnitWeaponStringField = BlzSetUnitWeaponStringField
95
106
  local getUnitAbilityLevel = GetUnitAbilityLevel
96
107
  local unitDisableAbility = BlzUnitDisableAbility
97
108
  local unitInterruptAttack = BlzUnitInterruptAttack
@@ -275,16 +286,14 @@ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
275
286
  end
276
287
  local function dispatch(event, idGetter, argsGetter)
277
288
  local initialized = false
278
- local x = {}
279
289
  return setmetatable(
280
- x,
290
+ {},
281
291
  {
282
292
  __index = function(self, id)
283
293
  if type(id) ~= "number" then
284
294
  return event[id]
285
295
  end
286
296
  if not initialized then
287
- local invoke = Event.invoke
288
297
  event:addListener(function(...)
289
298
  local id = idGetter(...)
290
299
  local dispatched = rawget(self, id)
@@ -322,7 +331,6 @@ local function dispatchAbility(event)
322
331
  return event[id]
323
332
  end
324
333
  if not initialized then
325
- local invoke = Event.invoke
326
334
  event:addListener(function(unit, ability, ...)
327
335
  local dispatched = rawget(self, ability.typeId)
328
336
  if dispatched ~= nil then
@@ -387,51 +395,158 @@ local getters = {
387
395
  return BlzGetUnitArmor(unit)
388
396
  end
389
397
  }
390
- local weaponGetters = {
391
- index = function(self, handle, index)
392
- return index
393
- end,
394
- cooldown = function(self, handle, index)
395
- return BlzGetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, index)
396
- end,
397
- projectileArc = function(self, handle, index)
398
- return BlzGetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, index)
399
- end,
400
- projectileArt = function(self, handle, index)
401
- return BlzGetUnitWeaponStringField(handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, index)
402
- end,
403
- projectileSpeed = function(self, handle, index)
404
- return BlzGetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, index)
405
- end,
406
- attackPoint = function(self, handle, index)
407
- return BlzGetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, index)
408
- end
409
- }
410
- local weaponSetters = {
411
- cooldown = function(self, handle, index, value)
412
- assert(BlzSetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, index, value))
413
- end,
414
- projectileArc = function(self, handle, index, value)
415
- assert(BlzSetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, index, value))
416
- end,
417
- projectileArt = function(self, handle, index, value)
418
- assert(BlzSetUnitWeaponStringField(handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, index, value))
419
- end,
420
- projectileSpeed = function(self, handle, index, value)
421
- assert(BlzSetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, index, value))
422
- end,
423
- attackPoint = function(self, handle, index, value)
424
- assert(BlzSetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, index, value))
425
- end
426
- }
427
- local weaponMetatable = {
428
- __index = function(self, key)
429
- return weaponGetters[key](weaponGetters, self.h, self.i)
430
- end,
431
- __newindex = function(self, key, value)
432
- weaponSetters[key](weaponSetters, self.h, self.i, value)
433
- end
434
- }
398
+ ____exports.UnitWeapon = __TS__Class()
399
+ local UnitWeapon = ____exports.UnitWeapon
400
+ UnitWeapon.name = "UnitWeapon"
401
+ function UnitWeapon.prototype.____constructor(self, unit, index)
402
+ self.unit = unit
403
+ self.index = index
404
+ end
405
+ __TS__SetDescriptor(
406
+ UnitWeapon.prototype,
407
+ "cooldown",
408
+ {
409
+ get = function(self)
410
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index)
411
+ end,
412
+ set = function(self, cooldown)
413
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index, cooldown)
414
+ end
415
+ },
416
+ true
417
+ )
418
+ __TS__SetDescriptor(
419
+ UnitWeapon.prototype,
420
+ "damage",
421
+ {
422
+ get = function(self)
423
+ local minimumDamage = self.damageBase + self.damageDiceCount
424
+ local maximumDamage = self.damageBase + self.damageDiceCount * self.damageDiceSideCount
425
+ return {minimumDamage, maximumDamage}
426
+ end,
427
+ set = function(self, ____bindingPattern0)
428
+ local maximumDamage
429
+ local minimumDamage
430
+ minimumDamage = ____bindingPattern0[1]
431
+ maximumDamage = ____bindingPattern0[2]
432
+ self.damageBase = minimumDamage - 1
433
+ self.damageDiceCount = 1
434
+ self.damageDiceSideCount = maximumDamage - minimumDamage + 1
435
+ end
436
+ },
437
+ true
438
+ )
439
+ __TS__SetDescriptor(
440
+ UnitWeapon.prototype,
441
+ "damageBase",
442
+ {
443
+ get = function(self)
444
+ return BlzGetUnitBaseDamage(self.unit.handle, self.index)
445
+ end,
446
+ set = function(self, damageBase)
447
+ BlzSetUnitBaseDamage(self.unit.handle, self.index, damageBase)
448
+ end
449
+ },
450
+ true
451
+ )
452
+ __TS__SetDescriptor(
453
+ UnitWeapon.prototype,
454
+ "damageDiceCount",
455
+ {
456
+ get = function(self)
457
+ return BlzGetUnitDiceNumber(self.unit.handle, self.index)
458
+ end,
459
+ set = function(self, damageDiceCount)
460
+ BlzSetUnitDiceNumber(self.unit.handle, self.index, damageDiceCount)
461
+ end
462
+ },
463
+ true
464
+ )
465
+ __TS__SetDescriptor(
466
+ UnitWeapon.prototype,
467
+ "damageDiceSideCount",
468
+ {
469
+ get = function(self)
470
+ return BlzGetUnitDiceSides(self.unit.handle, self.index)
471
+ end,
472
+ set = function(self, damageDiceSideCount)
473
+ BlzSetUnitDiceSides(self.unit.handle, self.index, damageDiceSideCount)
474
+ end
475
+ },
476
+ true
477
+ )
478
+ __TS__SetDescriptor(
479
+ UnitWeapon.prototype,
480
+ "range",
481
+ {
482
+ get = function(self)
483
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_RANGE, self.index)
484
+ end,
485
+ set = function(self, range)
486
+ local handle = self.unit.handle
487
+ local index = self.index
488
+ setUnitWeaponRealField(
489
+ handle,
490
+ UNIT_WEAPON_RF_ATTACK_RANGE,
491
+ index + 1,
492
+ getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index + 1) + (range - getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index))
493
+ )
494
+ end
495
+ },
496
+ true
497
+ )
498
+ __TS__SetDescriptor(
499
+ UnitWeapon.prototype,
500
+ "impactDelay",
501
+ {
502
+ get = function(self)
503
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index)
504
+ end,
505
+ set = function(self, impactDelay)
506
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index, impactDelay)
507
+ end
508
+ },
509
+ true
510
+ )
511
+ __TS__SetDescriptor(
512
+ UnitWeapon.prototype,
513
+ "missileArc",
514
+ {
515
+ get = function(self)
516
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index)
517
+ end,
518
+ set = function(self, missileArc)
519
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index, missileArc)
520
+ end
521
+ },
522
+ true
523
+ )
524
+ __TS__SetDescriptor(
525
+ UnitWeapon.prototype,
526
+ "missileModelPath",
527
+ {
528
+ get = function(self)
529
+ return getUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index)
530
+ end,
531
+ set = function(self, missileModelPath)
532
+ setUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index, missileModelPath)
533
+ end
534
+ },
535
+ true
536
+ )
537
+ __TS__SetDescriptor(
538
+ UnitWeapon.prototype,
539
+ "missileSpeed",
540
+ {
541
+ get = function(self)
542
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index)
543
+ end,
544
+ set = function(self, missileSpeed)
545
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index, missileSpeed)
546
+ end
547
+ },
548
+ true
549
+ )
435
550
  local unitInventorySize = UnitInventorySize
436
551
  local unitItemInSlot = UnitItemInSlot
437
552
  local getItemAbility = BlzGetItemAbility
@@ -442,8 +557,6 @@ local getAbilityName = GetAbilityName
442
557
  local unitAddAbility = UnitAddAbility
443
558
  local getUnitGoldCost = GetUnitGoldCost
444
559
  local getUnitLumberCost = GetUnitWoodCost
445
- local unitMakeAbilityPermanent = UnitMakeAbilityPermanent
446
- local unitAddItem = UnitAddItem
447
560
  local unitRemoveAbility = UnitRemoveAbility
448
561
  local function retrieveAbility(unit, ability, abilityId)
449
562
  if ability == nil then
@@ -453,17 +566,6 @@ local function retrieveAbility(unit, ability, abilityId)
453
566
  ____exports.Unit:of(unit)
454
567
  )
455
568
  end
456
- if not unitAddAbility(unit, abilityId) then
457
- if getUnitAbility(unit, abilityId) == ability then
458
- return UnitAbility:of(
459
- ability,
460
- abilityId,
461
- ____exports.Unit:of(unit)
462
- )
463
- end
464
- else
465
- unitRemoveAbility(unit, abilityId)
466
- end
467
569
  for i = 0, unitInventorySize(unit) - 1 do
468
570
  local item = unitItemInSlot(unit, i)
469
571
  if getItemAbility(item, abilityId) == ability then
@@ -520,12 +622,34 @@ for ____, player in ipairs(Player.all) do
520
622
  ShowUnit(dummy, false)
521
623
  dummies[player] = dummy
522
624
  end
625
+ local function delayHealthChecksCallback(unit)
626
+ local counter = (unit[103] or 0) - 1
627
+ if counter ~= 0 then
628
+ unit[103] = counter
629
+ return
630
+ end
631
+ unit[103] = nil
632
+ local healthBonus = unit[104]
633
+ if healthBonus ~= nil then
634
+ unit[104] = nil
635
+ local handle = unit.handle
636
+ BlzSetUnitMaxHP(
637
+ handle,
638
+ BlzGetUnitMaxHP(handle) - healthBonus
639
+ )
640
+ end
641
+ end
642
+ local nextSyncId = 1
643
+ local unitBySyncId = setmetatable({}, {__mode = "k"})
523
644
  ____exports.Unit = __TS__Class()
524
645
  local Unit = ____exports.Unit
525
646
  Unit.name = "Unit"
526
647
  __TS__ClassExtends(Unit, Handle)
527
648
  function Unit.prototype.____constructor(self, handle)
528
649
  Handle.prototype.____constructor(self, handle)
650
+ local ____nextSyncId_0 = nextSyncId
651
+ nextSyncId = ____nextSyncId_0 + 1
652
+ self.syncId = ____nextSyncId_0
529
653
  self._owner = Player:of(getOwningPlayer(handle))
530
654
  assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
531
655
  assert(unitAddAbility(handle, morphDetectAbilityId))
@@ -538,6 +662,7 @@ function Unit.prototype.____constructor(self, handle)
538
662
  fourCC("Amrf")
539
663
  ))
540
664
  end
665
+ unitBySyncId[self.syncId] = self
541
666
  local ____ = self.abilities
542
667
  end
543
668
  function Unit.prototype.getEvent(self, event, collector)
@@ -556,6 +681,8 @@ function Unit.prototype.getEvent(self, event, collector)
556
681
  end
557
682
  function Unit.prototype.onDestroy(self)
558
683
  local handle = self.handle
684
+ self[107] = getUnitX(handle)
685
+ self[108] = getUnitY(handle)
559
686
  if not self._owner then
560
687
  self._owner = Player:of(getOwningPlayer(handle))
561
688
  end
@@ -623,8 +750,8 @@ function Unit.prototype.addModifier(self, property, modifier)
623
750
  end}
624
751
  end
625
752
  function Unit.prototype.hasCombatClassification(self, combatClassification)
626
- local ____combatClassification_0 = combatClassification
627
- return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_0 == ____combatClassification_0
753
+ local ____combatClassification_1 = combatClassification
754
+ return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_1 == ____combatClassification_1
628
755
  end
629
756
  function Unit.prototype.addClassification(self, classification)
630
757
  return unitAddType(self.handle, classification)
@@ -642,13 +769,13 @@ function Unit.prototype.isInvisibleTo(self, player)
642
769
  return isUnitInvisible(self.handle, player.handle)
643
770
  end
644
771
  function Unit.prototype.isInRangeOf(self, x, y, range)
645
- local ____temp_1
772
+ local ____temp_2
646
773
  if type(x) == "number" then
647
- ____temp_1 = isUnitInRangeXY(self.handle, x, y, range)
774
+ ____temp_2 = isUnitInRangeXY(self.handle, x, y, range)
648
775
  else
649
- ____temp_1 = isUnitInRange(self.handle, x.handle, y)
776
+ ____temp_2 = isUnitInRange(self.handle, x.handle, y)
650
777
  end
651
- return ____temp_1
778
+ return ____temp_2
652
779
  end
653
780
  function Unit.prototype.isAllyOf(self, unit)
654
781
  return isUnitAlly(
@@ -671,9 +798,16 @@ function Unit.prototype.playAnimation(self, animation, rarity)
671
798
  setUnitAnimation(self.handle, animation)
672
799
  end
673
800
  end
801
+ function Unit.prototype.resetAnimation(self)
802
+ resetUnitAnimation(self.handle)
803
+ end
674
804
  function Unit.prototype.queueAnimation(self, animation)
675
805
  queueUnitAnimation(self.handle, animation)
676
806
  end
807
+ function Unit.prototype.delayHealthChecks(self)
808
+ self[103] = (self[103] or 0) + 1
809
+ Timer:run(delayHealthChecksCallback, self)
810
+ end
677
811
  function Unit.prototype.setPosition(self, x, y)
678
812
  setUnitPosition(self.handle, x, y)
679
813
  end
@@ -687,8 +821,15 @@ end
687
821
  function Unit.prototype.kill(self)
688
822
  killUnit(self.handle)
689
823
  end
690
- function Unit.prototype.revive(self, pos, doEffect)
691
- ReviveHero(self.handle, pos.x, pos.y, doEffect)
824
+ function Unit.prototype.revive(self, x, y, doEffect)
825
+ local ____ReviveHero_5 = ReviveHero
826
+ local ____array_4 = __TS__SparseArrayNew(self.handle, x, y)
827
+ local ____doEffect_3 = doEffect
828
+ if ____doEffect_3 == nil then
829
+ ____doEffect_3 = false
830
+ end
831
+ __TS__SparseArrayPush(____array_4, ____doEffect_3)
832
+ ____ReviveHero_5(__TS__SparseArraySpread(____array_4))
692
833
  end
693
834
  function Unit.prototype.healTarget(self, target, amount)
694
835
  if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
@@ -728,7 +869,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
728
869
  return UnitDropItemSlot(self.handle, item.handle, slot)
729
870
  end
730
871
  function Unit.prototype.itemInSlot(self, slot)
731
- return Item:of(UnitItemInSlot(self.handle, slot))
872
+ return Item:of(unitItemInSlot(self.handle, slot))
732
873
  end
733
874
  function Unit.prototype.addAbility(self, abilityId)
734
875
  if unitAddAbility(self.handle, abilityId) then
@@ -784,6 +925,9 @@ end
784
925
  function Unit.prototype.hideAbility(self, abilityId, flag)
785
926
  BlzUnitHideAbility(self.handle, abilityId, flag)
786
927
  end
928
+ function Unit.prototype.getAbilityRemainingCooldown(self, abilityId)
929
+ return BlzGetUnitAbilityCooldownRemaining(self.handle, abilityId)
930
+ end
787
931
  function Unit.prototype.startAbilityCooldown(self, abilityId, cooldown)
788
932
  BlzStartUnitAbilityCooldown(self.handle, abilityId, cooldown)
789
933
  end
@@ -794,8 +938,15 @@ function Unit.prototype.interruptAttack(self)
794
938
  unitInterruptAttack(self.handle)
795
939
  end
796
940
  function Unit.prototype.interruptCast(self, abilityId)
797
- unitDisableAbility(self.handle, abilityId, true, false)
798
- unitDisableAbility(self.handle, abilityId, false, false)
941
+ local handle = self.handle
942
+ unitDisableAbility(handle, abilityId, true, false)
943
+ Timer:run(
944
+ unitDisableAbility,
945
+ handle,
946
+ abilityId,
947
+ false,
948
+ false
949
+ )
799
950
  end
800
951
  function Unit.prototype.getDistanceTo(self, target)
801
952
  local handle = self.handle
@@ -855,18 +1006,18 @@ function Unit.prototype.unpauseEx(self)
855
1006
  self:decrementStunCounter()
856
1007
  end
857
1008
  function Unit.prototype.incrementStunCounter(self)
858
- local stunCounter = self[101] or 0
859
- if not self[100] or stunCounter >= 0 then
1009
+ local stunCounter = self[102] or 0
1010
+ if not self[101] or stunCounter >= 0 then
860
1011
  BlzPauseUnitEx(self.handle, true)
861
1012
  end
862
- self[101] = stunCounter + 1
1013
+ self[102] = stunCounter + 1
863
1014
  end
864
1015
  function Unit.prototype.decrementStunCounter(self)
865
- local stunCounter = self[101] or 0
866
- if not self[100] or stunCounter >= 1 then
1016
+ local stunCounter = self[102] or 0
1017
+ if not self[101] or stunCounter >= 1 then
867
1018
  BlzPauseUnitEx(self.handle, false)
868
1019
  end
869
- self[101] = stunCounter - 1
1020
+ self[102] = stunCounter - 1
870
1021
  end
871
1022
  function Unit.create(self, owner, id, x, y, facing, skinId)
872
1023
  local handle = skinId and BlzCreateUnitWithSkin(
@@ -968,8 +1119,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
968
1119
  )
969
1120
  return targetCollection
970
1121
  end
971
- function Unit.getSelectionOf(self, player)
972
- targetCollection = {}
1122
+ function Unit.getSelectionOf(self, player, target)
1123
+ if target == nil then
1124
+ target = {}
1125
+ end
1126
+ targetCollection = target
973
1127
  targetCollectionNextIndex = 1
974
1128
  GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
975
1129
  return targetCollection
@@ -991,6 +1145,9 @@ end
991
1145
  function Unit.prototype.__tostring(self)
992
1146
  return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
993
1147
  end
1148
+ function Unit.getBySyncId(self, syncId)
1149
+ return unitBySyncId[syncId]
1150
+ end
994
1151
  __TS__SetDescriptor(
995
1152
  Unit.prototype,
996
1153
  "_deltas",
@@ -1054,6 +1211,14 @@ __TS__SetDescriptor(
1054
1211
  end},
1055
1212
  true
1056
1213
  )
1214
+ __TS__SetDescriptor(
1215
+ Unit.prototype,
1216
+ "isStunned",
1217
+ {get = function(self)
1218
+ return getUnitCurrentOrder(self.handle) == orderId("stunned")
1219
+ end},
1220
+ true
1221
+ )
1057
1222
  __TS__SetDescriptor(
1058
1223
  Unit.prototype,
1059
1224
  "combatClassifications",
@@ -1071,12 +1236,27 @@ __TS__SetDescriptor(
1071
1236
  Unit.prototype,
1072
1237
  "weapons",
1073
1238
  {get = function(self)
1074
- local weapons = {
1075
- setmetatable({h = self.handle, i = 0}, weaponMetatable),
1076
- setmetatable({h = self.handle, i = 1}, weaponMetatable)
1077
- }
1078
- rawset(self, "weapons", weapons)
1079
- return weapons
1239
+ return {self.firstWeapon, self.secondWeapon}
1240
+ end},
1241
+ true
1242
+ )
1243
+ __TS__SetDescriptor(
1244
+ Unit.prototype,
1245
+ "firstWeapon",
1246
+ {get = function(self)
1247
+ local weapon = __TS__New(____exports.UnitWeapon, self, 0)
1248
+ rawset(self, "firstWeapon", weapon)
1249
+ return weapon
1250
+ end},
1251
+ true
1252
+ )
1253
+ __TS__SetDescriptor(
1254
+ Unit.prototype,
1255
+ "secondWeapon",
1256
+ {get = function(self)
1257
+ local weapon = __TS__New(____exports.UnitWeapon, self, 1)
1258
+ rawset(self, "secondWeapon", weapon)
1259
+ return weapon
1080
1260
  end},
1081
1261
  true
1082
1262
  )
@@ -1112,6 +1292,19 @@ __TS__SetDescriptor(
1112
1292
  },
1113
1293
  true
1114
1294
  )
1295
+ __TS__SetDescriptor(
1296
+ Unit.prototype,
1297
+ "primaryAttribute",
1298
+ {
1299
+ get = function(self)
1300
+ return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
1301
+ end,
1302
+ set = function(self, primaryAttribute)
1303
+ setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
1304
+ end
1305
+ },
1306
+ true
1307
+ )
1115
1308
  __TS__SetDescriptor(
1116
1309
  Unit.prototype,
1117
1310
  "strengthBase",
@@ -1233,17 +1426,17 @@ __TS__SetDescriptor(
1233
1426
  "isTeamGlowVisible",
1234
1427
  {
1235
1428
  get = function(self)
1236
- return not self[103]
1429
+ return not self[106]
1237
1430
  end,
1238
1431
  set = function(self, isTeamGlowVisible)
1239
1432
  showUnitTeamGlow(self.handle, isTeamGlowVisible)
1240
- local ____temp_2
1433
+ local ____temp_6
1241
1434
  if not isTeamGlowVisible then
1242
- ____temp_2 = true
1435
+ ____temp_6 = true
1243
1436
  else
1244
- ____temp_2 = nil
1437
+ ____temp_6 = nil
1245
1438
  end
1246
- self[103] = ____temp_2
1439
+ self[106] = ____temp_6
1247
1440
  end
1248
1441
  },
1249
1442
  true
@@ -1253,7 +1446,7 @@ __TS__SetDescriptor(
1253
1446
  "color",
1254
1447
  {set = function(self, color)
1255
1448
  setUnitColor(self.handle, color.handle)
1256
- if self[103] then
1449
+ if self[106] then
1257
1450
  showUnitTeamGlow(self.handle, false)
1258
1451
  end
1259
1452
  end},
@@ -1277,10 +1470,14 @@ __TS__SetDescriptor(
1277
1470
  "maxHealth",
1278
1471
  {
1279
1472
  get = function(self)
1280
- return BlzGetUnitMaxHP(self.handle) - (self[102] or 0)
1473
+ return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
1281
1474
  end,
1282
1475
  set = function(self, maxHealth)
1283
- BlzSetUnitMaxHP(self.handle, maxHealth + (self[102] or 0))
1476
+ if maxHealth < 1 and self[103] ~= nil then
1477
+ self[104] = (self[104] or 0) + (1 - maxHealth)
1478
+ maxHealth = 1
1479
+ end
1480
+ BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
1284
1481
  end
1285
1482
  },
1286
1483
  true
@@ -1322,10 +1519,10 @@ __TS__SetDescriptor(
1322
1519
  "health",
1323
1520
  {
1324
1521
  get = function(self)
1325
- return GetWidgetLife(self.handle) - (self[102] or 0)
1522
+ return GetWidgetLife(self.handle) - (self[105] or 0)
1326
1523
  end,
1327
1524
  set = function(self, health)
1328
- SetWidgetLife(self.handle, health + (self[102] or 0))
1525
+ SetWidgetLife(self.handle, health + (self[105] or 0))
1329
1526
  end
1330
1527
  },
1331
1528
  true
@@ -1419,7 +1616,7 @@ __TS__SetDescriptor(
1419
1616
  "x",
1420
1617
  {
1421
1618
  get = function(self)
1422
- return getUnitX(self.handle)
1619
+ return self[107] or getUnitX(self.handle)
1423
1620
  end,
1424
1621
  set = function(self, v)
1425
1622
  SetUnitX(self.handle, v)
@@ -1432,7 +1629,7 @@ __TS__SetDescriptor(
1432
1629
  "y",
1433
1630
  {
1434
1631
  get = function(self)
1435
- return getUnitY(self.handle)
1632
+ return self[108] or getUnitY(self.handle)
1436
1633
  end,
1437
1634
  set = function(self, v)
1438
1635
  SetUnitY(self.handle, v)
@@ -1536,17 +1733,17 @@ __TS__SetDescriptor(
1536
1733
  set = function(self, isPaused)
1537
1734
  local handle = self.handle
1538
1735
  if isPaused and not IsUnitPaused(handle) then
1539
- self[100] = true
1540
- for _ = self[101] or 0, -1 do
1736
+ self[101] = true
1737
+ for _ = self[102] or 0, -1 do
1541
1738
  BlzPauseUnitEx(handle, true)
1542
1739
  end
1543
1740
  PauseUnit(handle, true)
1544
1741
  elseif not isPaused and IsUnitPaused(handle) then
1545
1742
  PauseUnit(handle, false)
1546
- for _ = self[101] or 0, -1 do
1743
+ for _ = self[102] or 0, -1 do
1547
1744
  BlzPauseUnitEx(handle, false)
1548
1745
  end
1549
- self[100] = nil
1746
+ self[101] = nil
1550
1747
  end
1551
1748
  end
1552
1749
  },
@@ -1649,6 +1846,19 @@ __TS__SetDescriptor(
1649
1846
  end},
1650
1847
  true
1651
1848
  )
1849
+ __TS__SetDescriptor(
1850
+ Unit.prototype,
1851
+ "movementType",
1852
+ {
1853
+ get = function(self)
1854
+ return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
1855
+ end,
1856
+ set = function(self, movementType)
1857
+ setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
1858
+ end
1859
+ },
1860
+ true
1861
+ )
1652
1862
  __TS__SetDescriptor(
1653
1863
  Unit.prototype,
1654
1864
  "pathing",
@@ -1903,7 +2113,6 @@ Unit.onDecay = __TS__New(
1903
2113
  Unit.onResurrect = __TS__New(
1904
2114
  InitializingEvent,
1905
2115
  function(event)
1906
- local invoke = Event.invoke
1907
2116
  local dead = setmetatable({}, {__mode = "k"})
1908
2117
  ____exports.Unit.deathEvent:addListener(function(unit)
1909
2118
  dead[unit] = true
@@ -1919,10 +2128,15 @@ Unit.onResurrect = __TS__New(
1919
2128
  Unit.morphEvent = __TS__New(
1920
2129
  InitializingEvent,
1921
2130
  function(event)
2131
+ local function ifNotLeft(unit)
2132
+ local handle = unit.handle
2133
+ if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
2134
+ invoke(event, unit)
2135
+ end
2136
+ end
1922
2137
  ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
1923
2138
  if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
1924
- assert(unitAddAbility(unit.handle, morphDetectAbilityId))
1925
- Timer:run(Event.invoke, event, unit)
2139
+ Timer:run(ifNotLeft, unit)
1926
2140
  end
1927
2141
  end)
1928
2142
  end
@@ -1960,27 +2174,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
1960
2174
  Unit.onTargetCast = dispatchId(__TS__New(
1961
2175
  InitializingEvent,
1962
2176
  function(event)
1963
- local invoke = Event.invoke
1964
2177
  local function listener(unit, id)
1965
- local ____GetSpellTargetUnit_result_5
2178
+ local ____GetSpellTargetUnit_result_9
1966
2179
  if GetSpellTargetUnit() then
1967
- ____GetSpellTargetUnit_result_5 = ____exports.Unit:of(GetSpellTargetUnit())
2180
+ ____GetSpellTargetUnit_result_9 = ____exports.Unit:of(GetSpellTargetUnit())
1968
2181
  else
1969
- local ____GetSpellTargetItem_result_4
2182
+ local ____GetSpellTargetItem_result_8
1970
2183
  if GetSpellTargetItem() then
1971
- ____GetSpellTargetItem_result_4 = Item:of(GetSpellTargetItem())
2184
+ ____GetSpellTargetItem_result_8 = Item:of(GetSpellTargetItem())
1972
2185
  else
1973
- local ____GetSpellTargetDestructable_result_3
2186
+ local ____GetSpellTargetDestructable_result_7
1974
2187
  if GetSpellTargetDestructable() then
1975
- ____GetSpellTargetDestructable_result_3 = Destructable:of(GetSpellTargetDestructable())
2188
+ ____GetSpellTargetDestructable_result_7 = Destructable:of(GetSpellTargetDestructable())
1976
2189
  else
1977
- ____GetSpellTargetDestructable_result_3 = nil
2190
+ ____GetSpellTargetDestructable_result_7 = nil
1978
2191
  end
1979
- ____GetSpellTargetItem_result_4 = ____GetSpellTargetDestructable_result_3
2192
+ ____GetSpellTargetItem_result_8 = ____GetSpellTargetDestructable_result_7
1980
2193
  end
1981
- ____GetSpellTargetUnit_result_5 = ____GetSpellTargetItem_result_4
2194
+ ____GetSpellTargetUnit_result_9 = ____GetSpellTargetItem_result_8
1982
2195
  end
1983
- local target = ____GetSpellTargetUnit_result_5
2196
+ local target = ____GetSpellTargetUnit_result_9
1984
2197
  if target then
1985
2198
  invoke(event, unit, id, target)
1986
2199
  end
@@ -2152,10 +2365,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
2152
2365
  ____exports.UnitTriggerEvent,
2153
2366
  EVENT_PLAYER_UNIT_ISSUED_ORDER,
2154
2367
  function()
2155
- local unit = ____exports.Unit:of(getOrderedUnit())
2156
- local issuedOrderId = getIssuedOrderId()
2157
- if unit ~= nil and unit.state == 1 then
2158
- return unit, issuedOrderId
2368
+ local handle = getOrderedUnit()
2369
+ if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
2370
+ local unit = ____exports.Unit:of(handle)
2371
+ if unit.state == 1 then
2372
+ return unit, getIssuedOrderId()
2373
+ end
2159
2374
  end
2160
2375
  return IgnoreEvent
2161
2376
  end
@@ -2177,7 +2392,6 @@ Unit.autoAttackStartEvent = __TS__New(
2177
2392
  )
2178
2393
  Unit.onDamaging = (function()
2179
2394
  local event = __TS__New(Event)
2180
- local invoke = Event.invoke
2181
2395
  local trigger = CreateTrigger()
2182
2396
  TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
2183
2397
  TriggerAddCondition(
@@ -2276,7 +2490,6 @@ end)()
2276
2490
  Unit.onDamage = __TS__New(
2277
2491
  InitializingEvent,
2278
2492
  function(event)
2279
- local invoke = Event.invoke
2280
2493
  local trigger = CreateTrigger()
2281
2494
  TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
2282
2495
  TriggerAddCondition(
@@ -2292,6 +2505,7 @@ Unit.onDamage = __TS__New(
2292
2505
  damageType = BlzGetEventDamageType(),
2293
2506
  weaponType = BlzGetEventWeaponType(),
2294
2507
  isAttack = BlzGetEventIsAttack(),
2508
+ originalAmount = GetEventDamage(),
2295
2509
  preventDeath = damageEventPreventDeath
2296
2510
  }
2297
2511
  local evData = setmetatable(
@@ -2308,7 +2522,7 @@ Unit.onDamage = __TS__New(
2308
2522
  invoke(event, source, target, evData)
2309
2523
  if evData[0] ~= nil and target.health - evData.amount < 0.405 then
2310
2524
  local bonusHealth = math.ceil(evData.amount)
2311
- target[102] = (target[102] or 0) + bonusHealth
2525
+ target[105] = (target[105] or 0) + bonusHealth
2312
2526
  BlzSetUnitMaxHP(
2313
2527
  target.handle,
2314
2528
  BlzGetUnitMaxHP(target.handle) + bonusHealth
@@ -2322,7 +2536,7 @@ Unit.onDamage = __TS__New(
2322
2536
  evData[0],
2323
2537
  table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
2324
2538
  )
2325
- target[102] = (target[102] or 0) - bonusHealth
2539
+ target[105] = (target[105] or 0) - bonusHealth
2326
2540
  SetWidgetLife(
2327
2541
  target.handle,
2328
2542
  GetWidgetLife(target.handle) - bonusHealth
@@ -2342,32 +2556,91 @@ Unit.onDamage = __TS__New(
2342
2556
  DestroyTrigger(trigger)
2343
2557
  end
2344
2558
  )
2345
- Unit.onItemDrop = __TS__New(
2559
+ Unit.itemDroppedEvent = __TS__New(
2346
2560
  ____exports.UnitTriggerEvent,
2347
2561
  EVENT_PLAYER_UNIT_DROP_ITEM,
2348
2562
  function()
2349
2563
  local unit = getTriggerUnit()
2350
- if getUnitTypeId(unit) ~= dummyUnitId then
2351
- return ____exports.Unit:of(unit), Item:of(getManipulatedItem())
2564
+ local item = getManipulatedItem()
2565
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2566
+ return ____exports.Unit:of(unit), Item:of(item)
2352
2567
  end
2353
2568
  return IgnoreEvent
2354
2569
  end
2355
2570
  )
2356
- Unit.onItemPickup = __TS__New(
2571
+ Unit.itemPickedUpEvent = __TS__New(
2357
2572
  ____exports.UnitTriggerEvent,
2358
2573
  EVENT_PLAYER_UNIT_PICKUP_ITEM,
2359
2574
  function()
2360
2575
  local unit = getTriggerUnit()
2361
- if getUnitTypeId(unit) ~= dummyUnitId then
2362
- return ____exports.Unit:of(unit), Item:of(getManipulatedItem())
2576
+ local item = getManipulatedItem()
2577
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2578
+ return ____exports.Unit:of(unit), Item:of(item)
2363
2579
  end
2364
2580
  return IgnoreEvent
2365
2581
  end
2366
2582
  )
2367
- Unit.onItemUse = __TS__New(
2583
+ Unit.itemUsedEvent = __TS__New(
2368
2584
  ____exports.UnitTriggerEvent,
2369
2585
  EVENT_PLAYER_UNIT_USE_ITEM,
2370
- function() return ____exports.Unit:of(GetTriggerUnit()), Item:of(GetManipulatedItem()) end
2586
+ function()
2587
+ local unit = getTriggerUnit()
2588
+ local item = getManipulatedItem()
2589
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2590
+ return ____exports.Unit:of(unit), Item:of(item)
2591
+ end
2592
+ return IgnoreEvent
2593
+ end
2594
+ )
2595
+ Unit.itemStackedEvent = __TS__New(
2596
+ ____exports.UnitTriggerEvent,
2597
+ EVENT_PLAYER_UNIT_STACK_ITEM,
2598
+ function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
2599
+ )
2600
+ __TS__ObjectDefineProperty(
2601
+ Unit,
2602
+ "itemUseOrderEvent",
2603
+ {get = function(self)
2604
+ local event = __TS__New(Event)
2605
+ for order = orderId("useslot0"), orderId("useslot5") do
2606
+ local slot = order - orderId("useslot0")
2607
+ local function listener(unit)
2608
+ local item = unit.items[slot + 1]
2609
+ if item ~= nil then
2610
+ invoke(event, unit, item)
2611
+ end
2612
+ end
2613
+ self.onImmediateOrder[order]:addListener(listener)
2614
+ self.onTargetOrder[order]:addListener(listener)
2615
+ self.onPointOrder[order]:addListener(listener)
2616
+ end
2617
+ rawset(self, "itemUseOrderEvent", event)
2618
+ return event
2619
+ end}
2620
+ )
2621
+ __TS__ObjectDefineProperty(
2622
+ Unit,
2623
+ "itemMoveOrderEvent",
2624
+ {get = function(self)
2625
+ local event = __TS__New(Event)
2626
+ for order = orderId("moveslot0"), orderId("moveslot5") do
2627
+ local slotTo = order - orderId("moveslot0")
2628
+ self.onTargetOrder[order]:addListener(function(unit, item)
2629
+ local slotFrom = unit.items:findSlot(item)
2630
+ if slotFrom ~= nil then
2631
+ invoke(
2632
+ event,
2633
+ unit,
2634
+ item,
2635
+ slotFrom,
2636
+ slotTo
2637
+ )
2638
+ end
2639
+ end)
2640
+ end
2641
+ rawset(self, "itemMoveOrderEvent", event)
2642
+ return event
2643
+ end}
2371
2644
  )
2372
2645
  __TS__ObjectDefineProperty(
2373
2646
  Unit,