warscript 0.0.1-dev.240d8a6 → 0.0.1-dev.256ff3b

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 (190) hide show
  1. package/attributes.d.ts +5 -0
  2. package/attributes.lua +8 -1
  3. package/config.d.ts +5 -0
  4. package/config.lua +10 -0
  5. package/core/types/effect.d.ts +14 -6
  6. package/core/types/effect.lua +131 -35
  7. package/core/types/frame.lua +10 -12
  8. package/core/types/player.lua +3 -1
  9. package/core/types/playerCamera.d.ts +2 -0
  10. package/core/types/playerCamera.lua +79 -5
  11. package/core/types/sound.d.ts +17 -24
  12. package/core/types/sound.lua +99 -24
  13. package/core/types/timer.d.ts +8 -8
  14. package/core/types/timer.lua +39 -23
  15. package/core/util.d.ts +1 -1
  16. package/core/util.lua +12 -1
  17. package/decl/native.d.ts +844 -788
  18. package/engine/behavior.d.ts +2 -0
  19. package/engine/behavior.lua +53 -27
  20. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  21. package/engine/behaviour/ability/always-enabled.lua +31 -0
  22. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  23. package/engine/behaviour/ability/apply-buff.lua +32 -0
  24. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  25. package/engine/behaviour/ability/damage.d.ts +9 -3
  26. package/engine/behaviour/ability/damage.lua +26 -38
  27. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  28. package/engine/behaviour/ability/emulate-impact.lua +43 -0
  29. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  30. package/engine/behaviour/ability/instant-impact.lua +4 -19
  31. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  32. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  33. package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
  34. package/engine/behaviour/ability/remove-buffs.lua +28 -0
  35. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  36. package/engine/behaviour/ability/restore-mana.lua +6 -6
  37. package/engine/behaviour/ability.d.ts +20 -4
  38. package/engine/behaviour/ability.lua +111 -47
  39. package/engine/behaviour/unit/stun-immunity.d.ts +5 -3
  40. package/engine/behaviour/unit/stun-immunity.lua +43 -27
  41. package/engine/behaviour/unit.d.ts +32 -0
  42. package/engine/behaviour/unit.lua +185 -4
  43. package/engine/buff.d.ts +63 -45
  44. package/engine/buff.lua +300 -237
  45. package/engine/internal/ability.d.ts +20 -3
  46. package/engine/internal/ability.lua +125 -13
  47. package/engine/internal/item/ability.lua +162 -4
  48. package/engine/internal/item+owner.lua +12 -6
  49. package/engine/internal/item.d.ts +7 -4
  50. package/engine/internal/item.lua +141 -35
  51. package/engine/internal/mechanics/ability-duration.lua +1 -1
  52. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  53. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  54. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  55. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  56. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  57. package/engine/internal/misc/frame-coordinates.lua +21 -0
  58. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  59. package/engine/internal/misc/get-terrain-z.lua +11 -0
  60. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  61. package/engine/internal/misc/player-local-handle.lua +5 -0
  62. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  63. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  64. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  65. package/engine/internal/object-data/evasion-probability.lua +16 -0
  66. package/engine/internal/unit/ability.d.ts +45 -1
  67. package/engine/internal/unit/ability.lua +98 -14
  68. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  69. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  70. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  71. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  72. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  73. package/engine/internal/unit/allowed-targets.lua +9 -1
  74. package/engine/internal/unit/bonus.d.ts +2 -0
  75. package/engine/internal/unit/bonus.lua +17 -0
  76. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  77. package/engine/internal/unit/ignore-events-items.lua +5 -0
  78. package/engine/internal/unit/item.d.ts +1 -1
  79. package/engine/internal/unit/item.lua +6 -12
  80. package/engine/internal/unit/main-selected.d.ts +6 -0
  81. package/engine/internal/unit/main-selected.lua +12 -1
  82. package/engine/internal/unit/order.d.ts +20 -0
  83. package/engine/internal/unit/order.lua +136 -0
  84. package/engine/internal/unit+ability.lua +10 -1
  85. package/engine/internal/unit+damage.d.ts +2 -11
  86. package/engine/internal/unit+damage.lua +10 -14
  87. package/engine/internal/unit+spellSteal.lua +1 -2
  88. package/engine/internal/unit-missile-launch.lua +9 -2
  89. package/engine/internal/unit.d.ts +35 -11
  90. package/engine/internal/unit.lua +326 -145
  91. package/engine/internal/utility.lua +12 -0
  92. package/engine/lightning.d.ts +12 -5
  93. package/engine/lightning.lua +48 -14
  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/armor-type.d.ts +11 -0
  97. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  98. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  99. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  100. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  101. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  102. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  103. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  104. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  105. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  106. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  107. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  108. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  109. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  110. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  111. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  112. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  113. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  114. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  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/permanent-invisibility.d.ts +8 -0
  121. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -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/summon-quilbeast.lua +2 -2
  132. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  133. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  134. package/engine/object-data/entry/ability-type/web.lua +52 -0
  135. package/engine/object-data/entry/ability-type.d.ts +19 -17
  136. package/engine/object-data/entry/ability-type.lua +90 -36
  137. package/engine/object-data/entry/buff-type/applicable.lua +18 -37
  138. package/engine/object-data/entry/buff-type.d.ts +6 -12
  139. package/engine/object-data/entry/buff-type.lua +13 -29
  140. package/engine/object-data/entry/destructible-type.d.ts +1 -1
  141. package/engine/object-data/entry/item-type.d.ts +3 -1
  142. package/engine/object-data/entry/item-type.lua +15 -2
  143. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  144. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  145. package/engine/object-data/entry/sound-preset.lua +140 -0
  146. package/engine/object-data/entry/unit-type.d.ts +21 -5
  147. package/engine/object-data/entry/unit-type.lua +214 -93
  148. package/engine/object-data/entry/upgrade.d.ts +1 -1
  149. package/engine/object-data/entry/upgrade.lua +4 -4
  150. package/engine/object-data/entry.d.ts +16 -14
  151. package/engine/object-data/entry.lua +60 -32
  152. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  153. package/engine/object-field/ability.d.ts +12 -6
  154. package/engine/object-field/ability.lua +8 -4
  155. package/engine/object-field/unit.d.ts +57 -3
  156. package/engine/object-field/unit.lua +207 -7
  157. package/engine/object-field.d.ts +17 -6
  158. package/engine/object-field.lua +190 -90
  159. package/engine/standard/entries/buff-type.d.ts +3 -0
  160. package/engine/standard/entries/buff-type.lua +3 -0
  161. package/engine/standard/entries/sound-preset.d.ts +10 -0
  162. package/engine/standard/entries/sound-preset.lua +10 -0
  163. package/engine/standard/fields/ability.d.ts +2 -0
  164. package/engine/standard/fields/ability.lua +2 -0
  165. package/engine/standard/fields/unit.d.ts +4 -0
  166. package/engine/standard/fields/unit.lua +7 -0
  167. package/engine/text-tag.d.ts +36 -2
  168. package/engine/text-tag.lua +249 -10
  169. package/engine/unit.d.ts +2 -0
  170. package/engine/unit.lua +2 -0
  171. package/objutil/buff.lua +1 -2
  172. package/objutil/unit.lua +8 -0
  173. package/package.json +2 -2
  174. package/utility/arrays.d.ts +9 -1
  175. package/utility/arrays.lua +37 -3
  176. package/utility/callback-array.d.ts +13 -0
  177. package/utility/callback-array.lua +46 -0
  178. package/utility/functions.d.ts +8 -0
  179. package/utility/functions.lua +13 -0
  180. package/utility/lazy.d.ts +2 -0
  181. package/utility/lazy.lua +14 -0
  182. package/utility/linked-set.d.ts +1 -0
  183. package/utility/linked-set.lua +3 -0
  184. package/utility/lua-maps.d.ts +4 -0
  185. package/utility/lua-maps.lua +20 -0
  186. package/utility/lua-sets.d.ts +2 -0
  187. package/utility/lua-sets.lua +7 -0
  188. package/utility/reflection.lua +11 -7
  189. package/core/types/order.d.ts +0 -25
  190. package/core/types/order.lua +0 -55
@@ -51,12 +51,21 @@ local ____arrays = require("utility.arrays")
51
51
  local forEach = ____arrays.forEach
52
52
  local ____math = require("math")
53
53
  local min = ____math.min
54
+ local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
55
+ local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
56
+ local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
57
+ local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
58
+ local nativeToAttackType = ____attack_2Dtype.nativeToAttackType
59
+ local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
60
+ local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
61
+ local ____attributes = require("attributes")
62
+ local isAttribute = ____attributes.isAttribute
63
+ local ____ability = require("engine.internal.item.ability")
64
+ local doUnitAbilityAction = ____ability.doUnitAbilityAction
54
65
  local match = string.match
55
66
  local ____tostring = _G.tostring
56
67
  local setUnitAnimation = SetUnitAnimation
57
- local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
58
68
  local setUnitAnimationByIndex = SetUnitAnimationByIndex
59
- local queueUnitAnimation = QueueUnitAnimation
60
69
  local getUnitIntegerField = BlzGetUnitIntegerField
61
70
  local getUnitRealField = BlzGetUnitRealField
62
71
  local getHeroStr = GetHeroStr
@@ -75,9 +84,9 @@ local setUnitScale = SetUnitScale
75
84
  local setUnitPosition = SetUnitPosition
76
85
  local setUnitTimeScale = SetUnitTimeScale
77
86
  local getHandleId = GetHandleId
87
+ local getUnitCurrentOrder = GetUnitCurrentOrder
78
88
  local createUnit = CreateUnit
79
89
  local killUnit = KillUnit
80
- local setUnitExploded = SetUnitExploded
81
90
  local removeUnit = RemoveUnit
82
91
  local getUnitTypeId = GetUnitTypeId
83
92
  local isHeroUnitId = IsHeroUnitId
@@ -93,8 +102,6 @@ local getSpellTargetItem = GetSpellTargetItem
93
102
  local getSpellTargetDestructable = GetSpellTargetDestructable
94
103
  local isUnitInRangeXY = IsUnitInRangeXY
95
104
  local isUnitInRange = IsUnitInRange
96
- local setResourceAmount = SetResourceAmount
97
- local getResourceAmount = GetResourceAmount
98
105
  local getUnitWeaponRealField = BlzGetUnitWeaponRealField
99
106
  local setUnitWeaponRealField = BlzSetUnitWeaponRealField
100
107
  local getUnitWeaponStringField = BlzGetUnitWeaponStringField
@@ -118,15 +125,9 @@ local getOrderedUnit = GetOrderedUnit
118
125
  local getIssuedOrderId = GetIssuedOrderId
119
126
  local isUnitInvulnerable = BlzIsUnitInvulnerable
120
127
  local unitAlive = UnitAlive
121
- local unitAddType = UnitAddType
122
- local unitRemoveType = UnitRemoveType
123
- local isUnitIllusion = IsUnitIllusion
124
- local isUnitType = IsUnitType
125
128
  local isUnitAlly = IsUnitAlly
126
129
  local isUnitEnemy = IsUnitEnemy
127
130
  local getOwningPlayer = GetOwningPlayer
128
- local setUnitColor = SetUnitColor
129
- local showUnitTeamGlow = BlzShowUnitTeamGlow
130
131
  ____exports.UnitClassification = {}
131
132
  local UnitClassification = ____exports.UnitClassification
132
133
  do
@@ -136,6 +137,7 @@ do
136
137
  UnitClassification.GROUND = UNIT_TYPE_GROUND
137
138
  UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
138
139
  UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
140
+ UnitClassification.WORKER = UNIT_TYPE_PEON
139
141
  UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
140
142
  UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
141
143
  UnitClassification.TAUREN = UNIT_TYPE_TAUREN
@@ -343,6 +345,9 @@ local function dispatchAbility(event)
343
345
  }
344
346
  )
345
347
  end
348
+ local function damagingEventPreventRetaliation(self)
349
+ self[0] = true
350
+ end
346
351
  local function damageEventPreventDeath(self, callback, ...)
347
352
  if self[0] ~= nil then
348
353
  return
@@ -354,7 +359,14 @@ local function damageEventPreventDeath(self, callback, ...)
354
359
  rawset(self, 1 + i, (select(i, ...)))
355
360
  end
356
361
  end
357
- local damageSetters = {amount = BlzSetEventDamage, attackType = BlzSetEventAttackType, damageType = BlzSetEventDamageType, weaponType = BlzSetEventWeaponType}
362
+ local damageSetters = {
363
+ amount = BlzSetEventDamage,
364
+ attackType = function(attackType)
365
+ return BlzSetEventAttackType(attackTypeToNative(attackType))
366
+ end,
367
+ damageType = BlzSetEventDamageType,
368
+ weaponType = BlzSetEventWeaponType
369
+ }
358
370
  local jlimitopByOperator = {
359
371
  [0] = LESS_THAN_OR_EQUAL,
360
372
  [1] = LESS_THAN_OR_EQUAL,
@@ -432,6 +444,19 @@ __TS__SetDescriptor(
432
444
  },
433
445
  true
434
446
  )
447
+ __TS__SetDescriptor(
448
+ UnitWeapon.prototype,
449
+ "allowedTargetCombatClassifications",
450
+ {
451
+ get = function(self)
452
+ return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
453
+ end,
454
+ set = function(self, allowedTargetCombatClassifications)
455
+ BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
456
+ end
457
+ },
458
+ true
459
+ )
435
460
  __TS__SetDescriptor(
436
461
  UnitWeapon.prototype,
437
462
  "damageBase",
@@ -562,17 +587,6 @@ local function retrieveAbility(unit, ability, abilityId)
562
587
  ____exports.Unit:of(unit)
563
588
  )
564
589
  end
565
- if not unitAddAbility(unit, abilityId) then
566
- if getUnitAbility(unit, abilityId) == ability then
567
- return UnitAbility:of(
568
- ability,
569
- abilityId,
570
- ____exports.Unit:of(unit)
571
- )
572
- end
573
- else
574
- unitRemoveAbility(unit, abilityId)
575
- end
576
590
  for i = 0, unitInventorySize(unit) - 1 do
577
591
  local item = unitItemInSlot(unit, i)
578
592
  if getItemAbility(item, abilityId) == ability then
@@ -647,16 +661,26 @@ local function delayHealthChecksCallback(unit)
647
661
  end
648
662
  end
649
663
  local nextSyncId = 1
650
- local unitBySyncId = setmetatable({}, {__mode = "k"})
664
+ local unitBySyncId = setmetatable({}, {__mode = "v"})
665
+ local damagingEventByTarget = setmetatable({}, {__mode = "k"})
666
+ local function addAbility(unit, abilityTypeId)
667
+ local ____unitAddAbility_result_0
668
+ if unitAddAbility(unit, abilityTypeId) then
669
+ ____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
670
+ else
671
+ ____unitAddAbility_result_0 = nil
672
+ end
673
+ return ____unitAddAbility_result_0
674
+ end
651
675
  ____exports.Unit = __TS__Class()
652
676
  local Unit = ____exports.Unit
653
677
  Unit.name = "Unit"
654
678
  __TS__ClassExtends(Unit, Handle)
655
679
  function Unit.prototype.____constructor(self, handle)
656
680
  Handle.prototype.____constructor(self, handle)
657
- local ____nextSyncId_0 = nextSyncId
658
- nextSyncId = ____nextSyncId_0 + 1
659
- self.syncId = ____nextSyncId_0
681
+ local ____nextSyncId_1 = nextSyncId
682
+ nextSyncId = ____nextSyncId_1 + 1
683
+ self.syncId = ____nextSyncId_1
660
684
  self._owner = Player:of(getOwningPlayer(handle))
661
685
  assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
662
686
  assert(unitAddAbility(handle, morphDetectAbilityId))
@@ -688,6 +712,8 @@ function Unit.prototype.getEvent(self, event, collector)
688
712
  end
689
713
  function Unit.prototype.onDestroy(self)
690
714
  local handle = self.handle
715
+ self[107] = getUnitX(handle)
716
+ self[108] = getUnitY(handle)
691
717
  if not self._owner then
692
718
  self._owner = Player:of(getOwningPlayer(handle))
693
719
  end
@@ -755,17 +781,17 @@ function Unit.prototype.addModifier(self, property, modifier)
755
781
  end}
756
782
  end
757
783
  function Unit.prototype.hasCombatClassification(self, combatClassification)
758
- local ____combatClassification_1 = combatClassification
759
- return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_1 == ____combatClassification_1
784
+ local ____combatClassification_2 = combatClassification
785
+ return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
760
786
  end
761
787
  function Unit.prototype.addClassification(self, classification)
762
- return unitAddType(self.handle, classification)
788
+ return UnitAddType(self.handle, classification)
763
789
  end
764
790
  function Unit.prototype.removeClassification(self, classification)
765
- return unitRemoveType(self.handle, classification)
791
+ return UnitRemoveType(self.handle, classification)
766
792
  end
767
793
  function Unit.prototype.hasClassification(self, classification)
768
- return isUnitType(self.handle, classification)
794
+ return IsUnitType(self.handle, classification)
769
795
  end
770
796
  function Unit.prototype.isVisibleTo(self, player)
771
797
  return isUnitVisible(self.handle, player.handle)
@@ -774,13 +800,13 @@ function Unit.prototype.isInvisibleTo(self, player)
774
800
  return isUnitInvisible(self.handle, player.handle)
775
801
  end
776
802
  function Unit.prototype.isInRangeOf(self, x, y, range)
777
- local ____temp_2
803
+ local ____temp_3
778
804
  if type(x) == "number" then
779
- ____temp_2 = isUnitInRangeXY(self.handle, x, y, range)
805
+ ____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
780
806
  else
781
- ____temp_2 = isUnitInRange(self.handle, x.handle, y)
807
+ ____temp_3 = isUnitInRange(self.handle, x.handle, y)
782
808
  end
783
- return ____temp_2
809
+ return ____temp_3
784
810
  end
785
811
  function Unit.prototype.isAllyOf(self, unit)
786
812
  return isUnitAlly(
@@ -798,13 +824,25 @@ function Unit.prototype.playAnimation(self, animation, rarity)
798
824
  if type(animation) == "number" then
799
825
  setUnitAnimationByIndex(self.handle, animation)
800
826
  elseif rarity then
801
- setUnitAnimationWithRarity(self.handle, animation, rarity)
827
+ SetUnitAnimationWithRarity(self.handle, animation, rarity)
802
828
  else
803
829
  setUnitAnimation(self.handle, animation)
804
830
  end
805
831
  end
832
+ function Unit.prototype.resetAnimation(self)
833
+ ResetUnitAnimation(self.handle)
834
+ end
806
835
  function Unit.prototype.queueAnimation(self, animation)
807
- queueUnitAnimation(self.handle, animation)
836
+ QueueUnitAnimation(self.handle, animation)
837
+ end
838
+ function Unit.prototype.chooseWeapon(self, target)
839
+ if target:isAllowedTarget(self, self.firstWeapon.allowedTargetCombatClassifications) then
840
+ return self.firstWeapon
841
+ end
842
+ if target:isAllowedTarget(target, self.secondWeapon.allowedTargetCombatClassifications) then
843
+ return self.secondWeapon
844
+ end
845
+ return nil
808
846
  end
809
847
  function Unit.prototype.delayHealthChecks(self)
810
848
  self[103] = (self[103] or 0) + 1
@@ -817,21 +855,21 @@ function Unit.prototype.isSelected(self, player)
817
855
  return IsUnitSelected(self.handle, player.handle)
818
856
  end
819
857
  function Unit.prototype.explode(self)
820
- setUnitExploded(self.handle, true)
858
+ SetUnitExploded(self.handle, true)
821
859
  killUnit(self.handle)
822
860
  end
823
861
  function Unit.prototype.kill(self)
824
862
  killUnit(self.handle)
825
863
  end
826
864
  function Unit.prototype.revive(self, x, y, doEffect)
827
- local ____ReviveHero_5 = ReviveHero
828
- local ____array_4 = __TS__SparseArrayNew(self.handle, x, y)
829
- local ____doEffect_3 = doEffect
830
- if ____doEffect_3 == nil then
831
- ____doEffect_3 = false
865
+ local ____ReviveHero_6 = ReviveHero
866
+ local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
867
+ local ____doEffect_4 = doEffect
868
+ if ____doEffect_4 == nil then
869
+ ____doEffect_4 = false
832
870
  end
833
- __TS__SparseArrayPush(____array_4, ____doEffect_3)
834
- ____ReviveHero_5(__TS__SparseArraySpread(____array_4))
871
+ __TS__SparseArrayPush(____array_5, ____doEffect_4)
872
+ ____ReviveHero_6(__TS__SparseArraySpread(____array_5))
835
873
  end
836
874
  function Unit.prototype.healTarget(self, target, amount)
837
875
  if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
@@ -874,17 +912,16 @@ function Unit.prototype.itemInSlot(self, slot)
874
912
  return Item:of(unitItemInSlot(self.handle, slot))
875
913
  end
876
914
  function Unit.prototype.addAbility(self, abilityId)
877
- if unitAddAbility(self.handle, abilityId) then
878
- local ability = UnitAbility:of(
879
- checkNotNull(getUnitAbility(self.handle, abilityId)),
880
- abilityId,
881
- self
882
- )
915
+ local ability = UnitAbility:of(
916
+ doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
917
+ abilityId,
918
+ self
919
+ )
920
+ if ability ~= nil then
883
921
  local abilities = self.abilities
884
922
  abilities[#abilities + 1] = ability
885
- return ability
886
923
  end
887
- return nil
924
+ return ability
888
925
  end
889
926
  function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
890
927
  return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
@@ -899,28 +936,17 @@ function Unit.prototype.hasAbility(self, abilityId)
899
936
  return getUnitAbilityLevel(self.handle, abilityId) > 0
900
937
  end
901
938
  function Unit.prototype.getAbilityById(self, abilityId)
902
- local handle = self.handle
903
- if unitAddAbility(handle, abilityId) then
904
- assert(unitRemoveAbility(handle, abilityId))
905
- return nil
906
- end
907
- return UnitAbility:of(
908
- getUnitAbility(self.handle, abilityId),
909
- abilityId,
910
- self
911
- )
939
+ local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
940
+ return UnitAbility:of(ability, abilityId, self)
912
941
  end
913
942
  function Unit.prototype.removeAbility(self, abilityId)
914
- if unitRemoveAbility(self.handle, abilityId) then
915
- local abilities = self.abilities
916
- for i = 1, #abilities do
917
- if abilities[i].typeId == abilityId then
918
- abilities[i]:destroy()
919
- tremove(abilities, i)
920
- return true
921
- end
943
+ local abilities = self.abilities
944
+ for i = 1, #abilities do
945
+ if abilities[i].typeId == abilityId then
946
+ abilities[i]:destroy()
947
+ tremove(abilities, i)
948
+ return true
922
949
  end
923
- return true
924
950
  end
925
951
  return false
926
952
  end
@@ -936,12 +962,34 @@ end
936
962
  function Unit.prototype.endAbilityCooldown(self, abilityId)
937
963
  BlzEndUnitAbilityCooldown(self.handle, abilityId)
938
964
  end
965
+ function Unit.prototype.interruptMovement(self)
966
+ local handle = self.handle
967
+ unitDisableAbility(
968
+ handle,
969
+ fourCC("Amov"),
970
+ true,
971
+ false
972
+ )
973
+ unitDisableAbility(
974
+ handle,
975
+ fourCC("Amov"),
976
+ false,
977
+ false
978
+ )
979
+ end
939
980
  function Unit.prototype.interruptAttack(self)
940
981
  unitInterruptAttack(self.handle)
941
982
  end
942
983
  function Unit.prototype.interruptCast(self, abilityId)
943
- unitDisableAbility(self.handle, abilityId, true, false)
944
- unitDisableAbility(self.handle, abilityId, false, false)
984
+ local handle = self.handle
985
+ unitDisableAbility(handle, abilityId, true, false)
986
+ Timer:run(
987
+ unitDisableAbility,
988
+ handle,
989
+ abilityId,
990
+ false,
991
+ false
992
+ )
945
993
  end
946
994
  function Unit.prototype.getDistanceTo(self, target)
947
995
  local handle = self.handle
@@ -1202,7 +1250,15 @@ __TS__SetDescriptor(
1202
1250
  Unit.prototype,
1203
1251
  "isIllusion",
1204
1252
  {get = function(self)
1205
- return isUnitIllusion(self.handle)
1253
+ return IsUnitIllusion(self.handle)
1254
+ end},
1255
+ true
1256
+ )
1257
+ __TS__SetDescriptor(
1258
+ Unit.prototype,
1259
+ "isStunned",
1260
+ {get = function(self)
1261
+ return getUnitCurrentOrder(self.handle) == orderId("stunned")
1206
1262
  end},
1207
1263
  true
1208
1264
  )
@@ -1279,6 +1335,19 @@ __TS__SetDescriptor(
1279
1335
  },
1280
1336
  true
1281
1337
  )
1338
+ __TS__SetDescriptor(
1339
+ Unit.prototype,
1340
+ "primaryAttribute",
1341
+ {
1342
+ get = function(self)
1343
+ return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
1344
+ end,
1345
+ set = function(self, primaryAttribute)
1346
+ setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
1347
+ end
1348
+ },
1349
+ true
1350
+ )
1282
1351
  __TS__SetDescriptor(
1283
1352
  Unit.prototype,
1284
1353
  "strengthBase",
@@ -1403,14 +1472,14 @@ __TS__SetDescriptor(
1403
1472
  return not self[106]
1404
1473
  end,
1405
1474
  set = function(self, isTeamGlowVisible)
1406
- showUnitTeamGlow(self.handle, isTeamGlowVisible)
1407
- local ____temp_6
1475
+ BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
1476
+ local ____temp_7
1408
1477
  if not isTeamGlowVisible then
1409
- ____temp_6 = true
1478
+ ____temp_7 = true
1410
1479
  else
1411
- ____temp_6 = nil
1480
+ ____temp_7 = nil
1412
1481
  end
1413
- self[106] = ____temp_6
1482
+ self[106] = ____temp_7
1414
1483
  end
1415
1484
  },
1416
1485
  true
@@ -1419,9 +1488,9 @@ __TS__SetDescriptor(
1419
1488
  Unit.prototype,
1420
1489
  "color",
1421
1490
  {set = function(self, color)
1422
- setUnitColor(self.handle, color.handle)
1491
+ SetUnitColor(self.handle, color.handle)
1423
1492
  if self[106] then
1424
- showUnitTeamGlow(self.handle, false)
1493
+ BlzShowUnitTeamGlow(self.handle, false)
1425
1494
  end
1426
1495
  end},
1427
1496
  true
@@ -1590,7 +1659,7 @@ __TS__SetDescriptor(
1590
1659
  "x",
1591
1660
  {
1592
1661
  get = function(self)
1593
- return getUnitX(self.handle)
1662
+ return self[107] or getUnitX(self.handle)
1594
1663
  end,
1595
1664
  set = function(self, v)
1596
1665
  SetUnitX(self.handle, v)
@@ -1603,7 +1672,7 @@ __TS__SetDescriptor(
1603
1672
  "y",
1604
1673
  {
1605
1674
  get = function(self)
1606
- return getUnitY(self.handle)
1675
+ return self[108] or getUnitY(self.handle)
1607
1676
  end,
1608
1677
  set = function(self, v)
1609
1678
  SetUnitY(self.handle, v)
@@ -1689,10 +1758,10 @@ __TS__SetDescriptor(
1689
1758
  "gold",
1690
1759
  {
1691
1760
  get = function(self)
1692
- return getResourceAmount(self.handle)
1761
+ return GetResourceAmount(self.handle)
1693
1762
  end,
1694
1763
  set = function(self, gold)
1695
- setResourceAmount(self.handle, gold)
1764
+ SetResourceAmount(self.handle, gold)
1696
1765
  end
1697
1766
  },
1698
1767
  true
@@ -1820,6 +1889,19 @@ __TS__SetDescriptor(
1820
1889
  end},
1821
1890
  true
1822
1891
  )
1892
+ __TS__SetDescriptor(
1893
+ Unit.prototype,
1894
+ "movementType",
1895
+ {
1896
+ get = function(self)
1897
+ return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
1898
+ end,
1899
+ set = function(self, movementType)
1900
+ setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
1901
+ end
1902
+ },
1903
+ true
1904
+ )
1823
1905
  __TS__SetDescriptor(
1824
1906
  Unit.prototype,
1825
1907
  "pathing",
@@ -2001,6 +2083,14 @@ __TS__SetDescriptor(
2001
2083
  end},
2002
2084
  true
2003
2085
  )
2086
+ __TS__SetDescriptor(
2087
+ Unit.prototype,
2088
+ "targetAcquiredEvent",
2089
+ {get = function(self)
2090
+ return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
2091
+ end},
2092
+ true
2093
+ )
2004
2094
  __TS__SetDescriptor(
2005
2095
  Unit.prototype,
2006
2096
  "onSelect",
@@ -2136,25 +2226,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
2136
2226
  InitializingEvent,
2137
2227
  function(event)
2138
2228
  local function listener(unit, id)
2139
- local ____GetSpellTargetUnit_result_9
2229
+ local ____GetSpellTargetUnit_result_10
2140
2230
  if GetSpellTargetUnit() then
2141
- ____GetSpellTargetUnit_result_9 = ____exports.Unit:of(GetSpellTargetUnit())
2231
+ ____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
2142
2232
  else
2143
- local ____GetSpellTargetItem_result_8
2233
+ local ____GetSpellTargetItem_result_9
2144
2234
  if GetSpellTargetItem() then
2145
- ____GetSpellTargetItem_result_8 = Item:of(GetSpellTargetItem())
2235
+ ____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
2146
2236
  else
2147
- local ____GetSpellTargetDestructable_result_7
2237
+ local ____GetSpellTargetDestructable_result_8
2148
2238
  if GetSpellTargetDestructable() then
2149
- ____GetSpellTargetDestructable_result_7 = Destructable:of(GetSpellTargetDestructable())
2239
+ ____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
2150
2240
  else
2151
- ____GetSpellTargetDestructable_result_7 = nil
2241
+ ____GetSpellTargetDestructable_result_8 = nil
2152
2242
  end
2153
- ____GetSpellTargetItem_result_8 = ____GetSpellTargetDestructable_result_7
2243
+ ____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
2154
2244
  end
2155
- ____GetSpellTargetUnit_result_9 = ____GetSpellTargetItem_result_8
2245
+ ____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
2156
2246
  end
2157
- local target = ____GetSpellTargetUnit_result_9
2247
+ local target = ____GetSpellTargetUnit_result_10
2158
2248
  if target then
2159
2249
  invoke(event, unit, id, target)
2160
2250
  end
@@ -2326,10 +2416,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
2326
2416
  ____exports.UnitTriggerEvent,
2327
2417
  EVENT_PLAYER_UNIT_ISSUED_ORDER,
2328
2418
  function()
2329
- local unit = ____exports.Unit:of(getOrderedUnit())
2330
- local issuedOrderId = getIssuedOrderId()
2331
- if unit ~= nil and unit.state == 1 then
2332
- return unit, issuedOrderId
2419
+ local handle = getOrderedUnit()
2420
+ if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
2421
+ local unit = ____exports.Unit:of(handle)
2422
+ if unit.state == 1 then
2423
+ return unit, getIssuedOrderId()
2424
+ end
2333
2425
  end
2334
2426
  return IgnoreEvent
2335
2427
  end
@@ -2360,13 +2452,19 @@ Unit.onDamaging = (function()
2360
2452
  if source and source.typeId == dummyUnitId then
2361
2453
  source = nil
2362
2454
  end
2363
- local target = BlzGetEventDamageTarget()
2455
+ local target = ____exports.Unit:of(BlzGetEventDamageTarget())
2456
+ local metadata = damageMetadataByTarget[target]
2457
+ damageMetadataByTarget[target] = nil
2364
2458
  local data = {
2365
2459
  amount = GetEventDamage(),
2366
- attackType = BlzGetEventAttackType(),
2460
+ attackType = nativeToAttackType(BlzGetEventAttackType()),
2367
2461
  damageType = BlzGetEventDamageType(),
2368
2462
  weaponType = BlzGetEventWeaponType(),
2369
- isAttack = BlzGetEventIsAttack()
2463
+ metadata = metadata,
2464
+ isAttack = BlzGetEventIsAttack(),
2465
+ originalAmount = GetEventDamage(),
2466
+ originalMetadata = metadata,
2467
+ preventRetaliation = damagingEventPreventRetaliation
2370
2468
  }
2371
2469
  if data.isAttack and source then
2372
2470
  local weapon = BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 1) and (BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 0) and -1 or 1) or 0
@@ -2380,18 +2478,36 @@ Unit.onDamaging = (function()
2380
2478
  invoke(
2381
2479
  event,
2382
2480
  source,
2383
- ____exports.Unit:of(target),
2481
+ target,
2384
2482
  setmetatable(
2385
2483
  {},
2386
2484
  {
2387
2485
  __index = data,
2388
2486
  __newindex = function(self, key, value)
2389
- damageSetters[key](value)
2487
+ local damageSetter = damageSetters[key]
2488
+ if damageSetter ~= nil then
2489
+ damageSetter(value)
2490
+ end
2390
2491
  data[key] = value
2391
2492
  end
2392
2493
  }
2393
2494
  )
2394
2495
  )
2496
+ if data[0] and source then
2497
+ local sourceOwner = source.owner.handle
2498
+ data[1] = sourceOwner
2499
+ local targetOwner = target.owner.handle
2500
+ data[2] = targetOwner
2501
+ if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
2502
+ SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
2503
+ data[3] = true
2504
+ end
2505
+ if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
2506
+ SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
2507
+ data[4] = true
2508
+ end
2509
+ end
2510
+ damagingEventByTarget[target] = data
2395
2511
  return
2396
2512
  end
2397
2513
  BlzSetEventDamage(0)
@@ -2399,7 +2515,7 @@ Unit.onDamaging = (function()
2399
2515
  BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
2400
2516
  BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
2401
2517
  local sourceOwner = source.owner.handle
2402
- local targetOwner = GetOwningPlayer(target)
2518
+ local targetOwner = target.owner.handle
2403
2519
  if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
2404
2520
  SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
2405
2521
  Timer:run(function()
@@ -2415,23 +2531,19 @@ Unit.onDamaging = (function()
2415
2531
  for ____, ____value in ipairs(source._attackHandlers) do
2416
2532
  local condition = ____value[1]
2417
2533
  local action = ____value[2]
2418
- if condition(
2419
- source,
2420
- ____exports.Unit:of(target),
2421
- data
2422
- ) then
2534
+ if condition(source, target, data) then
2423
2535
  action(
2424
2536
  source,
2425
- ____exports.Unit:of(target),
2537
+ target,
2426
2538
  setmetatable(
2427
2539
  {fire = function()
2428
2540
  UnitDamageTarget(
2429
2541
  source.handle,
2430
- target,
2542
+ target.handle,
2431
2543
  data.amount,
2432
2544
  true,
2433
2545
  true,
2434
- data.attackType,
2546
+ attackTypeToNative(data.attackType),
2435
2547
  data.damageType,
2436
2548
  data.weaponType
2437
2549
  )
@@ -2458,26 +2570,50 @@ Unit.onDamage = __TS__New(
2458
2570
  if source and source.typeId == dummyUnitId then
2459
2571
  source = nil
2460
2572
  end
2573
+ local target = ____exports.Unit:of(BlzGetEventDamageTarget())
2574
+ local damagingEvent = damagingEventByTarget[target]
2575
+ damagingEventByTarget[target] = nil
2461
2576
  local data = {
2462
2577
  amount = GetEventDamage(),
2463
- attackType = BlzGetEventAttackType(),
2578
+ attackType = nativeToAttackType(BlzGetEventAttackType()),
2464
2579
  damageType = BlzGetEventDamageType(),
2465
2580
  weaponType = BlzGetEventWeaponType(),
2581
+ metadata = damagingEvent and damagingEvent.metadata,
2466
2582
  isAttack = BlzGetEventIsAttack(),
2467
- originalAmount = GetEventDamage(),
2583
+ originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
2584
+ originalMetadata = damagingEvent and damagingEvent.originalMetadata,
2468
2585
  preventDeath = damageEventPreventDeath
2469
2586
  }
2587
+ if damagingEvent then
2588
+ for key, value in pairs(damagingEvent) do
2589
+ if isAttribute(key) then
2590
+ data[key] = value
2591
+ end
2592
+ end
2593
+ local sourceOwner = damagingEvent[1]
2594
+ if sourceOwner then
2595
+ local targetOwner = damagingEvent[2]
2596
+ if damagingEvent[3] then
2597
+ SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
2598
+ end
2599
+ if damagingEvent[4] then
2600
+ SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
2601
+ end
2602
+ end
2603
+ end
2470
2604
  local evData = setmetatable(
2471
2605
  {},
2472
2606
  {
2473
2607
  __index = data,
2474
2608
  __newindex = function(self, key, value)
2475
- damageSetters[key](value)
2609
+ local damageSetter = damageSetters[key]
2610
+ if damageSetter ~= nil then
2611
+ damageSetter(value)
2612
+ end
2476
2613
  data[key] = value
2477
2614
  end
2478
2615
  }
2479
2616
  )
2480
- local target = ____exports.Unit:of(BlzGetEventDamageTarget())
2481
2617
  invoke(event, source, target, evData)
2482
2618
  if evData[0] ~= nil and target.health - evData.amount < 0.405 then
2483
2619
  local bonusHealth = math.ceil(evData.amount)
@@ -2520,8 +2656,9 @@ Unit.itemDroppedEvent = __TS__New(
2520
2656
  EVENT_PLAYER_UNIT_DROP_ITEM,
2521
2657
  function()
2522
2658
  local unit = getTriggerUnit()
2523
- if getUnitTypeId(unit) ~= dummyUnitId then
2524
- return ____exports.Unit:of(unit), Item:of(getManipulatedItem())
2659
+ local item = getManipulatedItem()
2660
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2661
+ return ____exports.Unit:of(unit), Item:of(item)
2525
2662
  end
2526
2663
  return IgnoreEvent
2527
2664
  end
@@ -2530,9 +2667,14 @@ Unit.itemPickedUpEvent = __TS__New(
2530
2667
  ____exports.UnitTriggerEvent,
2531
2668
  EVENT_PLAYER_UNIT_PICKUP_ITEM,
2532
2669
  function()
2533
- local unit = getTriggerUnit()
2534
- if getUnitTypeId(unit) ~= dummyUnitId then
2535
- return ____exports.Unit:of(unit), Item:of(getManipulatedItem())
2670
+ local unitHandle = getTriggerUnit()
2671
+ local itemHandle = getManipulatedItem()
2672
+ if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
2673
+ local unit = ____exports.Unit:of(unitHandle)
2674
+ local item = Item:of(itemHandle)
2675
+ if item.owner ~= unit then
2676
+ return unit, item
2677
+ end
2536
2678
  end
2537
2679
  return IgnoreEvent
2538
2680
  end
@@ -2540,38 +2682,77 @@ Unit.itemPickedUpEvent = __TS__New(
2540
2682
  Unit.itemUsedEvent = __TS__New(
2541
2683
  ____exports.UnitTriggerEvent,
2542
2684
  EVENT_PLAYER_UNIT_USE_ITEM,
2543
- function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
2685
+ function()
2686
+ local unit = getTriggerUnit()
2687
+ local item = getManipulatedItem()
2688
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2689
+ return ____exports.Unit:of(unit), Item:of(item)
2690
+ end
2691
+ return IgnoreEvent
2692
+ end
2544
2693
  )
2545
2694
  Unit.itemStackedEvent = __TS__New(
2546
2695
  ____exports.UnitTriggerEvent,
2547
2696
  EVENT_PLAYER_UNIT_STACK_ITEM,
2548
- function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
2697
+ function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
2549
2698
  )
2550
2699
  __TS__ObjectDefineProperty(
2551
2700
  Unit,
2552
- "itemMovedEvent",
2701
+ "itemChargesChangedEvent",
2553
2702
  {get = function(self)
2554
2703
  local event = __TS__New(Event)
2555
- do
2556
- local order = orderId("moveslot1")
2557
- while order <= orderId("moveslot5") do
2558
- self.onTargetOrder[order]:addListener(function(unit, item)
2559
- local slotFrom = unit.items:findSlot(item)
2560
- if slotFrom ~= nil then
2561
- local slotTo = order - orderId("moveslot1")
2562
- invoke(
2563
- event,
2564
- unit,
2565
- item,
2566
- slotFrom,
2567
- slotTo
2568
- )
2569
- end
2570
- end)
2571
- order = order + 1
2704
+ Item.chargesChangedEvent:addListener(function(item)
2705
+ local unit = item.owner
2706
+ if unit ~= nil then
2707
+ invoke(event, unit, item)
2708
+ end
2709
+ end)
2710
+ rawset(self, "itemChargesChangedEvent", event)
2711
+ return event
2712
+ end}
2713
+ )
2714
+ __TS__ObjectDefineProperty(
2715
+ Unit,
2716
+ "itemUseOrderEvent",
2717
+ {get = function(self)
2718
+ local event = __TS__New(Event)
2719
+ for order = orderId("useslot0"), orderId("useslot5") do
2720
+ local slot = order - orderId("useslot0")
2721
+ local function listener(unit)
2722
+ local item = unit.items[slot + 1]
2723
+ if item ~= nil then
2724
+ invoke(event, unit, item)
2725
+ end
2572
2726
  end
2727
+ self.onImmediateOrder[order]:addListener(listener)
2728
+ self.onTargetOrder[order]:addListener(listener)
2729
+ self.onPointOrder[order]:addListener(listener)
2730
+ end
2731
+ rawset(self, "itemUseOrderEvent", event)
2732
+ return event
2733
+ end}
2734
+ )
2735
+ __TS__ObjectDefineProperty(
2736
+ Unit,
2737
+ "itemMoveOrderEvent",
2738
+ {get = function(self)
2739
+ local event = __TS__New(Event)
2740
+ for order = orderId("moveslot0"), orderId("moveslot5") do
2741
+ local slotTo = order - orderId("moveslot0")
2742
+ self.onTargetOrder[order]:addListener(function(unit, item)
2743
+ local slotFrom = unit.items:findSlot(item)
2744
+ if slotFrom ~= nil then
2745
+ invoke(
2746
+ event,
2747
+ unit,
2748
+ item,
2749
+ slotFrom,
2750
+ slotTo
2751
+ )
2752
+ end
2753
+ end)
2573
2754
  end
2574
- rawset(self, "itemMovedEvent", event)
2755
+ rawset(self, "itemMoveOrderEvent", event)
2575
2756
  return event
2576
2757
  end}
2577
2758
  )