warscript 0.0.1-dev.7b00732 → 0.0.1-dev.7c9c5d2
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 +17 -2
- package/engine/internal/ability.lua +91 -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 +28 -3
- package/engine/internal/unit.lua +189 -59
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.lua +2 -1
- 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",
|
|
@@ -2001,6 +2048,14 @@ __TS__SetDescriptor(
|
|
|
2001
2048
|
end},
|
|
2002
2049
|
true
|
|
2003
2050
|
)
|
|
2051
|
+
__TS__SetDescriptor(
|
|
2052
|
+
Unit.prototype,
|
|
2053
|
+
"targetAcquiredEvent",
|
|
2054
|
+
{get = function(self)
|
|
2055
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2056
|
+
end},
|
|
2057
|
+
true
|
|
2058
|
+
)
|
|
2004
2059
|
__TS__SetDescriptor(
|
|
2005
2060
|
Unit.prototype,
|
|
2006
2061
|
"onSelect",
|
|
@@ -2326,10 +2381,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2326
2381
|
____exports.UnitTriggerEvent,
|
|
2327
2382
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2328
2383
|
function()
|
|
2329
|
-
local
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2384
|
+
local handle = getOrderedUnit()
|
|
2385
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2386
|
+
local unit = ____exports.Unit:of(handle)
|
|
2387
|
+
if unit.state == 1 then
|
|
2388
|
+
return unit, getIssuedOrderId()
|
|
2389
|
+
end
|
|
2333
2390
|
end
|
|
2334
2391
|
return IgnoreEvent
|
|
2335
2392
|
end
|
|
@@ -2360,13 +2417,18 @@ Unit.onDamaging = (function()
|
|
|
2360
2417
|
if source and source.typeId == dummyUnitId then
|
|
2361
2418
|
source = nil
|
|
2362
2419
|
end
|
|
2363
|
-
local target = BlzGetEventDamageTarget()
|
|
2420
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2421
|
+
local metadata = damageMetadataByTarget[target]
|
|
2422
|
+
damageMetadataByTarget[target] = nil
|
|
2364
2423
|
local data = {
|
|
2365
2424
|
amount = GetEventDamage(),
|
|
2366
|
-
attackType = BlzGetEventAttackType(),
|
|
2425
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2367
2426
|
damageType = BlzGetEventDamageType(),
|
|
2368
2427
|
weaponType = BlzGetEventWeaponType(),
|
|
2369
|
-
|
|
2428
|
+
metadata = metadata,
|
|
2429
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2430
|
+
originalAmount = GetEventDamage(),
|
|
2431
|
+
originalMetadata = metadata
|
|
2370
2432
|
}
|
|
2371
2433
|
if data.isAttack and source then
|
|
2372
2434
|
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 +2442,22 @@ Unit.onDamaging = (function()
|
|
|
2380
2442
|
invoke(
|
|
2381
2443
|
event,
|
|
2382
2444
|
source,
|
|
2383
|
-
|
|
2445
|
+
target,
|
|
2384
2446
|
setmetatable(
|
|
2385
2447
|
{},
|
|
2386
2448
|
{
|
|
2387
2449
|
__index = data,
|
|
2388
2450
|
__newindex = function(self, key, value)
|
|
2389
|
-
damageSetters[key]
|
|
2451
|
+
local damageSetter = damageSetters[key]
|
|
2452
|
+
if damageSetter ~= nil then
|
|
2453
|
+
damageSetter(value)
|
|
2454
|
+
end
|
|
2390
2455
|
data[key] = value
|
|
2391
2456
|
end
|
|
2392
2457
|
}
|
|
2393
2458
|
)
|
|
2394
2459
|
)
|
|
2460
|
+
damagingEventByTarget[target] = data
|
|
2395
2461
|
return
|
|
2396
2462
|
end
|
|
2397
2463
|
BlzSetEventDamage(0)
|
|
@@ -2399,7 +2465,7 @@ Unit.onDamaging = (function()
|
|
|
2399
2465
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2400
2466
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2401
2467
|
local sourceOwner = source.owner.handle
|
|
2402
|
-
local targetOwner =
|
|
2468
|
+
local targetOwner = target.owner.handle
|
|
2403
2469
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2404
2470
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2405
2471
|
Timer:run(function()
|
|
@@ -2415,23 +2481,19 @@ Unit.onDamaging = (function()
|
|
|
2415
2481
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2416
2482
|
local condition = ____value[1]
|
|
2417
2483
|
local action = ____value[2]
|
|
2418
|
-
if condition(
|
|
2419
|
-
source,
|
|
2420
|
-
____exports.Unit:of(target),
|
|
2421
|
-
data
|
|
2422
|
-
) then
|
|
2484
|
+
if condition(source, target, data) then
|
|
2423
2485
|
action(
|
|
2424
2486
|
source,
|
|
2425
|
-
|
|
2487
|
+
target,
|
|
2426
2488
|
setmetatable(
|
|
2427
2489
|
{fire = function()
|
|
2428
2490
|
UnitDamageTarget(
|
|
2429
2491
|
source.handle,
|
|
2430
|
-
target,
|
|
2492
|
+
target.handle,
|
|
2431
2493
|
data.amount,
|
|
2432
2494
|
true,
|
|
2433
2495
|
true,
|
|
2434
|
-
data.attackType,
|
|
2496
|
+
attackTypeToNative(data.attackType),
|
|
2435
2497
|
data.damageType,
|
|
2436
2498
|
data.weaponType
|
|
2437
2499
|
)
|
|
@@ -2458,26 +2520,40 @@ Unit.onDamage = __TS__New(
|
|
|
2458
2520
|
if source and source.typeId == dummyUnitId then
|
|
2459
2521
|
source = nil
|
|
2460
2522
|
end
|
|
2523
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2524
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2525
|
+
damagingEventByTarget[target] = nil
|
|
2461
2526
|
local data = {
|
|
2462
2527
|
amount = GetEventDamage(),
|
|
2463
|
-
attackType = BlzGetEventAttackType(),
|
|
2528
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2464
2529
|
damageType = BlzGetEventDamageType(),
|
|
2465
2530
|
weaponType = BlzGetEventWeaponType(),
|
|
2531
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2466
2532
|
isAttack = BlzGetEventIsAttack(),
|
|
2467
|
-
originalAmount = GetEventDamage(),
|
|
2533
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2534
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2468
2535
|
preventDeath = damageEventPreventDeath
|
|
2469
2536
|
}
|
|
2537
|
+
if damagingEvent then
|
|
2538
|
+
for key, value in pairs(damagingEvent) do
|
|
2539
|
+
if isAttribute(key) then
|
|
2540
|
+
data[key] = value
|
|
2541
|
+
end
|
|
2542
|
+
end
|
|
2543
|
+
end
|
|
2470
2544
|
local evData = setmetatable(
|
|
2471
2545
|
{},
|
|
2472
2546
|
{
|
|
2473
2547
|
__index = data,
|
|
2474
2548
|
__newindex = function(self, key, value)
|
|
2475
|
-
damageSetters[key]
|
|
2549
|
+
local damageSetter = damageSetters[key]
|
|
2550
|
+
if damageSetter ~= nil then
|
|
2551
|
+
damageSetter(value)
|
|
2552
|
+
end
|
|
2476
2553
|
data[key] = value
|
|
2477
2554
|
end
|
|
2478
2555
|
}
|
|
2479
2556
|
)
|
|
2480
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2481
2557
|
invoke(event, source, target, evData)
|
|
2482
2558
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2483
2559
|
local bonusHealth = math.ceil(evData.amount)
|
|
@@ -2520,8 +2596,9 @@ Unit.itemDroppedEvent = __TS__New(
|
|
|
2520
2596
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2521
2597
|
function()
|
|
2522
2598
|
local unit = getTriggerUnit()
|
|
2523
|
-
|
|
2524
|
-
|
|
2599
|
+
local item = getManipulatedItem()
|
|
2600
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2601
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2525
2602
|
end
|
|
2526
2603
|
return IgnoreEvent
|
|
2527
2604
|
end
|
|
@@ -2531,8 +2608,9 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2531
2608
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2532
2609
|
function()
|
|
2533
2610
|
local unit = getTriggerUnit()
|
|
2534
|
-
|
|
2535
|
-
|
|
2611
|
+
local item = getManipulatedItem()
|
|
2612
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2613
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2536
2614
|
end
|
|
2537
2615
|
return IgnoreEvent
|
|
2538
2616
|
end
|
|
@@ -2540,13 +2618,65 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2540
2618
|
Unit.itemUsedEvent = __TS__New(
|
|
2541
2619
|
____exports.UnitTriggerEvent,
|
|
2542
2620
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2543
|
-
function()
|
|
2621
|
+
function()
|
|
2622
|
+
local unit = getTriggerUnit()
|
|
2623
|
+
local item = getManipulatedItem()
|
|
2624
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2625
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2626
|
+
end
|
|
2627
|
+
return IgnoreEvent
|
|
2628
|
+
end
|
|
2544
2629
|
)
|
|
2545
2630
|
Unit.itemStackedEvent = __TS__New(
|
|
2546
2631
|
____exports.UnitTriggerEvent,
|
|
2547
2632
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2548
2633
|
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
|
|
2549
2634
|
)
|
|
2635
|
+
__TS__ObjectDefineProperty(
|
|
2636
|
+
Unit,
|
|
2637
|
+
"itemUseOrderEvent",
|
|
2638
|
+
{get = function(self)
|
|
2639
|
+
local event = __TS__New(Event)
|
|
2640
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2641
|
+
local slot = order - orderId("useslot0")
|
|
2642
|
+
local function listener(unit)
|
|
2643
|
+
local item = unit.items[slot + 1]
|
|
2644
|
+
if item ~= nil then
|
|
2645
|
+
invoke(event, unit, item)
|
|
2646
|
+
end
|
|
2647
|
+
end
|
|
2648
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2649
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2650
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2651
|
+
end
|
|
2652
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2653
|
+
return event
|
|
2654
|
+
end}
|
|
2655
|
+
)
|
|
2656
|
+
__TS__ObjectDefineProperty(
|
|
2657
|
+
Unit,
|
|
2658
|
+
"itemMoveOrderEvent",
|
|
2659
|
+
{get = function(self)
|
|
2660
|
+
local event = __TS__New(Event)
|
|
2661
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2662
|
+
local slotTo = order - orderId("moveslot0")
|
|
2663
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2664
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2665
|
+
if slotFrom ~= nil then
|
|
2666
|
+
invoke(
|
|
2667
|
+
event,
|
|
2668
|
+
unit,
|
|
2669
|
+
item,
|
|
2670
|
+
slotFrom,
|
|
2671
|
+
slotTo
|
|
2672
|
+
)
|
|
2673
|
+
end
|
|
2674
|
+
end)
|
|
2675
|
+
end
|
|
2676
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2677
|
+
return event
|
|
2678
|
+
end}
|
|
2679
|
+
)
|
|
2550
2680
|
__TS__ObjectDefineProperty(
|
|
2551
2681
|
Unit,
|
|
2552
2682
|
"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 {};
|