warscript 0.0.1-dev.bb34489 → 0.0.1-dev.c03154e
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.
- package/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/core/types/effect.d.ts +13 -3
- package/core/types/effect.lua +116 -17
- package/core/types/frame.d.ts +8 -0
- package/core/types/frame.lua +93 -1
- package/core/types/handle.lua +2 -0
- package/core/util.d.ts +1 -1
- package/core/util.lua +12 -0
- package/engine/behavior.d.ts +2 -2
- package/engine/behavior.lua +6 -6
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +3 -5
- package/engine/behaviour/ability/damage.d.ts +33 -11
- package/engine/behaviour/ability/damage.lua +89 -31
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +28 -0
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -19
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
- package/engine/behaviour/ability/remove-buffs.lua +28 -0
- package/engine/behaviour/ability/restore-mana.d.ts +15 -0
- package/engine/behaviour/ability/restore-mana.lua +29 -0
- package/engine/behaviour/ability.d.ts +14 -3
- package/engine/behaviour/ability.lua +79 -33
- package/engine/behaviour/unit.d.ts +5 -0
- package/engine/behaviour/unit.lua +20 -0
- package/engine/buff.d.ts +69 -19
- package/engine/buff.lua +283 -80
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/internal/ability.d.ts +16 -13
- package/engine/internal/ability.lua +80 -76
- package/engine/internal/item/ability.lua +106 -0
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/ability.d.ts +10 -1
- package/engine/internal/unit/ability.lua +36 -14
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +50 -0
- package/engine/internal/unit/bonus.d.ts +6 -2
- package/engine/internal/unit/bonus.lua +23 -1
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/item.d.ts +24 -0
- package/engine/internal/unit/item.lua +78 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +51 -0
- package/engine/internal/unit+ability.lua +2 -2
- package/engine/internal/unit+transport.lua +4 -10
- package/engine/internal/unit-missile-launch.lua +24 -5
- package/engine/internal/unit.d.ts +26 -10
- package/engine/internal/unit.lua +179 -89
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +8 -2
- package/engine/lightning.lua +27 -2
- package/engine/local-client.d.ts +7 -2
- package/engine/local-client.lua +82 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/entry/ability-type.lua +8 -12
- package/engine/object-data/entry/item-type.d.ts +14 -0
- package/engine/object-data/entry/item-type.lua +91 -0
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +26 -3
- package/engine/object-field/ability.lua +54 -1
- package/engine/object-field.d.ts +2 -2
- package/engine/object-field.lua +4 -0
- package/engine/standard/fields/ability.d.ts +2 -0
- package/engine/standard/fields/ability.lua +2 -0
- package/engine/unit.d.ts +3 -0
- package/engine/unit.lua +3 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/lualib_bundle.lua +7 -2
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +3 -2
- package/objutil/buff.lua +1 -1
- package/package.json +2 -2
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -0
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- package/utility/arrays.d.ts +8 -1
- package/utility/arrays.lua +34 -3
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +11 -2
- package/utility/linked-set.lua +5 -2
- package/utility/types.d.ts +1 -0
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
package/engine/internal/unit.lua
CHANGED
|
@@ -6,6 +6,7 @@ local __TS__New = ____lualib.__TS__New
|
|
|
6
6
|
local __TS__Class = ____lualib.__TS__Class
|
|
7
7
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
8
8
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
9
|
+
local __TS__ArraySetLength = ____lualib.__TS__ArraySetLength
|
|
9
10
|
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
|
|
10
11
|
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
|
|
11
12
|
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
|
|
@@ -50,6 +51,8 @@ local ____arrays = require("utility.arrays")
|
|
|
50
51
|
local forEach = ____arrays.forEach
|
|
51
52
|
local ____math = require("math")
|
|
52
53
|
local min = ____math.min
|
|
54
|
+
local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
|
|
55
|
+
local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
|
|
53
56
|
local match = string.match
|
|
54
57
|
local ____tostring = _G.tostring
|
|
55
58
|
local setUnitAnimation = SetUnitAnimation
|
|
@@ -74,6 +77,7 @@ local setUnitScale = SetUnitScale
|
|
|
74
77
|
local setUnitPosition = SetUnitPosition
|
|
75
78
|
local setUnitTimeScale = SetUnitTimeScale
|
|
76
79
|
local getHandleId = GetHandleId
|
|
80
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
77
81
|
local createUnit = CreateUnit
|
|
78
82
|
local killUnit = KillUnit
|
|
79
83
|
local setUnitExploded = SetUnitExploded
|
|
@@ -289,7 +293,6 @@ local function dispatch(event, idGetter, argsGetter)
|
|
|
289
293
|
return event[id]
|
|
290
294
|
end
|
|
291
295
|
if not initialized then
|
|
292
|
-
local invoke = Event.invoke
|
|
293
296
|
event:addListener(function(...)
|
|
294
297
|
local id = idGetter(...)
|
|
295
298
|
local dispatched = rawget(self, id)
|
|
@@ -327,7 +330,6 @@ local function dispatchAbility(event)
|
|
|
327
330
|
return event[id]
|
|
328
331
|
end
|
|
329
332
|
if not initialized then
|
|
330
|
-
local invoke = Event.invoke
|
|
331
333
|
event:addListener(function(unit, ability, ...)
|
|
332
334
|
local dispatched = rawget(self, ability.typeId)
|
|
333
335
|
if dispatched ~= nil then
|
|
@@ -563,17 +565,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
563
565
|
____exports.Unit:of(unit)
|
|
564
566
|
)
|
|
565
567
|
end
|
|
566
|
-
if not unitAddAbility(unit, abilityId) then
|
|
567
|
-
if getUnitAbility(unit, abilityId) == ability then
|
|
568
|
-
return UnitAbility:of(
|
|
569
|
-
ability,
|
|
570
|
-
abilityId,
|
|
571
|
-
____exports.Unit:of(unit)
|
|
572
|
-
)
|
|
573
|
-
end
|
|
574
|
-
else
|
|
575
|
-
unitRemoveAbility(unit, abilityId)
|
|
576
|
-
end
|
|
577
568
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
578
569
|
local item = unitItemInSlot(unit, i)
|
|
579
570
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -631,15 +622,15 @@ for ____, player in ipairs(Player.all) do
|
|
|
631
622
|
dummies[player] = dummy
|
|
632
623
|
end
|
|
633
624
|
local function delayHealthChecksCallback(unit)
|
|
634
|
-
local counter = (unit[
|
|
625
|
+
local counter = (unit[103] or 0) - 1
|
|
635
626
|
if counter ~= 0 then
|
|
636
|
-
unit[
|
|
627
|
+
unit[103] = counter
|
|
637
628
|
return
|
|
638
629
|
end
|
|
639
|
-
unit[
|
|
640
|
-
local healthBonus = unit[
|
|
630
|
+
unit[103] = nil
|
|
631
|
+
local healthBonus = unit[104]
|
|
641
632
|
if healthBonus ~= nil then
|
|
642
|
-
unit[
|
|
633
|
+
unit[104] = nil
|
|
643
634
|
local handle = unit.handle
|
|
644
635
|
BlzSetUnitMaxHP(
|
|
645
636
|
handle,
|
|
@@ -647,12 +638,17 @@ local function delayHealthChecksCallback(unit)
|
|
|
647
638
|
)
|
|
648
639
|
end
|
|
649
640
|
end
|
|
641
|
+
local nextSyncId = 1
|
|
642
|
+
local unitBySyncId = setmetatable({}, {__mode = "k"})
|
|
650
643
|
____exports.Unit = __TS__Class()
|
|
651
644
|
local Unit = ____exports.Unit
|
|
652
645
|
Unit.name = "Unit"
|
|
653
646
|
__TS__ClassExtends(Unit, Handle)
|
|
654
647
|
function Unit.prototype.____constructor(self, handle)
|
|
655
648
|
Handle.prototype.____constructor(self, handle)
|
|
649
|
+
local ____nextSyncId_0 = nextSyncId
|
|
650
|
+
nextSyncId = ____nextSyncId_0 + 1
|
|
651
|
+
self.syncId = ____nextSyncId_0
|
|
656
652
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
657
653
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
658
654
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -665,6 +661,7 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
665
661
|
fourCC("Amrf")
|
|
666
662
|
))
|
|
667
663
|
end
|
|
664
|
+
unitBySyncId[self.syncId] = self
|
|
668
665
|
local ____ = self.abilities
|
|
669
666
|
end
|
|
670
667
|
function Unit.prototype.getEvent(self, event, collector)
|
|
@@ -686,6 +683,11 @@ function Unit.prototype.onDestroy(self)
|
|
|
686
683
|
if not self._owner then
|
|
687
684
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
688
685
|
end
|
|
686
|
+
local abilities = self.abilities
|
|
687
|
+
for ____, ability in ipairs(abilities) do
|
|
688
|
+
ability:destroy()
|
|
689
|
+
end
|
|
690
|
+
__TS__ArraySetLength(abilities, 0)
|
|
689
691
|
for ____, player in ipairs(Player.all) do
|
|
690
692
|
if self:isSelected(player) then
|
|
691
693
|
Event.invoke(____exports.Unit.onDeselect, self, player)
|
|
@@ -700,6 +702,10 @@ function Unit.prototype.onDestroy(self)
|
|
|
700
702
|
if eventsToDestroy ~= nil then
|
|
701
703
|
forEach(eventsToDestroy, "destroy")
|
|
702
704
|
end
|
|
705
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) > 0 then
|
|
706
|
+
unitRemoveAbility(handle, leaveDetectAbilityId)
|
|
707
|
+
removeUnit(handle)
|
|
708
|
+
end
|
|
703
709
|
return Handle.prototype.onDestroy(self)
|
|
704
710
|
end
|
|
705
711
|
function Unit.prototype.addAttackHandler(self, condition, action)
|
|
@@ -741,8 +747,8 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
741
747
|
end}
|
|
742
748
|
end
|
|
743
749
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
744
|
-
local
|
|
745
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
750
|
+
local ____combatClassification_1 = combatClassification
|
|
751
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_1 == ____combatClassification_1
|
|
746
752
|
end
|
|
747
753
|
function Unit.prototype.addClassification(self, classification)
|
|
748
754
|
return unitAddType(self.handle, classification)
|
|
@@ -760,13 +766,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
760
766
|
return isUnitInvisible(self.handle, player.handle)
|
|
761
767
|
end
|
|
762
768
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
763
|
-
local
|
|
769
|
+
local ____temp_2
|
|
764
770
|
if type(x) == "number" then
|
|
765
|
-
|
|
771
|
+
____temp_2 = isUnitInRangeXY(self.handle, x, y, range)
|
|
766
772
|
else
|
|
767
|
-
|
|
773
|
+
____temp_2 = isUnitInRange(self.handle, x.handle, y)
|
|
768
774
|
end
|
|
769
|
-
return
|
|
775
|
+
return ____temp_2
|
|
770
776
|
end
|
|
771
777
|
function Unit.prototype.isAllyOf(self, unit)
|
|
772
778
|
return isUnitAlly(
|
|
@@ -793,7 +799,7 @@ function Unit.prototype.queueAnimation(self, animation)
|
|
|
793
799
|
queueUnitAnimation(self.handle, animation)
|
|
794
800
|
end
|
|
795
801
|
function Unit.prototype.delayHealthChecks(self)
|
|
796
|
-
self[
|
|
802
|
+
self[103] = (self[103] or 0) + 1
|
|
797
803
|
Timer:run(delayHealthChecksCallback, self)
|
|
798
804
|
end
|
|
799
805
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -810,14 +816,14 @@ function Unit.prototype.kill(self)
|
|
|
810
816
|
killUnit(self.handle)
|
|
811
817
|
end
|
|
812
818
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
813
|
-
local
|
|
814
|
-
local
|
|
815
|
-
local
|
|
816
|
-
if
|
|
817
|
-
|
|
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
|
|
818
824
|
end
|
|
819
|
-
__TS__SparseArrayPush(
|
|
820
|
-
|
|
825
|
+
__TS__SparseArrayPush(____array_4, ____doEffect_3)
|
|
826
|
+
____ReviveHero_5(__TS__SparseArraySpread(____array_4))
|
|
821
827
|
end
|
|
822
828
|
function Unit.prototype.healTarget(self, target, amount)
|
|
823
829
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -857,7 +863,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
857
863
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
858
864
|
end
|
|
859
865
|
function Unit.prototype.itemInSlot(self, slot)
|
|
860
|
-
return Item:of(
|
|
866
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
861
867
|
end
|
|
862
868
|
function Unit.prototype.addAbility(self, abilityId)
|
|
863
869
|
if unitAddAbility(self.handle, abilityId) then
|
|
@@ -926,8 +932,15 @@ function Unit.prototype.interruptAttack(self)
|
|
|
926
932
|
unitInterruptAttack(self.handle)
|
|
927
933
|
end
|
|
928
934
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
929
|
-
|
|
930
|
-
unitDisableAbility(
|
|
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
|
+
)
|
|
931
944
|
end
|
|
932
945
|
function Unit.prototype.getDistanceTo(self, target)
|
|
933
946
|
local handle = self.handle
|
|
@@ -987,18 +1000,18 @@ function Unit.prototype.unpauseEx(self)
|
|
|
987
1000
|
self:decrementStunCounter()
|
|
988
1001
|
end
|
|
989
1002
|
function Unit.prototype.incrementStunCounter(self)
|
|
990
|
-
local stunCounter = self[
|
|
991
|
-
if not self[
|
|
1003
|
+
local stunCounter = self[102] or 0
|
|
1004
|
+
if not self[101] or stunCounter >= 0 then
|
|
992
1005
|
BlzPauseUnitEx(self.handle, true)
|
|
993
1006
|
end
|
|
994
|
-
self[
|
|
1007
|
+
self[102] = stunCounter + 1
|
|
995
1008
|
end
|
|
996
1009
|
function Unit.prototype.decrementStunCounter(self)
|
|
997
|
-
local stunCounter = self[
|
|
998
|
-
if not self[
|
|
1010
|
+
local stunCounter = self[102] or 0
|
|
1011
|
+
if not self[101] or stunCounter >= 1 then
|
|
999
1012
|
BlzPauseUnitEx(self.handle, false)
|
|
1000
1013
|
end
|
|
1001
|
-
self[
|
|
1014
|
+
self[102] = stunCounter - 1
|
|
1002
1015
|
end
|
|
1003
1016
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1004
1017
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1100,8 +1113,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1100
1113
|
)
|
|
1101
1114
|
return targetCollection
|
|
1102
1115
|
end
|
|
1103
|
-
function Unit.getSelectionOf(self, player)
|
|
1104
|
-
|
|
1116
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1117
|
+
if target == nil then
|
|
1118
|
+
target = {}
|
|
1119
|
+
end
|
|
1120
|
+
targetCollection = target
|
|
1105
1121
|
targetCollectionNextIndex = 1
|
|
1106
1122
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1107
1123
|
return targetCollection
|
|
@@ -1123,6 +1139,9 @@ end
|
|
|
1123
1139
|
function Unit.prototype.__tostring(self)
|
|
1124
1140
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1125
1141
|
end
|
|
1142
|
+
function Unit.getBySyncId(self, syncId)
|
|
1143
|
+
return unitBySyncId[syncId]
|
|
1144
|
+
end
|
|
1126
1145
|
__TS__SetDescriptor(
|
|
1127
1146
|
Unit.prototype,
|
|
1128
1147
|
"_deltas",
|
|
@@ -1186,6 +1205,14 @@ __TS__SetDescriptor(
|
|
|
1186
1205
|
end},
|
|
1187
1206
|
true
|
|
1188
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
|
+
)
|
|
1189
1216
|
__TS__SetDescriptor(
|
|
1190
1217
|
Unit.prototype,
|
|
1191
1218
|
"combatClassifications",
|
|
@@ -1380,17 +1407,17 @@ __TS__SetDescriptor(
|
|
|
1380
1407
|
"isTeamGlowVisible",
|
|
1381
1408
|
{
|
|
1382
1409
|
get = function(self)
|
|
1383
|
-
return not self[
|
|
1410
|
+
return not self[106]
|
|
1384
1411
|
end,
|
|
1385
1412
|
set = function(self, isTeamGlowVisible)
|
|
1386
1413
|
showUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1387
|
-
local
|
|
1414
|
+
local ____temp_6
|
|
1388
1415
|
if not isTeamGlowVisible then
|
|
1389
|
-
|
|
1416
|
+
____temp_6 = true
|
|
1390
1417
|
else
|
|
1391
|
-
|
|
1418
|
+
____temp_6 = nil
|
|
1392
1419
|
end
|
|
1393
|
-
self[
|
|
1420
|
+
self[106] = ____temp_6
|
|
1394
1421
|
end
|
|
1395
1422
|
},
|
|
1396
1423
|
true
|
|
@@ -1400,7 +1427,7 @@ __TS__SetDescriptor(
|
|
|
1400
1427
|
"color",
|
|
1401
1428
|
{set = function(self, color)
|
|
1402
1429
|
setUnitColor(self.handle, color.handle)
|
|
1403
|
-
if self[
|
|
1430
|
+
if self[106] then
|
|
1404
1431
|
showUnitTeamGlow(self.handle, false)
|
|
1405
1432
|
end
|
|
1406
1433
|
end},
|
|
@@ -1424,14 +1451,14 @@ __TS__SetDescriptor(
|
|
|
1424
1451
|
"maxHealth",
|
|
1425
1452
|
{
|
|
1426
1453
|
get = function(self)
|
|
1427
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1454
|
+
return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
|
|
1428
1455
|
end,
|
|
1429
1456
|
set = function(self, maxHealth)
|
|
1430
|
-
if maxHealth < 1 and self[
|
|
1431
|
-
self[
|
|
1457
|
+
if maxHealth < 1 and self[103] ~= nil then
|
|
1458
|
+
self[104] = (self[104] or 0) + (1 - maxHealth)
|
|
1432
1459
|
maxHealth = 1
|
|
1433
1460
|
end
|
|
1434
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1461
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
|
|
1435
1462
|
end
|
|
1436
1463
|
},
|
|
1437
1464
|
true
|
|
@@ -1473,10 +1500,10 @@ __TS__SetDescriptor(
|
|
|
1473
1500
|
"health",
|
|
1474
1501
|
{
|
|
1475
1502
|
get = function(self)
|
|
1476
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1503
|
+
return GetWidgetLife(self.handle) - (self[105] or 0)
|
|
1477
1504
|
end,
|
|
1478
1505
|
set = function(self, health)
|
|
1479
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1506
|
+
SetWidgetLife(self.handle, health + (self[105] or 0))
|
|
1480
1507
|
end
|
|
1481
1508
|
},
|
|
1482
1509
|
true
|
|
@@ -1687,17 +1714,17 @@ __TS__SetDescriptor(
|
|
|
1687
1714
|
set = function(self, isPaused)
|
|
1688
1715
|
local handle = self.handle
|
|
1689
1716
|
if isPaused and not IsUnitPaused(handle) then
|
|
1690
|
-
self[
|
|
1691
|
-
for _ = self[
|
|
1717
|
+
self[101] = true
|
|
1718
|
+
for _ = self[102] or 0, -1 do
|
|
1692
1719
|
BlzPauseUnitEx(handle, true)
|
|
1693
1720
|
end
|
|
1694
1721
|
PauseUnit(handle, true)
|
|
1695
1722
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1696
1723
|
PauseUnit(handle, false)
|
|
1697
|
-
for _ = self[
|
|
1724
|
+
for _ = self[102] or 0, -1 do
|
|
1698
1725
|
BlzPauseUnitEx(handle, false)
|
|
1699
1726
|
end
|
|
1700
|
-
self[
|
|
1727
|
+
self[101] = nil
|
|
1701
1728
|
end
|
|
1702
1729
|
end
|
|
1703
1730
|
},
|
|
@@ -2054,7 +2081,6 @@ Unit.onDecay = __TS__New(
|
|
|
2054
2081
|
Unit.onResurrect = __TS__New(
|
|
2055
2082
|
InitializingEvent,
|
|
2056
2083
|
function(event)
|
|
2057
|
-
local invoke = Event.invoke
|
|
2058
2084
|
local dead = setmetatable({}, {__mode = "k"})
|
|
2059
2085
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
2060
2086
|
dead[unit] = true
|
|
@@ -2070,10 +2096,15 @@ Unit.onResurrect = __TS__New(
|
|
|
2070
2096
|
Unit.morphEvent = __TS__New(
|
|
2071
2097
|
InitializingEvent,
|
|
2072
2098
|
function(event)
|
|
2099
|
+
local function ifNotLeft(unit)
|
|
2100
|
+
local handle = unit.handle
|
|
2101
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
|
|
2102
|
+
invoke(event, unit)
|
|
2103
|
+
end
|
|
2104
|
+
end
|
|
2073
2105
|
____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
|
|
2074
2106
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
2075
|
-
|
|
2076
|
-
Timer:run(Event.invoke, event, unit)
|
|
2107
|
+
Timer:run(ifNotLeft, unit)
|
|
2077
2108
|
end
|
|
2078
2109
|
end)
|
|
2079
2110
|
end
|
|
@@ -2111,27 +2142,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
|
|
|
2111
2142
|
Unit.onTargetCast = dispatchId(__TS__New(
|
|
2112
2143
|
InitializingEvent,
|
|
2113
2144
|
function(event)
|
|
2114
|
-
local invoke = Event.invoke
|
|
2115
2145
|
local function listener(unit, id)
|
|
2116
|
-
local
|
|
2146
|
+
local ____GetSpellTargetUnit_result_9
|
|
2117
2147
|
if GetSpellTargetUnit() then
|
|
2118
|
-
|
|
2148
|
+
____GetSpellTargetUnit_result_9 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2119
2149
|
else
|
|
2120
|
-
local
|
|
2150
|
+
local ____GetSpellTargetItem_result_8
|
|
2121
2151
|
if GetSpellTargetItem() then
|
|
2122
|
-
|
|
2152
|
+
____GetSpellTargetItem_result_8 = Item:of(GetSpellTargetItem())
|
|
2123
2153
|
else
|
|
2124
|
-
local
|
|
2154
|
+
local ____GetSpellTargetDestructable_result_7
|
|
2125
2155
|
if GetSpellTargetDestructable() then
|
|
2126
|
-
|
|
2156
|
+
____GetSpellTargetDestructable_result_7 = Destructable:of(GetSpellTargetDestructable())
|
|
2127
2157
|
else
|
|
2128
|
-
|
|
2158
|
+
____GetSpellTargetDestructable_result_7 = nil
|
|
2129
2159
|
end
|
|
2130
|
-
|
|
2160
|
+
____GetSpellTargetItem_result_8 = ____GetSpellTargetDestructable_result_7
|
|
2131
2161
|
end
|
|
2132
|
-
|
|
2162
|
+
____GetSpellTargetUnit_result_9 = ____GetSpellTargetItem_result_8
|
|
2133
2163
|
end
|
|
2134
|
-
local target =
|
|
2164
|
+
local target = ____GetSpellTargetUnit_result_9
|
|
2135
2165
|
if target then
|
|
2136
2166
|
invoke(event, unit, id, target)
|
|
2137
2167
|
end
|
|
@@ -2303,10 +2333,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2303
2333
|
____exports.UnitTriggerEvent,
|
|
2304
2334
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2305
2335
|
function()
|
|
2306
|
-
local
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
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
|
|
2310
2342
|
end
|
|
2311
2343
|
return IgnoreEvent
|
|
2312
2344
|
end
|
|
@@ -2328,7 +2360,6 @@ Unit.autoAttackStartEvent = __TS__New(
|
|
|
2328
2360
|
)
|
|
2329
2361
|
Unit.onDamaging = (function()
|
|
2330
2362
|
local event = __TS__New(Event)
|
|
2331
|
-
local invoke = Event.invoke
|
|
2332
2363
|
local trigger = CreateTrigger()
|
|
2333
2364
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2334
2365
|
TriggerAddCondition(
|
|
@@ -2427,7 +2458,6 @@ end)()
|
|
|
2427
2458
|
Unit.onDamage = __TS__New(
|
|
2428
2459
|
InitializingEvent,
|
|
2429
2460
|
function(event)
|
|
2430
|
-
local invoke = Event.invoke
|
|
2431
2461
|
local trigger = CreateTrigger()
|
|
2432
2462
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2433
2463
|
TriggerAddCondition(
|
|
@@ -2443,6 +2473,7 @@ Unit.onDamage = __TS__New(
|
|
|
2443
2473
|
damageType = BlzGetEventDamageType(),
|
|
2444
2474
|
weaponType = BlzGetEventWeaponType(),
|
|
2445
2475
|
isAttack = BlzGetEventIsAttack(),
|
|
2476
|
+
originalAmount = GetEventDamage(),
|
|
2446
2477
|
preventDeath = damageEventPreventDeath
|
|
2447
2478
|
}
|
|
2448
2479
|
local evData = setmetatable(
|
|
@@ -2459,7 +2490,7 @@ Unit.onDamage = __TS__New(
|
|
|
2459
2490
|
invoke(event, source, target, evData)
|
|
2460
2491
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2461
2492
|
local bonusHealth = math.ceil(evData.amount)
|
|
2462
|
-
target[
|
|
2493
|
+
target[105] = (target[105] or 0) + bonusHealth
|
|
2463
2494
|
BlzSetUnitMaxHP(
|
|
2464
2495
|
target.handle,
|
|
2465
2496
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2473,7 +2504,7 @@ Unit.onDamage = __TS__New(
|
|
|
2473
2504
|
evData[0],
|
|
2474
2505
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2475
2506
|
)
|
|
2476
|
-
target[
|
|
2507
|
+
target[105] = (target[105] or 0) - bonusHealth
|
|
2477
2508
|
SetWidgetLife(
|
|
2478
2509
|
target.handle,
|
|
2479
2510
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2493,32 +2524,91 @@ Unit.onDamage = __TS__New(
|
|
|
2493
2524
|
DestroyTrigger(trigger)
|
|
2494
2525
|
end
|
|
2495
2526
|
)
|
|
2496
|
-
Unit.
|
|
2527
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2497
2528
|
____exports.UnitTriggerEvent,
|
|
2498
2529
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2499
2530
|
function()
|
|
2500
2531
|
local unit = getTriggerUnit()
|
|
2501
|
-
|
|
2502
|
-
|
|
2532
|
+
local item = getManipulatedItem()
|
|
2533
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2534
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2503
2535
|
end
|
|
2504
2536
|
return IgnoreEvent
|
|
2505
2537
|
end
|
|
2506
2538
|
)
|
|
2507
|
-
Unit.
|
|
2539
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2508
2540
|
____exports.UnitTriggerEvent,
|
|
2509
2541
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2510
2542
|
function()
|
|
2511
2543
|
local unit = getTriggerUnit()
|
|
2512
|
-
|
|
2513
|
-
|
|
2544
|
+
local item = getManipulatedItem()
|
|
2545
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2546
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2514
2547
|
end
|
|
2515
2548
|
return IgnoreEvent
|
|
2516
2549
|
end
|
|
2517
2550
|
)
|
|
2518
|
-
Unit.
|
|
2551
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2519
2552
|
____exports.UnitTriggerEvent,
|
|
2520
2553
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2521
|
-
function()
|
|
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}
|
|
2522
2612
|
)
|
|
2523
2613
|
__TS__ObjectDefineProperty(
|
|
2524
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
|
package/engine/lightning.d.ts
CHANGED
|
@@ -12,7 +12,8 @@ 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
19
|
export declare class Lightning extends Handle<jlightning> {
|
|
@@ -27,6 +28,7 @@ export declare class Lightning extends Handle<jlightning> {
|
|
|
27
28
|
private [LightningPropertyKey.TARGET_Y]?;
|
|
28
29
|
private [LightningPropertyKey.TARGET_Z]?;
|
|
29
30
|
private [LightningPropertyKey.DURATION]?;
|
|
31
|
+
private [LightningPropertyKey.FADING]?;
|
|
30
32
|
constructor(handle: jlightning, typeId: LightningTypeId);
|
|
31
33
|
protected onDestroy(): HandleDestructor;
|
|
32
34
|
static create<T extends Lightning>(this: LightningConstructor<T>, typeId: LightningTypeId, ...parameters: [
|
|
@@ -46,6 +48,10 @@ export declare class Lightning extends Handle<jlightning> {
|
|
|
46
48
|
target: Unit
|
|
47
49
|
]
|
|
48
50
|
]): T;
|
|
49
|
-
static flash(...parameters: [
|
|
51
|
+
static flash(...parameters: [
|
|
52
|
+
...parameters: Parameters<(typeof Lightning)["create"]>,
|
|
53
|
+
duration: number,
|
|
54
|
+
fading?: boolean
|
|
55
|
+
]): void;
|
|
50
56
|
}
|
|
51
57
|
export {};
|
package/engine/lightning.lua
CHANGED
|
@@ -27,6 +27,11 @@ local getUnitZ = BlzGetUnitZ
|
|
|
27
27
|
local getUnitFlyHeight = GetUnitFlyHeight
|
|
28
28
|
local getLocationZ = GetLocationZ
|
|
29
29
|
local moveLocation = MoveLocation
|
|
30
|
+
local getLightningColorA = GetLightningColorA
|
|
31
|
+
local getLightningColorR = GetLightningColorR
|
|
32
|
+
local getLightningColorG = GetLightningColorG
|
|
33
|
+
local getLightningColorB = GetLightningColorB
|
|
34
|
+
local setLightningColor = SetLightningColor
|
|
30
35
|
local location = Location(0, 0)
|
|
31
36
|
local unitToUnitLightnings = setmetatable({}, {__mode = "k"})
|
|
32
37
|
local unitToPointLightnings = setmetatable({}, {__mode = "k"})
|
|
@@ -225,9 +230,19 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
|
|
|
225
230
|
return lightning
|
|
226
231
|
end
|
|
227
232
|
function Lightning.flash(self, ...)
|
|
228
|
-
local
|
|
233
|
+
local parameterOrDuration, durationOrFading = select(-2, ...)
|
|
234
|
+
local hasFading = ____type(durationOrFading) ~= "number"
|
|
235
|
+
local parametersToForwardCount = select("#", ...) - (hasFading and 2 or 1)
|
|
229
236
|
local lightning = forwardByN[parametersToForwardCount](____exports.Lightning.create, self, ...)
|
|
230
|
-
local duration
|
|
237
|
+
local duration
|
|
238
|
+
if hasFading then
|
|
239
|
+
duration = parameterOrDuration
|
|
240
|
+
if durationOrFading then
|
|
241
|
+
lightning[110] = true
|
|
242
|
+
end
|
|
243
|
+
else
|
|
244
|
+
duration = durationOrFading
|
|
245
|
+
end
|
|
231
246
|
lightning[109] = duration
|
|
232
247
|
temporaryLightningsCount = temporaryLightningsCount + 1
|
|
233
248
|
temporaryLightnings[temporaryLightningsCount] = lightning
|
|
@@ -295,6 +310,16 @@ Timer.onPeriod[UPDATE_PERIOD]:addListener(function()
|
|
|
295
310
|
temporaryLightnings[temporaryLightningsCount] = nil
|
|
296
311
|
temporaryLightningsCount = temporaryLightningsCount - 1
|
|
297
312
|
else
|
|
313
|
+
if lightning[110] then
|
|
314
|
+
local handle = lightning.handle
|
|
315
|
+
setLightningColor(
|
|
316
|
+
handle,
|
|
317
|
+
getLightningColorR(handle),
|
|
318
|
+
getLightningColorG(handle),
|
|
319
|
+
getLightningColorB(handle),
|
|
320
|
+
getLightningColorA(handle) * (1 - UPDATE_PERIOD / duration)
|
|
321
|
+
)
|
|
322
|
+
end
|
|
298
323
|
lightning[109] = duration - UPDATE_PERIOD
|
|
299
324
|
i = i + 1
|
|
300
325
|
end
|