warscript 0.0.1-dev.ff2a62d → 0.0.1-dev.ff5dbcd

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 (123) hide show
  1. package/config.d.ts +5 -0
  2. package/config.lua +10 -0
  3. package/core/types/effect.d.ts +13 -3
  4. package/core/types/effect.lua +116 -17
  5. package/core/types/frame.d.ts +6 -0
  6. package/core/types/frame.lua +91 -1
  7. package/core/types/sound.d.ts +1 -0
  8. package/core/types/sound.lua +36 -2
  9. package/core/util.d.ts +1 -1
  10. package/core/util.lua +18 -1
  11. package/engine/behavior.d.ts +2 -2
  12. package/engine/behavior.lua +6 -6
  13. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  14. package/engine/behaviour/ability/always-enabled.lua +31 -0
  15. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  16. package/engine/behaviour/ability/apply-buff.lua +32 -0
  17. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  18. package/engine/behaviour/ability/emulate-impact.lua +28 -0
  19. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  20. package/engine/behaviour/ability/instant-impact.lua +4 -19
  21. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  22. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  23. package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
  24. package/engine/behaviour/ability/remove-buffs.lua +28 -0
  25. package/engine/behaviour/ability.d.ts +15 -3
  26. package/engine/behaviour/ability.lua +93 -34
  27. package/engine/behaviour/unit.d.ts +5 -0
  28. package/engine/behaviour/unit.lua +20 -0
  29. package/engine/buff.d.ts +78 -42
  30. package/engine/buff.lua +351 -223
  31. package/engine/internal/ability.d.ts +16 -13
  32. package/engine/internal/ability.lua +80 -76
  33. package/engine/internal/item/ability.lua +106 -0
  34. package/engine/internal/item+owner.lua +2 -2
  35. package/engine/internal/item.d.ts +2 -2
  36. package/engine/internal/item.lua +56 -25
  37. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  38. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  39. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  40. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  41. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  42. package/engine/internal/object-data/evasion-probability.lua +16 -0
  43. package/engine/internal/unit/ability.d.ts +10 -1
  44. package/engine/internal/unit/ability.lua +36 -14
  45. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  46. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  47. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  48. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  49. package/engine/internal/unit/bonus.d.ts +6 -2
  50. package/engine/internal/unit/bonus.lua +23 -1
  51. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  52. package/engine/internal/unit/ignore-events-items.lua +5 -0
  53. package/engine/internal/unit/item.d.ts +24 -0
  54. package/engine/internal/unit/item.lua +78 -0
  55. package/engine/internal/unit/main-selected.d.ts +13 -0
  56. package/engine/internal/unit/main-selected.lua +51 -0
  57. package/engine/internal/unit+ability.lua +2 -2
  58. package/engine/internal/unit-missile-launch.lua +24 -5
  59. package/engine/internal/unit.d.ts +26 -10
  60. package/engine/internal/unit.lua +162 -81
  61. package/engine/internal/utility.lua +12 -0
  62. package/engine/lightning.d.ts +12 -5
  63. package/engine/lightning.lua +48 -14
  64. package/engine/local-client.d.ts +7 -2
  65. package/engine/local-client.lua +82 -0
  66. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  67. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  68. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  69. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  70. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  71. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  72. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  73. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  74. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  75. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  76. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  77. package/engine/object-data/entry/ability-type.d.ts +8 -6
  78. package/engine/object-data/entry/ability-type.lua +62 -27
  79. package/engine/object-data/entry/buff-type/applicable.lua +13 -37
  80. package/engine/object-data/entry/buff-type.d.ts +1 -1
  81. package/engine/object-data/entry/buff-type.lua +2 -2
  82. package/engine/object-data/entry/destructible-type.d.ts +1 -1
  83. package/engine/object-data/entry/item-type.d.ts +15 -1
  84. package/engine/object-data/entry/item-type.lua +93 -2
  85. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  86. package/engine/object-data/entry/sound-preset.d.ts +16 -0
  87. package/engine/object-data/entry/sound-preset.lua +36 -0
  88. package/engine/object-data/entry/unit-type.d.ts +8 -1
  89. package/engine/object-data/entry/unit-type.lua +61 -8
  90. package/engine/object-data/entry/upgrade.d.ts +1 -1
  91. package/engine/object-data/entry/upgrade.lua +4 -4
  92. package/engine/object-data/entry.d.ts +16 -14
  93. package/engine/object-data/entry.lua +60 -32
  94. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  95. package/engine/object-field/ability.d.ts +26 -3
  96. package/engine/object-field/ability.lua +54 -1
  97. package/engine/object-field.d.ts +2 -2
  98. package/engine/object-field.lua +4 -0
  99. package/engine/standard/entries/sound-preset.d.ts +10 -0
  100. package/engine/standard/entries/sound-preset.lua +10 -0
  101. package/engine/standard/fields/ability.d.ts +2 -0
  102. package/engine/standard/fields/ability.lua +2 -0
  103. package/engine/unit.d.ts +3 -0
  104. package/engine/unit.lua +3 -0
  105. package/index.d.ts +1 -0
  106. package/index.lua +1 -0
  107. package/net/socket.d.ts +7 -1
  108. package/net/socket.lua +45 -4
  109. package/network.d.ts +1 -0
  110. package/network.lua +3 -2
  111. package/objutil/buff.lua +1 -1
  112. package/objutil/unit.lua +8 -0
  113. package/package.json +2 -2
  114. package/patch-lua.d.ts +0 -0
  115. package/patch-lua.lua +10 -0
  116. package/utility/arrays.d.ts +8 -1
  117. package/utility/arrays.lua +34 -3
  118. package/utility/lazy.d.ts +2 -0
  119. package/utility/lazy.lua +14 -0
  120. package/utility/linked-set.d.ts +11 -2
  121. package/utility/linked-set.lua +5 -2
  122. package/utility/reflection.lua +11 -7
  123. package/utility/types.d.ts +1 -0
@@ -51,6 +51,8 @@ local ____arrays = require("utility.arrays")
51
51
  local forEach = ____arrays.forEach
52
52
  local ____math = require("math")
53
53
  local min = ____math.min
54
+ local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
55
+ local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
54
56
  local match = string.match
55
57
  local ____tostring = _G.tostring
56
58
  local setUnitAnimation = SetUnitAnimation
@@ -75,6 +77,7 @@ local setUnitScale = SetUnitScale
75
77
  local setUnitPosition = SetUnitPosition
76
78
  local setUnitTimeScale = SetUnitTimeScale
77
79
  local getHandleId = GetHandleId
80
+ local getUnitCurrentOrder = GetUnitCurrentOrder
78
81
  local createUnit = CreateUnit
79
82
  local killUnit = KillUnit
80
83
  local setUnitExploded = SetUnitExploded
@@ -562,17 +565,6 @@ local function retrieveAbility(unit, ability, abilityId)
562
565
  ____exports.Unit:of(unit)
563
566
  )
564
567
  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
568
  for i = 0, unitInventorySize(unit) - 1 do
577
569
  local item = unitItemInSlot(unit, i)
578
570
  if getItemAbility(item, abilityId) == ability then
@@ -630,15 +622,15 @@ for ____, player in ipairs(Player.all) do
630
622
  dummies[player] = dummy
631
623
  end
632
624
  local function delayHealthChecksCallback(unit)
633
- local counter = (unit[102] or 0) - 1
625
+ local counter = (unit[103] or 0) - 1
634
626
  if counter ~= 0 then
635
- unit[102] = counter
627
+ unit[103] = counter
636
628
  return
637
629
  end
638
- unit[102] = nil
639
- local healthBonus = unit[103]
630
+ unit[103] = nil
631
+ local healthBonus = unit[104]
640
632
  if healthBonus ~= nil then
641
- unit[103] = nil
633
+ unit[104] = nil
642
634
  local handle = unit.handle
643
635
  BlzSetUnitMaxHP(
644
636
  handle,
@@ -646,12 +638,17 @@ local function delayHealthChecksCallback(unit)
646
638
  )
647
639
  end
648
640
  end
641
+ local nextSyncId = 1
642
+ local unitBySyncId = setmetatable({}, {__mode = "k"})
649
643
  ____exports.Unit = __TS__Class()
650
644
  local Unit = ____exports.Unit
651
645
  Unit.name = "Unit"
652
646
  __TS__ClassExtends(Unit, Handle)
653
647
  function Unit.prototype.____constructor(self, handle)
654
648
  Handle.prototype.____constructor(self, handle)
649
+ local ____nextSyncId_0 = nextSyncId
650
+ nextSyncId = ____nextSyncId_0 + 1
651
+ self.syncId = ____nextSyncId_0
655
652
  self._owner = Player:of(getOwningPlayer(handle))
656
653
  assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
657
654
  assert(unitAddAbility(handle, morphDetectAbilityId))
@@ -664,6 +661,7 @@ function Unit.prototype.____constructor(self, handle)
664
661
  fourCC("Amrf")
665
662
  ))
666
663
  end
664
+ unitBySyncId[self.syncId] = self
667
665
  local ____ = self.abilities
668
666
  end
669
667
  function Unit.prototype.getEvent(self, event, collector)
@@ -749,8 +747,8 @@ function Unit.prototype.addModifier(self, property, modifier)
749
747
  end}
750
748
  end
751
749
  function Unit.prototype.hasCombatClassification(self, combatClassification)
752
- local ____combatClassification_0 = combatClassification
753
- return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_0 == ____combatClassification_0
750
+ local ____combatClassification_1 = combatClassification
751
+ return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_1 == ____combatClassification_1
754
752
  end
755
753
  function Unit.prototype.addClassification(self, classification)
756
754
  return unitAddType(self.handle, classification)
@@ -768,13 +766,13 @@ function Unit.prototype.isInvisibleTo(self, player)
768
766
  return isUnitInvisible(self.handle, player.handle)
769
767
  end
770
768
  function Unit.prototype.isInRangeOf(self, x, y, range)
771
- local ____temp_1
769
+ local ____temp_2
772
770
  if type(x) == "number" then
773
- ____temp_1 = isUnitInRangeXY(self.handle, x, y, range)
771
+ ____temp_2 = isUnitInRangeXY(self.handle, x, y, range)
774
772
  else
775
- ____temp_1 = isUnitInRange(self.handle, x.handle, y)
773
+ ____temp_2 = isUnitInRange(self.handle, x.handle, y)
776
774
  end
777
- return ____temp_1
775
+ return ____temp_2
778
776
  end
779
777
  function Unit.prototype.isAllyOf(self, unit)
780
778
  return isUnitAlly(
@@ -801,7 +799,7 @@ function Unit.prototype.queueAnimation(self, animation)
801
799
  queueUnitAnimation(self.handle, animation)
802
800
  end
803
801
  function Unit.prototype.delayHealthChecks(self)
804
- self[102] = (self[102] or 0) + 1
802
+ self[103] = (self[103] or 0) + 1
805
803
  Timer:run(delayHealthChecksCallback, self)
806
804
  end
807
805
  function Unit.prototype.setPosition(self, x, y)
@@ -818,14 +816,14 @@ function Unit.prototype.kill(self)
818
816
  killUnit(self.handle)
819
817
  end
820
818
  function Unit.prototype.revive(self, x, y, doEffect)
821
- local ____ReviveHero_4 = ReviveHero
822
- local ____array_3 = __TS__SparseArrayNew(self.handle, x, y)
823
- local ____doEffect_2 = doEffect
824
- if ____doEffect_2 == nil then
825
- ____doEffect_2 = false
819
+ local ____ReviveHero_5 = ReviveHero
820
+ local ____array_4 = __TS__SparseArrayNew(self.handle, x, y)
821
+ local ____doEffect_3 = doEffect
822
+ if ____doEffect_3 == nil then
823
+ ____doEffect_3 = false
826
824
  end
827
- __TS__SparseArrayPush(____array_3, ____doEffect_2)
828
- ____ReviveHero_4(__TS__SparseArraySpread(____array_3))
825
+ __TS__SparseArrayPush(____array_4, ____doEffect_3)
826
+ ____ReviveHero_5(__TS__SparseArraySpread(____array_4))
829
827
  end
830
828
  function Unit.prototype.healTarget(self, target, amount)
831
829
  if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
@@ -865,7 +863,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
865
863
  return UnitDropItemSlot(self.handle, item.handle, slot)
866
864
  end
867
865
  function Unit.prototype.itemInSlot(self, slot)
868
- return Item:of(UnitItemInSlot(self.handle, slot))
866
+ return Item:of(unitItemInSlot(self.handle, slot))
869
867
  end
870
868
  function Unit.prototype.addAbility(self, abilityId)
871
869
  if unitAddAbility(self.handle, abilityId) then
@@ -934,8 +932,15 @@ function Unit.prototype.interruptAttack(self)
934
932
  unitInterruptAttack(self.handle)
935
933
  end
936
934
  function Unit.prototype.interruptCast(self, abilityId)
937
- unitDisableAbility(self.handle, abilityId, true, false)
938
- unitDisableAbility(self.handle, abilityId, false, false)
935
+ local handle = self.handle
936
+ unitDisableAbility(handle, abilityId, true, false)
937
+ Timer:run(
938
+ unitDisableAbility,
939
+ handle,
940
+ abilityId,
941
+ false,
942
+ false
943
+ )
939
944
  end
940
945
  function Unit.prototype.getDistanceTo(self, target)
941
946
  local handle = self.handle
@@ -995,18 +1000,18 @@ function Unit.prototype.unpauseEx(self)
995
1000
  self:decrementStunCounter()
996
1001
  end
997
1002
  function Unit.prototype.incrementStunCounter(self)
998
- local stunCounter = self[101] or 0
999
- if not self[100] or stunCounter >= 0 then
1003
+ local stunCounter = self[102] or 0
1004
+ if not self[101] or stunCounter >= 0 then
1000
1005
  BlzPauseUnitEx(self.handle, true)
1001
1006
  end
1002
- self[101] = stunCounter + 1
1007
+ self[102] = stunCounter + 1
1003
1008
  end
1004
1009
  function Unit.prototype.decrementStunCounter(self)
1005
- local stunCounter = self[101] or 0
1006
- if not self[100] or stunCounter >= 1 then
1010
+ local stunCounter = self[102] or 0
1011
+ if not self[101] or stunCounter >= 1 then
1007
1012
  BlzPauseUnitEx(self.handle, false)
1008
1013
  end
1009
- self[101] = stunCounter - 1
1014
+ self[102] = stunCounter - 1
1010
1015
  end
1011
1016
  function Unit.create(self, owner, id, x, y, facing, skinId)
1012
1017
  local handle = skinId and BlzCreateUnitWithSkin(
@@ -1108,8 +1113,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
1108
1113
  )
1109
1114
  return targetCollection
1110
1115
  end
1111
- function Unit.getSelectionOf(self, player)
1112
- targetCollection = {}
1116
+ function Unit.getSelectionOf(self, player, target)
1117
+ if target == nil then
1118
+ target = {}
1119
+ end
1120
+ targetCollection = target
1113
1121
  targetCollectionNextIndex = 1
1114
1122
  GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
1115
1123
  return targetCollection
@@ -1131,6 +1139,9 @@ end
1131
1139
  function Unit.prototype.__tostring(self)
1132
1140
  return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
1133
1141
  end
1142
+ function Unit.getBySyncId(self, syncId)
1143
+ return unitBySyncId[syncId]
1144
+ end
1134
1145
  __TS__SetDescriptor(
1135
1146
  Unit.prototype,
1136
1147
  "_deltas",
@@ -1194,6 +1205,14 @@ __TS__SetDescriptor(
1194
1205
  end},
1195
1206
  true
1196
1207
  )
1208
+ __TS__SetDescriptor(
1209
+ Unit.prototype,
1210
+ "isStunned",
1211
+ {get = function(self)
1212
+ return getUnitCurrentOrder(self.handle) == orderId("stunned")
1213
+ end},
1214
+ true
1215
+ )
1197
1216
  __TS__SetDescriptor(
1198
1217
  Unit.prototype,
1199
1218
  "combatClassifications",
@@ -1388,17 +1407,17 @@ __TS__SetDescriptor(
1388
1407
  "isTeamGlowVisible",
1389
1408
  {
1390
1409
  get = function(self)
1391
- return not self[105]
1410
+ return not self[106]
1392
1411
  end,
1393
1412
  set = function(self, isTeamGlowVisible)
1394
1413
  showUnitTeamGlow(self.handle, isTeamGlowVisible)
1395
- local ____temp_5
1414
+ local ____temp_6
1396
1415
  if not isTeamGlowVisible then
1397
- ____temp_5 = true
1416
+ ____temp_6 = true
1398
1417
  else
1399
- ____temp_5 = nil
1418
+ ____temp_6 = nil
1400
1419
  end
1401
- self[105] = ____temp_5
1420
+ self[106] = ____temp_6
1402
1421
  end
1403
1422
  },
1404
1423
  true
@@ -1408,7 +1427,7 @@ __TS__SetDescriptor(
1408
1427
  "color",
1409
1428
  {set = function(self, color)
1410
1429
  setUnitColor(self.handle, color.handle)
1411
- if self[105] then
1430
+ if self[106] then
1412
1431
  showUnitTeamGlow(self.handle, false)
1413
1432
  end
1414
1433
  end},
@@ -1432,14 +1451,14 @@ __TS__SetDescriptor(
1432
1451
  "maxHealth",
1433
1452
  {
1434
1453
  get = function(self)
1435
- return BlzGetUnitMaxHP(self.handle) - (self[103] or 0) - (self[104] or 0)
1454
+ return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
1436
1455
  end,
1437
1456
  set = function(self, maxHealth)
1438
- if maxHealth < 1 and self[102] ~= nil then
1439
- self[103] = (self[103] or 0) + (1 - maxHealth)
1457
+ if maxHealth < 1 and self[103] ~= nil then
1458
+ self[104] = (self[104] or 0) + (1 - maxHealth)
1440
1459
  maxHealth = 1
1441
1460
  end
1442
- BlzSetUnitMaxHP(self.handle, maxHealth + (self[104] or 0))
1461
+ BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
1443
1462
  end
1444
1463
  },
1445
1464
  true
@@ -1481,10 +1500,10 @@ __TS__SetDescriptor(
1481
1500
  "health",
1482
1501
  {
1483
1502
  get = function(self)
1484
- return GetWidgetLife(self.handle) - (self[104] or 0)
1503
+ return GetWidgetLife(self.handle) - (self[105] or 0)
1485
1504
  end,
1486
1505
  set = function(self, health)
1487
- SetWidgetLife(self.handle, health + (self[104] or 0))
1506
+ SetWidgetLife(self.handle, health + (self[105] or 0))
1488
1507
  end
1489
1508
  },
1490
1509
  true
@@ -1695,17 +1714,17 @@ __TS__SetDescriptor(
1695
1714
  set = function(self, isPaused)
1696
1715
  local handle = self.handle
1697
1716
  if isPaused and not IsUnitPaused(handle) then
1698
- self[100] = true
1699
- for _ = self[101] or 0, -1 do
1717
+ self[101] = true
1718
+ for _ = self[102] or 0, -1 do
1700
1719
  BlzPauseUnitEx(handle, true)
1701
1720
  end
1702
1721
  PauseUnit(handle, true)
1703
1722
  elseif not isPaused and IsUnitPaused(handle) then
1704
1723
  PauseUnit(handle, false)
1705
- for _ = self[101] or 0, -1 do
1724
+ for _ = self[102] or 0, -1 do
1706
1725
  BlzPauseUnitEx(handle, false)
1707
1726
  end
1708
- self[100] = nil
1727
+ self[101] = nil
1709
1728
  end
1710
1729
  end
1711
1730
  },
@@ -2124,25 +2143,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
2124
2143
  InitializingEvent,
2125
2144
  function(event)
2126
2145
  local function listener(unit, id)
2127
- local ____GetSpellTargetUnit_result_8
2146
+ local ____GetSpellTargetUnit_result_9
2128
2147
  if GetSpellTargetUnit() then
2129
- ____GetSpellTargetUnit_result_8 = ____exports.Unit:of(GetSpellTargetUnit())
2148
+ ____GetSpellTargetUnit_result_9 = ____exports.Unit:of(GetSpellTargetUnit())
2130
2149
  else
2131
- local ____GetSpellTargetItem_result_7
2150
+ local ____GetSpellTargetItem_result_8
2132
2151
  if GetSpellTargetItem() then
2133
- ____GetSpellTargetItem_result_7 = Item:of(GetSpellTargetItem())
2152
+ ____GetSpellTargetItem_result_8 = Item:of(GetSpellTargetItem())
2134
2153
  else
2135
- local ____GetSpellTargetDestructable_result_6
2154
+ local ____GetSpellTargetDestructable_result_7
2136
2155
  if GetSpellTargetDestructable() then
2137
- ____GetSpellTargetDestructable_result_6 = Destructable:of(GetSpellTargetDestructable())
2156
+ ____GetSpellTargetDestructable_result_7 = Destructable:of(GetSpellTargetDestructable())
2138
2157
  else
2139
- ____GetSpellTargetDestructable_result_6 = nil
2158
+ ____GetSpellTargetDestructable_result_7 = nil
2140
2159
  end
2141
- ____GetSpellTargetItem_result_7 = ____GetSpellTargetDestructable_result_6
2160
+ ____GetSpellTargetItem_result_8 = ____GetSpellTargetDestructable_result_7
2142
2161
  end
2143
- ____GetSpellTargetUnit_result_8 = ____GetSpellTargetItem_result_7
2162
+ ____GetSpellTargetUnit_result_9 = ____GetSpellTargetItem_result_8
2144
2163
  end
2145
- local target = ____GetSpellTargetUnit_result_8
2164
+ local target = ____GetSpellTargetUnit_result_9
2146
2165
  if target then
2147
2166
  invoke(event, unit, id, target)
2148
2167
  end
@@ -2314,10 +2333,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
2314
2333
  ____exports.UnitTriggerEvent,
2315
2334
  EVENT_PLAYER_UNIT_ISSUED_ORDER,
2316
2335
  function()
2317
- local unit = ____exports.Unit:of(getOrderedUnit())
2318
- local issuedOrderId = getIssuedOrderId()
2319
- if unit ~= nil and unit.state == 1 then
2320
- return unit, issuedOrderId
2336
+ local handle = getOrderedUnit()
2337
+ if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
2338
+ local unit = ____exports.Unit:of(handle)
2339
+ if unit.state == 1 then
2340
+ return unit, getIssuedOrderId()
2341
+ end
2321
2342
  end
2322
2343
  return IgnoreEvent
2323
2344
  end
@@ -2452,6 +2473,7 @@ Unit.onDamage = __TS__New(
2452
2473
  damageType = BlzGetEventDamageType(),
2453
2474
  weaponType = BlzGetEventWeaponType(),
2454
2475
  isAttack = BlzGetEventIsAttack(),
2476
+ originalAmount = GetEventDamage(),
2455
2477
  preventDeath = damageEventPreventDeath
2456
2478
  }
2457
2479
  local evData = setmetatable(
@@ -2468,7 +2490,7 @@ Unit.onDamage = __TS__New(
2468
2490
  invoke(event, source, target, evData)
2469
2491
  if evData[0] ~= nil and target.health - evData.amount < 0.405 then
2470
2492
  local bonusHealth = math.ceil(evData.amount)
2471
- target[104] = (target[104] or 0) + bonusHealth
2493
+ target[105] = (target[105] or 0) + bonusHealth
2472
2494
  BlzSetUnitMaxHP(
2473
2495
  target.handle,
2474
2496
  BlzGetUnitMaxHP(target.handle) + bonusHealth
@@ -2482,7 +2504,7 @@ Unit.onDamage = __TS__New(
2482
2504
  evData[0],
2483
2505
  table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
2484
2506
  )
2485
- target[104] = (target[104] or 0) - bonusHealth
2507
+ target[105] = (target[105] or 0) - bonusHealth
2486
2508
  SetWidgetLife(
2487
2509
  target.handle,
2488
2510
  GetWidgetLife(target.handle) - bonusHealth
@@ -2502,32 +2524,91 @@ Unit.onDamage = __TS__New(
2502
2524
  DestroyTrigger(trigger)
2503
2525
  end
2504
2526
  )
2505
- Unit.onItemDrop = __TS__New(
2527
+ Unit.itemDroppedEvent = __TS__New(
2506
2528
  ____exports.UnitTriggerEvent,
2507
2529
  EVENT_PLAYER_UNIT_DROP_ITEM,
2508
2530
  function()
2509
2531
  local unit = getTriggerUnit()
2510
- if getUnitTypeId(unit) ~= dummyUnitId then
2511
- return ____exports.Unit:of(unit), Item:of(getManipulatedItem())
2532
+ local item = getManipulatedItem()
2533
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2534
+ return ____exports.Unit:of(unit), Item:of(item)
2512
2535
  end
2513
2536
  return IgnoreEvent
2514
2537
  end
2515
2538
  )
2516
- Unit.onItemPickup = __TS__New(
2539
+ Unit.itemPickedUpEvent = __TS__New(
2517
2540
  ____exports.UnitTriggerEvent,
2518
2541
  EVENT_PLAYER_UNIT_PICKUP_ITEM,
2519
2542
  function()
2520
2543
  local unit = getTriggerUnit()
2521
- if getUnitTypeId(unit) ~= dummyUnitId then
2522
- return ____exports.Unit:of(unit), Item:of(getManipulatedItem())
2544
+ local item = getManipulatedItem()
2545
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2546
+ return ____exports.Unit:of(unit), Item:of(item)
2523
2547
  end
2524
2548
  return IgnoreEvent
2525
2549
  end
2526
2550
  )
2527
- Unit.onItemUse = __TS__New(
2551
+ Unit.itemUsedEvent = __TS__New(
2528
2552
  ____exports.UnitTriggerEvent,
2529
2553
  EVENT_PLAYER_UNIT_USE_ITEM,
2530
- function() return ____exports.Unit:of(GetTriggerUnit()), Item:of(GetManipulatedItem()) end
2554
+ function()
2555
+ local unit = getTriggerUnit()
2556
+ local item = getManipulatedItem()
2557
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2558
+ return ____exports.Unit:of(unit), Item:of(item)
2559
+ end
2560
+ return IgnoreEvent
2561
+ end
2562
+ )
2563
+ Unit.itemStackedEvent = __TS__New(
2564
+ ____exports.UnitTriggerEvent,
2565
+ EVENT_PLAYER_UNIT_STACK_ITEM,
2566
+ function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
2567
+ )
2568
+ __TS__ObjectDefineProperty(
2569
+ Unit,
2570
+ "itemUseOrderEvent",
2571
+ {get = function(self)
2572
+ local event = __TS__New(Event)
2573
+ for order = orderId("useslot0"), orderId("useslot5") do
2574
+ local slot = order - orderId("useslot0")
2575
+ local function listener(unit)
2576
+ local item = unit.items[slot + 1]
2577
+ if item ~= nil then
2578
+ invoke(event, unit, item)
2579
+ end
2580
+ end
2581
+ self.onImmediateOrder[order]:addListener(listener)
2582
+ self.onTargetOrder[order]:addListener(listener)
2583
+ self.onPointOrder[order]:addListener(listener)
2584
+ end
2585
+ rawset(self, "itemUseOrderEvent", event)
2586
+ return event
2587
+ end}
2588
+ )
2589
+ __TS__ObjectDefineProperty(
2590
+ Unit,
2591
+ "itemMoveOrderEvent",
2592
+ {get = function(self)
2593
+ local event = __TS__New(Event)
2594
+ for order = orderId("moveslot0"), orderId("moveslot5") do
2595
+ local slotTo = order - orderId("moveslot0")
2596
+ self.onTargetOrder[order]:addListener(function(unit, item)
2597
+ local slotFrom = unit.items:findSlot(item)
2598
+ if slotFrom ~= nil then
2599
+ invoke(
2600
+ event,
2601
+ unit,
2602
+ item,
2603
+ slotFrom,
2604
+ slotTo
2605
+ )
2606
+ end
2607
+ end)
2608
+ end
2609
+ rawset(self, "itemMoveOrderEvent", event)
2610
+ return event
2611
+ end}
2531
2612
  )
2532
2613
  __TS__ObjectDefineProperty(
2533
2614
  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 {};