warscript 0.0.1-dev.ea69747 → 0.0.1-dev.eb6b18a

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 (249) hide show
  1. package/attributes.d.ts +17 -0
  2. package/attributes.lua +23 -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/decl/native.d.ts +840 -786
  26. package/engine/ability.d.ts +1 -1
  27. package/engine/behavior.d.ts +10 -10
  28. package/engine/behavior.lua +6 -6
  29. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  30. package/engine/behaviour/ability/always-enabled.lua +31 -0
  31. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  32. package/engine/behaviour/ability/apply-buff.lua +32 -0
  33. package/engine/behaviour/ability/apply-unit-behavior.d.ts +13 -4
  34. package/engine/behaviour/ability/apply-unit-behavior.lua +32 -9
  35. package/engine/behaviour/ability/damage.d.ts +39 -11
  36. package/engine/behaviour/ability/damage.lua +83 -37
  37. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  38. package/engine/behaviour/ability/emulate-impact.lua +42 -0
  39. package/engine/behaviour/ability/heal.d.ts +33 -6
  40. package/engine/behaviour/ability/heal.lua +89 -10
  41. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  42. package/engine/behaviour/ability/instant-impact.lua +4 -15
  43. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  44. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  45. package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
  46. package/engine/behaviour/ability/remove-buffs.lua +28 -0
  47. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  48. package/engine/behaviour/ability/restore-mana.lua +29 -0
  49. package/engine/behaviour/ability.d.ts +27 -4
  50. package/engine/behaviour/ability.lua +152 -26
  51. package/engine/behaviour/unit/stun-immunity.d.ts +5 -4
  52. package/engine/behaviour/unit/stun-immunity.lua +43 -27
  53. package/engine/behaviour/unit.d.ts +34 -2
  54. package/engine/behaviour/unit.lua +181 -0
  55. package/engine/buff.d.ts +103 -41
  56. package/engine/buff.lua +465 -212
  57. package/engine/game-map.d.ts +7 -0
  58. package/engine/game-map.lua +32 -0
  59. package/engine/internal/ability.d.ts +21 -14
  60. package/engine/internal/ability.lua +97 -76
  61. package/engine/internal/item/ability.lua +112 -4
  62. package/engine/internal/item+owner.lua +2 -2
  63. package/engine/internal/item.d.ts +7 -4
  64. package/engine/internal/item.lua +131 -28
  65. package/engine/internal/mechanics/ability-duration.d.ts +1 -3
  66. package/engine/internal/mechanics/ability-duration.lua +3 -1
  67. package/engine/internal/mechanics/cast-ability.d.ts +2 -0
  68. package/engine/internal/mechanics/cast-ability.lua +86 -0
  69. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  70. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  71. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  72. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  73. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  74. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  75. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  76. package/engine/internal/object-data/evasion-probability.lua +16 -0
  77. package/engine/internal/unit/ability.d.ts +45 -1
  78. package/engine/internal/unit/ability.lua +98 -14
  79. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  80. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  81. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  82. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  83. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  84. package/engine/internal/unit/allowed-targets.lua +9 -1
  85. package/engine/internal/unit/bonus.d.ts +11 -8
  86. package/engine/internal/unit/bonus.lua +23 -1
  87. package/engine/internal/unit/detach-missiles.d.ts +7 -0
  88. package/engine/internal/unit/detach-missiles.lua +30 -0
  89. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  90. package/engine/internal/unit/ignore-events-items.lua +5 -0
  91. package/engine/internal/unit/item.d.ts +24 -0
  92. package/engine/internal/unit/item.lua +78 -0
  93. package/engine/internal/unit/main-selected.d.ts +13 -0
  94. package/engine/internal/unit/main-selected.lua +51 -0
  95. package/engine/internal/unit/order.d.ts +20 -0
  96. package/engine/internal/unit/order.lua +136 -0
  97. package/engine/internal/unit+ability.lua +2 -2
  98. package/engine/internal/unit+damage.d.ts +2 -11
  99. package/engine/internal/unit+damage.lua +10 -14
  100. package/engine/internal/unit+spellSteal.lua +1 -2
  101. package/engine/internal/unit+transport.lua +4 -10
  102. package/engine/internal/unit-missile-launch.lua +25 -6
  103. package/engine/internal/unit.d.ts +85 -19
  104. package/engine/internal/unit.lua +555 -167
  105. package/engine/internal/utility.lua +12 -0
  106. package/engine/lightning.d.ts +12 -5
  107. package/engine/lightning.lua +48 -14
  108. package/engine/local-client.d.ts +7 -2
  109. package/engine/local-client.lua +82 -0
  110. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  111. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  112. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -3
  113. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  114. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  115. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  116. package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
  117. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  118. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  119. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  120. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  121. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  122. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  123. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  124. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  125. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  126. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  127. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
  128. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  129. package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
  130. package/engine/object-data/entry/ability-type/blink.d.ts +10 -0
  131. package/engine/object-data/entry/ability-type/blink.lua +39 -0
  132. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  133. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  134. package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
  135. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  136. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +4 -4
  137. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  138. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  139. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  140. package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
  141. package/engine/object-data/entry/ability-type/mine.lua +39 -0
  142. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  143. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  144. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  145. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  146. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  147. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  148. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  149. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  150. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  151. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  152. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  153. package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
  154. package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
  155. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  156. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  157. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  158. package/engine/object-data/entry/ability-type/web.lua +52 -0
  159. package/engine/object-data/entry/ability-type.d.ts +20 -18
  160. package/engine/object-data/entry/ability-type.lua +90 -33
  161. package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
  162. package/engine/object-data/entry/buff-type/applicable.lua +39 -102
  163. package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
  164. package/engine/object-data/entry/buff-type.d.ts +6 -13
  165. package/engine/object-data/entry/buff-type.lua +13 -29
  166. package/engine/object-data/entry/destructible-type.d.ts +1 -2
  167. package/engine/object-data/entry/item-type/blank.d.ts +0 -1
  168. package/engine/object-data/entry/item-type.d.ts +15 -2
  169. package/engine/object-data/entry/item-type.lua +93 -2
  170. package/engine/object-data/entry/lightning-type.d.ts +1 -2
  171. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  172. package/engine/object-data/entry/sound-preset.lua +140 -0
  173. package/engine/object-data/entry/unit-type.d.ts +50 -3
  174. package/engine/object-data/entry/unit-type.lua +452 -61
  175. package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
  176. package/engine/object-data/entry/upgrade.d.ts +1 -2
  177. package/engine/object-data/entry/upgrade.lua +4 -4
  178. package/engine/object-data/entry.d.ts +18 -17
  179. package/engine/object-data/entry.lua +60 -32
  180. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  181. package/engine/object-field/ability.d.ts +33 -8
  182. package/engine/object-field/ability.lua +60 -1
  183. package/engine/object-field/unit.d.ts +50 -2
  184. package/engine/object-field/unit.lua +186 -4
  185. package/engine/object-field.d.ts +21 -8
  186. package/engine/object-field.lua +221 -97
  187. package/engine/random.d.ts +1 -0
  188. package/engine/random.lua +9 -0
  189. package/engine/standard/entries/buff-type.d.ts +3 -0
  190. package/engine/standard/entries/buff-type.lua +3 -0
  191. package/engine/standard/entries/sound-preset.d.ts +10 -0
  192. package/engine/standard/entries/sound-preset.lua +10 -0
  193. package/engine/standard/entries/unit-type.d.ts +42 -1
  194. package/engine/standard/entries/unit-type.lua +42 -1
  195. package/engine/standard/fields/ability.d.ts +3 -1
  196. package/engine/standard/fields/ability.lua +3 -1
  197. package/engine/standard/fields/unit.d.ts +3 -0
  198. package/engine/standard/fields/unit.lua +5 -0
  199. package/engine/text-tag.d.ts +36 -2
  200. package/engine/text-tag.lua +175 -10
  201. package/engine/unit.d.ts +5 -0
  202. package/engine/unit.lua +14 -2
  203. package/event.d.ts +2 -3
  204. package/event.lua +9 -5
  205. package/exception.d.ts +2 -0
  206. package/exception.lua +4 -0
  207. package/global/vec2.lua +1 -0
  208. package/index.d.ts +1 -0
  209. package/index.lua +1 -0
  210. package/lualib_bundle.lua +146 -42
  211. package/math/vec2.d.ts +2 -9
  212. package/math.d.ts +0 -2
  213. package/net/socket.d.ts +7 -1
  214. package/net/socket.lua +45 -4
  215. package/network.d.ts +1 -0
  216. package/network.lua +3 -2
  217. package/objutil/ability.d.ts +0 -1
  218. package/objutil/buff.d.ts +0 -1
  219. package/objutil/buff.lua +2 -3
  220. package/objutil/object.d.ts +0 -1
  221. package/objutil/unit.d.ts +0 -1
  222. package/objutil/unit.lua +8 -0
  223. package/package.json +13 -14
  224. package/patch-lua.d.ts +0 -0
  225. package/patch-lua.lua +10 -0
  226. package/property.d.ts +55 -0
  227. package/property.lua +374 -0
  228. package/string.d.ts +30 -0
  229. package/string.lua +14 -0
  230. package/util/stream.d.ts +0 -1
  231. package/utility/arrays.d.ts +13 -6
  232. package/utility/arrays.lua +41 -4
  233. package/utility/bit-set.d.ts +0 -2
  234. package/utility/functions.d.ts +1 -0
  235. package/utility/functions.lua +1 -0
  236. package/utility/lazy.d.ts +2 -0
  237. package/utility/lazy.lua +14 -0
  238. package/utility/linked-set.d.ts +32 -9
  239. package/utility/linked-set.lua +24 -2
  240. package/utility/lua-maps.d.ts +5 -2
  241. package/utility/lua-maps.lua +20 -0
  242. package/utility/lua-sets.d.ts +2 -2
  243. package/utility/lua-sets.lua +3 -0
  244. package/utility/reflection.lua +11 -7
  245. package/utility/types.d.ts +3 -2
  246. package/core/mapbounds.d.ts +0 -8
  247. package/core/mapbounds.lua +0 -12
  248. package/core/types/order.d.ts +0 -25
  249. package/core/types/order.lua +0 -55
@@ -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,12 +51,19 @@ 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
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
51
63
  local match = string.match
52
64
  local ____tostring = _G.tostring
53
65
  local setUnitAnimation = SetUnitAnimation
54
- local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
55
66
  local setUnitAnimationByIndex = SetUnitAnimationByIndex
56
- local queueUnitAnimation = QueueUnitAnimation
57
67
  local getUnitIntegerField = BlzGetUnitIntegerField
58
68
  local getUnitRealField = BlzGetUnitRealField
59
69
  local getHeroStr = GetHeroStr
@@ -72,9 +82,9 @@ local setUnitScale = SetUnitScale
72
82
  local setUnitPosition = SetUnitPosition
73
83
  local setUnitTimeScale = SetUnitTimeScale
74
84
  local getHandleId = GetHandleId
85
+ local getUnitCurrentOrder = GetUnitCurrentOrder
75
86
  local createUnit = CreateUnit
76
87
  local killUnit = KillUnit
77
- local setUnitExploded = SetUnitExploded
78
88
  local removeUnit = RemoveUnit
79
89
  local getUnitTypeId = GetUnitTypeId
80
90
  local isHeroUnitId = IsHeroUnitId
@@ -90,8 +100,10 @@ local getSpellTargetItem = GetSpellTargetItem
90
100
  local getSpellTargetDestructable = GetSpellTargetDestructable
91
101
  local isUnitInRangeXY = IsUnitInRangeXY
92
102
  local isUnitInRange = IsUnitInRange
93
- local setResourceAmount = SetResourceAmount
94
- local getResourceAmount = GetResourceAmount
103
+ local getUnitWeaponRealField = BlzGetUnitWeaponRealField
104
+ local setUnitWeaponRealField = BlzSetUnitWeaponRealField
105
+ local getUnitWeaponStringField = BlzGetUnitWeaponStringField
106
+ local setUnitWeaponStringField = BlzSetUnitWeaponStringField
95
107
  local getUnitAbilityLevel = GetUnitAbilityLevel
96
108
  local unitDisableAbility = BlzUnitDisableAbility
97
109
  local unitInterruptAttack = BlzUnitInterruptAttack
@@ -118,8 +130,6 @@ local isUnitType = IsUnitType
118
130
  local isUnitAlly = IsUnitAlly
119
131
  local isUnitEnemy = IsUnitEnemy
120
132
  local getOwningPlayer = GetOwningPlayer
121
- local setUnitColor = SetUnitColor
122
- local showUnitTeamGlow = BlzShowUnitTeamGlow
123
133
  ____exports.UnitClassification = {}
124
134
  local UnitClassification = ____exports.UnitClassification
125
135
  do
@@ -129,6 +139,7 @@ do
129
139
  UnitClassification.GROUND = UNIT_TYPE_GROUND
130
140
  UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
131
141
  UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
142
+ UnitClassification.WORKER = UNIT_TYPE_PEON
132
143
  UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
133
144
  UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
134
145
  UnitClassification.TAUREN = UNIT_TYPE_TAUREN
@@ -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
@@ -339,6 +347,9 @@ local function dispatchAbility(event)
339
347
  }
340
348
  )
341
349
  end
350
+ local function damagingEventPreventRetaliation(self)
351
+ self[0] = true
352
+ end
342
353
  local function damageEventPreventDeath(self, callback, ...)
343
354
  if self[0] ~= nil then
344
355
  return
@@ -350,7 +361,14 @@ local function damageEventPreventDeath(self, callback, ...)
350
361
  rawset(self, 1 + i, (select(i, ...)))
351
362
  end
352
363
  end
353
- local damageSetters = {amount = BlzSetEventDamage, attackType = BlzSetEventAttackType, damageType = BlzSetEventDamageType, weaponType = BlzSetEventWeaponType}
364
+ local damageSetters = {
365
+ amount = BlzSetEventDamage,
366
+ attackType = function(attackType)
367
+ return BlzSetEventAttackType(attackTypeToNative(attackType))
368
+ end,
369
+ damageType = BlzSetEventDamageType,
370
+ weaponType = BlzSetEventWeaponType
371
+ }
354
372
  local jlimitopByOperator = {
355
373
  [0] = LESS_THAN_OR_EQUAL,
356
374
  [1] = LESS_THAN_OR_EQUAL,
@@ -387,51 +405,171 @@ local getters = {
387
405
  return BlzGetUnitArmor(unit)
388
406
  end
389
407
  }
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
- }
408
+ ____exports.UnitWeapon = __TS__Class()
409
+ local UnitWeapon = ____exports.UnitWeapon
410
+ UnitWeapon.name = "UnitWeapon"
411
+ function UnitWeapon.prototype.____constructor(self, unit, index)
412
+ self.unit = unit
413
+ self.index = index
414
+ end
415
+ __TS__SetDescriptor(
416
+ UnitWeapon.prototype,
417
+ "cooldown",
418
+ {
419
+ get = function(self)
420
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index)
421
+ end,
422
+ set = function(self, cooldown)
423
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index, cooldown)
424
+ end
425
+ },
426
+ true
427
+ )
428
+ __TS__SetDescriptor(
429
+ UnitWeapon.prototype,
430
+ "damage",
431
+ {
432
+ get = function(self)
433
+ local minimumDamage = self.damageBase + self.damageDiceCount
434
+ local maximumDamage = self.damageBase + self.damageDiceCount * self.damageDiceSideCount
435
+ return {minimumDamage, maximumDamage}
436
+ end,
437
+ set = function(self, ____bindingPattern0)
438
+ local maximumDamage
439
+ local minimumDamage
440
+ minimumDamage = ____bindingPattern0[1]
441
+ maximumDamage = ____bindingPattern0[2]
442
+ self.damageBase = minimumDamage - 1
443
+ self.damageDiceCount = 1
444
+ self.damageDiceSideCount = maximumDamage - minimumDamage + 1
445
+ end
446
+ },
447
+ true
448
+ )
449
+ __TS__SetDescriptor(
450
+ UnitWeapon.prototype,
451
+ "allowedTargetCombatClassifications",
452
+ {
453
+ get = function(self)
454
+ return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
455
+ end,
456
+ set = function(self, allowedTargetCombatClassifications)
457
+ BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
458
+ end
459
+ },
460
+ true
461
+ )
462
+ __TS__SetDescriptor(
463
+ UnitWeapon.prototype,
464
+ "damageBase",
465
+ {
466
+ get = function(self)
467
+ return BlzGetUnitBaseDamage(self.unit.handle, self.index)
468
+ end,
469
+ set = function(self, damageBase)
470
+ BlzSetUnitBaseDamage(self.unit.handle, self.index, damageBase)
471
+ end
472
+ },
473
+ true
474
+ )
475
+ __TS__SetDescriptor(
476
+ UnitWeapon.prototype,
477
+ "damageDiceCount",
478
+ {
479
+ get = function(self)
480
+ return BlzGetUnitDiceNumber(self.unit.handle, self.index)
481
+ end,
482
+ set = function(self, damageDiceCount)
483
+ BlzSetUnitDiceNumber(self.unit.handle, self.index, damageDiceCount)
484
+ end
485
+ },
486
+ true
487
+ )
488
+ __TS__SetDescriptor(
489
+ UnitWeapon.prototype,
490
+ "damageDiceSideCount",
491
+ {
492
+ get = function(self)
493
+ return BlzGetUnitDiceSides(self.unit.handle, self.index)
494
+ end,
495
+ set = function(self, damageDiceSideCount)
496
+ BlzSetUnitDiceSides(self.unit.handle, self.index, damageDiceSideCount)
497
+ end
498
+ },
499
+ true
500
+ )
501
+ __TS__SetDescriptor(
502
+ UnitWeapon.prototype,
503
+ "range",
504
+ {
505
+ get = function(self)
506
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_RANGE, self.index)
507
+ end,
508
+ set = function(self, range)
509
+ local handle = self.unit.handle
510
+ local index = self.index
511
+ setUnitWeaponRealField(
512
+ handle,
513
+ UNIT_WEAPON_RF_ATTACK_RANGE,
514
+ index + 1,
515
+ getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index + 1) + (range - getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index))
516
+ )
517
+ end
518
+ },
519
+ true
520
+ )
521
+ __TS__SetDescriptor(
522
+ UnitWeapon.prototype,
523
+ "impactDelay",
524
+ {
525
+ get = function(self)
526
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index)
527
+ end,
528
+ set = function(self, impactDelay)
529
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index, impactDelay)
530
+ end
531
+ },
532
+ true
533
+ )
534
+ __TS__SetDescriptor(
535
+ UnitWeapon.prototype,
536
+ "missileArc",
537
+ {
538
+ get = function(self)
539
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index)
540
+ end,
541
+ set = function(self, missileArc)
542
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index, missileArc)
543
+ end
544
+ },
545
+ true
546
+ )
547
+ __TS__SetDescriptor(
548
+ UnitWeapon.prototype,
549
+ "missileModelPath",
550
+ {
551
+ get = function(self)
552
+ return getUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index)
553
+ end,
554
+ set = function(self, missileModelPath)
555
+ setUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index, missileModelPath)
556
+ end
557
+ },
558
+ true
559
+ )
560
+ __TS__SetDescriptor(
561
+ UnitWeapon.prototype,
562
+ "missileSpeed",
563
+ {
564
+ get = function(self)
565
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index)
566
+ end,
567
+ set = function(self, missileSpeed)
568
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index, missileSpeed)
569
+ end
570
+ },
571
+ true
572
+ )
435
573
  local unitInventorySize = UnitInventorySize
436
574
  local unitItemInSlot = UnitItemInSlot
437
575
  local getItemAbility = BlzGetItemAbility
@@ -442,8 +580,6 @@ local getAbilityName = GetAbilityName
442
580
  local unitAddAbility = UnitAddAbility
443
581
  local getUnitGoldCost = GetUnitGoldCost
444
582
  local getUnitLumberCost = GetUnitWoodCost
445
- local unitMakeAbilityPermanent = UnitMakeAbilityPermanent
446
- local unitAddItem = UnitAddItem
447
583
  local unitRemoveAbility = UnitRemoveAbility
448
584
  local function retrieveAbility(unit, ability, abilityId)
449
585
  if ability == nil then
@@ -453,17 +589,6 @@ local function retrieveAbility(unit, ability, abilityId)
453
589
  ____exports.Unit:of(unit)
454
590
  )
455
591
  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
592
  for i = 0, unitInventorySize(unit) - 1 do
468
593
  local item = unitItemInSlot(unit, i)
469
594
  if getItemAbility(item, abilityId) == ability then
@@ -520,12 +645,35 @@ for ____, player in ipairs(Player.all) do
520
645
  ShowUnit(dummy, false)
521
646
  dummies[player] = dummy
522
647
  end
648
+ local function delayHealthChecksCallback(unit)
649
+ local counter = (unit[103] or 0) - 1
650
+ if counter ~= 0 then
651
+ unit[103] = counter
652
+ return
653
+ end
654
+ unit[103] = nil
655
+ local healthBonus = unit[104]
656
+ if healthBonus ~= nil then
657
+ unit[104] = nil
658
+ local handle = unit.handle
659
+ BlzSetUnitMaxHP(
660
+ handle,
661
+ BlzGetUnitMaxHP(handle) - healthBonus
662
+ )
663
+ end
664
+ end
665
+ local nextSyncId = 1
666
+ local unitBySyncId = setmetatable({}, {__mode = "v"})
667
+ local damagingEventByTarget = setmetatable({}, {__mode = "k"})
523
668
  ____exports.Unit = __TS__Class()
524
669
  local Unit = ____exports.Unit
525
670
  Unit.name = "Unit"
526
671
  __TS__ClassExtends(Unit, Handle)
527
672
  function Unit.prototype.____constructor(self, handle)
528
673
  Handle.prototype.____constructor(self, handle)
674
+ local ____nextSyncId_0 = nextSyncId
675
+ nextSyncId = ____nextSyncId_0 + 1
676
+ self.syncId = ____nextSyncId_0
529
677
  self._owner = Player:of(getOwningPlayer(handle))
530
678
  assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
531
679
  assert(unitAddAbility(handle, morphDetectAbilityId))
@@ -538,6 +686,7 @@ function Unit.prototype.____constructor(self, handle)
538
686
  fourCC("Amrf")
539
687
  ))
540
688
  end
689
+ unitBySyncId[self.syncId] = self
541
690
  local ____ = self.abilities
542
691
  end
543
692
  function Unit.prototype.getEvent(self, event, collector)
@@ -556,6 +705,8 @@ function Unit.prototype.getEvent(self, event, collector)
556
705
  end
557
706
  function Unit.prototype.onDestroy(self)
558
707
  local handle = self.handle
708
+ self[107] = getUnitX(handle)
709
+ self[108] = getUnitY(handle)
559
710
  if not self._owner then
560
711
  self._owner = Player:of(getOwningPlayer(handle))
561
712
  end
@@ -623,8 +774,8 @@ function Unit.prototype.addModifier(self, property, modifier)
623
774
  end}
624
775
  end
625
776
  function Unit.prototype.hasCombatClassification(self, combatClassification)
626
- local ____combatClassification_0 = combatClassification
627
- return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_0 == ____combatClassification_0
777
+ local ____combatClassification_1 = combatClassification
778
+ return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_1 == ____combatClassification_1
628
779
  end
629
780
  function Unit.prototype.addClassification(self, classification)
630
781
  return unitAddType(self.handle, classification)
@@ -642,13 +793,13 @@ function Unit.prototype.isInvisibleTo(self, player)
642
793
  return isUnitInvisible(self.handle, player.handle)
643
794
  end
644
795
  function Unit.prototype.isInRangeOf(self, x, y, range)
645
- local ____temp_1
796
+ local ____temp_2
646
797
  if type(x) == "number" then
647
- ____temp_1 = isUnitInRangeXY(self.handle, x, y, range)
798
+ ____temp_2 = isUnitInRangeXY(self.handle, x, y, range)
648
799
  else
649
- ____temp_1 = isUnitInRange(self.handle, x.handle, y)
800
+ ____temp_2 = isUnitInRange(self.handle, x.handle, y)
650
801
  end
651
- return ____temp_1
802
+ return ____temp_2
652
803
  end
653
804
  function Unit.prototype.isAllyOf(self, unit)
654
805
  return isUnitAlly(
@@ -666,13 +817,29 @@ function Unit.prototype.playAnimation(self, animation, rarity)
666
817
  if type(animation) == "number" then
667
818
  setUnitAnimationByIndex(self.handle, animation)
668
819
  elseif rarity then
669
- setUnitAnimationWithRarity(self.handle, animation, rarity)
820
+ SetUnitAnimationWithRarity(self.handle, animation, rarity)
670
821
  else
671
822
  setUnitAnimation(self.handle, animation)
672
823
  end
673
824
  end
825
+ function Unit.prototype.resetAnimation(self)
826
+ ResetUnitAnimation(self.handle)
827
+ end
674
828
  function Unit.prototype.queueAnimation(self, animation)
675
- queueUnitAnimation(self.handle, animation)
829
+ QueueUnitAnimation(self.handle, animation)
830
+ end
831
+ function Unit.prototype.chooseWeapon(self, target)
832
+ if target:isAllowedTarget(self, self.firstWeapon.allowedTargetCombatClassifications) then
833
+ return self.firstWeapon
834
+ end
835
+ if target:isAllowedTarget(target, self.secondWeapon.allowedTargetCombatClassifications) then
836
+ return self.secondWeapon
837
+ end
838
+ return nil
839
+ end
840
+ function Unit.prototype.delayHealthChecks(self)
841
+ self[103] = (self[103] or 0) + 1
842
+ Timer:run(delayHealthChecksCallback, self)
676
843
  end
677
844
  function Unit.prototype.setPosition(self, x, y)
678
845
  setUnitPosition(self.handle, x, y)
@@ -681,14 +848,21 @@ function Unit.prototype.isSelected(self, player)
681
848
  return IsUnitSelected(self.handle, player.handle)
682
849
  end
683
850
  function Unit.prototype.explode(self)
684
- setUnitExploded(self.handle, true)
851
+ SetUnitExploded(self.handle, true)
685
852
  killUnit(self.handle)
686
853
  end
687
854
  function Unit.prototype.kill(self)
688
855
  killUnit(self.handle)
689
856
  end
690
- function Unit.prototype.revive(self, pos, doEffect)
691
- ReviveHero(self.handle, pos.x, pos.y, doEffect)
857
+ function Unit.prototype.revive(self, x, y, doEffect)
858
+ local ____ReviveHero_5 = ReviveHero
859
+ local ____array_4 = __TS__SparseArrayNew(self.handle, x, y)
860
+ local ____doEffect_3 = doEffect
861
+ if ____doEffect_3 == nil then
862
+ ____doEffect_3 = false
863
+ end
864
+ __TS__SparseArrayPush(____array_4, ____doEffect_3)
865
+ ____ReviveHero_5(__TS__SparseArraySpread(____array_4))
692
866
  end
693
867
  function Unit.prototype.healTarget(self, target, amount)
694
868
  if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
@@ -728,7 +902,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
728
902
  return UnitDropItemSlot(self.handle, item.handle, slot)
729
903
  end
730
904
  function Unit.prototype.itemInSlot(self, slot)
731
- return Item:of(UnitItemInSlot(self.handle, slot))
905
+ return Item:of(unitItemInSlot(self.handle, slot))
732
906
  end
733
907
  function Unit.prototype.addAbility(self, abilityId)
734
908
  if unitAddAbility(self.handle, abilityId) then
@@ -784,18 +958,43 @@ end
784
958
  function Unit.prototype.hideAbility(self, abilityId, flag)
785
959
  BlzUnitHideAbility(self.handle, abilityId, flag)
786
960
  end
961
+ function Unit.prototype.getAbilityRemainingCooldown(self, abilityId)
962
+ return BlzGetUnitAbilityCooldownRemaining(self.handle, abilityId)
963
+ end
787
964
  function Unit.prototype.startAbilityCooldown(self, abilityId, cooldown)
788
965
  BlzStartUnitAbilityCooldown(self.handle, abilityId, cooldown)
789
966
  end
790
967
  function Unit.prototype.endAbilityCooldown(self, abilityId)
791
968
  BlzEndUnitAbilityCooldown(self.handle, abilityId)
792
969
  end
970
+ function Unit.prototype.interruptMovement(self)
971
+ local handle = self.handle
972
+ unitDisableAbility(
973
+ handle,
974
+ fourCC("Amov"),
975
+ true,
976
+ false
977
+ )
978
+ unitDisableAbility(
979
+ handle,
980
+ fourCC("Amov"),
981
+ false,
982
+ false
983
+ )
984
+ end
793
985
  function Unit.prototype.interruptAttack(self)
794
986
  unitInterruptAttack(self.handle)
795
987
  end
796
988
  function Unit.prototype.interruptCast(self, abilityId)
797
- unitDisableAbility(self.handle, abilityId, true, false)
798
- unitDisableAbility(self.handle, abilityId, false, false)
989
+ local handle = self.handle
990
+ unitDisableAbility(handle, abilityId, true, false)
991
+ Timer:run(
992
+ unitDisableAbility,
993
+ handle,
994
+ abilityId,
995
+ false,
996
+ false
997
+ )
799
998
  end
800
999
  function Unit.prototype.getDistanceTo(self, target)
801
1000
  local handle = self.handle
@@ -855,18 +1054,18 @@ function Unit.prototype.unpauseEx(self)
855
1054
  self:decrementStunCounter()
856
1055
  end
857
1056
  function Unit.prototype.incrementStunCounter(self)
858
- local stunCounter = self[101] or 0
859
- if not self[100] or stunCounter >= 0 then
1057
+ local stunCounter = self[102] or 0
1058
+ if not self[101] or stunCounter >= 0 then
860
1059
  BlzPauseUnitEx(self.handle, true)
861
1060
  end
862
- self[101] = stunCounter + 1
1061
+ self[102] = stunCounter + 1
863
1062
  end
864
1063
  function Unit.prototype.decrementStunCounter(self)
865
- local stunCounter = self[101] or 0
866
- if not self[100] or stunCounter >= 1 then
1064
+ local stunCounter = self[102] or 0
1065
+ if not self[101] or stunCounter >= 1 then
867
1066
  BlzPauseUnitEx(self.handle, false)
868
1067
  end
869
- self[101] = stunCounter - 1
1068
+ self[102] = stunCounter - 1
870
1069
  end
871
1070
  function Unit.create(self, owner, id, x, y, facing, skinId)
872
1071
  local handle = skinId and BlzCreateUnitWithSkin(
@@ -968,8 +1167,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
968
1167
  )
969
1168
  return targetCollection
970
1169
  end
971
- function Unit.getSelectionOf(self, player)
972
- targetCollection = {}
1170
+ function Unit.getSelectionOf(self, player, target)
1171
+ if target == nil then
1172
+ target = {}
1173
+ end
1174
+ targetCollection = target
973
1175
  targetCollectionNextIndex = 1
974
1176
  GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
975
1177
  return targetCollection
@@ -991,6 +1193,9 @@ end
991
1193
  function Unit.prototype.__tostring(self)
992
1194
  return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
993
1195
  end
1196
+ function Unit.getBySyncId(self, syncId)
1197
+ return unitBySyncId[syncId]
1198
+ end
994
1199
  __TS__SetDescriptor(
995
1200
  Unit.prototype,
996
1201
  "_deltas",
@@ -1054,6 +1259,14 @@ __TS__SetDescriptor(
1054
1259
  end},
1055
1260
  true
1056
1261
  )
1262
+ __TS__SetDescriptor(
1263
+ Unit.prototype,
1264
+ "isStunned",
1265
+ {get = function(self)
1266
+ return getUnitCurrentOrder(self.handle) == orderId("stunned")
1267
+ end},
1268
+ true
1269
+ )
1057
1270
  __TS__SetDescriptor(
1058
1271
  Unit.prototype,
1059
1272
  "combatClassifications",
@@ -1071,12 +1284,27 @@ __TS__SetDescriptor(
1071
1284
  Unit.prototype,
1072
1285
  "weapons",
1073
1286
  {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
1287
+ return {self.firstWeapon, self.secondWeapon}
1288
+ end},
1289
+ true
1290
+ )
1291
+ __TS__SetDescriptor(
1292
+ Unit.prototype,
1293
+ "firstWeapon",
1294
+ {get = function(self)
1295
+ local weapon = __TS__New(____exports.UnitWeapon, self, 0)
1296
+ rawset(self, "firstWeapon", weapon)
1297
+ return weapon
1298
+ end},
1299
+ true
1300
+ )
1301
+ __TS__SetDescriptor(
1302
+ Unit.prototype,
1303
+ "secondWeapon",
1304
+ {get = function(self)
1305
+ local weapon = __TS__New(____exports.UnitWeapon, self, 1)
1306
+ rawset(self, "secondWeapon", weapon)
1307
+ return weapon
1080
1308
  end},
1081
1309
  true
1082
1310
  )
@@ -1112,6 +1340,19 @@ __TS__SetDescriptor(
1112
1340
  },
1113
1341
  true
1114
1342
  )
1343
+ __TS__SetDescriptor(
1344
+ Unit.prototype,
1345
+ "primaryAttribute",
1346
+ {
1347
+ get = function(self)
1348
+ return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
1349
+ end,
1350
+ set = function(self, primaryAttribute)
1351
+ setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
1352
+ end
1353
+ },
1354
+ true
1355
+ )
1115
1356
  __TS__SetDescriptor(
1116
1357
  Unit.prototype,
1117
1358
  "strengthBase",
@@ -1233,17 +1474,17 @@ __TS__SetDescriptor(
1233
1474
  "isTeamGlowVisible",
1234
1475
  {
1235
1476
  get = function(self)
1236
- return not self[103]
1477
+ return not self[106]
1237
1478
  end,
1238
1479
  set = function(self, isTeamGlowVisible)
1239
- showUnitTeamGlow(self.handle, isTeamGlowVisible)
1240
- local ____temp_2
1480
+ BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
1481
+ local ____temp_6
1241
1482
  if not isTeamGlowVisible then
1242
- ____temp_2 = true
1483
+ ____temp_6 = true
1243
1484
  else
1244
- ____temp_2 = nil
1485
+ ____temp_6 = nil
1245
1486
  end
1246
- self[103] = ____temp_2
1487
+ self[106] = ____temp_6
1247
1488
  end
1248
1489
  },
1249
1490
  true
@@ -1252,9 +1493,9 @@ __TS__SetDescriptor(
1252
1493
  Unit.prototype,
1253
1494
  "color",
1254
1495
  {set = function(self, color)
1255
- setUnitColor(self.handle, color.handle)
1256
- if self[103] then
1257
- showUnitTeamGlow(self.handle, false)
1496
+ SetUnitColor(self.handle, color.handle)
1497
+ if self[106] then
1498
+ BlzShowUnitTeamGlow(self.handle, false)
1258
1499
  end
1259
1500
  end},
1260
1501
  true
@@ -1277,10 +1518,14 @@ __TS__SetDescriptor(
1277
1518
  "maxHealth",
1278
1519
  {
1279
1520
  get = function(self)
1280
- return BlzGetUnitMaxHP(self.handle) - (self[102] or 0)
1521
+ return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
1281
1522
  end,
1282
1523
  set = function(self, maxHealth)
1283
- BlzSetUnitMaxHP(self.handle, maxHealth + (self[102] or 0))
1524
+ if maxHealth < 1 and self[103] ~= nil then
1525
+ self[104] = (self[104] or 0) + (1 - maxHealth)
1526
+ maxHealth = 1
1527
+ end
1528
+ BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
1284
1529
  end
1285
1530
  },
1286
1531
  true
@@ -1322,10 +1567,10 @@ __TS__SetDescriptor(
1322
1567
  "health",
1323
1568
  {
1324
1569
  get = function(self)
1325
- return GetWidgetLife(self.handle) - (self[102] or 0)
1570
+ return GetWidgetLife(self.handle) - (self[105] or 0)
1326
1571
  end,
1327
1572
  set = function(self, health)
1328
- SetWidgetLife(self.handle, health + (self[102] or 0))
1573
+ SetWidgetLife(self.handle, health + (self[105] or 0))
1329
1574
  end
1330
1575
  },
1331
1576
  true
@@ -1419,7 +1664,7 @@ __TS__SetDescriptor(
1419
1664
  "x",
1420
1665
  {
1421
1666
  get = function(self)
1422
- return getUnitX(self.handle)
1667
+ return self[107] or getUnitX(self.handle)
1423
1668
  end,
1424
1669
  set = function(self, v)
1425
1670
  SetUnitX(self.handle, v)
@@ -1432,7 +1677,7 @@ __TS__SetDescriptor(
1432
1677
  "y",
1433
1678
  {
1434
1679
  get = function(self)
1435
- return getUnitY(self.handle)
1680
+ return self[108] or getUnitY(self.handle)
1436
1681
  end,
1437
1682
  set = function(self, v)
1438
1683
  SetUnitY(self.handle, v)
@@ -1518,10 +1763,10 @@ __TS__SetDescriptor(
1518
1763
  "gold",
1519
1764
  {
1520
1765
  get = function(self)
1521
- return getResourceAmount(self.handle)
1766
+ return GetResourceAmount(self.handle)
1522
1767
  end,
1523
1768
  set = function(self, gold)
1524
- setResourceAmount(self.handle, gold)
1769
+ SetResourceAmount(self.handle, gold)
1525
1770
  end
1526
1771
  },
1527
1772
  true
@@ -1536,17 +1781,17 @@ __TS__SetDescriptor(
1536
1781
  set = function(self, isPaused)
1537
1782
  local handle = self.handle
1538
1783
  if isPaused and not IsUnitPaused(handle) then
1539
- self[100] = true
1540
- for _ = self[101] or 0, -1 do
1784
+ self[101] = true
1785
+ for _ = self[102] or 0, -1 do
1541
1786
  BlzPauseUnitEx(handle, true)
1542
1787
  end
1543
1788
  PauseUnit(handle, true)
1544
1789
  elseif not isPaused and IsUnitPaused(handle) then
1545
1790
  PauseUnit(handle, false)
1546
- for _ = self[101] or 0, -1 do
1791
+ for _ = self[102] or 0, -1 do
1547
1792
  BlzPauseUnitEx(handle, false)
1548
1793
  end
1549
- self[100] = nil
1794
+ self[101] = nil
1550
1795
  end
1551
1796
  end
1552
1797
  },
@@ -1649,6 +1894,19 @@ __TS__SetDescriptor(
1649
1894
  end},
1650
1895
  true
1651
1896
  )
1897
+ __TS__SetDescriptor(
1898
+ Unit.prototype,
1899
+ "movementType",
1900
+ {
1901
+ get = function(self)
1902
+ return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
1903
+ end,
1904
+ set = function(self, movementType)
1905
+ setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
1906
+ end
1907
+ },
1908
+ true
1909
+ )
1652
1910
  __TS__SetDescriptor(
1653
1911
  Unit.prototype,
1654
1912
  "pathing",
@@ -1830,6 +2088,14 @@ __TS__SetDescriptor(
1830
2088
  end},
1831
2089
  true
1832
2090
  )
2091
+ __TS__SetDescriptor(
2092
+ Unit.prototype,
2093
+ "targetAcquiredEvent",
2094
+ {get = function(self)
2095
+ return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
2096
+ end},
2097
+ true
2098
+ )
1833
2099
  __TS__SetDescriptor(
1834
2100
  Unit.prototype,
1835
2101
  "onSelect",
@@ -1903,7 +2169,6 @@ Unit.onDecay = __TS__New(
1903
2169
  Unit.onResurrect = __TS__New(
1904
2170
  InitializingEvent,
1905
2171
  function(event)
1906
- local invoke = Event.invoke
1907
2172
  local dead = setmetatable({}, {__mode = "k"})
1908
2173
  ____exports.Unit.deathEvent:addListener(function(unit)
1909
2174
  dead[unit] = true
@@ -1919,10 +2184,15 @@ Unit.onResurrect = __TS__New(
1919
2184
  Unit.morphEvent = __TS__New(
1920
2185
  InitializingEvent,
1921
2186
  function(event)
2187
+ local function ifNotLeft(unit)
2188
+ local handle = unit.handle
2189
+ if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
2190
+ invoke(event, unit)
2191
+ end
2192
+ end
1922
2193
  ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
1923
2194
  if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
1924
- assert(unitAddAbility(unit.handle, morphDetectAbilityId))
1925
- Timer:run(Event.invoke, event, unit)
2195
+ Timer:run(ifNotLeft, unit)
1926
2196
  end
1927
2197
  end)
1928
2198
  end
@@ -1960,27 +2230,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
1960
2230
  Unit.onTargetCast = dispatchId(__TS__New(
1961
2231
  InitializingEvent,
1962
2232
  function(event)
1963
- local invoke = Event.invoke
1964
2233
  local function listener(unit, id)
1965
- local ____GetSpellTargetUnit_result_5
2234
+ local ____GetSpellTargetUnit_result_9
1966
2235
  if GetSpellTargetUnit() then
1967
- ____GetSpellTargetUnit_result_5 = ____exports.Unit:of(GetSpellTargetUnit())
2236
+ ____GetSpellTargetUnit_result_9 = ____exports.Unit:of(GetSpellTargetUnit())
1968
2237
  else
1969
- local ____GetSpellTargetItem_result_4
2238
+ local ____GetSpellTargetItem_result_8
1970
2239
  if GetSpellTargetItem() then
1971
- ____GetSpellTargetItem_result_4 = Item:of(GetSpellTargetItem())
2240
+ ____GetSpellTargetItem_result_8 = Item:of(GetSpellTargetItem())
1972
2241
  else
1973
- local ____GetSpellTargetDestructable_result_3
2242
+ local ____GetSpellTargetDestructable_result_7
1974
2243
  if GetSpellTargetDestructable() then
1975
- ____GetSpellTargetDestructable_result_3 = Destructable:of(GetSpellTargetDestructable())
2244
+ ____GetSpellTargetDestructable_result_7 = Destructable:of(GetSpellTargetDestructable())
1976
2245
  else
1977
- ____GetSpellTargetDestructable_result_3 = nil
2246
+ ____GetSpellTargetDestructable_result_7 = nil
1978
2247
  end
1979
- ____GetSpellTargetItem_result_4 = ____GetSpellTargetDestructable_result_3
2248
+ ____GetSpellTargetItem_result_8 = ____GetSpellTargetDestructable_result_7
1980
2249
  end
1981
- ____GetSpellTargetUnit_result_5 = ____GetSpellTargetItem_result_4
2250
+ ____GetSpellTargetUnit_result_9 = ____GetSpellTargetItem_result_8
1982
2251
  end
1983
- local target = ____GetSpellTargetUnit_result_5
2252
+ local target = ____GetSpellTargetUnit_result_9
1984
2253
  if target then
1985
2254
  invoke(event, unit, id, target)
1986
2255
  end
@@ -2152,10 +2421,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
2152
2421
  ____exports.UnitTriggerEvent,
2153
2422
  EVENT_PLAYER_UNIT_ISSUED_ORDER,
2154
2423
  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
2424
+ local handle = getOrderedUnit()
2425
+ if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
2426
+ local unit = ____exports.Unit:of(handle)
2427
+ if unit.state == 1 then
2428
+ return unit, getIssuedOrderId()
2429
+ end
2159
2430
  end
2160
2431
  return IgnoreEvent
2161
2432
  end
@@ -2177,7 +2448,6 @@ Unit.autoAttackStartEvent = __TS__New(
2177
2448
  )
2178
2449
  Unit.onDamaging = (function()
2179
2450
  local event = __TS__New(Event)
2180
- local invoke = Event.invoke
2181
2451
  local trigger = CreateTrigger()
2182
2452
  TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
2183
2453
  TriggerAddCondition(
@@ -2187,13 +2457,19 @@ Unit.onDamaging = (function()
2187
2457
  if source and source.typeId == dummyUnitId then
2188
2458
  source = nil
2189
2459
  end
2190
- local target = BlzGetEventDamageTarget()
2460
+ local target = ____exports.Unit:of(BlzGetEventDamageTarget())
2461
+ local metadata = damageMetadataByTarget[target]
2462
+ damageMetadataByTarget[target] = nil
2191
2463
  local data = {
2192
2464
  amount = GetEventDamage(),
2193
- attackType = BlzGetEventAttackType(),
2465
+ attackType = nativeToAttackType(BlzGetEventAttackType()),
2194
2466
  damageType = BlzGetEventDamageType(),
2195
2467
  weaponType = BlzGetEventWeaponType(),
2196
- isAttack = BlzGetEventIsAttack()
2468
+ metadata = metadata,
2469
+ isAttack = BlzGetEventIsAttack(),
2470
+ originalAmount = GetEventDamage(),
2471
+ originalMetadata = metadata,
2472
+ preventRetaliation = damagingEventPreventRetaliation
2197
2473
  }
2198
2474
  if data.isAttack and source then
2199
2475
  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
@@ -2207,18 +2483,36 @@ Unit.onDamaging = (function()
2207
2483
  invoke(
2208
2484
  event,
2209
2485
  source,
2210
- ____exports.Unit:of(target),
2486
+ target,
2211
2487
  setmetatable(
2212
2488
  {},
2213
2489
  {
2214
2490
  __index = data,
2215
2491
  __newindex = function(self, key, value)
2216
- damageSetters[key](value)
2492
+ local damageSetter = damageSetters[key]
2493
+ if damageSetter ~= nil then
2494
+ damageSetter(value)
2495
+ end
2217
2496
  data[key] = value
2218
2497
  end
2219
2498
  }
2220
2499
  )
2221
2500
  )
2501
+ if data[0] and source then
2502
+ local sourceOwner = source.owner.handle
2503
+ data[1] = sourceOwner
2504
+ local targetOwner = target.owner.handle
2505
+ data[2] = targetOwner
2506
+ if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
2507
+ SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
2508
+ data[3] = true
2509
+ end
2510
+ if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
2511
+ SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
2512
+ data[4] = true
2513
+ end
2514
+ end
2515
+ damagingEventByTarget[target] = data
2222
2516
  return
2223
2517
  end
2224
2518
  BlzSetEventDamage(0)
@@ -2226,7 +2520,7 @@ Unit.onDamaging = (function()
2226
2520
  BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
2227
2521
  BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
2228
2522
  local sourceOwner = source.owner.handle
2229
- local targetOwner = GetOwningPlayer(target)
2523
+ local targetOwner = target.owner.handle
2230
2524
  if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
2231
2525
  SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
2232
2526
  Timer:run(function()
@@ -2242,23 +2536,19 @@ Unit.onDamaging = (function()
2242
2536
  for ____, ____value in ipairs(source._attackHandlers) do
2243
2537
  local condition = ____value[1]
2244
2538
  local action = ____value[2]
2245
- if condition(
2246
- source,
2247
- ____exports.Unit:of(target),
2248
- data
2249
- ) then
2539
+ if condition(source, target, data) then
2250
2540
  action(
2251
2541
  source,
2252
- ____exports.Unit:of(target),
2542
+ target,
2253
2543
  setmetatable(
2254
2544
  {fire = function()
2255
2545
  UnitDamageTarget(
2256
2546
  source.handle,
2257
- target,
2547
+ target.handle,
2258
2548
  data.amount,
2259
2549
  true,
2260
2550
  true,
2261
- data.attackType,
2551
+ attackTypeToNative(data.attackType),
2262
2552
  data.damageType,
2263
2553
  data.weaponType
2264
2554
  )
@@ -2276,7 +2566,6 @@ end)()
2276
2566
  Unit.onDamage = __TS__New(
2277
2567
  InitializingEvent,
2278
2568
  function(event)
2279
- local invoke = Event.invoke
2280
2569
  local trigger = CreateTrigger()
2281
2570
  TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
2282
2571
  TriggerAddCondition(
@@ -2286,29 +2575,54 @@ Unit.onDamage = __TS__New(
2286
2575
  if source and source.typeId == dummyUnitId then
2287
2576
  source = nil
2288
2577
  end
2578
+ local target = ____exports.Unit:of(BlzGetEventDamageTarget())
2579
+ local damagingEvent = damagingEventByTarget[target]
2580
+ damagingEventByTarget[target] = nil
2289
2581
  local data = {
2290
2582
  amount = GetEventDamage(),
2291
- attackType = BlzGetEventAttackType(),
2583
+ attackType = nativeToAttackType(BlzGetEventAttackType()),
2292
2584
  damageType = BlzGetEventDamageType(),
2293
2585
  weaponType = BlzGetEventWeaponType(),
2586
+ metadata = damagingEvent and damagingEvent.metadata,
2294
2587
  isAttack = BlzGetEventIsAttack(),
2588
+ originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
2589
+ originalMetadata = damagingEvent and damagingEvent.originalMetadata,
2295
2590
  preventDeath = damageEventPreventDeath
2296
2591
  }
2592
+ if damagingEvent then
2593
+ for key, value in pairs(damagingEvent) do
2594
+ if isAttribute(key) then
2595
+ data[key] = value
2596
+ end
2597
+ end
2598
+ local sourceOwner = damagingEvent[1]
2599
+ if sourceOwner then
2600
+ local targetOwner = damagingEvent[2]
2601
+ if damagingEvent[3] then
2602
+ SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
2603
+ end
2604
+ if damagingEvent[4] then
2605
+ SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
2606
+ end
2607
+ end
2608
+ end
2297
2609
  local evData = setmetatable(
2298
2610
  {},
2299
2611
  {
2300
2612
  __index = data,
2301
2613
  __newindex = function(self, key, value)
2302
- damageSetters[key](value)
2614
+ local damageSetter = damageSetters[key]
2615
+ if damageSetter ~= nil then
2616
+ damageSetter(value)
2617
+ end
2303
2618
  data[key] = value
2304
2619
  end
2305
2620
  }
2306
2621
  )
2307
- local target = ____exports.Unit:of(BlzGetEventDamageTarget())
2308
2622
  invoke(event, source, target, evData)
2309
2623
  if evData[0] ~= nil and target.health - evData.amount < 0.405 then
2310
2624
  local bonusHealth = math.ceil(evData.amount)
2311
- target[102] = (target[102] or 0) + bonusHealth
2625
+ target[105] = (target[105] or 0) + bonusHealth
2312
2626
  BlzSetUnitMaxHP(
2313
2627
  target.handle,
2314
2628
  BlzGetUnitMaxHP(target.handle) + bonusHealth
@@ -2322,7 +2636,7 @@ Unit.onDamage = __TS__New(
2322
2636
  evData[0],
2323
2637
  table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
2324
2638
  )
2325
- target[102] = (target[102] or 0) - bonusHealth
2639
+ target[105] = (target[105] or 0) - bonusHealth
2326
2640
  SetWidgetLife(
2327
2641
  target.handle,
2328
2642
  GetWidgetLife(target.handle) - bonusHealth
@@ -2342,32 +2656,106 @@ Unit.onDamage = __TS__New(
2342
2656
  DestroyTrigger(trigger)
2343
2657
  end
2344
2658
  )
2345
- Unit.onItemDrop = __TS__New(
2659
+ Unit.itemDroppedEvent = __TS__New(
2346
2660
  ____exports.UnitTriggerEvent,
2347
2661
  EVENT_PLAYER_UNIT_DROP_ITEM,
2348
2662
  function()
2349
2663
  local unit = getTriggerUnit()
2350
- if getUnitTypeId(unit) ~= dummyUnitId then
2351
- return ____exports.Unit:of(unit), Item:of(getManipulatedItem())
2664
+ local item = getManipulatedItem()
2665
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2666
+ return ____exports.Unit:of(unit), Item:of(item)
2352
2667
  end
2353
2668
  return IgnoreEvent
2354
2669
  end
2355
2670
  )
2356
- Unit.onItemPickup = __TS__New(
2671
+ Unit.itemPickedUpEvent = __TS__New(
2357
2672
  ____exports.UnitTriggerEvent,
2358
2673
  EVENT_PLAYER_UNIT_PICKUP_ITEM,
2359
2674
  function()
2360
2675
  local unit = getTriggerUnit()
2361
- if getUnitTypeId(unit) ~= dummyUnitId then
2362
- return ____exports.Unit:of(unit), Item:of(getManipulatedItem())
2676
+ local item = getManipulatedItem()
2677
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2678
+ return ____exports.Unit:of(unit), Item:of(item)
2363
2679
  end
2364
2680
  return IgnoreEvent
2365
2681
  end
2366
2682
  )
2367
- Unit.onItemUse = __TS__New(
2683
+ Unit.itemUsedEvent = __TS__New(
2368
2684
  ____exports.UnitTriggerEvent,
2369
2685
  EVENT_PLAYER_UNIT_USE_ITEM,
2370
- function() return ____exports.Unit:of(GetTriggerUnit()), Item:of(GetManipulatedItem()) end
2686
+ function()
2687
+ local unit = getTriggerUnit()
2688
+ local item = getManipulatedItem()
2689
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2690
+ return ____exports.Unit:of(unit), Item:of(item)
2691
+ end
2692
+ return IgnoreEvent
2693
+ end
2694
+ )
2695
+ Unit.itemStackedEvent = __TS__New(
2696
+ ____exports.UnitTriggerEvent,
2697
+ EVENT_PLAYER_UNIT_STACK_ITEM,
2698
+ function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
2699
+ )
2700
+ __TS__ObjectDefineProperty(
2701
+ Unit,
2702
+ "itemChargesChangedEvent",
2703
+ {get = function(self)
2704
+ local event = __TS__New(Event)
2705
+ Item.chargesChangedEvent:addListener(function(item)
2706
+ local unit = item.owner
2707
+ if unit ~= nil then
2708
+ invoke(event, unit, item)
2709
+ end
2710
+ end)
2711
+ rawset(self, "itemChargesChangedEvent", event)
2712
+ return event
2713
+ end}
2714
+ )
2715
+ __TS__ObjectDefineProperty(
2716
+ Unit,
2717
+ "itemUseOrderEvent",
2718
+ {get = function(self)
2719
+ local event = __TS__New(Event)
2720
+ for order = orderId("useslot0"), orderId("useslot5") do
2721
+ local slot = order - orderId("useslot0")
2722
+ local function listener(unit)
2723
+ local item = unit.items[slot + 1]
2724
+ if item ~= nil then
2725
+ invoke(event, unit, item)
2726
+ end
2727
+ end
2728
+ self.onImmediateOrder[order]:addListener(listener)
2729
+ self.onTargetOrder[order]:addListener(listener)
2730
+ self.onPointOrder[order]:addListener(listener)
2731
+ end
2732
+ rawset(self, "itemUseOrderEvent", event)
2733
+ return event
2734
+ end}
2735
+ )
2736
+ __TS__ObjectDefineProperty(
2737
+ Unit,
2738
+ "itemMoveOrderEvent",
2739
+ {get = function(self)
2740
+ local event = __TS__New(Event)
2741
+ for order = orderId("moveslot0"), orderId("moveslot5") do
2742
+ local slotTo = order - orderId("moveslot0")
2743
+ self.onTargetOrder[order]:addListener(function(unit, item)
2744
+ local slotFrom = unit.items:findSlot(item)
2745
+ if slotFrom ~= nil then
2746
+ invoke(
2747
+ event,
2748
+ unit,
2749
+ item,
2750
+ slotFrom,
2751
+ slotTo
2752
+ )
2753
+ end
2754
+ end)
2755
+ end
2756
+ rawset(self, "itemMoveOrderEvent", event)
2757
+ return event
2758
+ end}
2371
2759
  )
2372
2760
  __TS__ObjectDefineProperty(
2373
2761
  Unit,