warscript 0.0.1-dev.ed60fea → 0.0.1-dev.edf7fad
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 +71 -22
- 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 +100 -25
- 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 +12 -3
- package/engine/behaviour/ability/damage.lua +33 -39
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +18 -3
- 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 +15 -5
- package/engine/behaviour/ability.lua +72 -24
- 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 +113 -53
- package/engine/buff.lua +544 -288
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +49 -11
- 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.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/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- 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/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.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 +8 -0
- package/engine/internal/unit/bonus.lua +50 -3
- 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/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -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+bonus.lua +3 -3
- 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 +44 -25
- package/engine/internal/unit.lua +401 -263
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +7 -0
- package/engine/local-client.lua +79 -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/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/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- 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/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- 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/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -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 +21 -17
- package/engine/object-data/entry/ability-type.lua +169 -28
- package/engine/object-data/entry/buff-type/applicable.lua +122 -137
- 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 +4 -4
- package/engine/object-field/ability.lua +9 -8
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +26 -7
- package/engine/object-field.lua +360 -119
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -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 +7 -0
- package/engine/unit.lua +7 -0
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +11 -10
- package/objutil/object.lua +1 -1
- package/objutil/unit.lua +8 -0
- package/operation.lua +1 -4
- package/package.json +5 -5
- package/patch-lua.lua +15 -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 +34 -0
- package/utility/linked-map.lua +101 -0
- package/utility/linked-set.d.ts +4 -1
- package/utility/linked-set.lua +43 -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/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
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,50 +689,78 @@ 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
|
|
754
|
+
end
|
|
755
|
+
function Unit.prototype.saveData(self)
|
|
756
|
+
local handle = self.handle
|
|
757
|
+
self[108] = self[108] or getUnitX(handle)
|
|
758
|
+
self[109] = self[109] or getUnitY(handle)
|
|
759
|
+
self._owner = self._owner or Player:of(getOwningPlayer(handle))
|
|
677
760
|
end
|
|
678
761
|
function Unit.prototype.onDestroy(self)
|
|
679
762
|
local handle = self.handle
|
|
680
|
-
|
|
681
|
-
self._owner = Player:of(getOwningPlayer(handle))
|
|
682
|
-
end
|
|
763
|
+
self:saveData()
|
|
683
764
|
local abilities = self.abilities
|
|
684
765
|
for ____, ability in ipairs(abilities) do
|
|
685
766
|
ability:destroy()
|
|
@@ -715,7 +796,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
|
|
|
715
796
|
self._attackHandlers = handlers
|
|
716
797
|
if #handlers == 1 then
|
|
717
798
|
local handle = self.handle
|
|
718
|
-
assert(
|
|
799
|
+
assert(
|
|
800
|
+
unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
|
|
801
|
+
"attack handler ability must be added",
|
|
802
|
+
self
|
|
803
|
+
)
|
|
719
804
|
end
|
|
720
805
|
return handler
|
|
721
806
|
end
|
|
@@ -744,17 +829,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
744
829
|
end}
|
|
745
830
|
end
|
|
746
831
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
747
|
-
local
|
|
748
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
832
|
+
local ____combatClassification_2 = combatClassification
|
|
833
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
749
834
|
end
|
|
750
835
|
function Unit.prototype.addClassification(self, classification)
|
|
751
|
-
return
|
|
836
|
+
return UnitAddType(self.handle, classification)
|
|
752
837
|
end
|
|
753
838
|
function Unit.prototype.removeClassification(self, classification)
|
|
754
|
-
return
|
|
839
|
+
return UnitRemoveType(self.handle, classification)
|
|
755
840
|
end
|
|
756
841
|
function Unit.prototype.hasClassification(self, classification)
|
|
757
|
-
return
|
|
842
|
+
return IsUnitType(self.handle, classification)
|
|
758
843
|
end
|
|
759
844
|
function Unit.prototype.isVisibleTo(self, player)
|
|
760
845
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -763,13 +848,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
763
848
|
return isUnitInvisible(self.handle, player.handle)
|
|
764
849
|
end
|
|
765
850
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
766
|
-
local
|
|
851
|
+
local ____temp_3
|
|
767
852
|
if type(x) == "number" then
|
|
768
|
-
|
|
853
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
769
854
|
else
|
|
770
|
-
|
|
855
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
771
856
|
end
|
|
772
|
-
return
|
|
857
|
+
return ____temp_3
|
|
773
858
|
end
|
|
774
859
|
function Unit.prototype.isAllyOf(self, unit)
|
|
775
860
|
return isUnitAlly(
|
|
@@ -787,16 +872,30 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
787
872
|
if type(animation) == "number" then
|
|
788
873
|
setUnitAnimationByIndex(self.handle, animation)
|
|
789
874
|
elseif rarity then
|
|
790
|
-
|
|
875
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
791
876
|
else
|
|
792
877
|
setUnitAnimation(self.handle, animation)
|
|
793
878
|
end
|
|
794
879
|
end
|
|
880
|
+
function Unit.prototype.resetAnimation(self)
|
|
881
|
+
ResetUnitAnimation(self.handle)
|
|
882
|
+
end
|
|
795
883
|
function Unit.prototype.queueAnimation(self, animation)
|
|
796
|
-
|
|
884
|
+
QueueUnitAnimation(self.handle, animation)
|
|
885
|
+
end
|
|
886
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
887
|
+
local firstWeapon = self.firstWeapon
|
|
888
|
+
if firstWeapon.isEnabled and target:isAllowedTarget(self, firstWeapon.allowedTargetCombatClassifications) then
|
|
889
|
+
return firstWeapon
|
|
890
|
+
end
|
|
891
|
+
local secondWeapon = self.secondWeapon
|
|
892
|
+
if secondWeapon.isEnabled and target:isAllowedTarget(target, secondWeapon.allowedTargetCombatClassifications) then
|
|
893
|
+
return secondWeapon
|
|
894
|
+
end
|
|
895
|
+
return nil
|
|
797
896
|
end
|
|
798
897
|
function Unit.prototype.delayHealthChecks(self)
|
|
799
|
-
self[
|
|
898
|
+
self[104] = (self[104] or 0) + 1
|
|
800
899
|
Timer:run(delayHealthChecksCallback, self)
|
|
801
900
|
end
|
|
802
901
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -806,21 +905,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
806
905
|
return IsUnitSelected(self.handle, player.handle)
|
|
807
906
|
end
|
|
808
907
|
function Unit.prototype.explode(self)
|
|
809
|
-
|
|
908
|
+
SetUnitExploded(self.handle, true)
|
|
810
909
|
killUnit(self.handle)
|
|
811
910
|
end
|
|
812
911
|
function Unit.prototype.kill(self)
|
|
813
912
|
killUnit(self.handle)
|
|
814
913
|
end
|
|
815
914
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
816
|
-
local
|
|
817
|
-
local
|
|
818
|
-
local
|
|
819
|
-
if
|
|
820
|
-
|
|
915
|
+
local ____ReviveHero_6 = ReviveHero
|
|
916
|
+
local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
|
|
917
|
+
local ____doEffect_4 = doEffect
|
|
918
|
+
if ____doEffect_4 == nil then
|
|
919
|
+
____doEffect_4 = false
|
|
821
920
|
end
|
|
822
|
-
__TS__SparseArrayPush(
|
|
823
|
-
|
|
921
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
922
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
824
923
|
end
|
|
825
924
|
function Unit.prototype.healTarget(self, target, amount)
|
|
826
925
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -863,17 +962,16 @@ function Unit.prototype.itemInSlot(self, slot)
|
|
|
863
962
|
return Item:of(unitItemInSlot(self.handle, slot))
|
|
864
963
|
end
|
|
865
964
|
function Unit.prototype.addAbility(self, abilityId)
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
965
|
+
local ability = UnitAbility:of(
|
|
966
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
967
|
+
abilityId,
|
|
968
|
+
self
|
|
969
|
+
)
|
|
970
|
+
if ability ~= nil then
|
|
872
971
|
local abilities = self.abilities
|
|
873
972
|
abilities[#abilities + 1] = ability
|
|
874
|
-
return ability
|
|
875
973
|
end
|
|
876
|
-
return
|
|
974
|
+
return ability
|
|
877
975
|
end
|
|
878
976
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
879
977
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -887,31 +985,21 @@ end
|
|
|
887
985
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
888
986
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
889
987
|
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
|
-
)
|
|
988
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
989
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
990
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
901
991
|
end
|
|
902
|
-
function Unit.prototype.removeAbility(self,
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
end
|
|
992
|
+
function Unit.prototype.removeAbility(self, abilityTypeId)
|
|
993
|
+
local abilities = self.abilities
|
|
994
|
+
for i = 1, #abilities do
|
|
995
|
+
if abilities[i].typeId == abilityTypeId then
|
|
996
|
+
local ability = abilities[i]
|
|
997
|
+
tremove(abilities, i)
|
|
998
|
+
ability:destroy()
|
|
999
|
+
return true
|
|
911
1000
|
end
|
|
912
|
-
return true
|
|
913
1001
|
end
|
|
914
|
-
return
|
|
1002
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
915
1003
|
end
|
|
916
1004
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
917
1005
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -925,9 +1013,6 @@ end
|
|
|
925
1013
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
926
1014
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
927
1015
|
end
|
|
928
|
-
function Unit.prototype.interruptAttack(self)
|
|
929
|
-
unitInterruptAttack(self.handle)
|
|
930
|
-
end
|
|
931
1016
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
932
1017
|
local handle = self.handle
|
|
933
1018
|
unitDisableAbility(handle, abilityId, true, false)
|
|
@@ -998,18 +1083,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
998
1083
|
end
|
|
999
1084
|
function Unit.prototype.incrementStunCounter(self)
|
|
1000
1085
|
local stunCounter = self[102] or 0
|
|
1001
|
-
if not self[101] or stunCounter >= 0 then
|
|
1086
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
1002
1087
|
BlzPauseUnitEx(self.handle, true)
|
|
1003
1088
|
end
|
|
1004
1089
|
self[102] = stunCounter + 1
|
|
1005
1090
|
end
|
|
1006
1091
|
function Unit.prototype.decrementStunCounter(self)
|
|
1007
1092
|
local stunCounter = self[102] or 0
|
|
1008
|
-
if not self[101] or stunCounter >= 1 then
|
|
1093
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
1009
1094
|
BlzPauseUnitEx(self.handle, false)
|
|
1010
1095
|
end
|
|
1011
1096
|
self[102] = stunCounter - 1
|
|
1012
1097
|
end
|
|
1098
|
+
function Unit.prototype.incrementForceStunCounter(self)
|
|
1099
|
+
local forceStunCounter = self[103] or 0
|
|
1100
|
+
if forceStunCounter == 0 then
|
|
1101
|
+
local handle = self.handle
|
|
1102
|
+
if not self[101] then
|
|
1103
|
+
for _ = self[102] or 0, -1 do
|
|
1104
|
+
BlzPauseUnitEx(handle, true)
|
|
1105
|
+
end
|
|
1106
|
+
end
|
|
1107
|
+
BlzPauseUnitEx(handle, true)
|
|
1108
|
+
end
|
|
1109
|
+
self[103] = forceStunCounter + 1
|
|
1110
|
+
end
|
|
1111
|
+
function Unit.prototype.decrementForceStunCounter(self)
|
|
1112
|
+
local forceStunCounter = self[103] or 0
|
|
1113
|
+
if forceStunCounter == 1 then
|
|
1114
|
+
local handle = self.handle
|
|
1115
|
+
if not self[101] then
|
|
1116
|
+
for _ = self[102] or 0, -1 do
|
|
1117
|
+
BlzPauseUnitEx(handle, false)
|
|
1118
|
+
end
|
|
1119
|
+
end
|
|
1120
|
+
BlzPauseUnitEx(handle, false)
|
|
1121
|
+
end
|
|
1122
|
+
self[103] = forceStunCounter - 1
|
|
1123
|
+
end
|
|
1013
1124
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1014
1125
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
1015
1126
|
owner.handle,
|
|
@@ -1198,7 +1309,15 @@ __TS__SetDescriptor(
|
|
|
1198
1309
|
Unit.prototype,
|
|
1199
1310
|
"isIllusion",
|
|
1200
1311
|
{get = function(self)
|
|
1201
|
-
return
|
|
1312
|
+
return IsUnitIllusion(self.handle)
|
|
1313
|
+
end},
|
|
1314
|
+
true
|
|
1315
|
+
)
|
|
1316
|
+
__TS__SetDescriptor(
|
|
1317
|
+
Unit.prototype,
|
|
1318
|
+
"isStunned",
|
|
1319
|
+
{get = function(self)
|
|
1320
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1202
1321
|
end},
|
|
1203
1322
|
true
|
|
1204
1323
|
)
|
|
@@ -1277,13 +1396,13 @@ __TS__SetDescriptor(
|
|
|
1277
1396
|
)
|
|
1278
1397
|
__TS__SetDescriptor(
|
|
1279
1398
|
Unit.prototype,
|
|
1280
|
-
"
|
|
1399
|
+
"primaryAttribute",
|
|
1281
1400
|
{
|
|
1282
1401
|
get = function(self)
|
|
1283
|
-
return
|
|
1402
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1284
1403
|
end,
|
|
1285
|
-
set = function(self,
|
|
1286
|
-
|
|
1404
|
+
set = function(self, primaryAttribute)
|
|
1405
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1287
1406
|
end
|
|
1288
1407
|
},
|
|
1289
1408
|
true
|
|
@@ -1305,19 +1424,6 @@ __TS__SetDescriptor(
|
|
|
1305
1424
|
end},
|
|
1306
1425
|
true
|
|
1307
1426
|
)
|
|
1308
|
-
__TS__SetDescriptor(
|
|
1309
|
-
Unit.prototype,
|
|
1310
|
-
"agilityBase",
|
|
1311
|
-
{
|
|
1312
|
-
get = function(self)
|
|
1313
|
-
return getHeroAgi(self.handle, false)
|
|
1314
|
-
end,
|
|
1315
|
-
set = function(self, agilityBase)
|
|
1316
|
-
setHeroAgi(self.handle, agilityBase, true)
|
|
1317
|
-
end
|
|
1318
|
-
},
|
|
1319
|
-
true
|
|
1320
|
-
)
|
|
1321
1427
|
__TS__SetDescriptor(
|
|
1322
1428
|
Unit.prototype,
|
|
1323
1429
|
"agilityBonus",
|
|
@@ -1335,19 +1441,6 @@ __TS__SetDescriptor(
|
|
|
1335
1441
|
end},
|
|
1336
1442
|
true
|
|
1337
1443
|
)
|
|
1338
|
-
__TS__SetDescriptor(
|
|
1339
|
-
Unit.prototype,
|
|
1340
|
-
"intelligenceBase",
|
|
1341
|
-
{
|
|
1342
|
-
get = function(self)
|
|
1343
|
-
return getHeroInt(self.handle, false)
|
|
1344
|
-
end,
|
|
1345
|
-
set = function(self, intelligenceBase)
|
|
1346
|
-
setHeroInt(self.handle, intelligenceBase, true)
|
|
1347
|
-
end
|
|
1348
|
-
},
|
|
1349
|
-
true
|
|
1350
|
-
)
|
|
1351
1444
|
__TS__SetDescriptor(
|
|
1352
1445
|
Unit.prototype,
|
|
1353
1446
|
"intelligenceBonus",
|
|
@@ -1396,17 +1489,17 @@ __TS__SetDescriptor(
|
|
|
1396
1489
|
"isTeamGlowVisible",
|
|
1397
1490
|
{
|
|
1398
1491
|
get = function(self)
|
|
1399
|
-
return not self[
|
|
1492
|
+
return not self[107]
|
|
1400
1493
|
end,
|
|
1401
1494
|
set = function(self, isTeamGlowVisible)
|
|
1402
|
-
|
|
1403
|
-
local
|
|
1495
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1496
|
+
local ____temp_7
|
|
1404
1497
|
if not isTeamGlowVisible then
|
|
1405
|
-
|
|
1498
|
+
____temp_7 = true
|
|
1406
1499
|
else
|
|
1407
|
-
|
|
1500
|
+
____temp_7 = nil
|
|
1408
1501
|
end
|
|
1409
|
-
self[
|
|
1502
|
+
self[107] = ____temp_7
|
|
1410
1503
|
end
|
|
1411
1504
|
},
|
|
1412
1505
|
true
|
|
@@ -1415,9 +1508,9 @@ __TS__SetDescriptor(
|
|
|
1415
1508
|
Unit.prototype,
|
|
1416
1509
|
"color",
|
|
1417
1510
|
{set = function(self, color)
|
|
1418
|
-
|
|
1419
|
-
if self[
|
|
1420
|
-
|
|
1511
|
+
SetUnitColor(self.handle, color.handle)
|
|
1512
|
+
if self[107] then
|
|
1513
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1421
1514
|
end
|
|
1422
1515
|
end},
|
|
1423
1516
|
true
|
|
@@ -1440,14 +1533,14 @@ __TS__SetDescriptor(
|
|
|
1440
1533
|
"maxHealth",
|
|
1441
1534
|
{
|
|
1442
1535
|
get = function(self)
|
|
1443
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1536
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1444
1537
|
end,
|
|
1445
1538
|
set = function(self, maxHealth)
|
|
1446
|
-
if maxHealth < 1 and self[
|
|
1447
|
-
self[
|
|
1539
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1540
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1448
1541
|
maxHealth = 1
|
|
1449
1542
|
end
|
|
1450
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1543
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1451
1544
|
end
|
|
1452
1545
|
},
|
|
1453
1546
|
true
|
|
@@ -1489,10 +1582,10 @@ __TS__SetDescriptor(
|
|
|
1489
1582
|
"health",
|
|
1490
1583
|
{
|
|
1491
1584
|
get = function(self)
|
|
1492
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1585
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1493
1586
|
end,
|
|
1494
1587
|
set = function(self, health)
|
|
1495
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1588
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1496
1589
|
end
|
|
1497
1590
|
},
|
|
1498
1591
|
true
|
|
@@ -1568,25 +1661,12 @@ __TS__SetDescriptor(
|
|
|
1568
1661
|
},
|
|
1569
1662
|
true
|
|
1570
1663
|
)
|
|
1571
|
-
__TS__SetDescriptor(
|
|
1572
|
-
Unit.prototype,
|
|
1573
|
-
"flyHeight",
|
|
1574
|
-
{
|
|
1575
|
-
get = function(self)
|
|
1576
|
-
return getUnitFlyHeight(self.handle)
|
|
1577
|
-
end,
|
|
1578
|
-
set = function(self, v)
|
|
1579
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1580
|
-
end
|
|
1581
|
-
},
|
|
1582
|
-
true
|
|
1583
|
-
)
|
|
1584
1664
|
__TS__SetDescriptor(
|
|
1585
1665
|
Unit.prototype,
|
|
1586
1666
|
"x",
|
|
1587
1667
|
{
|
|
1588
1668
|
get = function(self)
|
|
1589
|
-
return getUnitX(self.handle)
|
|
1669
|
+
return self[108] or getUnitX(self.handle)
|
|
1590
1670
|
end,
|
|
1591
1671
|
set = function(self, v)
|
|
1592
1672
|
SetUnitX(self.handle, v)
|
|
@@ -1599,7 +1679,7 @@ __TS__SetDescriptor(
|
|
|
1599
1679
|
"y",
|
|
1600
1680
|
{
|
|
1601
1681
|
get = function(self)
|
|
1602
|
-
return getUnitY(self.handle)
|
|
1682
|
+
return self[109] or getUnitY(self.handle)
|
|
1603
1683
|
end,
|
|
1604
1684
|
set = function(self, v)
|
|
1605
1685
|
SetUnitY(self.handle, v)
|
|
@@ -1685,10 +1765,10 @@ __TS__SetDescriptor(
|
|
|
1685
1765
|
"gold",
|
|
1686
1766
|
{
|
|
1687
1767
|
get = function(self)
|
|
1688
|
-
return
|
|
1768
|
+
return GetResourceAmount(self.handle)
|
|
1689
1769
|
end,
|
|
1690
1770
|
set = function(self, gold)
|
|
1691
|
-
|
|
1771
|
+
SetResourceAmount(self.handle, gold)
|
|
1692
1772
|
end
|
|
1693
1773
|
},
|
|
1694
1774
|
true
|
|
@@ -1704,14 +1784,18 @@ __TS__SetDescriptor(
|
|
|
1704
1784
|
local handle = self.handle
|
|
1705
1785
|
if isPaused and not IsUnitPaused(handle) then
|
|
1706
1786
|
self[101] = true
|
|
1707
|
-
|
|
1708
|
-
|
|
1787
|
+
if (self[103] or 0) <= 0 then
|
|
1788
|
+
for _ = self[102] or 0, -1 do
|
|
1789
|
+
BlzPauseUnitEx(handle, true)
|
|
1790
|
+
end
|
|
1709
1791
|
end
|
|
1710
1792
|
PauseUnit(handle, true)
|
|
1711
1793
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1712
1794
|
PauseUnit(handle, false)
|
|
1713
|
-
|
|
1714
|
-
|
|
1795
|
+
if (self[103] or 0) <= 0 then
|
|
1796
|
+
for _ = self[102] or 0, -1 do
|
|
1797
|
+
BlzPauseUnitEx(handle, false)
|
|
1798
|
+
end
|
|
1715
1799
|
end
|
|
1716
1800
|
self[101] = nil
|
|
1717
1801
|
end
|
|
@@ -1769,20 +1853,6 @@ __TS__SetDescriptor(
|
|
|
1769
1853
|
},
|
|
1770
1854
|
true
|
|
1771
1855
|
)
|
|
1772
|
-
__TS__SetDescriptor(
|
|
1773
|
-
Unit.prototype,
|
|
1774
|
-
"scale",
|
|
1775
|
-
{
|
|
1776
|
-
get = function(self)
|
|
1777
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1778
|
-
end,
|
|
1779
|
-
set = function(self, v)
|
|
1780
|
-
setUnitScale(self.handle, v, v, v)
|
|
1781
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1782
|
-
end
|
|
1783
|
-
},
|
|
1784
|
-
true
|
|
1785
|
-
)
|
|
1786
1856
|
__TS__SetDescriptor(
|
|
1787
1857
|
Unit.prototype,
|
|
1788
1858
|
"timeScale",
|
|
@@ -1816,6 +1886,19 @@ __TS__SetDescriptor(
|
|
|
1816
1886
|
end},
|
|
1817
1887
|
true
|
|
1818
1888
|
)
|
|
1889
|
+
__TS__SetDescriptor(
|
|
1890
|
+
Unit.prototype,
|
|
1891
|
+
"movementType",
|
|
1892
|
+
{
|
|
1893
|
+
get = function(self)
|
|
1894
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1895
|
+
end,
|
|
1896
|
+
set = function(self, movementType)
|
|
1897
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1898
|
+
end
|
|
1899
|
+
},
|
|
1900
|
+
true
|
|
1901
|
+
)
|
|
1819
1902
|
__TS__SetDescriptor(
|
|
1820
1903
|
Unit.prototype,
|
|
1821
1904
|
"pathing",
|
|
@@ -1906,30 +1989,6 @@ __TS__SetDescriptor(
|
|
|
1906
1989
|
end},
|
|
1907
1990
|
true
|
|
1908
1991
|
)
|
|
1909
|
-
__TS__SetDescriptor(
|
|
1910
|
-
Unit.prototype,
|
|
1911
|
-
"onUnitInRange",
|
|
1912
|
-
{get = function(self)
|
|
1913
|
-
local handle = self.handle
|
|
1914
|
-
local onUnitInRange = setmetatable(
|
|
1915
|
-
{},
|
|
1916
|
-
{__index = function(self, value)
|
|
1917
|
-
local event = __TS__New(
|
|
1918
|
-
TriggerEvent,
|
|
1919
|
-
function(trigger)
|
|
1920
|
-
TriggerRegisterUnitInRangeSimple(trigger, value, handle)
|
|
1921
|
-
end,
|
|
1922
|
-
function() return ____exports.Unit:of(handle) end
|
|
1923
|
-
)
|
|
1924
|
-
rawset(self, value, event)
|
|
1925
|
-
return event
|
|
1926
|
-
end}
|
|
1927
|
-
)
|
|
1928
|
-
rawset(self, "onUnitInRange", onUnitInRange)
|
|
1929
|
-
return onUnitInRange
|
|
1930
|
-
end},
|
|
1931
|
-
true
|
|
1932
|
-
)
|
|
1933
1992
|
__TS__SetDescriptor(
|
|
1934
1993
|
Unit.prototype,
|
|
1935
1994
|
"onManaEqual",
|
|
@@ -1997,6 +2056,14 @@ __TS__SetDescriptor(
|
|
|
1997
2056
|
end},
|
|
1998
2057
|
true
|
|
1999
2058
|
)
|
|
2059
|
+
__TS__SetDescriptor(
|
|
2060
|
+
Unit.prototype,
|
|
2061
|
+
"targetAcquiredEvent",
|
|
2062
|
+
{get = function(self)
|
|
2063
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2064
|
+
end},
|
|
2065
|
+
true
|
|
2066
|
+
)
|
|
2000
2067
|
__TS__SetDescriptor(
|
|
2001
2068
|
Unit.prototype,
|
|
2002
2069
|
"onSelect",
|
|
@@ -2057,6 +2124,11 @@ __TS__SetDescriptor(
|
|
|
2057
2124
|
end},
|
|
2058
2125
|
true
|
|
2059
2126
|
)
|
|
2127
|
+
Unit.levelChangedEvent = __TS__New(
|
|
2128
|
+
____exports.UnitTriggerEvent,
|
|
2129
|
+
EVENT_PLAYER_HERO_LEVEL,
|
|
2130
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
2131
|
+
)
|
|
2060
2132
|
Unit.deathEvent = __TS__New(
|
|
2061
2133
|
____exports.UnitTriggerEvent,
|
|
2062
2134
|
EVENT_PLAYER_UNIT_DEATH,
|
|
@@ -2132,25 +2204,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2132
2204
|
InitializingEvent,
|
|
2133
2205
|
function(event)
|
|
2134
2206
|
local function listener(unit, id)
|
|
2135
|
-
local
|
|
2207
|
+
local ____GetSpellTargetUnit_result_10
|
|
2136
2208
|
if GetSpellTargetUnit() then
|
|
2137
|
-
|
|
2209
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2138
2210
|
else
|
|
2139
|
-
local
|
|
2211
|
+
local ____GetSpellTargetItem_result_9
|
|
2140
2212
|
if GetSpellTargetItem() then
|
|
2141
|
-
|
|
2213
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2142
2214
|
else
|
|
2143
|
-
local
|
|
2215
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2144
2216
|
if GetSpellTargetDestructable() then
|
|
2145
|
-
|
|
2217
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2146
2218
|
else
|
|
2147
|
-
|
|
2219
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2148
2220
|
end
|
|
2149
|
-
|
|
2221
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2150
2222
|
end
|
|
2151
|
-
|
|
2223
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2152
2224
|
end
|
|
2153
|
-
local target =
|
|
2225
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2154
2226
|
if target then
|
|
2155
2227
|
invoke(event, unit, id, target)
|
|
2156
2228
|
end
|
|
@@ -2358,38 +2430,57 @@ Unit.onDamaging = (function()
|
|
|
2358
2430
|
if source and source.typeId == dummyUnitId then
|
|
2359
2431
|
source = nil
|
|
2360
2432
|
end
|
|
2361
|
-
local target = BlzGetEventDamageTarget()
|
|
2433
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2434
|
+
local metadata = damageMetadataByTarget[target]
|
|
2435
|
+
damageMetadataByTarget[target] = nil
|
|
2362
2436
|
local data = {
|
|
2363
2437
|
amount = GetEventDamage(),
|
|
2364
|
-
attackType = BlzGetEventAttackType(),
|
|
2438
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2365
2439
|
damageType = BlzGetEventDamageType(),
|
|
2366
2440
|
weaponType = BlzGetEventWeaponType(),
|
|
2367
|
-
|
|
2441
|
+
metadata = metadata,
|
|
2442
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2443
|
+
originalAmount = GetEventDamage(),
|
|
2444
|
+
originalMetadata = metadata,
|
|
2445
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2368
2446
|
}
|
|
2369
2447
|
if data.isAttack and source then
|
|
2370
|
-
|
|
2371
|
-
if weapon == -1 then
|
|
2372
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2373
|
-
weapon = 0
|
|
2374
|
-
end
|
|
2375
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2448
|
+
data.weapon = source:chooseWeapon(target)
|
|
2376
2449
|
end
|
|
2377
2450
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2378
2451
|
invoke(
|
|
2379
2452
|
event,
|
|
2380
2453
|
source,
|
|
2381
|
-
|
|
2454
|
+
target,
|
|
2382
2455
|
setmetatable(
|
|
2383
2456
|
{},
|
|
2384
2457
|
{
|
|
2385
2458
|
__index = data,
|
|
2386
2459
|
__newindex = function(self, key, value)
|
|
2387
|
-
damageSetters[key]
|
|
2460
|
+
local damageSetter = damageSetters[key]
|
|
2461
|
+
if damageSetter ~= nil then
|
|
2462
|
+
damageSetter(value)
|
|
2463
|
+
end
|
|
2388
2464
|
data[key] = value
|
|
2389
2465
|
end
|
|
2390
2466
|
}
|
|
2391
2467
|
)
|
|
2392
2468
|
)
|
|
2469
|
+
if data[0] and source then
|
|
2470
|
+
local sourceOwner = source.owner.handle
|
|
2471
|
+
data[1] = sourceOwner
|
|
2472
|
+
local targetOwner = target.owner.handle
|
|
2473
|
+
data[2] = targetOwner
|
|
2474
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2475
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2476
|
+
data[3] = true
|
|
2477
|
+
end
|
|
2478
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2479
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2480
|
+
data[4] = true
|
|
2481
|
+
end
|
|
2482
|
+
end
|
|
2483
|
+
damagingEventByTarget[target] = data
|
|
2393
2484
|
return
|
|
2394
2485
|
end
|
|
2395
2486
|
BlzSetEventDamage(0)
|
|
@@ -2397,7 +2488,7 @@ Unit.onDamaging = (function()
|
|
|
2397
2488
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2398
2489
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2399
2490
|
local sourceOwner = source.owner.handle
|
|
2400
|
-
local targetOwner =
|
|
2491
|
+
local targetOwner = target.owner.handle
|
|
2401
2492
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2402
2493
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2403
2494
|
Timer:run(function()
|
|
@@ -2413,23 +2504,19 @@ Unit.onDamaging = (function()
|
|
|
2413
2504
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2414
2505
|
local condition = ____value[1]
|
|
2415
2506
|
local action = ____value[2]
|
|
2416
|
-
if condition(
|
|
2417
|
-
source,
|
|
2418
|
-
____exports.Unit:of(target),
|
|
2419
|
-
data
|
|
2420
|
-
) then
|
|
2507
|
+
if condition(source, target, data) then
|
|
2421
2508
|
action(
|
|
2422
2509
|
source,
|
|
2423
|
-
|
|
2510
|
+
target,
|
|
2424
2511
|
setmetatable(
|
|
2425
2512
|
{fire = function()
|
|
2426
2513
|
UnitDamageTarget(
|
|
2427
2514
|
source.handle,
|
|
2428
|
-
target,
|
|
2515
|
+
target.handle,
|
|
2429
2516
|
data.amount,
|
|
2430
2517
|
true,
|
|
2431
2518
|
true,
|
|
2432
|
-
data.attackType,
|
|
2519
|
+
attackTypeToNative(data.attackType),
|
|
2433
2520
|
data.damageType,
|
|
2434
2521
|
data.weaponType
|
|
2435
2522
|
)
|
|
@@ -2456,30 +2543,54 @@ Unit.onDamage = __TS__New(
|
|
|
2456
2543
|
if source and source.typeId == dummyUnitId then
|
|
2457
2544
|
source = nil
|
|
2458
2545
|
end
|
|
2546
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2547
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2548
|
+
damagingEventByTarget[target] = nil
|
|
2459
2549
|
local data = {
|
|
2460
2550
|
amount = GetEventDamage(),
|
|
2461
|
-
attackType = BlzGetEventAttackType(),
|
|
2551
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2462
2552
|
damageType = BlzGetEventDamageType(),
|
|
2463
2553
|
weaponType = BlzGetEventWeaponType(),
|
|
2554
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2464
2555
|
isAttack = BlzGetEventIsAttack(),
|
|
2465
|
-
originalAmount = GetEventDamage(),
|
|
2556
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2557
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2466
2558
|
preventDeath = damageEventPreventDeath
|
|
2467
2559
|
}
|
|
2560
|
+
if damagingEvent then
|
|
2561
|
+
for key, value in pairs(damagingEvent) do
|
|
2562
|
+
if isAttribute(key) then
|
|
2563
|
+
data[key] = value
|
|
2564
|
+
end
|
|
2565
|
+
end
|
|
2566
|
+
local sourceOwner = damagingEvent[1]
|
|
2567
|
+
if sourceOwner then
|
|
2568
|
+
local targetOwner = damagingEvent[2]
|
|
2569
|
+
if damagingEvent[3] then
|
|
2570
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2571
|
+
end
|
|
2572
|
+
if damagingEvent[4] then
|
|
2573
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2574
|
+
end
|
|
2575
|
+
end
|
|
2576
|
+
end
|
|
2468
2577
|
local evData = setmetatable(
|
|
2469
2578
|
{},
|
|
2470
2579
|
{
|
|
2471
2580
|
__index = data,
|
|
2472
2581
|
__newindex = function(self, key, value)
|
|
2473
|
-
damageSetters[key]
|
|
2582
|
+
local damageSetter = damageSetters[key]
|
|
2583
|
+
if damageSetter ~= nil then
|
|
2584
|
+
damageSetter(value)
|
|
2585
|
+
end
|
|
2474
2586
|
data[key] = value
|
|
2475
2587
|
end
|
|
2476
2588
|
}
|
|
2477
2589
|
)
|
|
2478
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2479
2590
|
invoke(event, source, target, evData)
|
|
2480
2591
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2481
2592
|
local bonusHealth = math.ceil(evData.amount)
|
|
2482
|
-
target[
|
|
2593
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2483
2594
|
BlzSetUnitMaxHP(
|
|
2484
2595
|
target.handle,
|
|
2485
2596
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2493,7 +2604,7 @@ Unit.onDamage = __TS__New(
|
|
|
2493
2604
|
evData[0],
|
|
2494
2605
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2495
2606
|
)
|
|
2496
|
-
target[
|
|
2607
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2497
2608
|
SetWidgetLife(
|
|
2498
2609
|
target.handle,
|
|
2499
2610
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2518,8 +2629,9 @@ Unit.itemDroppedEvent = __TS__New(
|
|
|
2518
2629
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2519
2630
|
function()
|
|
2520
2631
|
local unit = getTriggerUnit()
|
|
2521
|
-
|
|
2522
|
-
|
|
2632
|
+
local item = getManipulatedItem()
|
|
2633
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2634
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2523
2635
|
end
|
|
2524
2636
|
return IgnoreEvent
|
|
2525
2637
|
end
|
|
@@ -2528,9 +2640,14 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2528
2640
|
____exports.UnitTriggerEvent,
|
|
2529
2641
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2530
2642
|
function()
|
|
2531
|
-
local
|
|
2532
|
-
|
|
2533
|
-
|
|
2643
|
+
local unitHandle = getTriggerUnit()
|
|
2644
|
+
local itemHandle = getManipulatedItem()
|
|
2645
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
|
|
2646
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2647
|
+
local item = Item:of(itemHandle)
|
|
2648
|
+
if item.owner ~= unit then
|
|
2649
|
+
return unit, item
|
|
2650
|
+
end
|
|
2534
2651
|
end
|
|
2535
2652
|
return IgnoreEvent
|
|
2536
2653
|
end
|
|
@@ -2540,8 +2657,9 @@ Unit.itemUsedEvent = __TS__New(
|
|
|
2540
2657
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2541
2658
|
function()
|
|
2542
2659
|
local unit = getTriggerUnit()
|
|
2543
|
-
|
|
2544
|
-
|
|
2660
|
+
local item = getManipulatedItem()
|
|
2661
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2662
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2545
2663
|
end
|
|
2546
2664
|
return IgnoreEvent
|
|
2547
2665
|
end
|
|
@@ -2549,7 +2667,22 @@ Unit.itemUsedEvent = __TS__New(
|
|
|
2549
2667
|
Unit.itemStackedEvent = __TS__New(
|
|
2550
2668
|
____exports.UnitTriggerEvent,
|
|
2551
2669
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2552
|
-
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(
|
|
2670
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2671
|
+
)
|
|
2672
|
+
__TS__ObjectDefineProperty(
|
|
2673
|
+
Unit,
|
|
2674
|
+
"itemChargesChangedEvent",
|
|
2675
|
+
{get = function(self)
|
|
2676
|
+
local event = __TS__New(Event)
|
|
2677
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2678
|
+
local unit = item.owner
|
|
2679
|
+
if unit ~= nil then
|
|
2680
|
+
invoke(event, unit, item)
|
|
2681
|
+
end
|
|
2682
|
+
end)
|
|
2683
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2684
|
+
return event
|
|
2685
|
+
end}
|
|
2553
2686
|
)
|
|
2554
2687
|
__TS__ObjectDefineProperty(
|
|
2555
2688
|
Unit,
|
|
@@ -2621,6 +2754,10 @@ __TS__ObjectDefineProperty(
|
|
|
2621
2754
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2622
2755
|
return destroyEvent
|
|
2623
2756
|
end}
|
|
2757
|
+
)
|
|
2758
|
+
Unit.synchronize = synchronizer(
|
|
2759
|
+
function(unit) return unit.syncId end,
|
|
2760
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2624
2761
|
);
|
|
2625
2762
|
(function(self)
|
|
2626
2763
|
local leaveAbilityIds = postcompile(function()
|
|
@@ -2650,7 +2787,8 @@ __TS__ObjectDefineProperty(
|
|
|
2650
2787
|
return
|
|
2651
2788
|
end
|
|
2652
2789
|
end
|
|
2653
|
-
unit:
|
|
2790
|
+
unit:saveData()
|
|
2791
|
+
Timer:run(unit, "destroy")
|
|
2654
2792
|
end)
|
|
2655
2793
|
end
|
|
2656
2794
|
end)(Unit)
|