warscript 0.0.1-dev.a5f2d10 → 0.0.1-dev.a73c979
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/attributes.d.ts +5 -0
- package/attributes.lua +8 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +1 -3
- package/core/types/effect.lua +26 -29
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/timer.d.ts +7 -8
- package/core/types/timer.lua +18 -21
- package/core/util.lua +6 -1
- package/decl/native.d.ts +840 -786
- package/engine/behavior.d.ts +2 -0
- package/engine/behavior.lua +53 -27
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- 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 +9 -3
- package/engine/behaviour/ability/damage.lua +26 -38
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +18 -3
- package/engine/behaviour/ability.d.ts +5 -1
- package/engine/behaviour/ability.lua +26 -21
- package/engine/behaviour/unit/stun-immunity.d.ts +5 -3
- package/engine/behaviour/unit/stun-immunity.lua +43 -27
- package/engine/behaviour/unit.d.ts +28 -0
- package/engine/behaviour/unit.lua +163 -4
- package/engine/buff.d.ts +54 -41
- package/engine/buff.lua +286 -228
- package/engine/internal/ability.d.ts +4 -0
- package/engine/internal/ability.lua +23 -0
- package/engine/internal/item/ability.lua +63 -11
- package/engine/internal/item.d.ts +7 -4
- package/engine/internal/item.lua +131 -28
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +62 -0
- package/engine/internal/unit/add-item-to-slot.lua +4 -2
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +1 -1
- package/engine/internal/unit.d.ts +28 -5
- package/engine/internal/unit.lua +239 -94
- package/engine/lightning.d.ts +4 -3
- package/engine/lightning.lua +21 -12
- 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/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- 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/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- 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/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -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/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +19 -17
- package/engine/object-data/entry/ability-type.lua +81 -21
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.lua +4 -4
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +10 -3
- package/engine/object-data/entry/unit-type.lua +155 -92
- 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-field/ability.d.ts +1 -1
- package/engine/object-field/unit.d.ts +57 -3
- package/engine/object-field/unit.lua +207 -7
- package/engine/object-field.d.ts +15 -4
- package/engine/object-field.lua +184 -90
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/unit.d.ts +4 -0
- package/engine/standard/fields/unit.lua +7 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +175 -10
- package/engine/unit.d.ts +1 -0
- package/engine/unit.lua +1 -0
- package/objutil/buff.lua +1 -2
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/utility/arrays.d.ts +1 -0
- package/utility/arrays.lua +3 -0
- package/utility/functions.d.ts +6 -0
- package/utility/functions.lua +6 -0
- package/utility/linked-set.d.ts +1 -0
- package/utility/linked-set.lua +3 -0
- package/utility/lua-maps.d.ts +4 -0
- package/utility/lua-maps.lua +20 -0
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +3 -0
- package/utility/reflection.lua +11 -7
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/internal/unit.lua
CHANGED
|
@@ -53,12 +53,19 @@ local ____math = require("math")
|
|
|
53
53
|
local min = ____math.min
|
|
54
54
|
local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
|
|
55
55
|
local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
|
|
56
|
+
local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
|
|
57
|
+
local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
|
|
58
|
+
local nativeToAttackType = ____attack_2Dtype.nativeToAttackType
|
|
59
|
+
local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
|
|
60
|
+
local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
|
|
61
|
+
local ____attributes = require("attributes")
|
|
62
|
+
local isAttribute = ____attributes.isAttribute
|
|
63
|
+
local ____ability = require("engine.internal.item.ability")
|
|
64
|
+
local doUnitAbilityAction = ____ability.doUnitAbilityAction
|
|
56
65
|
local match = string.match
|
|
57
66
|
local ____tostring = _G.tostring
|
|
58
67
|
local setUnitAnimation = SetUnitAnimation
|
|
59
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
60
68
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
61
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
62
69
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
63
70
|
local getUnitRealField = BlzGetUnitRealField
|
|
64
71
|
local getHeroStr = GetHeroStr
|
|
@@ -80,7 +87,6 @@ local getHandleId = GetHandleId
|
|
|
80
87
|
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
81
88
|
local createUnit = CreateUnit
|
|
82
89
|
local killUnit = KillUnit
|
|
83
|
-
local setUnitExploded = SetUnitExploded
|
|
84
90
|
local removeUnit = RemoveUnit
|
|
85
91
|
local getUnitTypeId = GetUnitTypeId
|
|
86
92
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -96,8 +102,6 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
96
102
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
97
103
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
98
104
|
local isUnitInRange = IsUnitInRange
|
|
99
|
-
local setResourceAmount = SetResourceAmount
|
|
100
|
-
local getResourceAmount = GetResourceAmount
|
|
101
105
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
102
106
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
103
107
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
@@ -121,15 +125,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
121
125
|
local getIssuedOrderId = GetIssuedOrderId
|
|
122
126
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
123
127
|
local unitAlive = UnitAlive
|
|
124
|
-
local unitAddType = UnitAddType
|
|
125
|
-
local unitRemoveType = UnitRemoveType
|
|
126
|
-
local isUnitIllusion = IsUnitIllusion
|
|
127
|
-
local isUnitType = IsUnitType
|
|
128
128
|
local isUnitAlly = IsUnitAlly
|
|
129
129
|
local isUnitEnemy = IsUnitEnemy
|
|
130
130
|
local getOwningPlayer = GetOwningPlayer
|
|
131
|
-
local setUnitColor = SetUnitColor
|
|
132
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
133
131
|
____exports.UnitClassification = {}
|
|
134
132
|
local UnitClassification = ____exports.UnitClassification
|
|
135
133
|
do
|
|
@@ -139,6 +137,7 @@ do
|
|
|
139
137
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
140
138
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
141
139
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
140
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
142
141
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
143
142
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
144
143
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -346,6 +345,9 @@ local function dispatchAbility(event)
|
|
|
346
345
|
}
|
|
347
346
|
)
|
|
348
347
|
end
|
|
348
|
+
local function damagingEventPreventRetaliation(self)
|
|
349
|
+
self[0] = true
|
|
350
|
+
end
|
|
349
351
|
local function damageEventPreventDeath(self, callback, ...)
|
|
350
352
|
if self[0] ~= nil then
|
|
351
353
|
return
|
|
@@ -357,7 +359,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
357
359
|
rawset(self, 1 + i, (select(i, ...)))
|
|
358
360
|
end
|
|
359
361
|
end
|
|
360
|
-
local damageSetters = {
|
|
362
|
+
local damageSetters = {
|
|
363
|
+
amount = BlzSetEventDamage,
|
|
364
|
+
attackType = function(attackType)
|
|
365
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
366
|
+
end,
|
|
367
|
+
damageType = BlzSetEventDamageType,
|
|
368
|
+
weaponType = BlzSetEventWeaponType
|
|
369
|
+
}
|
|
361
370
|
local jlimitopByOperator = {
|
|
362
371
|
[0] = LESS_THAN_OR_EQUAL,
|
|
363
372
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -435,6 +444,19 @@ __TS__SetDescriptor(
|
|
|
435
444
|
},
|
|
436
445
|
true
|
|
437
446
|
)
|
|
447
|
+
__TS__SetDescriptor(
|
|
448
|
+
UnitWeapon.prototype,
|
|
449
|
+
"allowedTargetCombatClassifications",
|
|
450
|
+
{
|
|
451
|
+
get = function(self)
|
|
452
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
453
|
+
end,
|
|
454
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
455
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
456
|
+
end
|
|
457
|
+
},
|
|
458
|
+
true
|
|
459
|
+
)
|
|
438
460
|
__TS__SetDescriptor(
|
|
439
461
|
UnitWeapon.prototype,
|
|
440
462
|
"damageBase",
|
|
@@ -639,16 +661,26 @@ local function delayHealthChecksCallback(unit)
|
|
|
639
661
|
end
|
|
640
662
|
end
|
|
641
663
|
local nextSyncId = 1
|
|
642
|
-
local unitBySyncId = setmetatable({}, {__mode = "
|
|
664
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
665
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
666
|
+
local function addAbility(unit, abilityTypeId)
|
|
667
|
+
local ____unitAddAbility_result_0
|
|
668
|
+
if unitAddAbility(unit, abilityTypeId) then
|
|
669
|
+
____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
|
|
670
|
+
else
|
|
671
|
+
____unitAddAbility_result_0 = nil
|
|
672
|
+
end
|
|
673
|
+
return ____unitAddAbility_result_0
|
|
674
|
+
end
|
|
643
675
|
____exports.Unit = __TS__Class()
|
|
644
676
|
local Unit = ____exports.Unit
|
|
645
677
|
Unit.name = "Unit"
|
|
646
678
|
__TS__ClassExtends(Unit, Handle)
|
|
647
679
|
function Unit.prototype.____constructor(self, handle)
|
|
648
680
|
Handle.prototype.____constructor(self, handle)
|
|
649
|
-
local
|
|
650
|
-
nextSyncId =
|
|
651
|
-
self.syncId =
|
|
681
|
+
local ____nextSyncId_1 = nextSyncId
|
|
682
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
683
|
+
self.syncId = ____nextSyncId_1
|
|
652
684
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
653
685
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
654
686
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -680,6 +712,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
680
712
|
end
|
|
681
713
|
function Unit.prototype.onDestroy(self)
|
|
682
714
|
local handle = self.handle
|
|
715
|
+
self[107] = getUnitX(handle)
|
|
716
|
+
self[108] = getUnitY(handle)
|
|
683
717
|
if not self._owner then
|
|
684
718
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
685
719
|
end
|
|
@@ -747,17 +781,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
747
781
|
end}
|
|
748
782
|
end
|
|
749
783
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
750
|
-
local
|
|
751
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
784
|
+
local ____combatClassification_2 = combatClassification
|
|
785
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
752
786
|
end
|
|
753
787
|
function Unit.prototype.addClassification(self, classification)
|
|
754
|
-
return
|
|
788
|
+
return UnitAddType(self.handle, classification)
|
|
755
789
|
end
|
|
756
790
|
function Unit.prototype.removeClassification(self, classification)
|
|
757
|
-
return
|
|
791
|
+
return UnitRemoveType(self.handle, classification)
|
|
758
792
|
end
|
|
759
793
|
function Unit.prototype.hasClassification(self, classification)
|
|
760
|
-
return
|
|
794
|
+
return IsUnitType(self.handle, classification)
|
|
761
795
|
end
|
|
762
796
|
function Unit.prototype.isVisibleTo(self, player)
|
|
763
797
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -766,13 +800,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
766
800
|
return isUnitInvisible(self.handle, player.handle)
|
|
767
801
|
end
|
|
768
802
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
769
|
-
local
|
|
803
|
+
local ____temp_3
|
|
770
804
|
if type(x) == "number" then
|
|
771
|
-
|
|
805
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
772
806
|
else
|
|
773
|
-
|
|
807
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
774
808
|
end
|
|
775
|
-
return
|
|
809
|
+
return ____temp_3
|
|
776
810
|
end
|
|
777
811
|
function Unit.prototype.isAllyOf(self, unit)
|
|
778
812
|
return isUnitAlly(
|
|
@@ -790,13 +824,25 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
790
824
|
if type(animation) == "number" then
|
|
791
825
|
setUnitAnimationByIndex(self.handle, animation)
|
|
792
826
|
elseif rarity then
|
|
793
|
-
|
|
827
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
794
828
|
else
|
|
795
829
|
setUnitAnimation(self.handle, animation)
|
|
796
830
|
end
|
|
797
831
|
end
|
|
832
|
+
function Unit.prototype.resetAnimation(self)
|
|
833
|
+
ResetUnitAnimation(self.handle)
|
|
834
|
+
end
|
|
798
835
|
function Unit.prototype.queueAnimation(self, animation)
|
|
799
|
-
|
|
836
|
+
QueueUnitAnimation(self.handle, animation)
|
|
837
|
+
end
|
|
838
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
839
|
+
if target:isAllowedTarget(self, self.firstWeapon.allowedTargetCombatClassifications) then
|
|
840
|
+
return self.firstWeapon
|
|
841
|
+
end
|
|
842
|
+
if target:isAllowedTarget(target, self.secondWeapon.allowedTargetCombatClassifications) then
|
|
843
|
+
return self.secondWeapon
|
|
844
|
+
end
|
|
845
|
+
return nil
|
|
800
846
|
end
|
|
801
847
|
function Unit.prototype.delayHealthChecks(self)
|
|
802
848
|
self[103] = (self[103] or 0) + 1
|
|
@@ -809,21 +855,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
809
855
|
return IsUnitSelected(self.handle, player.handle)
|
|
810
856
|
end
|
|
811
857
|
function Unit.prototype.explode(self)
|
|
812
|
-
|
|
858
|
+
SetUnitExploded(self.handle, true)
|
|
813
859
|
killUnit(self.handle)
|
|
814
860
|
end
|
|
815
861
|
function Unit.prototype.kill(self)
|
|
816
862
|
killUnit(self.handle)
|
|
817
863
|
end
|
|
818
864
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
819
|
-
local
|
|
820
|
-
local
|
|
821
|
-
local
|
|
822
|
-
if
|
|
823
|
-
|
|
865
|
+
local ____ReviveHero_6 = ReviveHero
|
|
866
|
+
local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
|
|
867
|
+
local ____doEffect_4 = doEffect
|
|
868
|
+
if ____doEffect_4 == nil then
|
|
869
|
+
____doEffect_4 = false
|
|
824
870
|
end
|
|
825
|
-
__TS__SparseArrayPush(
|
|
826
|
-
|
|
871
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
872
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
827
873
|
end
|
|
828
874
|
function Unit.prototype.healTarget(self, target, amount)
|
|
829
875
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -866,17 +912,16 @@ function Unit.prototype.itemInSlot(self, slot)
|
|
|
866
912
|
return Item:of(unitItemInSlot(self.handle, slot))
|
|
867
913
|
end
|
|
868
914
|
function Unit.prototype.addAbility(self, abilityId)
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
915
|
+
local ability = UnitAbility:of(
|
|
916
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
917
|
+
abilityId,
|
|
918
|
+
self
|
|
919
|
+
)
|
|
920
|
+
if ability ~= nil then
|
|
875
921
|
local abilities = self.abilities
|
|
876
922
|
abilities[#abilities + 1] = ability
|
|
877
|
-
return ability
|
|
878
923
|
end
|
|
879
|
-
return
|
|
924
|
+
return ability
|
|
880
925
|
end
|
|
881
926
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
882
927
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -891,19 +936,11 @@ function Unit.prototype.hasAbility(self, abilityId)
|
|
|
891
936
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
892
937
|
end
|
|
893
938
|
function Unit.prototype.getAbilityById(self, abilityId)
|
|
894
|
-
local
|
|
895
|
-
|
|
896
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
897
|
-
return nil
|
|
898
|
-
end
|
|
899
|
-
return UnitAbility:of(
|
|
900
|
-
getUnitAbility(self.handle, abilityId),
|
|
901
|
-
abilityId,
|
|
902
|
-
self
|
|
903
|
-
)
|
|
939
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
940
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
904
941
|
end
|
|
905
942
|
function Unit.prototype.removeAbility(self, abilityId)
|
|
906
|
-
if
|
|
943
|
+
if doUnitAbilityAction(self.handle, abilityId, unitRemoveAbility, abilityId) then
|
|
907
944
|
local abilities = self.abilities
|
|
908
945
|
for i = 1, #abilities do
|
|
909
946
|
if abilities[i].typeId == abilityId then
|
|
@@ -928,6 +965,21 @@ end
|
|
|
928
965
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
929
966
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
930
967
|
end
|
|
968
|
+
function Unit.prototype.interruptMovement(self)
|
|
969
|
+
local handle = self.handle
|
|
970
|
+
unitDisableAbility(
|
|
971
|
+
handle,
|
|
972
|
+
fourCC("Amov"),
|
|
973
|
+
true,
|
|
974
|
+
false
|
|
975
|
+
)
|
|
976
|
+
unitDisableAbility(
|
|
977
|
+
handle,
|
|
978
|
+
fourCC("Amov"),
|
|
979
|
+
false,
|
|
980
|
+
false
|
|
981
|
+
)
|
|
982
|
+
end
|
|
931
983
|
function Unit.prototype.interruptAttack(self)
|
|
932
984
|
unitInterruptAttack(self.handle)
|
|
933
985
|
end
|
|
@@ -1201,7 +1253,7 @@ __TS__SetDescriptor(
|
|
|
1201
1253
|
Unit.prototype,
|
|
1202
1254
|
"isIllusion",
|
|
1203
1255
|
{get = function(self)
|
|
1204
|
-
return
|
|
1256
|
+
return IsUnitIllusion(self.handle)
|
|
1205
1257
|
end},
|
|
1206
1258
|
true
|
|
1207
1259
|
)
|
|
@@ -1286,6 +1338,19 @@ __TS__SetDescriptor(
|
|
|
1286
1338
|
},
|
|
1287
1339
|
true
|
|
1288
1340
|
)
|
|
1341
|
+
__TS__SetDescriptor(
|
|
1342
|
+
Unit.prototype,
|
|
1343
|
+
"primaryAttribute",
|
|
1344
|
+
{
|
|
1345
|
+
get = function(self)
|
|
1346
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1347
|
+
end,
|
|
1348
|
+
set = function(self, primaryAttribute)
|
|
1349
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1350
|
+
end
|
|
1351
|
+
},
|
|
1352
|
+
true
|
|
1353
|
+
)
|
|
1289
1354
|
__TS__SetDescriptor(
|
|
1290
1355
|
Unit.prototype,
|
|
1291
1356
|
"strengthBase",
|
|
@@ -1410,14 +1475,14 @@ __TS__SetDescriptor(
|
|
|
1410
1475
|
return not self[106]
|
|
1411
1476
|
end,
|
|
1412
1477
|
set = function(self, isTeamGlowVisible)
|
|
1413
|
-
|
|
1414
|
-
local
|
|
1478
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1479
|
+
local ____temp_7
|
|
1415
1480
|
if not isTeamGlowVisible then
|
|
1416
|
-
|
|
1481
|
+
____temp_7 = true
|
|
1417
1482
|
else
|
|
1418
|
-
|
|
1483
|
+
____temp_7 = nil
|
|
1419
1484
|
end
|
|
1420
|
-
self[106] =
|
|
1485
|
+
self[106] = ____temp_7
|
|
1421
1486
|
end
|
|
1422
1487
|
},
|
|
1423
1488
|
true
|
|
@@ -1426,9 +1491,9 @@ __TS__SetDescriptor(
|
|
|
1426
1491
|
Unit.prototype,
|
|
1427
1492
|
"color",
|
|
1428
1493
|
{set = function(self, color)
|
|
1429
|
-
|
|
1494
|
+
SetUnitColor(self.handle, color.handle)
|
|
1430
1495
|
if self[106] then
|
|
1431
|
-
|
|
1496
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1432
1497
|
end
|
|
1433
1498
|
end},
|
|
1434
1499
|
true
|
|
@@ -1597,7 +1662,7 @@ __TS__SetDescriptor(
|
|
|
1597
1662
|
"x",
|
|
1598
1663
|
{
|
|
1599
1664
|
get = function(self)
|
|
1600
|
-
return getUnitX(self.handle)
|
|
1665
|
+
return self[107] or getUnitX(self.handle)
|
|
1601
1666
|
end,
|
|
1602
1667
|
set = function(self, v)
|
|
1603
1668
|
SetUnitX(self.handle, v)
|
|
@@ -1610,7 +1675,7 @@ __TS__SetDescriptor(
|
|
|
1610
1675
|
"y",
|
|
1611
1676
|
{
|
|
1612
1677
|
get = function(self)
|
|
1613
|
-
return getUnitY(self.handle)
|
|
1678
|
+
return self[108] or getUnitY(self.handle)
|
|
1614
1679
|
end,
|
|
1615
1680
|
set = function(self, v)
|
|
1616
1681
|
SetUnitY(self.handle, v)
|
|
@@ -1696,10 +1761,10 @@ __TS__SetDescriptor(
|
|
|
1696
1761
|
"gold",
|
|
1697
1762
|
{
|
|
1698
1763
|
get = function(self)
|
|
1699
|
-
return
|
|
1764
|
+
return GetResourceAmount(self.handle)
|
|
1700
1765
|
end,
|
|
1701
1766
|
set = function(self, gold)
|
|
1702
|
-
|
|
1767
|
+
SetResourceAmount(self.handle, gold)
|
|
1703
1768
|
end
|
|
1704
1769
|
},
|
|
1705
1770
|
true
|
|
@@ -1827,6 +1892,19 @@ __TS__SetDescriptor(
|
|
|
1827
1892
|
end},
|
|
1828
1893
|
true
|
|
1829
1894
|
)
|
|
1895
|
+
__TS__SetDescriptor(
|
|
1896
|
+
Unit.prototype,
|
|
1897
|
+
"movementType",
|
|
1898
|
+
{
|
|
1899
|
+
get = function(self)
|
|
1900
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1901
|
+
end,
|
|
1902
|
+
set = function(self, movementType)
|
|
1903
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1904
|
+
end
|
|
1905
|
+
},
|
|
1906
|
+
true
|
|
1907
|
+
)
|
|
1830
1908
|
__TS__SetDescriptor(
|
|
1831
1909
|
Unit.prototype,
|
|
1832
1910
|
"pathing",
|
|
@@ -2008,6 +2086,14 @@ __TS__SetDescriptor(
|
|
|
2008
2086
|
end},
|
|
2009
2087
|
true
|
|
2010
2088
|
)
|
|
2089
|
+
__TS__SetDescriptor(
|
|
2090
|
+
Unit.prototype,
|
|
2091
|
+
"targetAcquiredEvent",
|
|
2092
|
+
{get = function(self)
|
|
2093
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2094
|
+
end},
|
|
2095
|
+
true
|
|
2096
|
+
)
|
|
2011
2097
|
__TS__SetDescriptor(
|
|
2012
2098
|
Unit.prototype,
|
|
2013
2099
|
"onSelect",
|
|
@@ -2143,25 +2229,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2143
2229
|
InitializingEvent,
|
|
2144
2230
|
function(event)
|
|
2145
2231
|
local function listener(unit, id)
|
|
2146
|
-
local
|
|
2232
|
+
local ____GetSpellTargetUnit_result_10
|
|
2147
2233
|
if GetSpellTargetUnit() then
|
|
2148
|
-
|
|
2234
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2149
2235
|
else
|
|
2150
|
-
local
|
|
2236
|
+
local ____GetSpellTargetItem_result_9
|
|
2151
2237
|
if GetSpellTargetItem() then
|
|
2152
|
-
|
|
2238
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2153
2239
|
else
|
|
2154
|
-
local
|
|
2240
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2155
2241
|
if GetSpellTargetDestructable() then
|
|
2156
|
-
|
|
2242
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2157
2243
|
else
|
|
2158
|
-
|
|
2244
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2159
2245
|
end
|
|
2160
|
-
|
|
2246
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2161
2247
|
end
|
|
2162
|
-
|
|
2248
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2163
2249
|
end
|
|
2164
|
-
local target =
|
|
2250
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2165
2251
|
if target then
|
|
2166
2252
|
invoke(event, unit, id, target)
|
|
2167
2253
|
end
|
|
@@ -2369,13 +2455,19 @@ Unit.onDamaging = (function()
|
|
|
2369
2455
|
if source and source.typeId == dummyUnitId then
|
|
2370
2456
|
source = nil
|
|
2371
2457
|
end
|
|
2372
|
-
local target = BlzGetEventDamageTarget()
|
|
2458
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2459
|
+
local metadata = damageMetadataByTarget[target]
|
|
2460
|
+
damageMetadataByTarget[target] = nil
|
|
2373
2461
|
local data = {
|
|
2374
2462
|
amount = GetEventDamage(),
|
|
2375
|
-
attackType = BlzGetEventAttackType(),
|
|
2463
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2376
2464
|
damageType = BlzGetEventDamageType(),
|
|
2377
2465
|
weaponType = BlzGetEventWeaponType(),
|
|
2378
|
-
|
|
2466
|
+
metadata = metadata,
|
|
2467
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2468
|
+
originalAmount = GetEventDamage(),
|
|
2469
|
+
originalMetadata = metadata,
|
|
2470
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2379
2471
|
}
|
|
2380
2472
|
if data.isAttack and source then
|
|
2381
2473
|
local weapon = BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 1) and (BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 0) and -1 or 1) or 0
|
|
@@ -2389,18 +2481,36 @@ Unit.onDamaging = (function()
|
|
|
2389
2481
|
invoke(
|
|
2390
2482
|
event,
|
|
2391
2483
|
source,
|
|
2392
|
-
|
|
2484
|
+
target,
|
|
2393
2485
|
setmetatable(
|
|
2394
2486
|
{},
|
|
2395
2487
|
{
|
|
2396
2488
|
__index = data,
|
|
2397
2489
|
__newindex = function(self, key, value)
|
|
2398
|
-
damageSetters[key]
|
|
2490
|
+
local damageSetter = damageSetters[key]
|
|
2491
|
+
if damageSetter ~= nil then
|
|
2492
|
+
damageSetter(value)
|
|
2493
|
+
end
|
|
2399
2494
|
data[key] = value
|
|
2400
2495
|
end
|
|
2401
2496
|
}
|
|
2402
2497
|
)
|
|
2403
2498
|
)
|
|
2499
|
+
if data[0] and source then
|
|
2500
|
+
local sourceOwner = source.owner.handle
|
|
2501
|
+
data[1] = sourceOwner
|
|
2502
|
+
local targetOwner = target.owner.handle
|
|
2503
|
+
data[2] = targetOwner
|
|
2504
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2505
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2506
|
+
data[3] = true
|
|
2507
|
+
end
|
|
2508
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2509
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2510
|
+
data[4] = true
|
|
2511
|
+
end
|
|
2512
|
+
end
|
|
2513
|
+
damagingEventByTarget[target] = data
|
|
2404
2514
|
return
|
|
2405
2515
|
end
|
|
2406
2516
|
BlzSetEventDamage(0)
|
|
@@ -2408,7 +2518,7 @@ Unit.onDamaging = (function()
|
|
|
2408
2518
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2409
2519
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2410
2520
|
local sourceOwner = source.owner.handle
|
|
2411
|
-
local targetOwner =
|
|
2521
|
+
local targetOwner = target.owner.handle
|
|
2412
2522
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2413
2523
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2414
2524
|
Timer:run(function()
|
|
@@ -2424,23 +2534,19 @@ Unit.onDamaging = (function()
|
|
|
2424
2534
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2425
2535
|
local condition = ____value[1]
|
|
2426
2536
|
local action = ____value[2]
|
|
2427
|
-
if condition(
|
|
2428
|
-
source,
|
|
2429
|
-
____exports.Unit:of(target),
|
|
2430
|
-
data
|
|
2431
|
-
) then
|
|
2537
|
+
if condition(source, target, data) then
|
|
2432
2538
|
action(
|
|
2433
2539
|
source,
|
|
2434
|
-
|
|
2540
|
+
target,
|
|
2435
2541
|
setmetatable(
|
|
2436
2542
|
{fire = function()
|
|
2437
2543
|
UnitDamageTarget(
|
|
2438
2544
|
source.handle,
|
|
2439
|
-
target,
|
|
2545
|
+
target.handle,
|
|
2440
2546
|
data.amount,
|
|
2441
2547
|
true,
|
|
2442
2548
|
true,
|
|
2443
|
-
data.attackType,
|
|
2549
|
+
attackTypeToNative(data.attackType),
|
|
2444
2550
|
data.damageType,
|
|
2445
2551
|
data.weaponType
|
|
2446
2552
|
)
|
|
@@ -2467,26 +2573,50 @@ Unit.onDamage = __TS__New(
|
|
|
2467
2573
|
if source and source.typeId == dummyUnitId then
|
|
2468
2574
|
source = nil
|
|
2469
2575
|
end
|
|
2576
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2577
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2578
|
+
damagingEventByTarget[target] = nil
|
|
2470
2579
|
local data = {
|
|
2471
2580
|
amount = GetEventDamage(),
|
|
2472
|
-
attackType = BlzGetEventAttackType(),
|
|
2581
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2473
2582
|
damageType = BlzGetEventDamageType(),
|
|
2474
2583
|
weaponType = BlzGetEventWeaponType(),
|
|
2584
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2475
2585
|
isAttack = BlzGetEventIsAttack(),
|
|
2476
|
-
originalAmount = GetEventDamage(),
|
|
2586
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2587
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2477
2588
|
preventDeath = damageEventPreventDeath
|
|
2478
2589
|
}
|
|
2590
|
+
if damagingEvent then
|
|
2591
|
+
for key, value in pairs(damagingEvent) do
|
|
2592
|
+
if isAttribute(key) then
|
|
2593
|
+
data[key] = value
|
|
2594
|
+
end
|
|
2595
|
+
end
|
|
2596
|
+
local sourceOwner = damagingEvent[1]
|
|
2597
|
+
if sourceOwner then
|
|
2598
|
+
local targetOwner = damagingEvent[2]
|
|
2599
|
+
if damagingEvent[3] then
|
|
2600
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2601
|
+
end
|
|
2602
|
+
if damagingEvent[4] then
|
|
2603
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2604
|
+
end
|
|
2605
|
+
end
|
|
2606
|
+
end
|
|
2479
2607
|
local evData = setmetatable(
|
|
2480
2608
|
{},
|
|
2481
2609
|
{
|
|
2482
2610
|
__index = data,
|
|
2483
2611
|
__newindex = function(self, key, value)
|
|
2484
|
-
damageSetters[key]
|
|
2612
|
+
local damageSetter = damageSetters[key]
|
|
2613
|
+
if damageSetter ~= nil then
|
|
2614
|
+
damageSetter(value)
|
|
2615
|
+
end
|
|
2485
2616
|
data[key] = value
|
|
2486
2617
|
end
|
|
2487
2618
|
}
|
|
2488
2619
|
)
|
|
2489
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2490
2620
|
invoke(event, source, target, evData)
|
|
2491
2621
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2492
2622
|
local bonusHealth = math.ceil(evData.amount)
|
|
@@ -2565,6 +2695,21 @@ Unit.itemStackedEvent = __TS__New(
|
|
|
2565
2695
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2566
2696
|
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
|
|
2567
2697
|
)
|
|
2698
|
+
__TS__ObjectDefineProperty(
|
|
2699
|
+
Unit,
|
|
2700
|
+
"itemChargesChangedEvent",
|
|
2701
|
+
{get = function(self)
|
|
2702
|
+
local event = __TS__New(Event)
|
|
2703
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2704
|
+
local unit = item.owner
|
|
2705
|
+
if unit ~= nil then
|
|
2706
|
+
invoke(event, unit, item)
|
|
2707
|
+
end
|
|
2708
|
+
end)
|
|
2709
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2710
|
+
return event
|
|
2711
|
+
end}
|
|
2712
|
+
)
|
|
2568
2713
|
__TS__ObjectDefineProperty(
|
|
2569
2714
|
Unit,
|
|
2570
2715
|
"itemUseOrderEvent",
|
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,
|
|
@@ -16,7 +16,8 @@ declare const enum LightningPropertyKey {
|
|
|
16
16
|
FADING = 110
|
|
17
17
|
}
|
|
18
18
|
export type LightningConstructor<T extends Lightning> = typeof Lightning & (new (handle: jlightning, typeId: LightningTypeId) => T);
|
|
19
|
-
export declare class Lightning extends
|
|
19
|
+
export declare class Lightning extends AbstractDestroyable {
|
|
20
|
+
readonly handle: jlightning;
|
|
20
21
|
readonly typeId: LightningTypeId;
|
|
21
22
|
private [LightningPropertyKey.CHECK_VISIBILITY]?;
|
|
22
23
|
private [LightningPropertyKey.SOURCE_UNIT]?;
|
|
@@ -30,7 +31,7 @@ export declare class Lightning extends Handle<jlightning> {
|
|
|
30
31
|
private [LightningPropertyKey.DURATION]?;
|
|
31
32
|
private [LightningPropertyKey.FADING]?;
|
|
32
33
|
constructor(handle: jlightning, typeId: LightningTypeId);
|
|
33
|
-
protected onDestroy():
|
|
34
|
+
protected onDestroy(): Destructor;
|
|
34
35
|
static create<T extends Lightning>(this: LightningConstructor<T>, typeId: LightningTypeId, ...parameters: [
|
|
35
36
|
...checkVisibility: [boolean] | [],
|
|
36
37
|
...sourceAndTarget: [sourceX: number, sourceY: number, targetX: number, targetY: number] | [
|