warscript 0.0.1-dev.ac556d2 → 0.0.1-dev.aeaf398
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 +6 -0
- package/attributes.lua +17 -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/frame.lua +24 -21
- package/core/types/player.d.ts +16 -0
- package/core/types/player.lua +60 -15
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.lua +6 -1
- package/decl/native.d.ts +846 -790
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +36 -4
- 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 +22 -8
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +14 -4
- package/engine/behaviour/ability.lua +76 -25
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +40 -2
- package/engine/behaviour/unit.lua +269 -6
- package/engine/buff.d.ts +74 -46
- package/engine/buff.lua +389 -256
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +65 -24
- package/engine/internal/item/ability.lua +82 -14
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +20 -19
- package/engine/internal/item.lua +191 -74
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- 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/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.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/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +98 -9
- 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/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +4 -0
- package/engine/internal/unit/bonus.lua +27 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -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/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/item.lua +3 -4
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +10 -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-missile-launch.lua +52 -14
- package/engine/internal/unit.d.ts +43 -24
- package/engine/internal/unit.lua +403 -237
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -0
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -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/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -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/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- 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 +85 -24
- 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 +28 -2
- package/engine/object-data/entry/destructible-type.lua +155 -0
- 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 +25 -5
- package/engine/object-data/entry/unit-type.lua +258 -93
- 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 +8 -5
- package/engine/object-field/ability.lua +8 -4
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +25 -6
- package/engine/object-field.lua +359 -116
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -0
- 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 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +6 -0
- package/engine/unit.lua +6 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +11 -10
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/patch-lua.lua +9 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +2 -0
- package/utility/arrays.lua +11 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/linked-map.d.ts +26 -0
- package/utility/linked-map.lua +66 -0
- package/utility/linked-set.d.ts +2 -0
- package/utility/linked-set.lua +26 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/records.lua +20 -1
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/internal/unit.lua
CHANGED
|
@@ -51,33 +51,42 @@ 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
|
|
63
|
+
local ____ability = require("engine.internal.item.ability")
|
|
64
|
+
local doUnitAbilityAction = ____ability.doUnitAbilityAction
|
|
65
|
+
local ____synchronization = require("engine.synchronization")
|
|
66
|
+
local synchronizer = ____synchronization.synchronizer
|
|
67
|
+
local ____linked_2Dmap = require("utility.linked-map")
|
|
68
|
+
local LinkedMap = ____linked_2Dmap.LinkedMap
|
|
54
69
|
local match = string.match
|
|
55
70
|
local ____tostring = _G.tostring
|
|
56
71
|
local setUnitAnimation = SetUnitAnimation
|
|
57
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
58
72
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
59
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
60
73
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
61
74
|
local getUnitRealField = BlzGetUnitRealField
|
|
62
75
|
local getHeroStr = GetHeroStr
|
|
63
76
|
local getHeroAgi = GetHeroAgi
|
|
64
77
|
local getHeroInt = GetHeroInt
|
|
65
|
-
local setHeroStr = SetHeroStr
|
|
66
|
-
local setHeroAgi = SetHeroAgi
|
|
67
|
-
local setHeroInt = SetHeroInt
|
|
68
78
|
local getUnitBooleanField = BlzGetUnitBooleanField
|
|
69
79
|
local getUnitStringField = BlzGetUnitStringField
|
|
70
80
|
local setUnitIntegerField = BlzSetUnitIntegerField
|
|
71
81
|
local setUnitRealField = BlzSetUnitRealField
|
|
72
82
|
local setUnitBooleanField = BlzSetUnitBooleanField
|
|
73
83
|
local setUnitStringField = BlzSetUnitStringField
|
|
74
|
-
local setUnitScale = SetUnitScale
|
|
75
84
|
local setUnitPosition = SetUnitPosition
|
|
76
85
|
local setUnitTimeScale = SetUnitTimeScale
|
|
77
86
|
local getHandleId = GetHandleId
|
|
87
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
78
88
|
local createUnit = CreateUnit
|
|
79
89
|
local killUnit = KillUnit
|
|
80
|
-
local setUnitExploded = SetUnitExploded
|
|
81
90
|
local removeUnit = RemoveUnit
|
|
82
91
|
local getUnitTypeId = GetUnitTypeId
|
|
83
92
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -93,15 +102,12 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
93
102
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
94
103
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
95
104
|
local isUnitInRange = IsUnitInRange
|
|
96
|
-
local setResourceAmount = SetResourceAmount
|
|
97
|
-
local getResourceAmount = GetResourceAmount
|
|
98
105
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
99
106
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
100
107
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
101
108
|
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
102
109
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
103
110
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
104
|
-
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
105
111
|
local isUnitInvisible = IsUnitInvisible
|
|
106
112
|
local isUnitVisible = IsUnitVisible
|
|
107
113
|
local getUnitX = GetUnitX
|
|
@@ -118,15 +124,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
118
124
|
local getIssuedOrderId = GetIssuedOrderId
|
|
119
125
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
120
126
|
local unitAlive = UnitAlive
|
|
121
|
-
local unitAddType = UnitAddType
|
|
122
|
-
local unitRemoveType = UnitRemoveType
|
|
123
|
-
local isUnitIllusion = IsUnitIllusion
|
|
124
|
-
local isUnitType = IsUnitType
|
|
125
127
|
local isUnitAlly = IsUnitAlly
|
|
126
128
|
local isUnitEnemy = IsUnitEnemy
|
|
127
129
|
local getOwningPlayer = GetOwningPlayer
|
|
128
|
-
local setUnitColor = SetUnitColor
|
|
129
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
130
130
|
____exports.UnitClassification = {}
|
|
131
131
|
local UnitClassification = ____exports.UnitClassification
|
|
132
132
|
do
|
|
@@ -136,6 +136,7 @@ do
|
|
|
136
136
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
137
137
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
138
138
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
139
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
139
140
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
140
141
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
141
142
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -343,6 +344,9 @@ local function dispatchAbility(event)
|
|
|
343
344
|
}
|
|
344
345
|
)
|
|
345
346
|
end
|
|
347
|
+
local function damagingEventPreventRetaliation(self)
|
|
348
|
+
self[0] = true
|
|
349
|
+
end
|
|
346
350
|
local function damageEventPreventDeath(self, callback, ...)
|
|
347
351
|
if self[0] ~= nil then
|
|
348
352
|
return
|
|
@@ -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,
|
|
@@ -372,15 +383,27 @@ local modifiers = {
|
|
|
372
383
|
end,
|
|
373
384
|
armor = function(unit, value)
|
|
374
385
|
if UnitAddAbility(unit, armorBonusAbilityId) then
|
|
375
|
-
assert(
|
|
386
|
+
assert(
|
|
387
|
+
UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
|
|
388
|
+
"armor bonus ability must be made permanent",
|
|
389
|
+
unit
|
|
390
|
+
)
|
|
376
391
|
end
|
|
377
|
-
local ability = assert(
|
|
378
|
-
|
|
379
|
-
ability,
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
392
|
+
local ability = assert(
|
|
393
|
+
BlzGetUnitAbility(unit, armorBonusAbilityId),
|
|
394
|
+
"armor bonus ability must be existing",
|
|
395
|
+
unit
|
|
396
|
+
)
|
|
397
|
+
assert(
|
|
398
|
+
BlzSetAbilityRealLevelField(
|
|
399
|
+
ability,
|
|
400
|
+
armorBonusField,
|
|
401
|
+
0,
|
|
402
|
+
BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
|
|
403
|
+
),
|
|
404
|
+
"armor bonus ability field must be set",
|
|
405
|
+
unit
|
|
406
|
+
)
|
|
384
407
|
end
|
|
385
408
|
}
|
|
386
409
|
local getters = {
|
|
@@ -398,6 +421,19 @@ function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
|
398
421
|
self.unit = unit
|
|
399
422
|
self.index = index
|
|
400
423
|
end
|
|
424
|
+
__TS__SetDescriptor(
|
|
425
|
+
UnitWeapon.prototype,
|
|
426
|
+
"isEnabled",
|
|
427
|
+
{
|
|
428
|
+
get = function(self)
|
|
429
|
+
return BlzGetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index)
|
|
430
|
+
end,
|
|
431
|
+
set = function(self, isEnabled)
|
|
432
|
+
BlzSetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index, isEnabled)
|
|
433
|
+
end
|
|
434
|
+
},
|
|
435
|
+
true
|
|
436
|
+
)
|
|
401
437
|
__TS__SetDescriptor(
|
|
402
438
|
UnitWeapon.prototype,
|
|
403
439
|
"cooldown",
|
|
@@ -432,6 +468,19 @@ __TS__SetDescriptor(
|
|
|
432
468
|
},
|
|
433
469
|
true
|
|
434
470
|
)
|
|
471
|
+
__TS__SetDescriptor(
|
|
472
|
+
UnitWeapon.prototype,
|
|
473
|
+
"allowedTargetCombatClassifications",
|
|
474
|
+
{
|
|
475
|
+
get = function(self)
|
|
476
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
477
|
+
end,
|
|
478
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
479
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
480
|
+
end
|
|
481
|
+
},
|
|
482
|
+
true
|
|
483
|
+
)
|
|
435
484
|
__TS__SetDescriptor(
|
|
436
485
|
UnitWeapon.prototype,
|
|
437
486
|
"damageBase",
|
|
@@ -608,26 +657,30 @@ local fieldSetters = {
|
|
|
608
657
|
}
|
|
609
658
|
local dummies = {}
|
|
610
659
|
for ____, player in ipairs(Player.all) do
|
|
611
|
-
local dummy = assert(
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
660
|
+
local dummy = assert(
|
|
661
|
+
createUnit(
|
|
662
|
+
player.handle,
|
|
663
|
+
dummyUnitId,
|
|
664
|
+
0,
|
|
665
|
+
0,
|
|
666
|
+
270
|
|
667
|
+
),
|
|
668
|
+
"dummy must be created",
|
|
669
|
+
player
|
|
670
|
+
)
|
|
618
671
|
ShowUnit(dummy, false)
|
|
619
672
|
dummies[player] = dummy
|
|
620
673
|
end
|
|
621
674
|
local function delayHealthChecksCallback(unit)
|
|
622
|
-
local counter = (unit[
|
|
675
|
+
local counter = (unit[104] or 0) - 1
|
|
623
676
|
if counter ~= 0 then
|
|
624
|
-
unit[
|
|
677
|
+
unit[104] = counter
|
|
625
678
|
return
|
|
626
679
|
end
|
|
627
|
-
unit[
|
|
628
|
-
local healthBonus = unit[
|
|
680
|
+
unit[104] = nil
|
|
681
|
+
local healthBonus = unit[105]
|
|
629
682
|
if healthBonus ~= nil then
|
|
630
|
-
unit[
|
|
683
|
+
unit[105] = nil
|
|
631
684
|
local handle = unit.handle
|
|
632
685
|
BlzSetUnitMaxHP(
|
|
633
686
|
handle,
|
|
@@ -636,47 +689,73 @@ local function delayHealthChecksCallback(unit)
|
|
|
636
689
|
end
|
|
637
690
|
end
|
|
638
691
|
local nextSyncId = 1
|
|
639
|
-
local unitBySyncId = setmetatable({}, {__mode = "
|
|
692
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
693
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
694
|
+
local function addAbility(unit, abilityTypeId)
|
|
695
|
+
local ____unitAddAbility_result_0
|
|
696
|
+
if unitAddAbility(unit, abilityTypeId) then
|
|
697
|
+
____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
|
|
698
|
+
else
|
|
699
|
+
____unitAddAbility_result_0 = nil
|
|
700
|
+
end
|
|
701
|
+
return ____unitAddAbility_result_0
|
|
702
|
+
end
|
|
640
703
|
____exports.Unit = __TS__Class()
|
|
641
704
|
local Unit = ____exports.Unit
|
|
642
705
|
Unit.name = "Unit"
|
|
643
706
|
__TS__ClassExtends(Unit, Handle)
|
|
644
707
|
function Unit.prototype.____constructor(self, handle)
|
|
645
708
|
Handle.prototype.____constructor(self, handle)
|
|
646
|
-
local
|
|
647
|
-
nextSyncId =
|
|
648
|
-
self.syncId =
|
|
709
|
+
local ____nextSyncId_1 = nextSyncId
|
|
710
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
711
|
+
self.syncId = ____nextSyncId_1
|
|
649
712
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
650
|
-
assert(
|
|
651
|
-
|
|
713
|
+
assert(
|
|
714
|
+
unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId),
|
|
715
|
+
"leave detection ability must be added",
|
|
716
|
+
self
|
|
717
|
+
)
|
|
718
|
+
assert(
|
|
719
|
+
unitAddAbility(handle, morphDetectAbilityId),
|
|
720
|
+
"morph detection ability must be added",
|
|
721
|
+
self
|
|
722
|
+
)
|
|
652
723
|
if unitAddAbility(
|
|
653
724
|
handle,
|
|
654
725
|
fourCC("Amrf")
|
|
655
726
|
) then
|
|
656
|
-
assert(
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
727
|
+
assert(
|
|
728
|
+
unitRemoveAbility(
|
|
729
|
+
handle,
|
|
730
|
+
fourCC("Amrf")
|
|
731
|
+
),
|
|
732
|
+
"fly ability must be removed after addition",
|
|
733
|
+
self
|
|
734
|
+
)
|
|
660
735
|
end
|
|
661
736
|
unitBySyncId[self.syncId] = self
|
|
662
737
|
local ____ = self.abilities
|
|
663
738
|
end
|
|
664
|
-
function Unit.prototype.getEvent(self,
|
|
665
|
-
self.events = self.events or (
|
|
666
|
-
local eventId = GetHandleId(
|
|
667
|
-
|
|
668
|
-
|
|
739
|
+
function Unit.prototype.getEvent(self, jevent, collector)
|
|
740
|
+
self.events = self.events or __TS__New(LinkedMap)
|
|
741
|
+
local eventId = GetHandleId(jevent)
|
|
742
|
+
local event = self.events:get(eventId)
|
|
743
|
+
if event == nil then
|
|
744
|
+
event = __TS__New(
|
|
669
745
|
TriggerEvent,
|
|
670
746
|
function(trigger)
|
|
671
|
-
TriggerRegisterUnitEvent(trigger, self.handle,
|
|
747
|
+
TriggerRegisterUnitEvent(trigger, self.handle, jevent)
|
|
672
748
|
end,
|
|
673
749
|
collector or (function() return {} end)
|
|
674
750
|
)
|
|
751
|
+
self.events:put(eventId, event)
|
|
675
752
|
end
|
|
676
|
-
return
|
|
753
|
+
return event
|
|
677
754
|
end
|
|
678
755
|
function Unit.prototype.onDestroy(self)
|
|
679
756
|
local handle = self.handle
|
|
757
|
+
self[108] = getUnitX(handle)
|
|
758
|
+
self[109] = getUnitY(handle)
|
|
680
759
|
if not self._owner then
|
|
681
760
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
682
761
|
end
|
|
@@ -715,7 +794,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
|
|
|
715
794
|
self._attackHandlers = handlers
|
|
716
795
|
if #handlers == 1 then
|
|
717
796
|
local handle = self.handle
|
|
718
|
-
assert(
|
|
797
|
+
assert(
|
|
798
|
+
unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
|
|
799
|
+
"attack handler ability must be added",
|
|
800
|
+
self
|
|
801
|
+
)
|
|
719
802
|
end
|
|
720
803
|
return handler
|
|
721
804
|
end
|
|
@@ -744,17 +827,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
744
827
|
end}
|
|
745
828
|
end
|
|
746
829
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
747
|
-
local
|
|
748
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
830
|
+
local ____combatClassification_2 = combatClassification
|
|
831
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
749
832
|
end
|
|
750
833
|
function Unit.prototype.addClassification(self, classification)
|
|
751
|
-
return
|
|
834
|
+
return UnitAddType(self.handle, classification)
|
|
752
835
|
end
|
|
753
836
|
function Unit.prototype.removeClassification(self, classification)
|
|
754
|
-
return
|
|
837
|
+
return UnitRemoveType(self.handle, classification)
|
|
755
838
|
end
|
|
756
839
|
function Unit.prototype.hasClassification(self, classification)
|
|
757
|
-
return
|
|
840
|
+
return IsUnitType(self.handle, classification)
|
|
758
841
|
end
|
|
759
842
|
function Unit.prototype.isVisibleTo(self, player)
|
|
760
843
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -763,13 +846,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
763
846
|
return isUnitInvisible(self.handle, player.handle)
|
|
764
847
|
end
|
|
765
848
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
766
|
-
local
|
|
849
|
+
local ____temp_3
|
|
767
850
|
if type(x) == "number" then
|
|
768
|
-
|
|
851
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
769
852
|
else
|
|
770
|
-
|
|
853
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
771
854
|
end
|
|
772
|
-
return
|
|
855
|
+
return ____temp_3
|
|
773
856
|
end
|
|
774
857
|
function Unit.prototype.isAllyOf(self, unit)
|
|
775
858
|
return isUnitAlly(
|
|
@@ -787,16 +870,30 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
787
870
|
if type(animation) == "number" then
|
|
788
871
|
setUnitAnimationByIndex(self.handle, animation)
|
|
789
872
|
elseif rarity then
|
|
790
|
-
|
|
873
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
791
874
|
else
|
|
792
875
|
setUnitAnimation(self.handle, animation)
|
|
793
876
|
end
|
|
794
877
|
end
|
|
878
|
+
function Unit.prototype.resetAnimation(self)
|
|
879
|
+
ResetUnitAnimation(self.handle)
|
|
880
|
+
end
|
|
795
881
|
function Unit.prototype.queueAnimation(self, animation)
|
|
796
|
-
|
|
882
|
+
QueueUnitAnimation(self.handle, animation)
|
|
883
|
+
end
|
|
884
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
885
|
+
local firstWeapon = self.firstWeapon
|
|
886
|
+
if firstWeapon.isEnabled and target:isAllowedTarget(self, firstWeapon.allowedTargetCombatClassifications) then
|
|
887
|
+
return firstWeapon
|
|
888
|
+
end
|
|
889
|
+
local secondWeapon = self.secondWeapon
|
|
890
|
+
if secondWeapon.isEnabled and target:isAllowedTarget(target, secondWeapon.allowedTargetCombatClassifications) then
|
|
891
|
+
return secondWeapon
|
|
892
|
+
end
|
|
893
|
+
return nil
|
|
797
894
|
end
|
|
798
895
|
function Unit.prototype.delayHealthChecks(self)
|
|
799
|
-
self[
|
|
896
|
+
self[104] = (self[104] or 0) + 1
|
|
800
897
|
Timer:run(delayHealthChecksCallback, self)
|
|
801
898
|
end
|
|
802
899
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -806,21 +903,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
806
903
|
return IsUnitSelected(self.handle, player.handle)
|
|
807
904
|
end
|
|
808
905
|
function Unit.prototype.explode(self)
|
|
809
|
-
|
|
906
|
+
SetUnitExploded(self.handle, true)
|
|
810
907
|
killUnit(self.handle)
|
|
811
908
|
end
|
|
812
909
|
function Unit.prototype.kill(self)
|
|
813
910
|
killUnit(self.handle)
|
|
814
911
|
end
|
|
815
912
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
816
|
-
local
|
|
817
|
-
local
|
|
818
|
-
local
|
|
819
|
-
if
|
|
820
|
-
|
|
913
|
+
local ____ReviveHero_6 = ReviveHero
|
|
914
|
+
local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
|
|
915
|
+
local ____doEffect_4 = doEffect
|
|
916
|
+
if ____doEffect_4 == nil then
|
|
917
|
+
____doEffect_4 = false
|
|
821
918
|
end
|
|
822
|
-
__TS__SparseArrayPush(
|
|
823
|
-
|
|
919
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
920
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
824
921
|
end
|
|
825
922
|
function Unit.prototype.healTarget(self, target, amount)
|
|
826
923
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -863,17 +960,16 @@ function Unit.prototype.itemInSlot(self, slot)
|
|
|
863
960
|
return Item:of(unitItemInSlot(self.handle, slot))
|
|
864
961
|
end
|
|
865
962
|
function Unit.prototype.addAbility(self, abilityId)
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
963
|
+
local ability = UnitAbility:of(
|
|
964
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
965
|
+
abilityId,
|
|
966
|
+
self
|
|
967
|
+
)
|
|
968
|
+
if ability ~= nil then
|
|
872
969
|
local abilities = self.abilities
|
|
873
970
|
abilities[#abilities + 1] = ability
|
|
874
|
-
return ability
|
|
875
971
|
end
|
|
876
|
-
return
|
|
972
|
+
return ability
|
|
877
973
|
end
|
|
878
974
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
879
975
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -887,31 +983,21 @@ end
|
|
|
887
983
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
888
984
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
889
985
|
end
|
|
890
|
-
function Unit.prototype.
|
|
891
|
-
local
|
|
892
|
-
|
|
893
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
894
|
-
return nil
|
|
895
|
-
end
|
|
896
|
-
return UnitAbility:of(
|
|
897
|
-
getUnitAbility(self.handle, abilityId),
|
|
898
|
-
abilityId,
|
|
899
|
-
self
|
|
900
|
-
)
|
|
986
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
987
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
988
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
901
989
|
end
|
|
902
|
-
function Unit.prototype.removeAbility(self,
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
end
|
|
990
|
+
function Unit.prototype.removeAbility(self, abilityTypeId)
|
|
991
|
+
local abilities = self.abilities
|
|
992
|
+
for i = 1, #abilities do
|
|
993
|
+
if abilities[i].typeId == abilityTypeId then
|
|
994
|
+
local ability = abilities[i]
|
|
995
|
+
tremove(abilities, i)
|
|
996
|
+
ability:destroy()
|
|
997
|
+
return true
|
|
911
998
|
end
|
|
912
|
-
return true
|
|
913
999
|
end
|
|
914
|
-
return
|
|
1000
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
915
1001
|
end
|
|
916
1002
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
917
1003
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -925,12 +1011,16 @@ end
|
|
|
925
1011
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
926
1012
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
927
1013
|
end
|
|
928
|
-
function Unit.prototype.interruptAttack(self)
|
|
929
|
-
unitInterruptAttack(self.handle)
|
|
930
|
-
end
|
|
931
1014
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
932
|
-
|
|
933
|
-
unitDisableAbility(
|
|
1015
|
+
local handle = self.handle
|
|
1016
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
1017
|
+
Timer:run(
|
|
1018
|
+
unitDisableAbility,
|
|
1019
|
+
handle,
|
|
1020
|
+
abilityId,
|
|
1021
|
+
false,
|
|
1022
|
+
false
|
|
1023
|
+
)
|
|
934
1024
|
end
|
|
935
1025
|
function Unit.prototype.getDistanceTo(self, target)
|
|
936
1026
|
local handle = self.handle
|
|
@@ -991,18 +1081,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
991
1081
|
end
|
|
992
1082
|
function Unit.prototype.incrementStunCounter(self)
|
|
993
1083
|
local stunCounter = self[102] or 0
|
|
994
|
-
if not self[101] or stunCounter >= 0 then
|
|
1084
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
995
1085
|
BlzPauseUnitEx(self.handle, true)
|
|
996
1086
|
end
|
|
997
1087
|
self[102] = stunCounter + 1
|
|
998
1088
|
end
|
|
999
1089
|
function Unit.prototype.decrementStunCounter(self)
|
|
1000
1090
|
local stunCounter = self[102] or 0
|
|
1001
|
-
if not self[101] or stunCounter >= 1 then
|
|
1091
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
1002
1092
|
BlzPauseUnitEx(self.handle, false)
|
|
1003
1093
|
end
|
|
1004
1094
|
self[102] = stunCounter - 1
|
|
1005
1095
|
end
|
|
1096
|
+
function Unit.prototype.incrementForceStunCounter(self)
|
|
1097
|
+
local forceStunCounter = self[103] or 0
|
|
1098
|
+
if forceStunCounter == 0 then
|
|
1099
|
+
local handle = self.handle
|
|
1100
|
+
if not self[101] then
|
|
1101
|
+
for _ = self[102] or 0, -1 do
|
|
1102
|
+
BlzPauseUnitEx(handle, true)
|
|
1103
|
+
end
|
|
1104
|
+
end
|
|
1105
|
+
BlzPauseUnitEx(handle, true)
|
|
1106
|
+
end
|
|
1107
|
+
self[103] = forceStunCounter + 1
|
|
1108
|
+
end
|
|
1109
|
+
function Unit.prototype.decrementForceStunCounter(self)
|
|
1110
|
+
local forceStunCounter = self[103] or 0
|
|
1111
|
+
if forceStunCounter == 1 then
|
|
1112
|
+
local handle = self.handle
|
|
1113
|
+
if not self[101] then
|
|
1114
|
+
for _ = self[102] or 0, -1 do
|
|
1115
|
+
BlzPauseUnitEx(handle, false)
|
|
1116
|
+
end
|
|
1117
|
+
end
|
|
1118
|
+
BlzPauseUnitEx(handle, false)
|
|
1119
|
+
end
|
|
1120
|
+
self[103] = forceStunCounter - 1
|
|
1121
|
+
end
|
|
1006
1122
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1007
1123
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
1008
1124
|
owner.handle,
|
|
@@ -1191,7 +1307,15 @@ __TS__SetDescriptor(
|
|
|
1191
1307
|
Unit.prototype,
|
|
1192
1308
|
"isIllusion",
|
|
1193
1309
|
{get = function(self)
|
|
1194
|
-
return
|
|
1310
|
+
return IsUnitIllusion(self.handle)
|
|
1311
|
+
end},
|
|
1312
|
+
true
|
|
1313
|
+
)
|
|
1314
|
+
__TS__SetDescriptor(
|
|
1315
|
+
Unit.prototype,
|
|
1316
|
+
"isStunned",
|
|
1317
|
+
{get = function(self)
|
|
1318
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1195
1319
|
end},
|
|
1196
1320
|
true
|
|
1197
1321
|
)
|
|
@@ -1270,13 +1394,13 @@ __TS__SetDescriptor(
|
|
|
1270
1394
|
)
|
|
1271
1395
|
__TS__SetDescriptor(
|
|
1272
1396
|
Unit.prototype,
|
|
1273
|
-
"
|
|
1397
|
+
"primaryAttribute",
|
|
1274
1398
|
{
|
|
1275
1399
|
get = function(self)
|
|
1276
|
-
return
|
|
1400
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1277
1401
|
end,
|
|
1278
|
-
set = function(self,
|
|
1279
|
-
|
|
1402
|
+
set = function(self, primaryAttribute)
|
|
1403
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1280
1404
|
end
|
|
1281
1405
|
},
|
|
1282
1406
|
true
|
|
@@ -1298,19 +1422,6 @@ __TS__SetDescriptor(
|
|
|
1298
1422
|
end},
|
|
1299
1423
|
true
|
|
1300
1424
|
)
|
|
1301
|
-
__TS__SetDescriptor(
|
|
1302
|
-
Unit.prototype,
|
|
1303
|
-
"agilityBase",
|
|
1304
|
-
{
|
|
1305
|
-
get = function(self)
|
|
1306
|
-
return getHeroAgi(self.handle, false)
|
|
1307
|
-
end,
|
|
1308
|
-
set = function(self, agilityBase)
|
|
1309
|
-
setHeroAgi(self.handle, agilityBase, true)
|
|
1310
|
-
end
|
|
1311
|
-
},
|
|
1312
|
-
true
|
|
1313
|
-
)
|
|
1314
1425
|
__TS__SetDescriptor(
|
|
1315
1426
|
Unit.prototype,
|
|
1316
1427
|
"agilityBonus",
|
|
@@ -1328,19 +1439,6 @@ __TS__SetDescriptor(
|
|
|
1328
1439
|
end},
|
|
1329
1440
|
true
|
|
1330
1441
|
)
|
|
1331
|
-
__TS__SetDescriptor(
|
|
1332
|
-
Unit.prototype,
|
|
1333
|
-
"intelligenceBase",
|
|
1334
|
-
{
|
|
1335
|
-
get = function(self)
|
|
1336
|
-
return getHeroInt(self.handle, false)
|
|
1337
|
-
end,
|
|
1338
|
-
set = function(self, intelligenceBase)
|
|
1339
|
-
setHeroInt(self.handle, intelligenceBase, true)
|
|
1340
|
-
end
|
|
1341
|
-
},
|
|
1342
|
-
true
|
|
1343
|
-
)
|
|
1344
1442
|
__TS__SetDescriptor(
|
|
1345
1443
|
Unit.prototype,
|
|
1346
1444
|
"intelligenceBonus",
|
|
@@ -1389,17 +1487,17 @@ __TS__SetDescriptor(
|
|
|
1389
1487
|
"isTeamGlowVisible",
|
|
1390
1488
|
{
|
|
1391
1489
|
get = function(self)
|
|
1392
|
-
return not self[
|
|
1490
|
+
return not self[107]
|
|
1393
1491
|
end,
|
|
1394
1492
|
set = function(self, isTeamGlowVisible)
|
|
1395
|
-
|
|
1396
|
-
local
|
|
1493
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1494
|
+
local ____temp_7
|
|
1397
1495
|
if not isTeamGlowVisible then
|
|
1398
|
-
|
|
1496
|
+
____temp_7 = true
|
|
1399
1497
|
else
|
|
1400
|
-
|
|
1498
|
+
____temp_7 = nil
|
|
1401
1499
|
end
|
|
1402
|
-
self[
|
|
1500
|
+
self[107] = ____temp_7
|
|
1403
1501
|
end
|
|
1404
1502
|
},
|
|
1405
1503
|
true
|
|
@@ -1408,9 +1506,9 @@ __TS__SetDescriptor(
|
|
|
1408
1506
|
Unit.prototype,
|
|
1409
1507
|
"color",
|
|
1410
1508
|
{set = function(self, color)
|
|
1411
|
-
|
|
1412
|
-
if self[
|
|
1413
|
-
|
|
1509
|
+
SetUnitColor(self.handle, color.handle)
|
|
1510
|
+
if self[107] then
|
|
1511
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1414
1512
|
end
|
|
1415
1513
|
end},
|
|
1416
1514
|
true
|
|
@@ -1433,14 +1531,14 @@ __TS__SetDescriptor(
|
|
|
1433
1531
|
"maxHealth",
|
|
1434
1532
|
{
|
|
1435
1533
|
get = function(self)
|
|
1436
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1534
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1437
1535
|
end,
|
|
1438
1536
|
set = function(self, maxHealth)
|
|
1439
|
-
if maxHealth < 1 and self[
|
|
1440
|
-
self[
|
|
1537
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1538
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1441
1539
|
maxHealth = 1
|
|
1442
1540
|
end
|
|
1443
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1541
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1444
1542
|
end
|
|
1445
1543
|
},
|
|
1446
1544
|
true
|
|
@@ -1482,10 +1580,10 @@ __TS__SetDescriptor(
|
|
|
1482
1580
|
"health",
|
|
1483
1581
|
{
|
|
1484
1582
|
get = function(self)
|
|
1485
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1583
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1486
1584
|
end,
|
|
1487
1585
|
set = function(self, health)
|
|
1488
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1586
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1489
1587
|
end
|
|
1490
1588
|
},
|
|
1491
1589
|
true
|
|
@@ -1561,25 +1659,12 @@ __TS__SetDescriptor(
|
|
|
1561
1659
|
},
|
|
1562
1660
|
true
|
|
1563
1661
|
)
|
|
1564
|
-
__TS__SetDescriptor(
|
|
1565
|
-
Unit.prototype,
|
|
1566
|
-
"flyHeight",
|
|
1567
|
-
{
|
|
1568
|
-
get = function(self)
|
|
1569
|
-
return getUnitFlyHeight(self.handle)
|
|
1570
|
-
end,
|
|
1571
|
-
set = function(self, v)
|
|
1572
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1573
|
-
end
|
|
1574
|
-
},
|
|
1575
|
-
true
|
|
1576
|
-
)
|
|
1577
1662
|
__TS__SetDescriptor(
|
|
1578
1663
|
Unit.prototype,
|
|
1579
1664
|
"x",
|
|
1580
1665
|
{
|
|
1581
1666
|
get = function(self)
|
|
1582
|
-
return getUnitX(self.handle)
|
|
1667
|
+
return self[108] or getUnitX(self.handle)
|
|
1583
1668
|
end,
|
|
1584
1669
|
set = function(self, v)
|
|
1585
1670
|
SetUnitX(self.handle, v)
|
|
@@ -1592,7 +1677,7 @@ __TS__SetDescriptor(
|
|
|
1592
1677
|
"y",
|
|
1593
1678
|
{
|
|
1594
1679
|
get = function(self)
|
|
1595
|
-
return getUnitY(self.handle)
|
|
1680
|
+
return self[109] or getUnitY(self.handle)
|
|
1596
1681
|
end,
|
|
1597
1682
|
set = function(self, v)
|
|
1598
1683
|
SetUnitY(self.handle, v)
|
|
@@ -1678,10 +1763,10 @@ __TS__SetDescriptor(
|
|
|
1678
1763
|
"gold",
|
|
1679
1764
|
{
|
|
1680
1765
|
get = function(self)
|
|
1681
|
-
return
|
|
1766
|
+
return GetResourceAmount(self.handle)
|
|
1682
1767
|
end,
|
|
1683
1768
|
set = function(self, gold)
|
|
1684
|
-
|
|
1769
|
+
SetResourceAmount(self.handle, gold)
|
|
1685
1770
|
end
|
|
1686
1771
|
},
|
|
1687
1772
|
true
|
|
@@ -1697,14 +1782,18 @@ __TS__SetDescriptor(
|
|
|
1697
1782
|
local handle = self.handle
|
|
1698
1783
|
if isPaused and not IsUnitPaused(handle) then
|
|
1699
1784
|
self[101] = true
|
|
1700
|
-
|
|
1701
|
-
|
|
1785
|
+
if (self[103] or 0) <= 0 then
|
|
1786
|
+
for _ = self[102] or 0, -1 do
|
|
1787
|
+
BlzPauseUnitEx(handle, true)
|
|
1788
|
+
end
|
|
1702
1789
|
end
|
|
1703
1790
|
PauseUnit(handle, true)
|
|
1704
1791
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1705
1792
|
PauseUnit(handle, false)
|
|
1706
|
-
|
|
1707
|
-
|
|
1793
|
+
if (self[103] or 0) <= 0 then
|
|
1794
|
+
for _ = self[102] or 0, -1 do
|
|
1795
|
+
BlzPauseUnitEx(handle, false)
|
|
1796
|
+
end
|
|
1708
1797
|
end
|
|
1709
1798
|
self[101] = nil
|
|
1710
1799
|
end
|
|
@@ -1762,20 +1851,6 @@ __TS__SetDescriptor(
|
|
|
1762
1851
|
},
|
|
1763
1852
|
true
|
|
1764
1853
|
)
|
|
1765
|
-
__TS__SetDescriptor(
|
|
1766
|
-
Unit.prototype,
|
|
1767
|
-
"scale",
|
|
1768
|
-
{
|
|
1769
|
-
get = function(self)
|
|
1770
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1771
|
-
end,
|
|
1772
|
-
set = function(self, v)
|
|
1773
|
-
setUnitScale(self.handle, v, v, v)
|
|
1774
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1775
|
-
end
|
|
1776
|
-
},
|
|
1777
|
-
true
|
|
1778
|
-
)
|
|
1779
1854
|
__TS__SetDescriptor(
|
|
1780
1855
|
Unit.prototype,
|
|
1781
1856
|
"timeScale",
|
|
@@ -1809,6 +1884,19 @@ __TS__SetDescriptor(
|
|
|
1809
1884
|
end},
|
|
1810
1885
|
true
|
|
1811
1886
|
)
|
|
1887
|
+
__TS__SetDescriptor(
|
|
1888
|
+
Unit.prototype,
|
|
1889
|
+
"movementType",
|
|
1890
|
+
{
|
|
1891
|
+
get = function(self)
|
|
1892
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1893
|
+
end,
|
|
1894
|
+
set = function(self, movementType)
|
|
1895
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1896
|
+
end
|
|
1897
|
+
},
|
|
1898
|
+
true
|
|
1899
|
+
)
|
|
1812
1900
|
__TS__SetDescriptor(
|
|
1813
1901
|
Unit.prototype,
|
|
1814
1902
|
"pathing",
|
|
@@ -1990,6 +2078,14 @@ __TS__SetDescriptor(
|
|
|
1990
2078
|
end},
|
|
1991
2079
|
true
|
|
1992
2080
|
)
|
|
2081
|
+
__TS__SetDescriptor(
|
|
2082
|
+
Unit.prototype,
|
|
2083
|
+
"targetAcquiredEvent",
|
|
2084
|
+
{get = function(self)
|
|
2085
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2086
|
+
end},
|
|
2087
|
+
true
|
|
2088
|
+
)
|
|
1993
2089
|
__TS__SetDescriptor(
|
|
1994
2090
|
Unit.prototype,
|
|
1995
2091
|
"onSelect",
|
|
@@ -2050,6 +2146,11 @@ __TS__SetDescriptor(
|
|
|
2050
2146
|
end},
|
|
2051
2147
|
true
|
|
2052
2148
|
)
|
|
2149
|
+
Unit.levelChangedEvent = __TS__New(
|
|
2150
|
+
____exports.UnitTriggerEvent,
|
|
2151
|
+
EVENT_PLAYER_HERO_LEVEL,
|
|
2152
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
2153
|
+
)
|
|
2053
2154
|
Unit.deathEvent = __TS__New(
|
|
2054
2155
|
____exports.UnitTriggerEvent,
|
|
2055
2156
|
EVENT_PLAYER_UNIT_DEATH,
|
|
@@ -2125,25 +2226,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2125
2226
|
InitializingEvent,
|
|
2126
2227
|
function(event)
|
|
2127
2228
|
local function listener(unit, id)
|
|
2128
|
-
local
|
|
2229
|
+
local ____GetSpellTargetUnit_result_10
|
|
2129
2230
|
if GetSpellTargetUnit() then
|
|
2130
|
-
|
|
2231
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2131
2232
|
else
|
|
2132
|
-
local
|
|
2233
|
+
local ____GetSpellTargetItem_result_9
|
|
2133
2234
|
if GetSpellTargetItem() then
|
|
2134
|
-
|
|
2235
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2135
2236
|
else
|
|
2136
|
-
local
|
|
2237
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2137
2238
|
if GetSpellTargetDestructable() then
|
|
2138
|
-
|
|
2239
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2139
2240
|
else
|
|
2140
|
-
|
|
2241
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2141
2242
|
end
|
|
2142
|
-
|
|
2243
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2143
2244
|
end
|
|
2144
|
-
|
|
2245
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2145
2246
|
end
|
|
2146
|
-
local target =
|
|
2247
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2147
2248
|
if target then
|
|
2148
2249
|
invoke(event, unit, id, target)
|
|
2149
2250
|
end
|
|
@@ -2351,38 +2452,57 @@ Unit.onDamaging = (function()
|
|
|
2351
2452
|
if source and source.typeId == dummyUnitId then
|
|
2352
2453
|
source = nil
|
|
2353
2454
|
end
|
|
2354
|
-
local target = BlzGetEventDamageTarget()
|
|
2455
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2456
|
+
local metadata = damageMetadataByTarget[target]
|
|
2457
|
+
damageMetadataByTarget[target] = nil
|
|
2355
2458
|
local data = {
|
|
2356
2459
|
amount = GetEventDamage(),
|
|
2357
|
-
attackType = BlzGetEventAttackType(),
|
|
2460
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2358
2461
|
damageType = BlzGetEventDamageType(),
|
|
2359
2462
|
weaponType = BlzGetEventWeaponType(),
|
|
2360
|
-
|
|
2463
|
+
metadata = metadata,
|
|
2464
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2465
|
+
originalAmount = GetEventDamage(),
|
|
2466
|
+
originalMetadata = metadata,
|
|
2467
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2361
2468
|
}
|
|
2362
2469
|
if data.isAttack and source then
|
|
2363
|
-
|
|
2364
|
-
if weapon == -1 then
|
|
2365
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2366
|
-
weapon = 0
|
|
2367
|
-
end
|
|
2368
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2470
|
+
data.weapon = source:chooseWeapon(target)
|
|
2369
2471
|
end
|
|
2370
2472
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2371
2473
|
invoke(
|
|
2372
2474
|
event,
|
|
2373
2475
|
source,
|
|
2374
|
-
|
|
2476
|
+
target,
|
|
2375
2477
|
setmetatable(
|
|
2376
2478
|
{},
|
|
2377
2479
|
{
|
|
2378
2480
|
__index = data,
|
|
2379
2481
|
__newindex = function(self, key, value)
|
|
2380
|
-
damageSetters[key]
|
|
2482
|
+
local damageSetter = damageSetters[key]
|
|
2483
|
+
if damageSetter ~= nil then
|
|
2484
|
+
damageSetter(value)
|
|
2485
|
+
end
|
|
2381
2486
|
data[key] = value
|
|
2382
2487
|
end
|
|
2383
2488
|
}
|
|
2384
2489
|
)
|
|
2385
2490
|
)
|
|
2491
|
+
if data[0] and source then
|
|
2492
|
+
local sourceOwner = source.owner.handle
|
|
2493
|
+
data[1] = sourceOwner
|
|
2494
|
+
local targetOwner = target.owner.handle
|
|
2495
|
+
data[2] = targetOwner
|
|
2496
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2497
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2498
|
+
data[3] = true
|
|
2499
|
+
end
|
|
2500
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2501
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2502
|
+
data[4] = true
|
|
2503
|
+
end
|
|
2504
|
+
end
|
|
2505
|
+
damagingEventByTarget[target] = data
|
|
2386
2506
|
return
|
|
2387
2507
|
end
|
|
2388
2508
|
BlzSetEventDamage(0)
|
|
@@ -2390,7 +2510,7 @@ Unit.onDamaging = (function()
|
|
|
2390
2510
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2391
2511
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2392
2512
|
local sourceOwner = source.owner.handle
|
|
2393
|
-
local targetOwner =
|
|
2513
|
+
local targetOwner = target.owner.handle
|
|
2394
2514
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2395
2515
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2396
2516
|
Timer:run(function()
|
|
@@ -2406,23 +2526,19 @@ Unit.onDamaging = (function()
|
|
|
2406
2526
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2407
2527
|
local condition = ____value[1]
|
|
2408
2528
|
local action = ____value[2]
|
|
2409
|
-
if condition(
|
|
2410
|
-
source,
|
|
2411
|
-
____exports.Unit:of(target),
|
|
2412
|
-
data
|
|
2413
|
-
) then
|
|
2529
|
+
if condition(source, target, data) then
|
|
2414
2530
|
action(
|
|
2415
2531
|
source,
|
|
2416
|
-
|
|
2532
|
+
target,
|
|
2417
2533
|
setmetatable(
|
|
2418
2534
|
{fire = function()
|
|
2419
2535
|
UnitDamageTarget(
|
|
2420
2536
|
source.handle,
|
|
2421
|
-
target,
|
|
2537
|
+
target.handle,
|
|
2422
2538
|
data.amount,
|
|
2423
2539
|
true,
|
|
2424
2540
|
true,
|
|
2425
|
-
data.attackType,
|
|
2541
|
+
attackTypeToNative(data.attackType),
|
|
2426
2542
|
data.damageType,
|
|
2427
2543
|
data.weaponType
|
|
2428
2544
|
)
|
|
@@ -2449,30 +2565,54 @@ Unit.onDamage = __TS__New(
|
|
|
2449
2565
|
if source and source.typeId == dummyUnitId then
|
|
2450
2566
|
source = nil
|
|
2451
2567
|
end
|
|
2568
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2569
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2570
|
+
damagingEventByTarget[target] = nil
|
|
2452
2571
|
local data = {
|
|
2453
2572
|
amount = GetEventDamage(),
|
|
2454
|
-
attackType = BlzGetEventAttackType(),
|
|
2573
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2455
2574
|
damageType = BlzGetEventDamageType(),
|
|
2456
2575
|
weaponType = BlzGetEventWeaponType(),
|
|
2576
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2457
2577
|
isAttack = BlzGetEventIsAttack(),
|
|
2458
|
-
originalAmount = GetEventDamage(),
|
|
2578
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2579
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2459
2580
|
preventDeath = damageEventPreventDeath
|
|
2460
2581
|
}
|
|
2582
|
+
if damagingEvent then
|
|
2583
|
+
for key, value in pairs(damagingEvent) do
|
|
2584
|
+
if isAttribute(key) then
|
|
2585
|
+
data[key] = value
|
|
2586
|
+
end
|
|
2587
|
+
end
|
|
2588
|
+
local sourceOwner = damagingEvent[1]
|
|
2589
|
+
if sourceOwner then
|
|
2590
|
+
local targetOwner = damagingEvent[2]
|
|
2591
|
+
if damagingEvent[3] then
|
|
2592
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2593
|
+
end
|
|
2594
|
+
if damagingEvent[4] then
|
|
2595
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2596
|
+
end
|
|
2597
|
+
end
|
|
2598
|
+
end
|
|
2461
2599
|
local evData = setmetatable(
|
|
2462
2600
|
{},
|
|
2463
2601
|
{
|
|
2464
2602
|
__index = data,
|
|
2465
2603
|
__newindex = function(self, key, value)
|
|
2466
|
-
damageSetters[key]
|
|
2604
|
+
local damageSetter = damageSetters[key]
|
|
2605
|
+
if damageSetter ~= nil then
|
|
2606
|
+
damageSetter(value)
|
|
2607
|
+
end
|
|
2467
2608
|
data[key] = value
|
|
2468
2609
|
end
|
|
2469
2610
|
}
|
|
2470
2611
|
)
|
|
2471
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2472
2612
|
invoke(event, source, target, evData)
|
|
2473
2613
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2474
2614
|
local bonusHealth = math.ceil(evData.amount)
|
|
2475
|
-
target[
|
|
2615
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2476
2616
|
BlzSetUnitMaxHP(
|
|
2477
2617
|
target.handle,
|
|
2478
2618
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2486,7 +2626,7 @@ Unit.onDamage = __TS__New(
|
|
|
2486
2626
|
evData[0],
|
|
2487
2627
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2488
2628
|
)
|
|
2489
|
-
target[
|
|
2629
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2490
2630
|
SetWidgetLife(
|
|
2491
2631
|
target.handle,
|
|
2492
2632
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2511,8 +2651,9 @@ Unit.itemDroppedEvent = __TS__New(
|
|
|
2511
2651
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2512
2652
|
function()
|
|
2513
2653
|
local unit = getTriggerUnit()
|
|
2514
|
-
|
|
2515
|
-
|
|
2654
|
+
local item = getManipulatedItem()
|
|
2655
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2656
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2516
2657
|
end
|
|
2517
2658
|
return IgnoreEvent
|
|
2518
2659
|
end
|
|
@@ -2521,9 +2662,14 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2521
2662
|
____exports.UnitTriggerEvent,
|
|
2522
2663
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2523
2664
|
function()
|
|
2524
|
-
local
|
|
2525
|
-
|
|
2526
|
-
|
|
2665
|
+
local unitHandle = getTriggerUnit()
|
|
2666
|
+
local itemHandle = getManipulatedItem()
|
|
2667
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
|
|
2668
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2669
|
+
local item = Item:of(itemHandle)
|
|
2670
|
+
if item.owner ~= unit then
|
|
2671
|
+
return unit, item
|
|
2672
|
+
end
|
|
2527
2673
|
end
|
|
2528
2674
|
return IgnoreEvent
|
|
2529
2675
|
end
|
|
@@ -2533,8 +2679,9 @@ Unit.itemUsedEvent = __TS__New(
|
|
|
2533
2679
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2534
2680
|
function()
|
|
2535
2681
|
local unit = getTriggerUnit()
|
|
2536
|
-
|
|
2537
|
-
|
|
2682
|
+
local item = getManipulatedItem()
|
|
2683
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2684
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2538
2685
|
end
|
|
2539
2686
|
return IgnoreEvent
|
|
2540
2687
|
end
|
|
@@ -2542,7 +2689,22 @@ Unit.itemUsedEvent = __TS__New(
|
|
|
2542
2689
|
Unit.itemStackedEvent = __TS__New(
|
|
2543
2690
|
____exports.UnitTriggerEvent,
|
|
2544
2691
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2545
|
-
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(
|
|
2692
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2693
|
+
)
|
|
2694
|
+
__TS__ObjectDefineProperty(
|
|
2695
|
+
Unit,
|
|
2696
|
+
"itemChargesChangedEvent",
|
|
2697
|
+
{get = function(self)
|
|
2698
|
+
local event = __TS__New(Event)
|
|
2699
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2700
|
+
local unit = item.owner
|
|
2701
|
+
if unit ~= nil then
|
|
2702
|
+
invoke(event, unit, item)
|
|
2703
|
+
end
|
|
2704
|
+
end)
|
|
2705
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2706
|
+
return event
|
|
2707
|
+
end}
|
|
2546
2708
|
)
|
|
2547
2709
|
__TS__ObjectDefineProperty(
|
|
2548
2710
|
Unit,
|
|
@@ -2614,6 +2776,10 @@ __TS__ObjectDefineProperty(
|
|
|
2614
2776
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2615
2777
|
return destroyEvent
|
|
2616
2778
|
end}
|
|
2779
|
+
)
|
|
2780
|
+
Unit.synchronize = synchronizer(
|
|
2781
|
+
function(unit) return unit.syncId end,
|
|
2782
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2617
2783
|
);
|
|
2618
2784
|
(function(self)
|
|
2619
2785
|
local leaveAbilityIds = postcompile(function()
|