warscript 0.0.1-dev.820013f → 0.0.1-dev.833c02f
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 +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +3 -0
- package/core/types/frame.lua +59 -0
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/timer.d.ts +6 -7
- package/core/types/timer.lua +18 -21
- package/core/util.d.ts +1 -1
- package/core/util.lua +12 -1
- package/decl/native.d.ts +840 -786
- 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 +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 +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +35 -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 +20 -4
- package/engine/behaviour/ability.lua +111 -38
- package/engine/behaviour/unit.d.ts +2 -0
- package/engine/buff.d.ts +62 -42
- package/engine/buff.lua +312 -234
- package/engine/internal/ability.d.ts +15 -2
- package/engine/internal/ability.lua +84 -4
- package/engine/internal/item/ability.lua +106 -0
- package/engine/internal/item.d.ts +4 -3
- package/engine/internal/item.lua +56 -25
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- 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/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 +2 -0
- package/engine/internal/unit/bonus.lua +17 -0
- 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 +1 -0
- package/engine/internal/unit/item.lua +8 -4
- package/engine/internal/unit/main-selected.d.ts +6 -0
- package/engine/internal/unit/main-selected.lua +12 -1
- 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.d.ts +27 -3
- package/engine/internal/unit.lua +181 -59
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- 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/sound-preset-name.d.ts +5 -1
- 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 +89 -33
- 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 +3 -1
- package/engine/object-data/entry/item-type.lua +15 -2
- 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-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +10 -4
- package/engine/object-field/ability.lua +3 -0
- package/engine/object-field/unit.d.ts +46 -3
- package/engine/object-field/unit.lua +173 -7
- package/engine/object-field.d.ts +11 -3
- package/engine/object-field.lua +162 -76
- 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/ability.d.ts +2 -0
- package/engine/standard/fields/ability.lua +2 -0
- 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 +9 -1
- package/utility/arrays.lua +37 -3
- package/utility/functions.d.ts +1 -0
- package/utility/functions.lua +1 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +1 -0
- package/utility/linked-set.lua +3 -0
- package/utility/lua-maps.d.ts +3 -0
- package/utility/lua-maps.lua +16 -0
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +3 -0
- package/utility/reflection.lua +11 -7
package/engine/internal/unit.lua
CHANGED
|
@@ -51,12 +51,19 @@ 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
|
|
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
|
|
54
63
|
local match = string.match
|
|
55
64
|
local ____tostring = _G.tostring
|
|
56
65
|
local setUnitAnimation = SetUnitAnimation
|
|
57
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
58
66
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
59
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
60
67
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
61
68
|
local getUnitRealField = BlzGetUnitRealField
|
|
62
69
|
local getHeroStr = GetHeroStr
|
|
@@ -75,9 +82,9 @@ local setUnitScale = SetUnitScale
|
|
|
75
82
|
local setUnitPosition = SetUnitPosition
|
|
76
83
|
local setUnitTimeScale = SetUnitTimeScale
|
|
77
84
|
local getHandleId = GetHandleId
|
|
85
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
78
86
|
local createUnit = CreateUnit
|
|
79
87
|
local killUnit = KillUnit
|
|
80
|
-
local setUnitExploded = SetUnitExploded
|
|
81
88
|
local removeUnit = RemoveUnit
|
|
82
89
|
local getUnitTypeId = GetUnitTypeId
|
|
83
90
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -93,8 +100,6 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
93
100
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
94
101
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
95
102
|
local isUnitInRange = IsUnitInRange
|
|
96
|
-
local setResourceAmount = SetResourceAmount
|
|
97
|
-
local getResourceAmount = GetResourceAmount
|
|
98
103
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
99
104
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
100
105
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
@@ -125,8 +130,6 @@ local isUnitType = IsUnitType
|
|
|
125
130
|
local isUnitAlly = IsUnitAlly
|
|
126
131
|
local isUnitEnemy = IsUnitEnemy
|
|
127
132
|
local getOwningPlayer = GetOwningPlayer
|
|
128
|
-
local setUnitColor = SetUnitColor
|
|
129
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
130
133
|
____exports.UnitClassification = {}
|
|
131
134
|
local UnitClassification = ____exports.UnitClassification
|
|
132
135
|
do
|
|
@@ -136,6 +139,7 @@ do
|
|
|
136
139
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
137
140
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
138
141
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
142
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
139
143
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
140
144
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
141
145
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -354,7 +358,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
354
358
|
rawset(self, 1 + i, (select(i, ...)))
|
|
355
359
|
end
|
|
356
360
|
end
|
|
357
|
-
local damageSetters = {
|
|
361
|
+
local damageSetters = {
|
|
362
|
+
amount = BlzSetEventDamage,
|
|
363
|
+
attackType = function(attackType)
|
|
364
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
365
|
+
end,
|
|
366
|
+
damageType = BlzSetEventDamageType,
|
|
367
|
+
weaponType = BlzSetEventWeaponType
|
|
368
|
+
}
|
|
358
369
|
local jlimitopByOperator = {
|
|
359
370
|
[0] = LESS_THAN_OR_EQUAL,
|
|
360
371
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -562,17 +573,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
562
573
|
____exports.Unit:of(unit)
|
|
563
574
|
)
|
|
564
575
|
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
576
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
577
577
|
local item = unitItemInSlot(unit, i)
|
|
578
578
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -647,7 +647,8 @@ local function delayHealthChecksCallback(unit)
|
|
|
647
647
|
end
|
|
648
648
|
end
|
|
649
649
|
local nextSyncId = 1
|
|
650
|
-
local unitBySyncId = setmetatable({}, {__mode = "
|
|
650
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
651
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
651
652
|
____exports.Unit = __TS__Class()
|
|
652
653
|
local Unit = ____exports.Unit
|
|
653
654
|
Unit.name = "Unit"
|
|
@@ -688,6 +689,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
688
689
|
end
|
|
689
690
|
function Unit.prototype.onDestroy(self)
|
|
690
691
|
local handle = self.handle
|
|
692
|
+
self[107] = getUnitX(handle)
|
|
693
|
+
self[108] = getUnitY(handle)
|
|
691
694
|
if not self._owner then
|
|
692
695
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
693
696
|
end
|
|
@@ -798,13 +801,16 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
798
801
|
if type(animation) == "number" then
|
|
799
802
|
setUnitAnimationByIndex(self.handle, animation)
|
|
800
803
|
elseif rarity then
|
|
801
|
-
|
|
804
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
802
805
|
else
|
|
803
806
|
setUnitAnimation(self.handle, animation)
|
|
804
807
|
end
|
|
805
808
|
end
|
|
809
|
+
function Unit.prototype.resetAnimation(self)
|
|
810
|
+
ResetUnitAnimation(self.handle)
|
|
811
|
+
end
|
|
806
812
|
function Unit.prototype.queueAnimation(self, animation)
|
|
807
|
-
|
|
813
|
+
QueueUnitAnimation(self.handle, animation)
|
|
808
814
|
end
|
|
809
815
|
function Unit.prototype.delayHealthChecks(self)
|
|
810
816
|
self[103] = (self[103] or 0) + 1
|
|
@@ -817,7 +823,7 @@ function Unit.prototype.isSelected(self, player)
|
|
|
817
823
|
return IsUnitSelected(self.handle, player.handle)
|
|
818
824
|
end
|
|
819
825
|
function Unit.prototype.explode(self)
|
|
820
|
-
|
|
826
|
+
SetUnitExploded(self.handle, true)
|
|
821
827
|
killUnit(self.handle)
|
|
822
828
|
end
|
|
823
829
|
function Unit.prototype.kill(self)
|
|
@@ -940,8 +946,15 @@ function Unit.prototype.interruptAttack(self)
|
|
|
940
946
|
unitInterruptAttack(self.handle)
|
|
941
947
|
end
|
|
942
948
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
943
|
-
|
|
944
|
-
unitDisableAbility(
|
|
949
|
+
local handle = self.handle
|
|
950
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
951
|
+
Timer:run(
|
|
952
|
+
unitDisableAbility,
|
|
953
|
+
handle,
|
|
954
|
+
abilityId,
|
|
955
|
+
false,
|
|
956
|
+
false
|
|
957
|
+
)
|
|
945
958
|
end
|
|
946
959
|
function Unit.prototype.getDistanceTo(self, target)
|
|
947
960
|
local handle = self.handle
|
|
@@ -1206,6 +1219,14 @@ __TS__SetDescriptor(
|
|
|
1206
1219
|
end},
|
|
1207
1220
|
true
|
|
1208
1221
|
)
|
|
1222
|
+
__TS__SetDescriptor(
|
|
1223
|
+
Unit.prototype,
|
|
1224
|
+
"isStunned",
|
|
1225
|
+
{get = function(self)
|
|
1226
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1227
|
+
end},
|
|
1228
|
+
true
|
|
1229
|
+
)
|
|
1209
1230
|
__TS__SetDescriptor(
|
|
1210
1231
|
Unit.prototype,
|
|
1211
1232
|
"combatClassifications",
|
|
@@ -1279,6 +1300,19 @@ __TS__SetDescriptor(
|
|
|
1279
1300
|
},
|
|
1280
1301
|
true
|
|
1281
1302
|
)
|
|
1303
|
+
__TS__SetDescriptor(
|
|
1304
|
+
Unit.prototype,
|
|
1305
|
+
"primaryAttribute",
|
|
1306
|
+
{
|
|
1307
|
+
get = function(self)
|
|
1308
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1309
|
+
end,
|
|
1310
|
+
set = function(self, primaryAttribute)
|
|
1311
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1312
|
+
end
|
|
1313
|
+
},
|
|
1314
|
+
true
|
|
1315
|
+
)
|
|
1282
1316
|
__TS__SetDescriptor(
|
|
1283
1317
|
Unit.prototype,
|
|
1284
1318
|
"strengthBase",
|
|
@@ -1403,7 +1437,7 @@ __TS__SetDescriptor(
|
|
|
1403
1437
|
return not self[106]
|
|
1404
1438
|
end,
|
|
1405
1439
|
set = function(self, isTeamGlowVisible)
|
|
1406
|
-
|
|
1440
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1407
1441
|
local ____temp_6
|
|
1408
1442
|
if not isTeamGlowVisible then
|
|
1409
1443
|
____temp_6 = true
|
|
@@ -1419,9 +1453,9 @@ __TS__SetDescriptor(
|
|
|
1419
1453
|
Unit.prototype,
|
|
1420
1454
|
"color",
|
|
1421
1455
|
{set = function(self, color)
|
|
1422
|
-
|
|
1456
|
+
SetUnitColor(self.handle, color.handle)
|
|
1423
1457
|
if self[106] then
|
|
1424
|
-
|
|
1458
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1425
1459
|
end
|
|
1426
1460
|
end},
|
|
1427
1461
|
true
|
|
@@ -1590,7 +1624,7 @@ __TS__SetDescriptor(
|
|
|
1590
1624
|
"x",
|
|
1591
1625
|
{
|
|
1592
1626
|
get = function(self)
|
|
1593
|
-
return getUnitX(self.handle)
|
|
1627
|
+
return self[107] or getUnitX(self.handle)
|
|
1594
1628
|
end,
|
|
1595
1629
|
set = function(self, v)
|
|
1596
1630
|
SetUnitX(self.handle, v)
|
|
@@ -1603,7 +1637,7 @@ __TS__SetDescriptor(
|
|
|
1603
1637
|
"y",
|
|
1604
1638
|
{
|
|
1605
1639
|
get = function(self)
|
|
1606
|
-
return getUnitY(self.handle)
|
|
1640
|
+
return self[108] or getUnitY(self.handle)
|
|
1607
1641
|
end,
|
|
1608
1642
|
set = function(self, v)
|
|
1609
1643
|
SetUnitY(self.handle, v)
|
|
@@ -1689,10 +1723,10 @@ __TS__SetDescriptor(
|
|
|
1689
1723
|
"gold",
|
|
1690
1724
|
{
|
|
1691
1725
|
get = function(self)
|
|
1692
|
-
return
|
|
1726
|
+
return GetResourceAmount(self.handle)
|
|
1693
1727
|
end,
|
|
1694
1728
|
set = function(self, gold)
|
|
1695
|
-
|
|
1729
|
+
SetResourceAmount(self.handle, gold)
|
|
1696
1730
|
end
|
|
1697
1731
|
},
|
|
1698
1732
|
true
|
|
@@ -1820,6 +1854,19 @@ __TS__SetDescriptor(
|
|
|
1820
1854
|
end},
|
|
1821
1855
|
true
|
|
1822
1856
|
)
|
|
1857
|
+
__TS__SetDescriptor(
|
|
1858
|
+
Unit.prototype,
|
|
1859
|
+
"movementType",
|
|
1860
|
+
{
|
|
1861
|
+
get = function(self)
|
|
1862
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1863
|
+
end,
|
|
1864
|
+
set = function(self, movementType)
|
|
1865
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1866
|
+
end
|
|
1867
|
+
},
|
|
1868
|
+
true
|
|
1869
|
+
)
|
|
1823
1870
|
__TS__SetDescriptor(
|
|
1824
1871
|
Unit.prototype,
|
|
1825
1872
|
"pathing",
|
|
@@ -2326,10 +2373,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2326
2373
|
____exports.UnitTriggerEvent,
|
|
2327
2374
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2328
2375
|
function()
|
|
2329
|
-
local
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2376
|
+
local handle = getOrderedUnit()
|
|
2377
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2378
|
+
local unit = ____exports.Unit:of(handle)
|
|
2379
|
+
if unit.state == 1 then
|
|
2380
|
+
return unit, getIssuedOrderId()
|
|
2381
|
+
end
|
|
2333
2382
|
end
|
|
2334
2383
|
return IgnoreEvent
|
|
2335
2384
|
end
|
|
@@ -2360,13 +2409,18 @@ Unit.onDamaging = (function()
|
|
|
2360
2409
|
if source and source.typeId == dummyUnitId then
|
|
2361
2410
|
source = nil
|
|
2362
2411
|
end
|
|
2363
|
-
local target = BlzGetEventDamageTarget()
|
|
2412
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2413
|
+
local metadata = damageMetadataByTarget[target]
|
|
2414
|
+
damageMetadataByTarget[target] = nil
|
|
2364
2415
|
local data = {
|
|
2365
2416
|
amount = GetEventDamage(),
|
|
2366
|
-
attackType = BlzGetEventAttackType(),
|
|
2417
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2367
2418
|
damageType = BlzGetEventDamageType(),
|
|
2368
2419
|
weaponType = BlzGetEventWeaponType(),
|
|
2369
|
-
|
|
2420
|
+
metadata = metadata,
|
|
2421
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2422
|
+
originalAmount = GetEventDamage(),
|
|
2423
|
+
originalMetadata = metadata
|
|
2370
2424
|
}
|
|
2371
2425
|
if data.isAttack and source then
|
|
2372
2426
|
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
|
|
@@ -2380,18 +2434,22 @@ Unit.onDamaging = (function()
|
|
|
2380
2434
|
invoke(
|
|
2381
2435
|
event,
|
|
2382
2436
|
source,
|
|
2383
|
-
|
|
2437
|
+
target,
|
|
2384
2438
|
setmetatable(
|
|
2385
2439
|
{},
|
|
2386
2440
|
{
|
|
2387
2441
|
__index = data,
|
|
2388
2442
|
__newindex = function(self, key, value)
|
|
2389
|
-
damageSetters[key]
|
|
2443
|
+
local damageSetter = damageSetters[key]
|
|
2444
|
+
if damageSetter ~= nil then
|
|
2445
|
+
damageSetter(value)
|
|
2446
|
+
end
|
|
2390
2447
|
data[key] = value
|
|
2391
2448
|
end
|
|
2392
2449
|
}
|
|
2393
2450
|
)
|
|
2394
2451
|
)
|
|
2452
|
+
damagingEventByTarget[target] = data
|
|
2395
2453
|
return
|
|
2396
2454
|
end
|
|
2397
2455
|
BlzSetEventDamage(0)
|
|
@@ -2399,7 +2457,7 @@ Unit.onDamaging = (function()
|
|
|
2399
2457
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2400
2458
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2401
2459
|
local sourceOwner = source.owner.handle
|
|
2402
|
-
local targetOwner =
|
|
2460
|
+
local targetOwner = target.owner.handle
|
|
2403
2461
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2404
2462
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2405
2463
|
Timer:run(function()
|
|
@@ -2415,23 +2473,19 @@ Unit.onDamaging = (function()
|
|
|
2415
2473
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2416
2474
|
local condition = ____value[1]
|
|
2417
2475
|
local action = ____value[2]
|
|
2418
|
-
if condition(
|
|
2419
|
-
source,
|
|
2420
|
-
____exports.Unit:of(target),
|
|
2421
|
-
data
|
|
2422
|
-
) then
|
|
2476
|
+
if condition(source, target, data) then
|
|
2423
2477
|
action(
|
|
2424
2478
|
source,
|
|
2425
|
-
|
|
2479
|
+
target,
|
|
2426
2480
|
setmetatable(
|
|
2427
2481
|
{fire = function()
|
|
2428
2482
|
UnitDamageTarget(
|
|
2429
2483
|
source.handle,
|
|
2430
|
-
target,
|
|
2484
|
+
target.handle,
|
|
2431
2485
|
data.amount,
|
|
2432
2486
|
true,
|
|
2433
2487
|
true,
|
|
2434
|
-
data.attackType,
|
|
2488
|
+
attackTypeToNative(data.attackType),
|
|
2435
2489
|
data.damageType,
|
|
2436
2490
|
data.weaponType
|
|
2437
2491
|
)
|
|
@@ -2458,26 +2512,40 @@ Unit.onDamage = __TS__New(
|
|
|
2458
2512
|
if source and source.typeId == dummyUnitId then
|
|
2459
2513
|
source = nil
|
|
2460
2514
|
end
|
|
2515
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2516
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2517
|
+
damagingEventByTarget[target] = nil
|
|
2461
2518
|
local data = {
|
|
2462
2519
|
amount = GetEventDamage(),
|
|
2463
|
-
attackType = BlzGetEventAttackType(),
|
|
2520
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2464
2521
|
damageType = BlzGetEventDamageType(),
|
|
2465
2522
|
weaponType = BlzGetEventWeaponType(),
|
|
2523
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2466
2524
|
isAttack = BlzGetEventIsAttack(),
|
|
2467
|
-
originalAmount = GetEventDamage(),
|
|
2525
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2526
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2468
2527
|
preventDeath = damageEventPreventDeath
|
|
2469
2528
|
}
|
|
2529
|
+
if damagingEvent then
|
|
2530
|
+
for key, value in pairs(damagingEvent) do
|
|
2531
|
+
if isAttribute(key) then
|
|
2532
|
+
data[key] = value
|
|
2533
|
+
end
|
|
2534
|
+
end
|
|
2535
|
+
end
|
|
2470
2536
|
local evData = setmetatable(
|
|
2471
2537
|
{},
|
|
2472
2538
|
{
|
|
2473
2539
|
__index = data,
|
|
2474
2540
|
__newindex = function(self, key, value)
|
|
2475
|
-
damageSetters[key]
|
|
2541
|
+
local damageSetter = damageSetters[key]
|
|
2542
|
+
if damageSetter ~= nil then
|
|
2543
|
+
damageSetter(value)
|
|
2544
|
+
end
|
|
2476
2545
|
data[key] = value
|
|
2477
2546
|
end
|
|
2478
2547
|
}
|
|
2479
2548
|
)
|
|
2480
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2481
2549
|
invoke(event, source, target, evData)
|
|
2482
2550
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2483
2551
|
local bonusHealth = math.ceil(evData.amount)
|
|
@@ -2520,8 +2588,9 @@ Unit.itemDroppedEvent = __TS__New(
|
|
|
2520
2588
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2521
2589
|
function()
|
|
2522
2590
|
local unit = getTriggerUnit()
|
|
2523
|
-
|
|
2524
|
-
|
|
2591
|
+
local item = getManipulatedItem()
|
|
2592
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2593
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2525
2594
|
end
|
|
2526
2595
|
return IgnoreEvent
|
|
2527
2596
|
end
|
|
@@ -2531,8 +2600,9 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2531
2600
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2532
2601
|
function()
|
|
2533
2602
|
local unit = getTriggerUnit()
|
|
2534
|
-
|
|
2535
|
-
|
|
2603
|
+
local item = getManipulatedItem()
|
|
2604
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2605
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2536
2606
|
end
|
|
2537
2607
|
return IgnoreEvent
|
|
2538
2608
|
end
|
|
@@ -2540,13 +2610,65 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2540
2610
|
Unit.itemUsedEvent = __TS__New(
|
|
2541
2611
|
____exports.UnitTriggerEvent,
|
|
2542
2612
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2543
|
-
function()
|
|
2613
|
+
function()
|
|
2614
|
+
local unit = getTriggerUnit()
|
|
2615
|
+
local item = getManipulatedItem()
|
|
2616
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2617
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2618
|
+
end
|
|
2619
|
+
return IgnoreEvent
|
|
2620
|
+
end
|
|
2544
2621
|
)
|
|
2545
2622
|
Unit.itemStackedEvent = __TS__New(
|
|
2546
2623
|
____exports.UnitTriggerEvent,
|
|
2547
2624
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2548
2625
|
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
|
|
2549
2626
|
)
|
|
2627
|
+
__TS__ObjectDefineProperty(
|
|
2628
|
+
Unit,
|
|
2629
|
+
"itemUseOrderEvent",
|
|
2630
|
+
{get = function(self)
|
|
2631
|
+
local event = __TS__New(Event)
|
|
2632
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2633
|
+
local slot = order - orderId("useslot0")
|
|
2634
|
+
local function listener(unit)
|
|
2635
|
+
local item = unit.items[slot + 1]
|
|
2636
|
+
if item ~= nil then
|
|
2637
|
+
invoke(event, unit, item)
|
|
2638
|
+
end
|
|
2639
|
+
end
|
|
2640
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2641
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2642
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2643
|
+
end
|
|
2644
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2645
|
+
return event
|
|
2646
|
+
end}
|
|
2647
|
+
)
|
|
2648
|
+
__TS__ObjectDefineProperty(
|
|
2649
|
+
Unit,
|
|
2650
|
+
"itemMoveOrderEvent",
|
|
2651
|
+
{get = function(self)
|
|
2652
|
+
local event = __TS__New(Event)
|
|
2653
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2654
|
+
local slotTo = order - orderId("moveslot0")
|
|
2655
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2656
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2657
|
+
if slotFrom ~= nil then
|
|
2658
|
+
invoke(
|
|
2659
|
+
event,
|
|
2660
|
+
unit,
|
|
2661
|
+
item,
|
|
2662
|
+
slotFrom,
|
|
2663
|
+
slotTo
|
|
2664
|
+
)
|
|
2665
|
+
end
|
|
2666
|
+
end)
|
|
2667
|
+
end
|
|
2668
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2669
|
+
return event
|
|
2670
|
+
end}
|
|
2671
|
+
)
|
|
2550
2672
|
__TS__ObjectDefineProperty(
|
|
2551
2673
|
Unit,
|
|
2552
2674
|
"onCreate",
|
|
@@ -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 {};
|