warscript 0.0.1-dev.ff2a62d → 0.0.1-dev.ffaa090
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/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +13 -3
- package/core/types/effect.lua +116 -17
- package/core/types/frame.d.ts +6 -0
- package/core/types/frame.lua +91 -1
- package/core/types/sound.d.ts +1 -0
- package/core/types/sound.lua +36 -2
- package/core/util.d.ts +1 -1
- package/core/util.lua +18 -1
- 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 +8 -5
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +3 -0
- package/engine/behaviour/ability/damage.lua +2 -2
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +28 -0
- 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.d.ts +16 -3
- package/engine/behaviour/ability.lua +105 -34
- package/engine/behaviour/unit.d.ts +7 -0
- package/engine/behaviour/unit.lua +20 -0
- package/engine/buff.d.ts +84 -43
- package/engine/buff.lua +379 -226
- 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/item.d.ts +2 -2
- package/engine/internal/item.lua +56 -25
- 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 +52 -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-missile-launch.lua +24 -5
- package/engine/internal/unit.d.ts +31 -10
- package/engine/internal/unit.lua +170 -83
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +7 -2
- package/engine/local-client.lua +82 -0
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type.d.ts +8 -6
- package/engine/object-data/entry/ability-type.lua +62 -27
- package/engine/object-data/entry/buff-type/applicable.lua +13 -37
- package/engine/object-data/entry/buff-type.d.ts +1 -1
- package/engine/object-data/entry/buff-type.lua +2 -2
- package/engine/object-data/entry/destructible-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.d.ts +15 -1
- package/engine/object-data/entry/item-type.lua +93 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +16 -0
- package/engine/object-data/entry/sound-preset.lua +36 -0
- package/engine/object-data/entry/unit-type.d.ts +8 -1
- package/engine/object-data/entry/unit-type.lua +61 -8
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- 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/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -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/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/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -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/reflection.lua +11 -7
- package/utility/types.d.ts +1 -0
package/engine/internal/unit.lua
CHANGED
|
@@ -51,11 +51,14 @@ 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
|
|
57
59
|
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
58
60
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
61
|
+
local resetUnitAnimation = ResetUnitAnimation
|
|
59
62
|
local queueUnitAnimation = QueueUnitAnimation
|
|
60
63
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
61
64
|
local getUnitRealField = BlzGetUnitRealField
|
|
@@ -75,6 +78,7 @@ local setUnitScale = SetUnitScale
|
|
|
75
78
|
local setUnitPosition = SetUnitPosition
|
|
76
79
|
local setUnitTimeScale = SetUnitTimeScale
|
|
77
80
|
local getHandleId = GetHandleId
|
|
81
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
78
82
|
local createUnit = CreateUnit
|
|
79
83
|
local killUnit = KillUnit
|
|
80
84
|
local setUnitExploded = SetUnitExploded
|
|
@@ -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[
|
|
626
|
+
local counter = (unit[103] or 0) - 1
|
|
634
627
|
if counter ~= 0 then
|
|
635
|
-
unit[
|
|
628
|
+
unit[103] = counter
|
|
636
629
|
return
|
|
637
630
|
end
|
|
638
|
-
unit[
|
|
639
|
-
local healthBonus = unit[
|
|
631
|
+
unit[103] = nil
|
|
632
|
+
local healthBonus = unit[104]
|
|
640
633
|
if healthBonus ~= nil then
|
|
641
|
-
unit[
|
|
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
|
|
753
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
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
|
|
772
|
+
local ____temp_2
|
|
772
773
|
if type(x) == "number" then
|
|
773
|
-
|
|
774
|
+
____temp_2 = isUnitInRangeXY(self.handle, x, y, range)
|
|
774
775
|
else
|
|
775
|
-
|
|
776
|
+
____temp_2 = isUnitInRange(self.handle, x.handle, y)
|
|
776
777
|
end
|
|
777
|
-
return
|
|
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[
|
|
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)
|
|
@@ -818,14 +822,14 @@ function Unit.prototype.kill(self)
|
|
|
818
822
|
killUnit(self.handle)
|
|
819
823
|
end
|
|
820
824
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
821
|
-
local
|
|
822
|
-
local
|
|
823
|
-
local
|
|
824
|
-
if
|
|
825
|
-
|
|
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
|
|
826
830
|
end
|
|
827
|
-
__TS__SparseArrayPush(
|
|
828
|
-
|
|
831
|
+
__TS__SparseArrayPush(____array_4, ____doEffect_3)
|
|
832
|
+
____ReviveHero_5(__TS__SparseArraySpread(____array_4))
|
|
829
833
|
end
|
|
830
834
|
function Unit.prototype.healTarget(self, target, amount)
|
|
831
835
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -865,7 +869,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
865
869
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
866
870
|
end
|
|
867
871
|
function Unit.prototype.itemInSlot(self, slot)
|
|
868
|
-
return Item:of(
|
|
872
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
869
873
|
end
|
|
870
874
|
function Unit.prototype.addAbility(self, abilityId)
|
|
871
875
|
if unitAddAbility(self.handle, abilityId) then
|
|
@@ -934,8 +938,15 @@ function Unit.prototype.interruptAttack(self)
|
|
|
934
938
|
unitInterruptAttack(self.handle)
|
|
935
939
|
end
|
|
936
940
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
937
|
-
|
|
938
|
-
unitDisableAbility(
|
|
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
|
+
)
|
|
939
950
|
end
|
|
940
951
|
function Unit.prototype.getDistanceTo(self, target)
|
|
941
952
|
local handle = self.handle
|
|
@@ -995,18 +1006,18 @@ function Unit.prototype.unpauseEx(self)
|
|
|
995
1006
|
self:decrementStunCounter()
|
|
996
1007
|
end
|
|
997
1008
|
function Unit.prototype.incrementStunCounter(self)
|
|
998
|
-
local stunCounter = self[
|
|
999
|
-
if not self[
|
|
1009
|
+
local stunCounter = self[102] or 0
|
|
1010
|
+
if not self[101] or stunCounter >= 0 then
|
|
1000
1011
|
BlzPauseUnitEx(self.handle, true)
|
|
1001
1012
|
end
|
|
1002
|
-
self[
|
|
1013
|
+
self[102] = stunCounter + 1
|
|
1003
1014
|
end
|
|
1004
1015
|
function Unit.prototype.decrementStunCounter(self)
|
|
1005
|
-
local stunCounter = self[
|
|
1006
|
-
if not self[
|
|
1016
|
+
local stunCounter = self[102] or 0
|
|
1017
|
+
if not self[101] or stunCounter >= 1 then
|
|
1007
1018
|
BlzPauseUnitEx(self.handle, false)
|
|
1008
1019
|
end
|
|
1009
|
-
self[
|
|
1020
|
+
self[102] = stunCounter - 1
|
|
1010
1021
|
end
|
|
1011
1022
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1012
1023
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1108,8 +1119,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1108
1119
|
)
|
|
1109
1120
|
return targetCollection
|
|
1110
1121
|
end
|
|
1111
|
-
function Unit.getSelectionOf(self, player)
|
|
1112
|
-
|
|
1122
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1123
|
+
if target == nil then
|
|
1124
|
+
target = {}
|
|
1125
|
+
end
|
|
1126
|
+
targetCollection = target
|
|
1113
1127
|
targetCollectionNextIndex = 1
|
|
1114
1128
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1115
1129
|
return targetCollection
|
|
@@ -1131,6 +1145,9 @@ end
|
|
|
1131
1145
|
function Unit.prototype.__tostring(self)
|
|
1132
1146
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1133
1147
|
end
|
|
1148
|
+
function Unit.getBySyncId(self, syncId)
|
|
1149
|
+
return unitBySyncId[syncId]
|
|
1150
|
+
end
|
|
1134
1151
|
__TS__SetDescriptor(
|
|
1135
1152
|
Unit.prototype,
|
|
1136
1153
|
"_deltas",
|
|
@@ -1194,6 +1211,14 @@ __TS__SetDescriptor(
|
|
|
1194
1211
|
end},
|
|
1195
1212
|
true
|
|
1196
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
|
+
)
|
|
1197
1222
|
__TS__SetDescriptor(
|
|
1198
1223
|
Unit.prototype,
|
|
1199
1224
|
"combatClassifications",
|
|
@@ -1388,17 +1413,17 @@ __TS__SetDescriptor(
|
|
|
1388
1413
|
"isTeamGlowVisible",
|
|
1389
1414
|
{
|
|
1390
1415
|
get = function(self)
|
|
1391
|
-
return not self[
|
|
1416
|
+
return not self[106]
|
|
1392
1417
|
end,
|
|
1393
1418
|
set = function(self, isTeamGlowVisible)
|
|
1394
1419
|
showUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1395
|
-
local
|
|
1420
|
+
local ____temp_6
|
|
1396
1421
|
if not isTeamGlowVisible then
|
|
1397
|
-
|
|
1422
|
+
____temp_6 = true
|
|
1398
1423
|
else
|
|
1399
|
-
|
|
1424
|
+
____temp_6 = nil
|
|
1400
1425
|
end
|
|
1401
|
-
self[
|
|
1426
|
+
self[106] = ____temp_6
|
|
1402
1427
|
end
|
|
1403
1428
|
},
|
|
1404
1429
|
true
|
|
@@ -1408,7 +1433,7 @@ __TS__SetDescriptor(
|
|
|
1408
1433
|
"color",
|
|
1409
1434
|
{set = function(self, color)
|
|
1410
1435
|
setUnitColor(self.handle, color.handle)
|
|
1411
|
-
if self[
|
|
1436
|
+
if self[106] then
|
|
1412
1437
|
showUnitTeamGlow(self.handle, false)
|
|
1413
1438
|
end
|
|
1414
1439
|
end},
|
|
@@ -1432,14 +1457,14 @@ __TS__SetDescriptor(
|
|
|
1432
1457
|
"maxHealth",
|
|
1433
1458
|
{
|
|
1434
1459
|
get = function(self)
|
|
1435
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1460
|
+
return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
|
|
1436
1461
|
end,
|
|
1437
1462
|
set = function(self, maxHealth)
|
|
1438
|
-
if maxHealth < 1 and self[
|
|
1439
|
-
self[
|
|
1463
|
+
if maxHealth < 1 and self[103] ~= nil then
|
|
1464
|
+
self[104] = (self[104] or 0) + (1 - maxHealth)
|
|
1440
1465
|
maxHealth = 1
|
|
1441
1466
|
end
|
|
1442
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1467
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
|
|
1443
1468
|
end
|
|
1444
1469
|
},
|
|
1445
1470
|
true
|
|
@@ -1481,10 +1506,10 @@ __TS__SetDescriptor(
|
|
|
1481
1506
|
"health",
|
|
1482
1507
|
{
|
|
1483
1508
|
get = function(self)
|
|
1484
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1509
|
+
return GetWidgetLife(self.handle) - (self[105] or 0)
|
|
1485
1510
|
end,
|
|
1486
1511
|
set = function(self, health)
|
|
1487
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1512
|
+
SetWidgetLife(self.handle, health + (self[105] or 0))
|
|
1488
1513
|
end
|
|
1489
1514
|
},
|
|
1490
1515
|
true
|
|
@@ -1578,7 +1603,7 @@ __TS__SetDescriptor(
|
|
|
1578
1603
|
"x",
|
|
1579
1604
|
{
|
|
1580
1605
|
get = function(self)
|
|
1581
|
-
return getUnitX(self.handle)
|
|
1606
|
+
return self[107] or getUnitX(self.handle)
|
|
1582
1607
|
end,
|
|
1583
1608
|
set = function(self, v)
|
|
1584
1609
|
SetUnitX(self.handle, v)
|
|
@@ -1591,7 +1616,7 @@ __TS__SetDescriptor(
|
|
|
1591
1616
|
"y",
|
|
1592
1617
|
{
|
|
1593
1618
|
get = function(self)
|
|
1594
|
-
return getUnitY(self.handle)
|
|
1619
|
+
return self[108] or getUnitY(self.handle)
|
|
1595
1620
|
end,
|
|
1596
1621
|
set = function(self, v)
|
|
1597
1622
|
SetUnitY(self.handle, v)
|
|
@@ -1695,17 +1720,17 @@ __TS__SetDescriptor(
|
|
|
1695
1720
|
set = function(self, isPaused)
|
|
1696
1721
|
local handle = self.handle
|
|
1697
1722
|
if isPaused and not IsUnitPaused(handle) then
|
|
1698
|
-
self[
|
|
1699
|
-
for _ = self[
|
|
1723
|
+
self[101] = true
|
|
1724
|
+
for _ = self[102] or 0, -1 do
|
|
1700
1725
|
BlzPauseUnitEx(handle, true)
|
|
1701
1726
|
end
|
|
1702
1727
|
PauseUnit(handle, true)
|
|
1703
1728
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1704
1729
|
PauseUnit(handle, false)
|
|
1705
|
-
for _ = self[
|
|
1730
|
+
for _ = self[102] or 0, -1 do
|
|
1706
1731
|
BlzPauseUnitEx(handle, false)
|
|
1707
1732
|
end
|
|
1708
|
-
self[
|
|
1733
|
+
self[101] = nil
|
|
1709
1734
|
end
|
|
1710
1735
|
end
|
|
1711
1736
|
},
|
|
@@ -2124,25 +2149,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2124
2149
|
InitializingEvent,
|
|
2125
2150
|
function(event)
|
|
2126
2151
|
local function listener(unit, id)
|
|
2127
|
-
local
|
|
2152
|
+
local ____GetSpellTargetUnit_result_9
|
|
2128
2153
|
if GetSpellTargetUnit() then
|
|
2129
|
-
|
|
2154
|
+
____GetSpellTargetUnit_result_9 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2130
2155
|
else
|
|
2131
|
-
local
|
|
2156
|
+
local ____GetSpellTargetItem_result_8
|
|
2132
2157
|
if GetSpellTargetItem() then
|
|
2133
|
-
|
|
2158
|
+
____GetSpellTargetItem_result_8 = Item:of(GetSpellTargetItem())
|
|
2134
2159
|
else
|
|
2135
|
-
local
|
|
2160
|
+
local ____GetSpellTargetDestructable_result_7
|
|
2136
2161
|
if GetSpellTargetDestructable() then
|
|
2137
|
-
|
|
2162
|
+
____GetSpellTargetDestructable_result_7 = Destructable:of(GetSpellTargetDestructable())
|
|
2138
2163
|
else
|
|
2139
|
-
|
|
2164
|
+
____GetSpellTargetDestructable_result_7 = nil
|
|
2140
2165
|
end
|
|
2141
|
-
|
|
2166
|
+
____GetSpellTargetItem_result_8 = ____GetSpellTargetDestructable_result_7
|
|
2142
2167
|
end
|
|
2143
|
-
|
|
2168
|
+
____GetSpellTargetUnit_result_9 = ____GetSpellTargetItem_result_8
|
|
2144
2169
|
end
|
|
2145
|
-
local target =
|
|
2170
|
+
local target = ____GetSpellTargetUnit_result_9
|
|
2146
2171
|
if target then
|
|
2147
2172
|
invoke(event, unit, id, target)
|
|
2148
2173
|
end
|
|
@@ -2314,10 +2339,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2314
2339
|
____exports.UnitTriggerEvent,
|
|
2315
2340
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2316
2341
|
function()
|
|
2317
|
-
local
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
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
|
|
2321
2348
|
end
|
|
2322
2349
|
return IgnoreEvent
|
|
2323
2350
|
end
|
|
@@ -2452,6 +2479,7 @@ Unit.onDamage = __TS__New(
|
|
|
2452
2479
|
damageType = BlzGetEventDamageType(),
|
|
2453
2480
|
weaponType = BlzGetEventWeaponType(),
|
|
2454
2481
|
isAttack = BlzGetEventIsAttack(),
|
|
2482
|
+
originalAmount = GetEventDamage(),
|
|
2455
2483
|
preventDeath = damageEventPreventDeath
|
|
2456
2484
|
}
|
|
2457
2485
|
local evData = setmetatable(
|
|
@@ -2468,7 +2496,7 @@ Unit.onDamage = __TS__New(
|
|
|
2468
2496
|
invoke(event, source, target, evData)
|
|
2469
2497
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2470
2498
|
local bonusHealth = math.ceil(evData.amount)
|
|
2471
|
-
target[
|
|
2499
|
+
target[105] = (target[105] or 0) + bonusHealth
|
|
2472
2500
|
BlzSetUnitMaxHP(
|
|
2473
2501
|
target.handle,
|
|
2474
2502
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2482,7 +2510,7 @@ Unit.onDamage = __TS__New(
|
|
|
2482
2510
|
evData[0],
|
|
2483
2511
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2484
2512
|
)
|
|
2485
|
-
target[
|
|
2513
|
+
target[105] = (target[105] or 0) - bonusHealth
|
|
2486
2514
|
SetWidgetLife(
|
|
2487
2515
|
target.handle,
|
|
2488
2516
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2502,32 +2530,91 @@ Unit.onDamage = __TS__New(
|
|
|
2502
2530
|
DestroyTrigger(trigger)
|
|
2503
2531
|
end
|
|
2504
2532
|
)
|
|
2505
|
-
Unit.
|
|
2533
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2506
2534
|
____exports.UnitTriggerEvent,
|
|
2507
2535
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2508
2536
|
function()
|
|
2509
2537
|
local unit = getTriggerUnit()
|
|
2510
|
-
|
|
2511
|
-
|
|
2538
|
+
local item = getManipulatedItem()
|
|
2539
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2540
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2512
2541
|
end
|
|
2513
2542
|
return IgnoreEvent
|
|
2514
2543
|
end
|
|
2515
2544
|
)
|
|
2516
|
-
Unit.
|
|
2545
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2517
2546
|
____exports.UnitTriggerEvent,
|
|
2518
2547
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2519
2548
|
function()
|
|
2520
2549
|
local unit = getTriggerUnit()
|
|
2521
|
-
|
|
2522
|
-
|
|
2550
|
+
local item = getManipulatedItem()
|
|
2551
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2552
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2523
2553
|
end
|
|
2524
2554
|
return IgnoreEvent
|
|
2525
2555
|
end
|
|
2526
2556
|
)
|
|
2527
|
-
Unit.
|
|
2557
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2528
2558
|
____exports.UnitTriggerEvent,
|
|
2529
2559
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2530
|
-
function()
|
|
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}
|
|
2531
2618
|
)
|
|
2532
2619
|
__TS__ObjectDefineProperty(
|
|
2533
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
|
package/engine/lightning.d.ts
CHANGED
|
@@ -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
|
|
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():
|
|
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: [
|
|
52
|
+
static flash(...parameters: [
|
|
53
|
+
...parameters: Parameters<(typeof Lightning)["create"]>,
|
|
54
|
+
duration: number,
|
|
55
|
+
fading?: boolean
|
|
56
|
+
]): void;
|
|
50
57
|
}
|
|
51
58
|
export {};
|