warscript 0.0.1-dev.e7b1f67 → 0.0.1-dev.ea10f2b

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 (155) hide show
  1. package/binaryreader.d.ts +1 -0
  2. package/binaryreader.lua +3 -0
  3. package/config.d.ts +5 -0
  4. package/config.lua +10 -0
  5. package/core/types/effect.d.ts +13 -3
  6. package/core/types/effect.lua +116 -17
  7. package/core/types/frame.d.ts +8 -0
  8. package/core/types/frame.lua +93 -1
  9. package/core/types/sound.d.ts +17 -24
  10. package/core/types/sound.lua +94 -24
  11. package/core/util.d.ts +1 -1
  12. package/core/util.lua +18 -1
  13. package/engine/behavior.d.ts +6 -6
  14. package/engine/behavior.lua +6 -6
  15. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  16. package/engine/behaviour/ability/always-enabled.lua +31 -0
  17. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  18. package/engine/behaviour/ability/apply-buff.lua +32 -0
  19. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  20. package/engine/behaviour/ability/damage.d.ts +36 -11
  21. package/engine/behaviour/ability/damage.lua +90 -32
  22. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  23. package/engine/behaviour/ability/emulate-impact.lua +28 -0
  24. package/engine/behaviour/ability/heal.d.ts +33 -6
  25. package/engine/behaviour/ability/heal.lua +89 -10
  26. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  27. package/engine/behaviour/ability/instant-impact.lua +4 -19
  28. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  29. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  30. package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
  31. package/engine/behaviour/ability/remove-buffs.lua +28 -0
  32. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  33. package/engine/behaviour/ability/restore-mana.lua +29 -0
  34. package/engine/behaviour/ability.d.ts +20 -4
  35. package/engine/behaviour/ability.lua +111 -38
  36. package/engine/behaviour/unit.d.ts +7 -0
  37. package/engine/behaviour/unit.lua +20 -0
  38. package/engine/buff.d.ts +101 -39
  39. package/engine/buff.lua +458 -203
  40. package/engine/game-map.d.ts +7 -0
  41. package/engine/game-map.lua +32 -0
  42. package/engine/internal/ability.d.ts +16 -13
  43. package/engine/internal/ability.lua +80 -76
  44. package/engine/internal/item/ability.lua +106 -0
  45. package/engine/internal/item+owner.lua +2 -2
  46. package/engine/internal/item.d.ts +2 -2
  47. package/engine/internal/item.lua +56 -25
  48. package/engine/internal/mechanics/ability-duration.lua +1 -1
  49. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  50. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  51. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  52. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  53. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  54. package/engine/internal/object-data/evasion-probability.lua +16 -0
  55. package/engine/internal/unit/ability.d.ts +10 -1
  56. package/engine/internal/unit/ability.lua +36 -14
  57. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  58. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  59. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  60. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  61. package/engine/internal/unit/bonus.d.ts +6 -2
  62. package/engine/internal/unit/bonus.lua +23 -1
  63. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  64. package/engine/internal/unit/ignore-events-items.lua +5 -0
  65. package/engine/internal/unit/item.d.ts +24 -0
  66. package/engine/internal/unit/item.lua +78 -0
  67. package/engine/internal/unit/main-selected.d.ts +13 -0
  68. package/engine/internal/unit/main-selected.lua +51 -0
  69. package/engine/internal/unit+ability.lua +2 -2
  70. package/engine/internal/unit+transport.lua +4 -10
  71. package/engine/internal/unit-missile-launch.lua +24 -5
  72. package/engine/internal/unit.d.ts +32 -11
  73. package/engine/internal/unit.lua +183 -88
  74. package/engine/internal/utility.lua +12 -0
  75. package/engine/lightning.d.ts +12 -5
  76. package/engine/lightning.lua +48 -14
  77. package/engine/local-client.d.ts +7 -2
  78. package/engine/local-client.lua +82 -0
  79. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  80. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  81. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  82. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  83. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  84. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  85. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  86. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  87. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  88. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  89. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  90. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  91. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  92. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  93. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  94. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  95. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  96. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  97. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  98. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  99. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  100. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  101. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  102. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  103. package/engine/object-data/entry/ability-type/web.lua +52 -0
  104. package/engine/object-data/entry/ability-type.d.ts +8 -6
  105. package/engine/object-data/entry/ability-type.lua +62 -27
  106. package/engine/object-data/entry/buff-type/applicable.lua +13 -37
  107. package/engine/object-data/entry/buff-type.d.ts +1 -1
  108. package/engine/object-data/entry/buff-type.lua +2 -2
  109. package/engine/object-data/entry/destructible-type.d.ts +1 -1
  110. package/engine/object-data/entry/item-type.d.ts +15 -1
  111. package/engine/object-data/entry/item-type.lua +93 -2
  112. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  113. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  114. package/engine/object-data/entry/sound-preset.lua +140 -0
  115. package/engine/object-data/entry/unit-type.d.ts +8 -1
  116. package/engine/object-data/entry/unit-type.lua +61 -8
  117. package/engine/object-data/entry/upgrade.d.ts +1 -1
  118. package/engine/object-data/entry/upgrade.lua +4 -4
  119. package/engine/object-data/entry.d.ts +16 -14
  120. package/engine/object-data/entry.lua +60 -32
  121. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  122. package/engine/object-field/ability.d.ts +26 -3
  123. package/engine/object-field/ability.lua +54 -1
  124. package/engine/object-field.d.ts +2 -2
  125. package/engine/object-field.lua +4 -0
  126. package/engine/standard/entries/sound-preset.d.ts +10 -0
  127. package/engine/standard/entries/sound-preset.lua +10 -0
  128. package/engine/standard/fields/ability.d.ts +2 -0
  129. package/engine/standard/fields/ability.lua +2 -0
  130. package/engine/unit.d.ts +3 -0
  131. package/engine/unit.lua +3 -0
  132. package/index.d.ts +1 -0
  133. package/index.lua +1 -0
  134. package/lualib_bundle.lua +7 -2
  135. package/net/socket.d.ts +7 -1
  136. package/net/socket.lua +45 -4
  137. package/network.d.ts +1 -0
  138. package/network.lua +3 -2
  139. package/objutil/buff.lua +1 -1
  140. package/objutil/unit.lua +8 -0
  141. package/package.json +2 -2
  142. package/patch-lua.d.ts +0 -0
  143. package/patch-lua.lua +10 -0
  144. package/property.d.ts +55 -0
  145. package/property.lua +374 -0
  146. package/utility/arrays.d.ts +8 -1
  147. package/utility/arrays.lua +34 -3
  148. package/utility/lazy.d.ts +2 -0
  149. package/utility/lazy.lua +14 -0
  150. package/utility/linked-set.d.ts +11 -2
  151. package/utility/linked-set.lua +5 -2
  152. package/utility/reflection.lua +11 -7
  153. package/utility/types.d.ts +1 -0
  154. package/core/mapbounds.d.ts +0 -8
  155. package/core/mapbounds.lua +0 -12
@@ -7,6 +7,9 @@ local __TS__Class = ____lualib.__TS__Class
7
7
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
8
8
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
9
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
10
13
  local __TS__InstanceOf = ____lualib.__TS__InstanceOf
11
14
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
12
15
  local Set = ____lualib.Set
@@ -48,11 +51,14 @@ local ____arrays = require("utility.arrays")
48
51
  local forEach = ____arrays.forEach
49
52
  local ____math = require("math")
50
53
  local min = ____math.min
54
+ local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
55
+ local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
51
56
  local match = string.match
52
57
  local ____tostring = _G.tostring
53
58
  local setUnitAnimation = SetUnitAnimation
54
59
  local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
55
60
  local setUnitAnimationByIndex = SetUnitAnimationByIndex
61
+ local resetUnitAnimation = ResetUnitAnimation
56
62
  local queueUnitAnimation = QueueUnitAnimation
57
63
  local getUnitIntegerField = BlzGetUnitIntegerField
58
64
  local getUnitRealField = BlzGetUnitRealField
@@ -72,6 +78,7 @@ local setUnitScale = SetUnitScale
72
78
  local setUnitPosition = SetUnitPosition
73
79
  local setUnitTimeScale = SetUnitTimeScale
74
80
  local getHandleId = GetHandleId
81
+ local getUnitCurrentOrder = GetUnitCurrentOrder
75
82
  local createUnit = CreateUnit
76
83
  local killUnit = KillUnit
77
84
  local setUnitExploded = SetUnitExploded
@@ -279,16 +286,14 @@ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
279
286
  end
280
287
  local function dispatch(event, idGetter, argsGetter)
281
288
  local initialized = false
282
- local x = {}
283
289
  return setmetatable(
284
- x,
290
+ {},
285
291
  {
286
292
  __index = function(self, id)
287
293
  if type(id) ~= "number" then
288
294
  return event[id]
289
295
  end
290
296
  if not initialized then
291
- local invoke = Event.invoke
292
297
  event:addListener(function(...)
293
298
  local id = idGetter(...)
294
299
  local dispatched = rawget(self, id)
@@ -326,7 +331,6 @@ local function dispatchAbility(event)
326
331
  return event[id]
327
332
  end
328
333
  if not initialized then
329
- local invoke = Event.invoke
330
334
  event:addListener(function(unit, ability, ...)
331
335
  local dispatched = rawget(self, ability.typeId)
332
336
  if dispatched ~= nil then
@@ -562,17 +566,6 @@ local function retrieveAbility(unit, ability, abilityId)
562
566
  ____exports.Unit:of(unit)
563
567
  )
564
568
  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
569
  for i = 0, unitInventorySize(unit) - 1 do
577
570
  local item = unitItemInSlot(unit, i)
578
571
  if getItemAbility(item, abilityId) == ability then
@@ -630,15 +623,15 @@ for ____, player in ipairs(Player.all) do
630
623
  dummies[player] = dummy
631
624
  end
632
625
  local function delayHealthChecksCallback(unit)
633
- local counter = (unit[102] or 0) - 1
626
+ local counter = (unit[103] or 0) - 1
634
627
  if counter ~= 0 then
635
- unit[102] = counter
628
+ unit[103] = counter
636
629
  return
637
630
  end
638
- unit[102] = nil
639
- local healthBonus = unit[103]
631
+ unit[103] = nil
632
+ local healthBonus = unit[104]
640
633
  if healthBonus ~= nil then
641
- unit[103] = nil
634
+ unit[104] = nil
642
635
  local handle = unit.handle
643
636
  BlzSetUnitMaxHP(
644
637
  handle,
@@ -646,12 +639,17 @@ local function delayHealthChecksCallback(unit)
646
639
  )
647
640
  end
648
641
  end
642
+ local nextSyncId = 1
643
+ local unitBySyncId = setmetatable({}, {__mode = "k"})
649
644
  ____exports.Unit = __TS__Class()
650
645
  local Unit = ____exports.Unit
651
646
  Unit.name = "Unit"
652
647
  __TS__ClassExtends(Unit, Handle)
653
648
  function Unit.prototype.____constructor(self, handle)
654
649
  Handle.prototype.____constructor(self, handle)
650
+ local ____nextSyncId_0 = nextSyncId
651
+ nextSyncId = ____nextSyncId_0 + 1
652
+ self.syncId = ____nextSyncId_0
655
653
  self._owner = Player:of(getOwningPlayer(handle))
656
654
  assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
657
655
  assert(unitAddAbility(handle, morphDetectAbilityId))
@@ -664,6 +662,7 @@ function Unit.prototype.____constructor(self, handle)
664
662
  fourCC("Amrf")
665
663
  ))
666
664
  end
665
+ unitBySyncId[self.syncId] = self
667
666
  local ____ = self.abilities
668
667
  end
669
668
  function Unit.prototype.getEvent(self, event, collector)
@@ -682,6 +681,8 @@ function Unit.prototype.getEvent(self, event, collector)
682
681
  end
683
682
  function Unit.prototype.onDestroy(self)
684
683
  local handle = self.handle
684
+ self[107] = getUnitX(handle)
685
+ self[108] = getUnitY(handle)
685
686
  if not self._owner then
686
687
  self._owner = Player:of(getOwningPlayer(handle))
687
688
  end
@@ -749,8 +750,8 @@ function Unit.prototype.addModifier(self, property, modifier)
749
750
  end}
750
751
  end
751
752
  function Unit.prototype.hasCombatClassification(self, combatClassification)
752
- local ____combatClassification_0 = combatClassification
753
- return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_0 == ____combatClassification_0
753
+ local ____combatClassification_1 = combatClassification
754
+ return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_1 == ____combatClassification_1
754
755
  end
755
756
  function Unit.prototype.addClassification(self, classification)
756
757
  return unitAddType(self.handle, classification)
@@ -768,13 +769,13 @@ function Unit.prototype.isInvisibleTo(self, player)
768
769
  return isUnitInvisible(self.handle, player.handle)
769
770
  end
770
771
  function Unit.prototype.isInRangeOf(self, x, y, range)
771
- local ____temp_1
772
+ local ____temp_2
772
773
  if type(x) == "number" then
773
- ____temp_1 = isUnitInRangeXY(self.handle, x, y, range)
774
+ ____temp_2 = isUnitInRangeXY(self.handle, x, y, range)
774
775
  else
775
- ____temp_1 = isUnitInRange(self.handle, x.handle, y)
776
+ ____temp_2 = isUnitInRange(self.handle, x.handle, y)
776
777
  end
777
- return ____temp_1
778
+ return ____temp_2
778
779
  end
779
780
  function Unit.prototype.isAllyOf(self, unit)
780
781
  return isUnitAlly(
@@ -797,11 +798,14 @@ function Unit.prototype.playAnimation(self, animation, rarity)
797
798
  setUnitAnimation(self.handle, animation)
798
799
  end
799
800
  end
801
+ function Unit.prototype.resetAnimation(self)
802
+ resetUnitAnimation(self.handle)
803
+ end
800
804
  function Unit.prototype.queueAnimation(self, animation)
801
805
  queueUnitAnimation(self.handle, animation)
802
806
  end
803
807
  function Unit.prototype.delayHealthChecks(self)
804
- self[102] = (self[102] or 0) + 1
808
+ self[103] = (self[103] or 0) + 1
805
809
  Timer:run(delayHealthChecksCallback, self)
806
810
  end
807
811
  function Unit.prototype.setPosition(self, x, y)
@@ -817,8 +821,15 @@ end
817
821
  function Unit.prototype.kill(self)
818
822
  killUnit(self.handle)
819
823
  end
820
- function Unit.prototype.revive(self, pos, doEffect)
821
- ReviveHero(self.handle, pos.x, pos.y, doEffect)
824
+ function Unit.prototype.revive(self, x, y, doEffect)
825
+ local ____ReviveHero_5 = ReviveHero
826
+ local ____array_4 = __TS__SparseArrayNew(self.handle, x, y)
827
+ local ____doEffect_3 = doEffect
828
+ if ____doEffect_3 == nil then
829
+ ____doEffect_3 = false
830
+ end
831
+ __TS__SparseArrayPush(____array_4, ____doEffect_3)
832
+ ____ReviveHero_5(__TS__SparseArraySpread(____array_4))
822
833
  end
823
834
  function Unit.prototype.healTarget(self, target, amount)
824
835
  if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
@@ -858,7 +869,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
858
869
  return UnitDropItemSlot(self.handle, item.handle, slot)
859
870
  end
860
871
  function Unit.prototype.itemInSlot(self, slot)
861
- return Item:of(UnitItemInSlot(self.handle, slot))
872
+ return Item:of(unitItemInSlot(self.handle, slot))
862
873
  end
863
874
  function Unit.prototype.addAbility(self, abilityId)
864
875
  if unitAddAbility(self.handle, abilityId) then
@@ -927,8 +938,15 @@ function Unit.prototype.interruptAttack(self)
927
938
  unitInterruptAttack(self.handle)
928
939
  end
929
940
  function Unit.prototype.interruptCast(self, abilityId)
930
- unitDisableAbility(self.handle, abilityId, true, false)
931
- unitDisableAbility(self.handle, abilityId, false, false)
941
+ local handle = self.handle
942
+ unitDisableAbility(handle, abilityId, true, false)
943
+ Timer:run(
944
+ unitDisableAbility,
945
+ handle,
946
+ abilityId,
947
+ false,
948
+ false
949
+ )
932
950
  end
933
951
  function Unit.prototype.getDistanceTo(self, target)
934
952
  local handle = self.handle
@@ -988,18 +1006,18 @@ function Unit.prototype.unpauseEx(self)
988
1006
  self:decrementStunCounter()
989
1007
  end
990
1008
  function Unit.prototype.incrementStunCounter(self)
991
- local stunCounter = self[101] or 0
992
- if not self[100] or stunCounter >= 0 then
1009
+ local stunCounter = self[102] or 0
1010
+ if not self[101] or stunCounter >= 0 then
993
1011
  BlzPauseUnitEx(self.handle, true)
994
1012
  end
995
- self[101] = stunCounter + 1
1013
+ self[102] = stunCounter + 1
996
1014
  end
997
1015
  function Unit.prototype.decrementStunCounter(self)
998
- local stunCounter = self[101] or 0
999
- if not self[100] or stunCounter >= 1 then
1016
+ local stunCounter = self[102] or 0
1017
+ if not self[101] or stunCounter >= 1 then
1000
1018
  BlzPauseUnitEx(self.handle, false)
1001
1019
  end
1002
- self[101] = stunCounter - 1
1020
+ self[102] = stunCounter - 1
1003
1021
  end
1004
1022
  function Unit.create(self, owner, id, x, y, facing, skinId)
1005
1023
  local handle = skinId and BlzCreateUnitWithSkin(
@@ -1101,8 +1119,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
1101
1119
  )
1102
1120
  return targetCollection
1103
1121
  end
1104
- function Unit.getSelectionOf(self, player)
1105
- targetCollection = {}
1122
+ function Unit.getSelectionOf(self, player, target)
1123
+ if target == nil then
1124
+ target = {}
1125
+ end
1126
+ targetCollection = target
1106
1127
  targetCollectionNextIndex = 1
1107
1128
  GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
1108
1129
  return targetCollection
@@ -1124,6 +1145,9 @@ end
1124
1145
  function Unit.prototype.__tostring(self)
1125
1146
  return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
1126
1147
  end
1148
+ function Unit.getBySyncId(self, syncId)
1149
+ return unitBySyncId[syncId]
1150
+ end
1127
1151
  __TS__SetDescriptor(
1128
1152
  Unit.prototype,
1129
1153
  "_deltas",
@@ -1187,6 +1211,14 @@ __TS__SetDescriptor(
1187
1211
  end},
1188
1212
  true
1189
1213
  )
1214
+ __TS__SetDescriptor(
1215
+ Unit.prototype,
1216
+ "isStunned",
1217
+ {get = function(self)
1218
+ return getUnitCurrentOrder(self.handle) == orderId("stunned")
1219
+ end},
1220
+ true
1221
+ )
1190
1222
  __TS__SetDescriptor(
1191
1223
  Unit.prototype,
1192
1224
  "combatClassifications",
@@ -1381,17 +1413,17 @@ __TS__SetDescriptor(
1381
1413
  "isTeamGlowVisible",
1382
1414
  {
1383
1415
  get = function(self)
1384
- return not self[105]
1416
+ return not self[106]
1385
1417
  end,
1386
1418
  set = function(self, isTeamGlowVisible)
1387
1419
  showUnitTeamGlow(self.handle, isTeamGlowVisible)
1388
- local ____temp_2
1420
+ local ____temp_6
1389
1421
  if not isTeamGlowVisible then
1390
- ____temp_2 = true
1422
+ ____temp_6 = true
1391
1423
  else
1392
- ____temp_2 = nil
1424
+ ____temp_6 = nil
1393
1425
  end
1394
- self[105] = ____temp_2
1426
+ self[106] = ____temp_6
1395
1427
  end
1396
1428
  },
1397
1429
  true
@@ -1401,7 +1433,7 @@ __TS__SetDescriptor(
1401
1433
  "color",
1402
1434
  {set = function(self, color)
1403
1435
  setUnitColor(self.handle, color.handle)
1404
- if self[105] then
1436
+ if self[106] then
1405
1437
  showUnitTeamGlow(self.handle, false)
1406
1438
  end
1407
1439
  end},
@@ -1425,14 +1457,14 @@ __TS__SetDescriptor(
1425
1457
  "maxHealth",
1426
1458
  {
1427
1459
  get = function(self)
1428
- return BlzGetUnitMaxHP(self.handle) - (self[103] or 0) - (self[104] or 0)
1460
+ return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
1429
1461
  end,
1430
1462
  set = function(self, maxHealth)
1431
- if maxHealth < 1 and self[102] ~= nil then
1432
- self[103] = (self[103] or 0) + (1 - maxHealth)
1463
+ if maxHealth < 1 and self[103] ~= nil then
1464
+ self[104] = (self[104] or 0) + (1 - maxHealth)
1433
1465
  maxHealth = 1
1434
1466
  end
1435
- BlzSetUnitMaxHP(self.handle, maxHealth + (self[104] or 0))
1467
+ BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
1436
1468
  end
1437
1469
  },
1438
1470
  true
@@ -1474,10 +1506,10 @@ __TS__SetDescriptor(
1474
1506
  "health",
1475
1507
  {
1476
1508
  get = function(self)
1477
- return GetWidgetLife(self.handle) - (self[104] or 0)
1509
+ return GetWidgetLife(self.handle) - (self[105] or 0)
1478
1510
  end,
1479
1511
  set = function(self, health)
1480
- SetWidgetLife(self.handle, health + (self[104] or 0))
1512
+ SetWidgetLife(self.handle, health + (self[105] or 0))
1481
1513
  end
1482
1514
  },
1483
1515
  true
@@ -1571,7 +1603,7 @@ __TS__SetDescriptor(
1571
1603
  "x",
1572
1604
  {
1573
1605
  get = function(self)
1574
- return getUnitX(self.handle)
1606
+ return self[107] or getUnitX(self.handle)
1575
1607
  end,
1576
1608
  set = function(self, v)
1577
1609
  SetUnitX(self.handle, v)
@@ -1584,7 +1616,7 @@ __TS__SetDescriptor(
1584
1616
  "y",
1585
1617
  {
1586
1618
  get = function(self)
1587
- return getUnitY(self.handle)
1619
+ return self[108] or getUnitY(self.handle)
1588
1620
  end,
1589
1621
  set = function(self, v)
1590
1622
  SetUnitY(self.handle, v)
@@ -1688,17 +1720,17 @@ __TS__SetDescriptor(
1688
1720
  set = function(self, isPaused)
1689
1721
  local handle = self.handle
1690
1722
  if isPaused and not IsUnitPaused(handle) then
1691
- self[100] = true
1692
- for _ = self[101] or 0, -1 do
1723
+ self[101] = true
1724
+ for _ = self[102] or 0, -1 do
1693
1725
  BlzPauseUnitEx(handle, true)
1694
1726
  end
1695
1727
  PauseUnit(handle, true)
1696
1728
  elseif not isPaused and IsUnitPaused(handle) then
1697
1729
  PauseUnit(handle, false)
1698
- for _ = self[101] or 0, -1 do
1730
+ for _ = self[102] or 0, -1 do
1699
1731
  BlzPauseUnitEx(handle, false)
1700
1732
  end
1701
- self[100] = nil
1733
+ self[101] = nil
1702
1734
  end
1703
1735
  end
1704
1736
  },
@@ -2055,7 +2087,6 @@ Unit.onDecay = __TS__New(
2055
2087
  Unit.onResurrect = __TS__New(
2056
2088
  InitializingEvent,
2057
2089
  function(event)
2058
- local invoke = Event.invoke
2059
2090
  local dead = setmetatable({}, {__mode = "k"})
2060
2091
  ____exports.Unit.deathEvent:addListener(function(unit)
2061
2092
  dead[unit] = true
@@ -2071,10 +2102,15 @@ Unit.onResurrect = __TS__New(
2071
2102
  Unit.morphEvent = __TS__New(
2072
2103
  InitializingEvent,
2073
2104
  function(event)
2105
+ local function ifNotLeft(unit)
2106
+ local handle = unit.handle
2107
+ if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
2108
+ invoke(event, unit)
2109
+ end
2110
+ end
2074
2111
  ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2075
2112
  if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
2076
- assert(unitAddAbility(unit.handle, morphDetectAbilityId))
2077
- Timer:run(Event.invoke, event, unit)
2113
+ Timer:run(ifNotLeft, unit)
2078
2114
  end
2079
2115
  end)
2080
2116
  end
@@ -2112,27 +2148,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
2112
2148
  Unit.onTargetCast = dispatchId(__TS__New(
2113
2149
  InitializingEvent,
2114
2150
  function(event)
2115
- local invoke = Event.invoke
2116
2151
  local function listener(unit, id)
2117
- local ____GetSpellTargetUnit_result_5
2152
+ local ____GetSpellTargetUnit_result_9
2118
2153
  if GetSpellTargetUnit() then
2119
- ____GetSpellTargetUnit_result_5 = ____exports.Unit:of(GetSpellTargetUnit())
2154
+ ____GetSpellTargetUnit_result_9 = ____exports.Unit:of(GetSpellTargetUnit())
2120
2155
  else
2121
- local ____GetSpellTargetItem_result_4
2156
+ local ____GetSpellTargetItem_result_8
2122
2157
  if GetSpellTargetItem() then
2123
- ____GetSpellTargetItem_result_4 = Item:of(GetSpellTargetItem())
2158
+ ____GetSpellTargetItem_result_8 = Item:of(GetSpellTargetItem())
2124
2159
  else
2125
- local ____GetSpellTargetDestructable_result_3
2160
+ local ____GetSpellTargetDestructable_result_7
2126
2161
  if GetSpellTargetDestructable() then
2127
- ____GetSpellTargetDestructable_result_3 = Destructable:of(GetSpellTargetDestructable())
2162
+ ____GetSpellTargetDestructable_result_7 = Destructable:of(GetSpellTargetDestructable())
2128
2163
  else
2129
- ____GetSpellTargetDestructable_result_3 = nil
2164
+ ____GetSpellTargetDestructable_result_7 = nil
2130
2165
  end
2131
- ____GetSpellTargetItem_result_4 = ____GetSpellTargetDestructable_result_3
2166
+ ____GetSpellTargetItem_result_8 = ____GetSpellTargetDestructable_result_7
2132
2167
  end
2133
- ____GetSpellTargetUnit_result_5 = ____GetSpellTargetItem_result_4
2168
+ ____GetSpellTargetUnit_result_9 = ____GetSpellTargetItem_result_8
2134
2169
  end
2135
- local target = ____GetSpellTargetUnit_result_5
2170
+ local target = ____GetSpellTargetUnit_result_9
2136
2171
  if target then
2137
2172
  invoke(event, unit, id, target)
2138
2173
  end
@@ -2304,10 +2339,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
2304
2339
  ____exports.UnitTriggerEvent,
2305
2340
  EVENT_PLAYER_UNIT_ISSUED_ORDER,
2306
2341
  function()
2307
- local unit = ____exports.Unit:of(getOrderedUnit())
2308
- local issuedOrderId = getIssuedOrderId()
2309
- if unit ~= nil and unit.state == 1 then
2310
- return unit, issuedOrderId
2342
+ local handle = getOrderedUnit()
2343
+ if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
2344
+ local unit = ____exports.Unit:of(handle)
2345
+ if unit.state == 1 then
2346
+ return unit, getIssuedOrderId()
2347
+ end
2311
2348
  end
2312
2349
  return IgnoreEvent
2313
2350
  end
@@ -2329,7 +2366,6 @@ Unit.autoAttackStartEvent = __TS__New(
2329
2366
  )
2330
2367
  Unit.onDamaging = (function()
2331
2368
  local event = __TS__New(Event)
2332
- local invoke = Event.invoke
2333
2369
  local trigger = CreateTrigger()
2334
2370
  TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
2335
2371
  TriggerAddCondition(
@@ -2428,7 +2464,6 @@ end)()
2428
2464
  Unit.onDamage = __TS__New(
2429
2465
  InitializingEvent,
2430
2466
  function(event)
2431
- local invoke = Event.invoke
2432
2467
  local trigger = CreateTrigger()
2433
2468
  TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
2434
2469
  TriggerAddCondition(
@@ -2444,6 +2479,7 @@ Unit.onDamage = __TS__New(
2444
2479
  damageType = BlzGetEventDamageType(),
2445
2480
  weaponType = BlzGetEventWeaponType(),
2446
2481
  isAttack = BlzGetEventIsAttack(),
2482
+ originalAmount = GetEventDamage(),
2447
2483
  preventDeath = damageEventPreventDeath
2448
2484
  }
2449
2485
  local evData = setmetatable(
@@ -2460,7 +2496,7 @@ Unit.onDamage = __TS__New(
2460
2496
  invoke(event, source, target, evData)
2461
2497
  if evData[0] ~= nil and target.health - evData.amount < 0.405 then
2462
2498
  local bonusHealth = math.ceil(evData.amount)
2463
- target[104] = (target[104] or 0) + bonusHealth
2499
+ target[105] = (target[105] or 0) + bonusHealth
2464
2500
  BlzSetUnitMaxHP(
2465
2501
  target.handle,
2466
2502
  BlzGetUnitMaxHP(target.handle) + bonusHealth
@@ -2474,7 +2510,7 @@ Unit.onDamage = __TS__New(
2474
2510
  evData[0],
2475
2511
  table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
2476
2512
  )
2477
- target[104] = (target[104] or 0) - bonusHealth
2513
+ target[105] = (target[105] or 0) - bonusHealth
2478
2514
  SetWidgetLife(
2479
2515
  target.handle,
2480
2516
  GetWidgetLife(target.handle) - bonusHealth
@@ -2494,32 +2530,91 @@ Unit.onDamage = __TS__New(
2494
2530
  DestroyTrigger(trigger)
2495
2531
  end
2496
2532
  )
2497
- Unit.onItemDrop = __TS__New(
2533
+ Unit.itemDroppedEvent = __TS__New(
2498
2534
  ____exports.UnitTriggerEvent,
2499
2535
  EVENT_PLAYER_UNIT_DROP_ITEM,
2500
2536
  function()
2501
2537
  local unit = getTriggerUnit()
2502
- if getUnitTypeId(unit) ~= dummyUnitId then
2503
- return ____exports.Unit:of(unit), Item:of(getManipulatedItem())
2538
+ local item = getManipulatedItem()
2539
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2540
+ return ____exports.Unit:of(unit), Item:of(item)
2504
2541
  end
2505
2542
  return IgnoreEvent
2506
2543
  end
2507
2544
  )
2508
- Unit.onItemPickup = __TS__New(
2545
+ Unit.itemPickedUpEvent = __TS__New(
2509
2546
  ____exports.UnitTriggerEvent,
2510
2547
  EVENT_PLAYER_UNIT_PICKUP_ITEM,
2511
2548
  function()
2512
2549
  local unit = getTriggerUnit()
2513
- if getUnitTypeId(unit) ~= dummyUnitId then
2514
- return ____exports.Unit:of(unit), Item:of(getManipulatedItem())
2550
+ local item = getManipulatedItem()
2551
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2552
+ return ____exports.Unit:of(unit), Item:of(item)
2515
2553
  end
2516
2554
  return IgnoreEvent
2517
2555
  end
2518
2556
  )
2519
- Unit.onItemUse = __TS__New(
2557
+ Unit.itemUsedEvent = __TS__New(
2520
2558
  ____exports.UnitTriggerEvent,
2521
2559
  EVENT_PLAYER_UNIT_USE_ITEM,
2522
- function() return ____exports.Unit:of(GetTriggerUnit()), Item:of(GetManipulatedItem()) end
2560
+ function()
2561
+ local unit = getTriggerUnit()
2562
+ local item = getManipulatedItem()
2563
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2564
+ return ____exports.Unit:of(unit), Item:of(item)
2565
+ end
2566
+ return IgnoreEvent
2567
+ end
2568
+ )
2569
+ Unit.itemStackedEvent = __TS__New(
2570
+ ____exports.UnitTriggerEvent,
2571
+ EVENT_PLAYER_UNIT_STACK_ITEM,
2572
+ function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
2573
+ )
2574
+ __TS__ObjectDefineProperty(
2575
+ Unit,
2576
+ "itemUseOrderEvent",
2577
+ {get = function(self)
2578
+ local event = __TS__New(Event)
2579
+ for order = orderId("useslot0"), orderId("useslot5") do
2580
+ local slot = order - orderId("useslot0")
2581
+ local function listener(unit)
2582
+ local item = unit.items[slot + 1]
2583
+ if item ~= nil then
2584
+ invoke(event, unit, item)
2585
+ end
2586
+ end
2587
+ self.onImmediateOrder[order]:addListener(listener)
2588
+ self.onTargetOrder[order]:addListener(listener)
2589
+ self.onPointOrder[order]:addListener(listener)
2590
+ end
2591
+ rawset(self, "itemUseOrderEvent", event)
2592
+ return event
2593
+ end}
2594
+ )
2595
+ __TS__ObjectDefineProperty(
2596
+ Unit,
2597
+ "itemMoveOrderEvent",
2598
+ {get = function(self)
2599
+ local event = __TS__New(Event)
2600
+ for order = orderId("moveslot0"), orderId("moveslot5") do
2601
+ local slotTo = order - orderId("moveslot0")
2602
+ self.onTargetOrder[order]:addListener(function(unit, item)
2603
+ local slotFrom = unit.items:findSlot(item)
2604
+ if slotFrom ~= nil then
2605
+ invoke(
2606
+ event,
2607
+ unit,
2608
+ item,
2609
+ slotFrom,
2610
+ slotTo
2611
+ )
2612
+ end
2613
+ end)
2614
+ end
2615
+ rawset(self, "itemMoveOrderEvent", event)
2616
+ return event
2617
+ end}
2523
2618
  )
2524
2619
  __TS__ObjectDefineProperty(
2525
2620
  Unit,
@@ -1,6 +1,8 @@
1
1
  local ____exports = {}
2
2
  local getUnitAbility = BlzGetUnitAbility
3
3
  local unitAddAbility = UnitAddAbility
4
+ local unitInventorySize = UnitInventorySize
5
+ local unitItemInSlot = UnitItemInSlot
4
6
  local unitMakeAbilityPermanent = UnitMakeAbilityPermanent
5
7
  ---
6
8
  -- @internal For use by internal systems only.
@@ -10,4 +12,14 @@ ____exports.addInternalAbility = function(unit, abilityTypeId)
10
12
  end
11
13
  return getUnitAbility(unit, abilityTypeId)
12
14
  end
15
+ ---
16
+ -- @internal For use by internal systems only.
17
+ ____exports.findUnitItemSlot = function(unit, item)
18
+ for slot = 0, unitInventorySize(unit) - 1 do
19
+ if item == unitItemInSlot(unit, slot) then
20
+ return slot
21
+ end
22
+ end
23
+ return nil
24
+ end
13
25
  return ____exports
@@ -1,7 +1,7 @@
1
1
  /** @noSelfInFile */
2
2
  import { LightningTypeId } from "./object-data/entry/lightning-type";
3
- import { Handle, HandleDestructor } from "../core/types/handle";
4
3
  import { Unit } from "../core/types/unit";
4
+ import { AbstractDestroyable, Destructor } from "../destroyable";
5
5
  declare const enum LightningPropertyKey {
6
6
  CHECK_VISIBILITY = 100,
7
7
  SOURCE_UNIT = 101,
@@ -12,10 +12,12 @@ declare const enum LightningPropertyKey {
12
12
  TARGET_X = 106,
13
13
  TARGET_Y = 107,
14
14
  TARGET_Z = 108,
15
- DURATION = 109
15
+ DURATION = 109,
16
+ FADING = 110
16
17
  }
17
18
  export type LightningConstructor<T extends Lightning> = typeof Lightning & (new (handle: jlightning, typeId: LightningTypeId) => T);
18
- export declare class Lightning extends Handle<jlightning> {
19
+ export declare class Lightning extends AbstractDestroyable {
20
+ readonly handle: jlightning;
19
21
  readonly typeId: LightningTypeId;
20
22
  private [LightningPropertyKey.CHECK_VISIBILITY]?;
21
23
  private [LightningPropertyKey.SOURCE_UNIT]?;
@@ -27,8 +29,9 @@ export declare class Lightning extends Handle<jlightning> {
27
29
  private [LightningPropertyKey.TARGET_Y]?;
28
30
  private [LightningPropertyKey.TARGET_Z]?;
29
31
  private [LightningPropertyKey.DURATION]?;
32
+ private [LightningPropertyKey.FADING]?;
30
33
  constructor(handle: jlightning, typeId: LightningTypeId);
31
- protected onDestroy(): HandleDestructor;
34
+ protected onDestroy(): Destructor;
32
35
  static create<T extends Lightning>(this: LightningConstructor<T>, typeId: LightningTypeId, ...parameters: [
33
36
  ...checkVisibility: [boolean] | [],
34
37
  ...sourceAndTarget: [sourceX: number, sourceY: number, targetX: number, targetY: number] | [
@@ -46,6 +49,10 @@ export declare class Lightning extends Handle<jlightning> {
46
49
  target: Unit
47
50
  ]
48
51
  ]): T;
49
- static flash(...parameters: [...parameters: Parameters<(typeof Lightning)["create"]>, duration: number]): void;
52
+ static flash(...parameters: [
53
+ ...parameters: Parameters<(typeof Lightning)["create"]>,
54
+ duration: number,
55
+ fading?: boolean
56
+ ]): void;
50
57
  }
51
58
  export {};