warscript 0.0.1-dev.ea69747 → 0.0.1-dev.eb6b18a
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 +17 -0
- package/attributes.lua +23 -0
- package/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +8 -1
- package/core/types/frame.lua +93 -1
- package/core/types/group.d.ts +0 -1
- package/core/types/handle.d.ts +2 -1
- package/core/types/handle.lua +5 -0
- package/core/types/image.d.ts +0 -1
- package/core/types/missile.d.ts +2 -2
- package/core/types/missile.lua +8 -2
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/timer.d.ts +6 -7
- package/core/types/timer.lua +18 -21
- package/core/types/unit.lua +8 -0
- package/core/util.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/index.d.ts +1 -0
- package/decl/native.d.ts +840 -786
- package/engine/ability.d.ts +1 -1
- package/engine/behavior.d.ts +10 -10
- package/engine/behavior.lua +6 -6
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +8 -5
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.d.ts +13 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +32 -9
- package/engine/behaviour/ability/damage.d.ts +39 -11
- package/engine/behaviour/ability/damage.lua +83 -37
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +42 -0
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -15
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
- package/engine/behaviour/ability/remove-buffs.lua +28 -0
- package/engine/behaviour/ability/restore-mana.d.ts +15 -0
- package/engine/behaviour/ability/restore-mana.lua +29 -0
- package/engine/behaviour/ability.d.ts +27 -4
- package/engine/behaviour/ability.lua +152 -26
- package/engine/behaviour/unit/stun-immunity.d.ts +5 -4
- package/engine/behaviour/unit/stun-immunity.lua +43 -27
- package/engine/behaviour/unit.d.ts +34 -2
- package/engine/behaviour/unit.lua +181 -0
- package/engine/buff.d.ts +103 -41
- package/engine/buff.lua +465 -212
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/internal/ability.d.ts +21 -14
- package/engine/internal/ability.lua +97 -76
- package/engine/internal/item/ability.lua +112 -4
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/item.d.ts +7 -4
- package/engine/internal/item.lua +131 -28
- package/engine/internal/mechanics/ability-duration.d.ts +1 -3
- package/engine/internal/mechanics/ability-duration.lua +3 -1
- package/engine/internal/mechanics/cast-ability.d.ts +2 -0
- package/engine/internal/mechanics/cast-ability.lua +86 -0
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +98 -14
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/bonus.d.ts +11 -8
- package/engine/internal/unit/bonus.lua +23 -1
- package/engine/internal/unit/detach-missiles.d.ts +7 -0
- package/engine/internal/unit/detach-missiles.lua +30 -0
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/item.d.ts +24 -0
- package/engine/internal/unit/item.lua +78 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +51 -0
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit+ability.lua +2 -2
- 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+transport.lua +4 -10
- package/engine/internal/unit-missile-launch.lua +25 -6
- package/engine/internal/unit.d.ts +85 -19
- package/engine/internal/unit.lua +555 -167
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +7 -2
- package/engine/local-client.lua +82 -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/attachment-preset.d.ts +7 -3
- 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/combat-classification.d.ts +0 -2
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
- package/engine/object-data/entry/ability-type/blink.d.ts +10 -0
- package/engine/object-data/entry/ability-type/blink.lua +39 -0
- 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/channel.d.ts +0 -1
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +4 -4
- 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/mine.d.ts +10 -0
- package/engine/object-data/entry/ability-type/mine.lua +39 -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/spirit-touch.d.ts +2 -2
- package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
- 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 +20 -18
- package/engine/object-data/entry/ability-type.lua +90 -33
- package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
- package/engine/object-data/entry/buff-type/applicable.lua +39 -102
- package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
- package/engine/object-data/entry/buff-type.d.ts +6 -13
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +1 -2
- package/engine/object-data/entry/item-type/blank.d.ts +0 -1
- package/engine/object-data/entry/item-type.d.ts +15 -2
- package/engine/object-data/entry/item-type.lua +93 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -2
- 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 +50 -3
- package/engine/object-data/entry/unit-type.lua +452 -61
- package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
- package/engine/object-data/entry/upgrade.d.ts +1 -2
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +18 -17
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +33 -8
- package/engine/object-field/ability.lua +60 -1
- package/engine/object-field/unit.d.ts +50 -2
- package/engine/object-field/unit.lua +186 -4
- package/engine/object-field.d.ts +21 -8
- package/engine/object-field.lua +221 -97
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +9 -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/entries/unit-type.d.ts +42 -1
- package/engine/standard/entries/unit-type.lua +42 -1
- package/engine/standard/fields/ability.d.ts +3 -1
- package/engine/standard/fields/ability.lua +3 -1
- package/engine/standard/fields/unit.d.ts +3 -0
- package/engine/standard/fields/unit.lua +5 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +175 -10
- package/engine/unit.d.ts +5 -0
- package/engine/unit.lua +14 -2
- package/event.d.ts +2 -3
- package/event.lua +9 -5
- package/exception.d.ts +2 -0
- package/exception.lua +4 -0
- package/global/vec2.lua +1 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/lualib_bundle.lua +146 -42
- package/math/vec2.d.ts +2 -9
- package/math.d.ts +0 -2
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +3 -2
- package/objutil/ability.d.ts +0 -1
- package/objutil/buff.d.ts +0 -1
- package/objutil/buff.lua +2 -3
- package/objutil/object.d.ts +0 -1
- package/objutil/unit.d.ts +0 -1
- package/objutil/unit.lua +8 -0
- package/package.json +13 -14
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -0
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- package/string.d.ts +30 -0
- package/string.lua +14 -0
- package/util/stream.d.ts +0 -1
- package/utility/arrays.d.ts +13 -6
- package/utility/arrays.lua +41 -4
- package/utility/bit-set.d.ts +0 -2
- package/utility/functions.d.ts +1 -0
- package/utility/functions.lua +1 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +32 -9
- package/utility/linked-set.lua +24 -2
- package/utility/lua-maps.d.ts +5 -2
- package/utility/lua-maps.lua +20 -0
- package/utility/lua-sets.d.ts +2 -2
- package/utility/lua-sets.lua +3 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +3 -2
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/internal/unit.lua
CHANGED
|
@@ -5,9 +5,12 @@ local __TS__ArrayMap = ____lualib.__TS__ArrayMap
|
|
|
5
5
|
local __TS__New = ____lualib.__TS__New
|
|
6
6
|
local __TS__Class = ____lualib.__TS__Class
|
|
7
7
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
8
|
+
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
8
9
|
local __TS__ArraySetLength = ____lualib.__TS__ArraySetLength
|
|
10
|
+
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
|
|
11
|
+
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
|
|
12
|
+
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
|
|
9
13
|
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
10
|
-
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
11
14
|
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
12
15
|
local Set = ____lualib.Set
|
|
13
16
|
local __TS__Spread = ____lualib.__TS__Spread
|
|
@@ -48,12 +51,19 @@ local ____arrays = require("utility.arrays")
|
|
|
48
51
|
local forEach = ____arrays.forEach
|
|
49
52
|
local ____math = require("math")
|
|
50
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
|
|
51
63
|
local match = string.match
|
|
52
64
|
local ____tostring = _G.tostring
|
|
53
65
|
local setUnitAnimation = SetUnitAnimation
|
|
54
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
55
66
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
56
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
57
67
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
58
68
|
local getUnitRealField = BlzGetUnitRealField
|
|
59
69
|
local getHeroStr = GetHeroStr
|
|
@@ -72,9 +82,9 @@ local setUnitScale = SetUnitScale
|
|
|
72
82
|
local setUnitPosition = SetUnitPosition
|
|
73
83
|
local setUnitTimeScale = SetUnitTimeScale
|
|
74
84
|
local getHandleId = GetHandleId
|
|
85
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
75
86
|
local createUnit = CreateUnit
|
|
76
87
|
local killUnit = KillUnit
|
|
77
|
-
local setUnitExploded = SetUnitExploded
|
|
78
88
|
local removeUnit = RemoveUnit
|
|
79
89
|
local getUnitTypeId = GetUnitTypeId
|
|
80
90
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -90,8 +100,10 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
90
100
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
91
101
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
92
102
|
local isUnitInRange = IsUnitInRange
|
|
93
|
-
local
|
|
94
|
-
local
|
|
103
|
+
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
104
|
+
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
105
|
+
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
106
|
+
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
95
107
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
96
108
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
97
109
|
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
@@ -118,8 +130,6 @@ local isUnitType = IsUnitType
|
|
|
118
130
|
local isUnitAlly = IsUnitAlly
|
|
119
131
|
local isUnitEnemy = IsUnitEnemy
|
|
120
132
|
local getOwningPlayer = GetOwningPlayer
|
|
121
|
-
local setUnitColor = SetUnitColor
|
|
122
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
123
133
|
____exports.UnitClassification = {}
|
|
124
134
|
local UnitClassification = ____exports.UnitClassification
|
|
125
135
|
do
|
|
@@ -129,6 +139,7 @@ do
|
|
|
129
139
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
130
140
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
131
141
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
142
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
132
143
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
133
144
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
134
145
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -275,16 +286,14 @@ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
|
|
|
275
286
|
end
|
|
276
287
|
local function dispatch(event, idGetter, argsGetter)
|
|
277
288
|
local initialized = false
|
|
278
|
-
local x = {}
|
|
279
289
|
return setmetatable(
|
|
280
|
-
|
|
290
|
+
{},
|
|
281
291
|
{
|
|
282
292
|
__index = function(self, id)
|
|
283
293
|
if type(id) ~= "number" then
|
|
284
294
|
return event[id]
|
|
285
295
|
end
|
|
286
296
|
if not initialized then
|
|
287
|
-
local invoke = Event.invoke
|
|
288
297
|
event:addListener(function(...)
|
|
289
298
|
local id = idGetter(...)
|
|
290
299
|
local dispatched = rawget(self, id)
|
|
@@ -322,7 +331,6 @@ local function dispatchAbility(event)
|
|
|
322
331
|
return event[id]
|
|
323
332
|
end
|
|
324
333
|
if not initialized then
|
|
325
|
-
local invoke = Event.invoke
|
|
326
334
|
event:addListener(function(unit, ability, ...)
|
|
327
335
|
local dispatched = rawget(self, ability.typeId)
|
|
328
336
|
if dispatched ~= nil then
|
|
@@ -339,6 +347,9 @@ local function dispatchAbility(event)
|
|
|
339
347
|
}
|
|
340
348
|
)
|
|
341
349
|
end
|
|
350
|
+
local function damagingEventPreventRetaliation(self)
|
|
351
|
+
self[0] = true
|
|
352
|
+
end
|
|
342
353
|
local function damageEventPreventDeath(self, callback, ...)
|
|
343
354
|
if self[0] ~= nil then
|
|
344
355
|
return
|
|
@@ -350,7 +361,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
350
361
|
rawset(self, 1 + i, (select(i, ...)))
|
|
351
362
|
end
|
|
352
363
|
end
|
|
353
|
-
local damageSetters = {
|
|
364
|
+
local damageSetters = {
|
|
365
|
+
amount = BlzSetEventDamage,
|
|
366
|
+
attackType = function(attackType)
|
|
367
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
368
|
+
end,
|
|
369
|
+
damageType = BlzSetEventDamageType,
|
|
370
|
+
weaponType = BlzSetEventWeaponType
|
|
371
|
+
}
|
|
354
372
|
local jlimitopByOperator = {
|
|
355
373
|
[0] = LESS_THAN_OR_EQUAL,
|
|
356
374
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -387,51 +405,171 @@ local getters = {
|
|
|
387
405
|
return BlzGetUnitArmor(unit)
|
|
388
406
|
end
|
|
389
407
|
}
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
408
|
+
____exports.UnitWeapon = __TS__Class()
|
|
409
|
+
local UnitWeapon = ____exports.UnitWeapon
|
|
410
|
+
UnitWeapon.name = "UnitWeapon"
|
|
411
|
+
function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
412
|
+
self.unit = unit
|
|
413
|
+
self.index = index
|
|
414
|
+
end
|
|
415
|
+
__TS__SetDescriptor(
|
|
416
|
+
UnitWeapon.prototype,
|
|
417
|
+
"cooldown",
|
|
418
|
+
{
|
|
419
|
+
get = function(self)
|
|
420
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index)
|
|
421
|
+
end,
|
|
422
|
+
set = function(self, cooldown)
|
|
423
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index, cooldown)
|
|
424
|
+
end
|
|
425
|
+
},
|
|
426
|
+
true
|
|
427
|
+
)
|
|
428
|
+
__TS__SetDescriptor(
|
|
429
|
+
UnitWeapon.prototype,
|
|
430
|
+
"damage",
|
|
431
|
+
{
|
|
432
|
+
get = function(self)
|
|
433
|
+
local minimumDamage = self.damageBase + self.damageDiceCount
|
|
434
|
+
local maximumDamage = self.damageBase + self.damageDiceCount * self.damageDiceSideCount
|
|
435
|
+
return {minimumDamage, maximumDamage}
|
|
436
|
+
end,
|
|
437
|
+
set = function(self, ____bindingPattern0)
|
|
438
|
+
local maximumDamage
|
|
439
|
+
local minimumDamage
|
|
440
|
+
minimumDamage = ____bindingPattern0[1]
|
|
441
|
+
maximumDamage = ____bindingPattern0[2]
|
|
442
|
+
self.damageBase = minimumDamage - 1
|
|
443
|
+
self.damageDiceCount = 1
|
|
444
|
+
self.damageDiceSideCount = maximumDamage - minimumDamage + 1
|
|
445
|
+
end
|
|
446
|
+
},
|
|
447
|
+
true
|
|
448
|
+
)
|
|
449
|
+
__TS__SetDescriptor(
|
|
450
|
+
UnitWeapon.prototype,
|
|
451
|
+
"allowedTargetCombatClassifications",
|
|
452
|
+
{
|
|
453
|
+
get = function(self)
|
|
454
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
455
|
+
end,
|
|
456
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
457
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
458
|
+
end
|
|
459
|
+
},
|
|
460
|
+
true
|
|
461
|
+
)
|
|
462
|
+
__TS__SetDescriptor(
|
|
463
|
+
UnitWeapon.prototype,
|
|
464
|
+
"damageBase",
|
|
465
|
+
{
|
|
466
|
+
get = function(self)
|
|
467
|
+
return BlzGetUnitBaseDamage(self.unit.handle, self.index)
|
|
468
|
+
end,
|
|
469
|
+
set = function(self, damageBase)
|
|
470
|
+
BlzSetUnitBaseDamage(self.unit.handle, self.index, damageBase)
|
|
471
|
+
end
|
|
472
|
+
},
|
|
473
|
+
true
|
|
474
|
+
)
|
|
475
|
+
__TS__SetDescriptor(
|
|
476
|
+
UnitWeapon.prototype,
|
|
477
|
+
"damageDiceCount",
|
|
478
|
+
{
|
|
479
|
+
get = function(self)
|
|
480
|
+
return BlzGetUnitDiceNumber(self.unit.handle, self.index)
|
|
481
|
+
end,
|
|
482
|
+
set = function(self, damageDiceCount)
|
|
483
|
+
BlzSetUnitDiceNumber(self.unit.handle, self.index, damageDiceCount)
|
|
484
|
+
end
|
|
485
|
+
},
|
|
486
|
+
true
|
|
487
|
+
)
|
|
488
|
+
__TS__SetDescriptor(
|
|
489
|
+
UnitWeapon.prototype,
|
|
490
|
+
"damageDiceSideCount",
|
|
491
|
+
{
|
|
492
|
+
get = function(self)
|
|
493
|
+
return BlzGetUnitDiceSides(self.unit.handle, self.index)
|
|
494
|
+
end,
|
|
495
|
+
set = function(self, damageDiceSideCount)
|
|
496
|
+
BlzSetUnitDiceSides(self.unit.handle, self.index, damageDiceSideCount)
|
|
497
|
+
end
|
|
498
|
+
},
|
|
499
|
+
true
|
|
500
|
+
)
|
|
501
|
+
__TS__SetDescriptor(
|
|
502
|
+
UnitWeapon.prototype,
|
|
503
|
+
"range",
|
|
504
|
+
{
|
|
505
|
+
get = function(self)
|
|
506
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_RANGE, self.index)
|
|
507
|
+
end,
|
|
508
|
+
set = function(self, range)
|
|
509
|
+
local handle = self.unit.handle
|
|
510
|
+
local index = self.index
|
|
511
|
+
setUnitWeaponRealField(
|
|
512
|
+
handle,
|
|
513
|
+
UNIT_WEAPON_RF_ATTACK_RANGE,
|
|
514
|
+
index + 1,
|
|
515
|
+
getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index + 1) + (range - getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index))
|
|
516
|
+
)
|
|
517
|
+
end
|
|
518
|
+
},
|
|
519
|
+
true
|
|
520
|
+
)
|
|
521
|
+
__TS__SetDescriptor(
|
|
522
|
+
UnitWeapon.prototype,
|
|
523
|
+
"impactDelay",
|
|
524
|
+
{
|
|
525
|
+
get = function(self)
|
|
526
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index)
|
|
527
|
+
end,
|
|
528
|
+
set = function(self, impactDelay)
|
|
529
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index, impactDelay)
|
|
530
|
+
end
|
|
531
|
+
},
|
|
532
|
+
true
|
|
533
|
+
)
|
|
534
|
+
__TS__SetDescriptor(
|
|
535
|
+
UnitWeapon.prototype,
|
|
536
|
+
"missileArc",
|
|
537
|
+
{
|
|
538
|
+
get = function(self)
|
|
539
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index)
|
|
540
|
+
end,
|
|
541
|
+
set = function(self, missileArc)
|
|
542
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index, missileArc)
|
|
543
|
+
end
|
|
544
|
+
},
|
|
545
|
+
true
|
|
546
|
+
)
|
|
547
|
+
__TS__SetDescriptor(
|
|
548
|
+
UnitWeapon.prototype,
|
|
549
|
+
"missileModelPath",
|
|
550
|
+
{
|
|
551
|
+
get = function(self)
|
|
552
|
+
return getUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index)
|
|
553
|
+
end,
|
|
554
|
+
set = function(self, missileModelPath)
|
|
555
|
+
setUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index, missileModelPath)
|
|
556
|
+
end
|
|
557
|
+
},
|
|
558
|
+
true
|
|
559
|
+
)
|
|
560
|
+
__TS__SetDescriptor(
|
|
561
|
+
UnitWeapon.prototype,
|
|
562
|
+
"missileSpeed",
|
|
563
|
+
{
|
|
564
|
+
get = function(self)
|
|
565
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index)
|
|
566
|
+
end,
|
|
567
|
+
set = function(self, missileSpeed)
|
|
568
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index, missileSpeed)
|
|
569
|
+
end
|
|
570
|
+
},
|
|
571
|
+
true
|
|
572
|
+
)
|
|
435
573
|
local unitInventorySize = UnitInventorySize
|
|
436
574
|
local unitItemInSlot = UnitItemInSlot
|
|
437
575
|
local getItemAbility = BlzGetItemAbility
|
|
@@ -442,8 +580,6 @@ local getAbilityName = GetAbilityName
|
|
|
442
580
|
local unitAddAbility = UnitAddAbility
|
|
443
581
|
local getUnitGoldCost = GetUnitGoldCost
|
|
444
582
|
local getUnitLumberCost = GetUnitWoodCost
|
|
445
|
-
local unitMakeAbilityPermanent = UnitMakeAbilityPermanent
|
|
446
|
-
local unitAddItem = UnitAddItem
|
|
447
583
|
local unitRemoveAbility = UnitRemoveAbility
|
|
448
584
|
local function retrieveAbility(unit, ability, abilityId)
|
|
449
585
|
if ability == nil then
|
|
@@ -453,17 +589,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
453
589
|
____exports.Unit:of(unit)
|
|
454
590
|
)
|
|
455
591
|
end
|
|
456
|
-
if not unitAddAbility(unit, abilityId) then
|
|
457
|
-
if getUnitAbility(unit, abilityId) == ability then
|
|
458
|
-
return UnitAbility:of(
|
|
459
|
-
ability,
|
|
460
|
-
abilityId,
|
|
461
|
-
____exports.Unit:of(unit)
|
|
462
|
-
)
|
|
463
|
-
end
|
|
464
|
-
else
|
|
465
|
-
unitRemoveAbility(unit, abilityId)
|
|
466
|
-
end
|
|
467
592
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
468
593
|
local item = unitItemInSlot(unit, i)
|
|
469
594
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -520,12 +645,35 @@ for ____, player in ipairs(Player.all) do
|
|
|
520
645
|
ShowUnit(dummy, false)
|
|
521
646
|
dummies[player] = dummy
|
|
522
647
|
end
|
|
648
|
+
local function delayHealthChecksCallback(unit)
|
|
649
|
+
local counter = (unit[103] or 0) - 1
|
|
650
|
+
if counter ~= 0 then
|
|
651
|
+
unit[103] = counter
|
|
652
|
+
return
|
|
653
|
+
end
|
|
654
|
+
unit[103] = nil
|
|
655
|
+
local healthBonus = unit[104]
|
|
656
|
+
if healthBonus ~= nil then
|
|
657
|
+
unit[104] = nil
|
|
658
|
+
local handle = unit.handle
|
|
659
|
+
BlzSetUnitMaxHP(
|
|
660
|
+
handle,
|
|
661
|
+
BlzGetUnitMaxHP(handle) - healthBonus
|
|
662
|
+
)
|
|
663
|
+
end
|
|
664
|
+
end
|
|
665
|
+
local nextSyncId = 1
|
|
666
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
667
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
523
668
|
____exports.Unit = __TS__Class()
|
|
524
669
|
local Unit = ____exports.Unit
|
|
525
670
|
Unit.name = "Unit"
|
|
526
671
|
__TS__ClassExtends(Unit, Handle)
|
|
527
672
|
function Unit.prototype.____constructor(self, handle)
|
|
528
673
|
Handle.prototype.____constructor(self, handle)
|
|
674
|
+
local ____nextSyncId_0 = nextSyncId
|
|
675
|
+
nextSyncId = ____nextSyncId_0 + 1
|
|
676
|
+
self.syncId = ____nextSyncId_0
|
|
529
677
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
530
678
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
531
679
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -538,6 +686,7 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
538
686
|
fourCC("Amrf")
|
|
539
687
|
))
|
|
540
688
|
end
|
|
689
|
+
unitBySyncId[self.syncId] = self
|
|
541
690
|
local ____ = self.abilities
|
|
542
691
|
end
|
|
543
692
|
function Unit.prototype.getEvent(self, event, collector)
|
|
@@ -556,6 +705,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
556
705
|
end
|
|
557
706
|
function Unit.prototype.onDestroy(self)
|
|
558
707
|
local handle = self.handle
|
|
708
|
+
self[107] = getUnitX(handle)
|
|
709
|
+
self[108] = getUnitY(handle)
|
|
559
710
|
if not self._owner then
|
|
560
711
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
561
712
|
end
|
|
@@ -623,8 +774,8 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
623
774
|
end}
|
|
624
775
|
end
|
|
625
776
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
626
|
-
local
|
|
627
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
777
|
+
local ____combatClassification_1 = combatClassification
|
|
778
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_1 == ____combatClassification_1
|
|
628
779
|
end
|
|
629
780
|
function Unit.prototype.addClassification(self, classification)
|
|
630
781
|
return unitAddType(self.handle, classification)
|
|
@@ -642,13 +793,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
642
793
|
return isUnitInvisible(self.handle, player.handle)
|
|
643
794
|
end
|
|
644
795
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
645
|
-
local
|
|
796
|
+
local ____temp_2
|
|
646
797
|
if type(x) == "number" then
|
|
647
|
-
|
|
798
|
+
____temp_2 = isUnitInRangeXY(self.handle, x, y, range)
|
|
648
799
|
else
|
|
649
|
-
|
|
800
|
+
____temp_2 = isUnitInRange(self.handle, x.handle, y)
|
|
650
801
|
end
|
|
651
|
-
return
|
|
802
|
+
return ____temp_2
|
|
652
803
|
end
|
|
653
804
|
function Unit.prototype.isAllyOf(self, unit)
|
|
654
805
|
return isUnitAlly(
|
|
@@ -666,13 +817,29 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
666
817
|
if type(animation) == "number" then
|
|
667
818
|
setUnitAnimationByIndex(self.handle, animation)
|
|
668
819
|
elseif rarity then
|
|
669
|
-
|
|
820
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
670
821
|
else
|
|
671
822
|
setUnitAnimation(self.handle, animation)
|
|
672
823
|
end
|
|
673
824
|
end
|
|
825
|
+
function Unit.prototype.resetAnimation(self)
|
|
826
|
+
ResetUnitAnimation(self.handle)
|
|
827
|
+
end
|
|
674
828
|
function Unit.prototype.queueAnimation(self, animation)
|
|
675
|
-
|
|
829
|
+
QueueUnitAnimation(self.handle, animation)
|
|
830
|
+
end
|
|
831
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
832
|
+
if target:isAllowedTarget(self, self.firstWeapon.allowedTargetCombatClassifications) then
|
|
833
|
+
return self.firstWeapon
|
|
834
|
+
end
|
|
835
|
+
if target:isAllowedTarget(target, self.secondWeapon.allowedTargetCombatClassifications) then
|
|
836
|
+
return self.secondWeapon
|
|
837
|
+
end
|
|
838
|
+
return nil
|
|
839
|
+
end
|
|
840
|
+
function Unit.prototype.delayHealthChecks(self)
|
|
841
|
+
self[103] = (self[103] or 0) + 1
|
|
842
|
+
Timer:run(delayHealthChecksCallback, self)
|
|
676
843
|
end
|
|
677
844
|
function Unit.prototype.setPosition(self, x, y)
|
|
678
845
|
setUnitPosition(self.handle, x, y)
|
|
@@ -681,14 +848,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
681
848
|
return IsUnitSelected(self.handle, player.handle)
|
|
682
849
|
end
|
|
683
850
|
function Unit.prototype.explode(self)
|
|
684
|
-
|
|
851
|
+
SetUnitExploded(self.handle, true)
|
|
685
852
|
killUnit(self.handle)
|
|
686
853
|
end
|
|
687
854
|
function Unit.prototype.kill(self)
|
|
688
855
|
killUnit(self.handle)
|
|
689
856
|
end
|
|
690
|
-
function Unit.prototype.revive(self,
|
|
691
|
-
|
|
857
|
+
function Unit.prototype.revive(self, x, y, doEffect)
|
|
858
|
+
local ____ReviveHero_5 = ReviveHero
|
|
859
|
+
local ____array_4 = __TS__SparseArrayNew(self.handle, x, y)
|
|
860
|
+
local ____doEffect_3 = doEffect
|
|
861
|
+
if ____doEffect_3 == nil then
|
|
862
|
+
____doEffect_3 = false
|
|
863
|
+
end
|
|
864
|
+
__TS__SparseArrayPush(____array_4, ____doEffect_3)
|
|
865
|
+
____ReviveHero_5(__TS__SparseArraySpread(____array_4))
|
|
692
866
|
end
|
|
693
867
|
function Unit.prototype.healTarget(self, target, amount)
|
|
694
868
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -728,7 +902,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
728
902
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
729
903
|
end
|
|
730
904
|
function Unit.prototype.itemInSlot(self, slot)
|
|
731
|
-
return Item:of(
|
|
905
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
732
906
|
end
|
|
733
907
|
function Unit.prototype.addAbility(self, abilityId)
|
|
734
908
|
if unitAddAbility(self.handle, abilityId) then
|
|
@@ -784,18 +958,43 @@ end
|
|
|
784
958
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
785
959
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
786
960
|
end
|
|
961
|
+
function Unit.prototype.getAbilityRemainingCooldown(self, abilityId)
|
|
962
|
+
return BlzGetUnitAbilityCooldownRemaining(self.handle, abilityId)
|
|
963
|
+
end
|
|
787
964
|
function Unit.prototype.startAbilityCooldown(self, abilityId, cooldown)
|
|
788
965
|
BlzStartUnitAbilityCooldown(self.handle, abilityId, cooldown)
|
|
789
966
|
end
|
|
790
967
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
791
968
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
792
969
|
end
|
|
970
|
+
function Unit.prototype.interruptMovement(self)
|
|
971
|
+
local handle = self.handle
|
|
972
|
+
unitDisableAbility(
|
|
973
|
+
handle,
|
|
974
|
+
fourCC("Amov"),
|
|
975
|
+
true,
|
|
976
|
+
false
|
|
977
|
+
)
|
|
978
|
+
unitDisableAbility(
|
|
979
|
+
handle,
|
|
980
|
+
fourCC("Amov"),
|
|
981
|
+
false,
|
|
982
|
+
false
|
|
983
|
+
)
|
|
984
|
+
end
|
|
793
985
|
function Unit.prototype.interruptAttack(self)
|
|
794
986
|
unitInterruptAttack(self.handle)
|
|
795
987
|
end
|
|
796
988
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
797
|
-
|
|
798
|
-
unitDisableAbility(
|
|
989
|
+
local handle = self.handle
|
|
990
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
991
|
+
Timer:run(
|
|
992
|
+
unitDisableAbility,
|
|
993
|
+
handle,
|
|
994
|
+
abilityId,
|
|
995
|
+
false,
|
|
996
|
+
false
|
|
997
|
+
)
|
|
799
998
|
end
|
|
800
999
|
function Unit.prototype.getDistanceTo(self, target)
|
|
801
1000
|
local handle = self.handle
|
|
@@ -855,18 +1054,18 @@ function Unit.prototype.unpauseEx(self)
|
|
|
855
1054
|
self:decrementStunCounter()
|
|
856
1055
|
end
|
|
857
1056
|
function Unit.prototype.incrementStunCounter(self)
|
|
858
|
-
local stunCounter = self[
|
|
859
|
-
if not self[
|
|
1057
|
+
local stunCounter = self[102] or 0
|
|
1058
|
+
if not self[101] or stunCounter >= 0 then
|
|
860
1059
|
BlzPauseUnitEx(self.handle, true)
|
|
861
1060
|
end
|
|
862
|
-
self[
|
|
1061
|
+
self[102] = stunCounter + 1
|
|
863
1062
|
end
|
|
864
1063
|
function Unit.prototype.decrementStunCounter(self)
|
|
865
|
-
local stunCounter = self[
|
|
866
|
-
if not self[
|
|
1064
|
+
local stunCounter = self[102] or 0
|
|
1065
|
+
if not self[101] or stunCounter >= 1 then
|
|
867
1066
|
BlzPauseUnitEx(self.handle, false)
|
|
868
1067
|
end
|
|
869
|
-
self[
|
|
1068
|
+
self[102] = stunCounter - 1
|
|
870
1069
|
end
|
|
871
1070
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
872
1071
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -968,8 +1167,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
968
1167
|
)
|
|
969
1168
|
return targetCollection
|
|
970
1169
|
end
|
|
971
|
-
function Unit.getSelectionOf(self, player)
|
|
972
|
-
|
|
1170
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1171
|
+
if target == nil then
|
|
1172
|
+
target = {}
|
|
1173
|
+
end
|
|
1174
|
+
targetCollection = target
|
|
973
1175
|
targetCollectionNextIndex = 1
|
|
974
1176
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
975
1177
|
return targetCollection
|
|
@@ -991,6 +1193,9 @@ end
|
|
|
991
1193
|
function Unit.prototype.__tostring(self)
|
|
992
1194
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
993
1195
|
end
|
|
1196
|
+
function Unit.getBySyncId(self, syncId)
|
|
1197
|
+
return unitBySyncId[syncId]
|
|
1198
|
+
end
|
|
994
1199
|
__TS__SetDescriptor(
|
|
995
1200
|
Unit.prototype,
|
|
996
1201
|
"_deltas",
|
|
@@ -1054,6 +1259,14 @@ __TS__SetDescriptor(
|
|
|
1054
1259
|
end},
|
|
1055
1260
|
true
|
|
1056
1261
|
)
|
|
1262
|
+
__TS__SetDescriptor(
|
|
1263
|
+
Unit.prototype,
|
|
1264
|
+
"isStunned",
|
|
1265
|
+
{get = function(self)
|
|
1266
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1267
|
+
end},
|
|
1268
|
+
true
|
|
1269
|
+
)
|
|
1057
1270
|
__TS__SetDescriptor(
|
|
1058
1271
|
Unit.prototype,
|
|
1059
1272
|
"combatClassifications",
|
|
@@ -1071,12 +1284,27 @@ __TS__SetDescriptor(
|
|
|
1071
1284
|
Unit.prototype,
|
|
1072
1285
|
"weapons",
|
|
1073
1286
|
{get = function(self)
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1287
|
+
return {self.firstWeapon, self.secondWeapon}
|
|
1288
|
+
end},
|
|
1289
|
+
true
|
|
1290
|
+
)
|
|
1291
|
+
__TS__SetDescriptor(
|
|
1292
|
+
Unit.prototype,
|
|
1293
|
+
"firstWeapon",
|
|
1294
|
+
{get = function(self)
|
|
1295
|
+
local weapon = __TS__New(____exports.UnitWeapon, self, 0)
|
|
1296
|
+
rawset(self, "firstWeapon", weapon)
|
|
1297
|
+
return weapon
|
|
1298
|
+
end},
|
|
1299
|
+
true
|
|
1300
|
+
)
|
|
1301
|
+
__TS__SetDescriptor(
|
|
1302
|
+
Unit.prototype,
|
|
1303
|
+
"secondWeapon",
|
|
1304
|
+
{get = function(self)
|
|
1305
|
+
local weapon = __TS__New(____exports.UnitWeapon, self, 1)
|
|
1306
|
+
rawset(self, "secondWeapon", weapon)
|
|
1307
|
+
return weapon
|
|
1080
1308
|
end},
|
|
1081
1309
|
true
|
|
1082
1310
|
)
|
|
@@ -1112,6 +1340,19 @@ __TS__SetDescriptor(
|
|
|
1112
1340
|
},
|
|
1113
1341
|
true
|
|
1114
1342
|
)
|
|
1343
|
+
__TS__SetDescriptor(
|
|
1344
|
+
Unit.prototype,
|
|
1345
|
+
"primaryAttribute",
|
|
1346
|
+
{
|
|
1347
|
+
get = function(self)
|
|
1348
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1349
|
+
end,
|
|
1350
|
+
set = function(self, primaryAttribute)
|
|
1351
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1352
|
+
end
|
|
1353
|
+
},
|
|
1354
|
+
true
|
|
1355
|
+
)
|
|
1115
1356
|
__TS__SetDescriptor(
|
|
1116
1357
|
Unit.prototype,
|
|
1117
1358
|
"strengthBase",
|
|
@@ -1233,17 +1474,17 @@ __TS__SetDescriptor(
|
|
|
1233
1474
|
"isTeamGlowVisible",
|
|
1234
1475
|
{
|
|
1235
1476
|
get = function(self)
|
|
1236
|
-
return not self[
|
|
1477
|
+
return not self[106]
|
|
1237
1478
|
end,
|
|
1238
1479
|
set = function(self, isTeamGlowVisible)
|
|
1239
|
-
|
|
1240
|
-
local
|
|
1480
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1481
|
+
local ____temp_6
|
|
1241
1482
|
if not isTeamGlowVisible then
|
|
1242
|
-
|
|
1483
|
+
____temp_6 = true
|
|
1243
1484
|
else
|
|
1244
|
-
|
|
1485
|
+
____temp_6 = nil
|
|
1245
1486
|
end
|
|
1246
|
-
self[
|
|
1487
|
+
self[106] = ____temp_6
|
|
1247
1488
|
end
|
|
1248
1489
|
},
|
|
1249
1490
|
true
|
|
@@ -1252,9 +1493,9 @@ __TS__SetDescriptor(
|
|
|
1252
1493
|
Unit.prototype,
|
|
1253
1494
|
"color",
|
|
1254
1495
|
{set = function(self, color)
|
|
1255
|
-
|
|
1256
|
-
if self[
|
|
1257
|
-
|
|
1496
|
+
SetUnitColor(self.handle, color.handle)
|
|
1497
|
+
if self[106] then
|
|
1498
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1258
1499
|
end
|
|
1259
1500
|
end},
|
|
1260
1501
|
true
|
|
@@ -1277,10 +1518,14 @@ __TS__SetDescriptor(
|
|
|
1277
1518
|
"maxHealth",
|
|
1278
1519
|
{
|
|
1279
1520
|
get = function(self)
|
|
1280
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1521
|
+
return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
|
|
1281
1522
|
end,
|
|
1282
1523
|
set = function(self, maxHealth)
|
|
1283
|
-
|
|
1524
|
+
if maxHealth < 1 and self[103] ~= nil then
|
|
1525
|
+
self[104] = (self[104] or 0) + (1 - maxHealth)
|
|
1526
|
+
maxHealth = 1
|
|
1527
|
+
end
|
|
1528
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
|
|
1284
1529
|
end
|
|
1285
1530
|
},
|
|
1286
1531
|
true
|
|
@@ -1322,10 +1567,10 @@ __TS__SetDescriptor(
|
|
|
1322
1567
|
"health",
|
|
1323
1568
|
{
|
|
1324
1569
|
get = function(self)
|
|
1325
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1570
|
+
return GetWidgetLife(self.handle) - (self[105] or 0)
|
|
1326
1571
|
end,
|
|
1327
1572
|
set = function(self, health)
|
|
1328
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1573
|
+
SetWidgetLife(self.handle, health + (self[105] or 0))
|
|
1329
1574
|
end
|
|
1330
1575
|
},
|
|
1331
1576
|
true
|
|
@@ -1419,7 +1664,7 @@ __TS__SetDescriptor(
|
|
|
1419
1664
|
"x",
|
|
1420
1665
|
{
|
|
1421
1666
|
get = function(self)
|
|
1422
|
-
return getUnitX(self.handle)
|
|
1667
|
+
return self[107] or getUnitX(self.handle)
|
|
1423
1668
|
end,
|
|
1424
1669
|
set = function(self, v)
|
|
1425
1670
|
SetUnitX(self.handle, v)
|
|
@@ -1432,7 +1677,7 @@ __TS__SetDescriptor(
|
|
|
1432
1677
|
"y",
|
|
1433
1678
|
{
|
|
1434
1679
|
get = function(self)
|
|
1435
|
-
return getUnitY(self.handle)
|
|
1680
|
+
return self[108] or getUnitY(self.handle)
|
|
1436
1681
|
end,
|
|
1437
1682
|
set = function(self, v)
|
|
1438
1683
|
SetUnitY(self.handle, v)
|
|
@@ -1518,10 +1763,10 @@ __TS__SetDescriptor(
|
|
|
1518
1763
|
"gold",
|
|
1519
1764
|
{
|
|
1520
1765
|
get = function(self)
|
|
1521
|
-
return
|
|
1766
|
+
return GetResourceAmount(self.handle)
|
|
1522
1767
|
end,
|
|
1523
1768
|
set = function(self, gold)
|
|
1524
|
-
|
|
1769
|
+
SetResourceAmount(self.handle, gold)
|
|
1525
1770
|
end
|
|
1526
1771
|
},
|
|
1527
1772
|
true
|
|
@@ -1536,17 +1781,17 @@ __TS__SetDescriptor(
|
|
|
1536
1781
|
set = function(self, isPaused)
|
|
1537
1782
|
local handle = self.handle
|
|
1538
1783
|
if isPaused and not IsUnitPaused(handle) then
|
|
1539
|
-
self[
|
|
1540
|
-
for _ = self[
|
|
1784
|
+
self[101] = true
|
|
1785
|
+
for _ = self[102] or 0, -1 do
|
|
1541
1786
|
BlzPauseUnitEx(handle, true)
|
|
1542
1787
|
end
|
|
1543
1788
|
PauseUnit(handle, true)
|
|
1544
1789
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1545
1790
|
PauseUnit(handle, false)
|
|
1546
|
-
for _ = self[
|
|
1791
|
+
for _ = self[102] or 0, -1 do
|
|
1547
1792
|
BlzPauseUnitEx(handle, false)
|
|
1548
1793
|
end
|
|
1549
|
-
self[
|
|
1794
|
+
self[101] = nil
|
|
1550
1795
|
end
|
|
1551
1796
|
end
|
|
1552
1797
|
},
|
|
@@ -1649,6 +1894,19 @@ __TS__SetDescriptor(
|
|
|
1649
1894
|
end},
|
|
1650
1895
|
true
|
|
1651
1896
|
)
|
|
1897
|
+
__TS__SetDescriptor(
|
|
1898
|
+
Unit.prototype,
|
|
1899
|
+
"movementType",
|
|
1900
|
+
{
|
|
1901
|
+
get = function(self)
|
|
1902
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1903
|
+
end,
|
|
1904
|
+
set = function(self, movementType)
|
|
1905
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1906
|
+
end
|
|
1907
|
+
},
|
|
1908
|
+
true
|
|
1909
|
+
)
|
|
1652
1910
|
__TS__SetDescriptor(
|
|
1653
1911
|
Unit.prototype,
|
|
1654
1912
|
"pathing",
|
|
@@ -1830,6 +2088,14 @@ __TS__SetDescriptor(
|
|
|
1830
2088
|
end},
|
|
1831
2089
|
true
|
|
1832
2090
|
)
|
|
2091
|
+
__TS__SetDescriptor(
|
|
2092
|
+
Unit.prototype,
|
|
2093
|
+
"targetAcquiredEvent",
|
|
2094
|
+
{get = function(self)
|
|
2095
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2096
|
+
end},
|
|
2097
|
+
true
|
|
2098
|
+
)
|
|
1833
2099
|
__TS__SetDescriptor(
|
|
1834
2100
|
Unit.prototype,
|
|
1835
2101
|
"onSelect",
|
|
@@ -1903,7 +2169,6 @@ Unit.onDecay = __TS__New(
|
|
|
1903
2169
|
Unit.onResurrect = __TS__New(
|
|
1904
2170
|
InitializingEvent,
|
|
1905
2171
|
function(event)
|
|
1906
|
-
local invoke = Event.invoke
|
|
1907
2172
|
local dead = setmetatable({}, {__mode = "k"})
|
|
1908
2173
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
1909
2174
|
dead[unit] = true
|
|
@@ -1919,10 +2184,15 @@ Unit.onResurrect = __TS__New(
|
|
|
1919
2184
|
Unit.morphEvent = __TS__New(
|
|
1920
2185
|
InitializingEvent,
|
|
1921
2186
|
function(event)
|
|
2187
|
+
local function ifNotLeft(unit)
|
|
2188
|
+
local handle = unit.handle
|
|
2189
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
|
|
2190
|
+
invoke(event, unit)
|
|
2191
|
+
end
|
|
2192
|
+
end
|
|
1922
2193
|
____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
|
|
1923
2194
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
1924
|
-
|
|
1925
|
-
Timer:run(Event.invoke, event, unit)
|
|
2195
|
+
Timer:run(ifNotLeft, unit)
|
|
1926
2196
|
end
|
|
1927
2197
|
end)
|
|
1928
2198
|
end
|
|
@@ -1960,27 +2230,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
|
|
|
1960
2230
|
Unit.onTargetCast = dispatchId(__TS__New(
|
|
1961
2231
|
InitializingEvent,
|
|
1962
2232
|
function(event)
|
|
1963
|
-
local invoke = Event.invoke
|
|
1964
2233
|
local function listener(unit, id)
|
|
1965
|
-
local
|
|
2234
|
+
local ____GetSpellTargetUnit_result_9
|
|
1966
2235
|
if GetSpellTargetUnit() then
|
|
1967
|
-
|
|
2236
|
+
____GetSpellTargetUnit_result_9 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
1968
2237
|
else
|
|
1969
|
-
local
|
|
2238
|
+
local ____GetSpellTargetItem_result_8
|
|
1970
2239
|
if GetSpellTargetItem() then
|
|
1971
|
-
|
|
2240
|
+
____GetSpellTargetItem_result_8 = Item:of(GetSpellTargetItem())
|
|
1972
2241
|
else
|
|
1973
|
-
local
|
|
2242
|
+
local ____GetSpellTargetDestructable_result_7
|
|
1974
2243
|
if GetSpellTargetDestructable() then
|
|
1975
|
-
|
|
2244
|
+
____GetSpellTargetDestructable_result_7 = Destructable:of(GetSpellTargetDestructable())
|
|
1976
2245
|
else
|
|
1977
|
-
|
|
2246
|
+
____GetSpellTargetDestructable_result_7 = nil
|
|
1978
2247
|
end
|
|
1979
|
-
|
|
2248
|
+
____GetSpellTargetItem_result_8 = ____GetSpellTargetDestructable_result_7
|
|
1980
2249
|
end
|
|
1981
|
-
|
|
2250
|
+
____GetSpellTargetUnit_result_9 = ____GetSpellTargetItem_result_8
|
|
1982
2251
|
end
|
|
1983
|
-
local target =
|
|
2252
|
+
local target = ____GetSpellTargetUnit_result_9
|
|
1984
2253
|
if target then
|
|
1985
2254
|
invoke(event, unit, id, target)
|
|
1986
2255
|
end
|
|
@@ -2152,10 +2421,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2152
2421
|
____exports.UnitTriggerEvent,
|
|
2153
2422
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2154
2423
|
function()
|
|
2155
|
-
local
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2424
|
+
local handle = getOrderedUnit()
|
|
2425
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2426
|
+
local unit = ____exports.Unit:of(handle)
|
|
2427
|
+
if unit.state == 1 then
|
|
2428
|
+
return unit, getIssuedOrderId()
|
|
2429
|
+
end
|
|
2159
2430
|
end
|
|
2160
2431
|
return IgnoreEvent
|
|
2161
2432
|
end
|
|
@@ -2177,7 +2448,6 @@ Unit.autoAttackStartEvent = __TS__New(
|
|
|
2177
2448
|
)
|
|
2178
2449
|
Unit.onDamaging = (function()
|
|
2179
2450
|
local event = __TS__New(Event)
|
|
2180
|
-
local invoke = Event.invoke
|
|
2181
2451
|
local trigger = CreateTrigger()
|
|
2182
2452
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2183
2453
|
TriggerAddCondition(
|
|
@@ -2187,13 +2457,19 @@ Unit.onDamaging = (function()
|
|
|
2187
2457
|
if source and source.typeId == dummyUnitId then
|
|
2188
2458
|
source = nil
|
|
2189
2459
|
end
|
|
2190
|
-
local target = BlzGetEventDamageTarget()
|
|
2460
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2461
|
+
local metadata = damageMetadataByTarget[target]
|
|
2462
|
+
damageMetadataByTarget[target] = nil
|
|
2191
2463
|
local data = {
|
|
2192
2464
|
amount = GetEventDamage(),
|
|
2193
|
-
attackType = BlzGetEventAttackType(),
|
|
2465
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2194
2466
|
damageType = BlzGetEventDamageType(),
|
|
2195
2467
|
weaponType = BlzGetEventWeaponType(),
|
|
2196
|
-
|
|
2468
|
+
metadata = metadata,
|
|
2469
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2470
|
+
originalAmount = GetEventDamage(),
|
|
2471
|
+
originalMetadata = metadata,
|
|
2472
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2197
2473
|
}
|
|
2198
2474
|
if data.isAttack and source then
|
|
2199
2475
|
local weapon = BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 1) and (BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 0) and -1 or 1) or 0
|
|
@@ -2207,18 +2483,36 @@ Unit.onDamaging = (function()
|
|
|
2207
2483
|
invoke(
|
|
2208
2484
|
event,
|
|
2209
2485
|
source,
|
|
2210
|
-
|
|
2486
|
+
target,
|
|
2211
2487
|
setmetatable(
|
|
2212
2488
|
{},
|
|
2213
2489
|
{
|
|
2214
2490
|
__index = data,
|
|
2215
2491
|
__newindex = function(self, key, value)
|
|
2216
|
-
damageSetters[key]
|
|
2492
|
+
local damageSetter = damageSetters[key]
|
|
2493
|
+
if damageSetter ~= nil then
|
|
2494
|
+
damageSetter(value)
|
|
2495
|
+
end
|
|
2217
2496
|
data[key] = value
|
|
2218
2497
|
end
|
|
2219
2498
|
}
|
|
2220
2499
|
)
|
|
2221
2500
|
)
|
|
2501
|
+
if data[0] and source then
|
|
2502
|
+
local sourceOwner = source.owner.handle
|
|
2503
|
+
data[1] = sourceOwner
|
|
2504
|
+
local targetOwner = target.owner.handle
|
|
2505
|
+
data[2] = targetOwner
|
|
2506
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2507
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2508
|
+
data[3] = true
|
|
2509
|
+
end
|
|
2510
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2511
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2512
|
+
data[4] = true
|
|
2513
|
+
end
|
|
2514
|
+
end
|
|
2515
|
+
damagingEventByTarget[target] = data
|
|
2222
2516
|
return
|
|
2223
2517
|
end
|
|
2224
2518
|
BlzSetEventDamage(0)
|
|
@@ -2226,7 +2520,7 @@ Unit.onDamaging = (function()
|
|
|
2226
2520
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2227
2521
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2228
2522
|
local sourceOwner = source.owner.handle
|
|
2229
|
-
local targetOwner =
|
|
2523
|
+
local targetOwner = target.owner.handle
|
|
2230
2524
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2231
2525
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2232
2526
|
Timer:run(function()
|
|
@@ -2242,23 +2536,19 @@ Unit.onDamaging = (function()
|
|
|
2242
2536
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2243
2537
|
local condition = ____value[1]
|
|
2244
2538
|
local action = ____value[2]
|
|
2245
|
-
if condition(
|
|
2246
|
-
source,
|
|
2247
|
-
____exports.Unit:of(target),
|
|
2248
|
-
data
|
|
2249
|
-
) then
|
|
2539
|
+
if condition(source, target, data) then
|
|
2250
2540
|
action(
|
|
2251
2541
|
source,
|
|
2252
|
-
|
|
2542
|
+
target,
|
|
2253
2543
|
setmetatable(
|
|
2254
2544
|
{fire = function()
|
|
2255
2545
|
UnitDamageTarget(
|
|
2256
2546
|
source.handle,
|
|
2257
|
-
target,
|
|
2547
|
+
target.handle,
|
|
2258
2548
|
data.amount,
|
|
2259
2549
|
true,
|
|
2260
2550
|
true,
|
|
2261
|
-
data.attackType,
|
|
2551
|
+
attackTypeToNative(data.attackType),
|
|
2262
2552
|
data.damageType,
|
|
2263
2553
|
data.weaponType
|
|
2264
2554
|
)
|
|
@@ -2276,7 +2566,6 @@ end)()
|
|
|
2276
2566
|
Unit.onDamage = __TS__New(
|
|
2277
2567
|
InitializingEvent,
|
|
2278
2568
|
function(event)
|
|
2279
|
-
local invoke = Event.invoke
|
|
2280
2569
|
local trigger = CreateTrigger()
|
|
2281
2570
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2282
2571
|
TriggerAddCondition(
|
|
@@ -2286,29 +2575,54 @@ Unit.onDamage = __TS__New(
|
|
|
2286
2575
|
if source and source.typeId == dummyUnitId then
|
|
2287
2576
|
source = nil
|
|
2288
2577
|
end
|
|
2578
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2579
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2580
|
+
damagingEventByTarget[target] = nil
|
|
2289
2581
|
local data = {
|
|
2290
2582
|
amount = GetEventDamage(),
|
|
2291
|
-
attackType = BlzGetEventAttackType(),
|
|
2583
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2292
2584
|
damageType = BlzGetEventDamageType(),
|
|
2293
2585
|
weaponType = BlzGetEventWeaponType(),
|
|
2586
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2294
2587
|
isAttack = BlzGetEventIsAttack(),
|
|
2588
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2589
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2295
2590
|
preventDeath = damageEventPreventDeath
|
|
2296
2591
|
}
|
|
2592
|
+
if damagingEvent then
|
|
2593
|
+
for key, value in pairs(damagingEvent) do
|
|
2594
|
+
if isAttribute(key) then
|
|
2595
|
+
data[key] = value
|
|
2596
|
+
end
|
|
2597
|
+
end
|
|
2598
|
+
local sourceOwner = damagingEvent[1]
|
|
2599
|
+
if sourceOwner then
|
|
2600
|
+
local targetOwner = damagingEvent[2]
|
|
2601
|
+
if damagingEvent[3] then
|
|
2602
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2603
|
+
end
|
|
2604
|
+
if damagingEvent[4] then
|
|
2605
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2606
|
+
end
|
|
2607
|
+
end
|
|
2608
|
+
end
|
|
2297
2609
|
local evData = setmetatable(
|
|
2298
2610
|
{},
|
|
2299
2611
|
{
|
|
2300
2612
|
__index = data,
|
|
2301
2613
|
__newindex = function(self, key, value)
|
|
2302
|
-
damageSetters[key]
|
|
2614
|
+
local damageSetter = damageSetters[key]
|
|
2615
|
+
if damageSetter ~= nil then
|
|
2616
|
+
damageSetter(value)
|
|
2617
|
+
end
|
|
2303
2618
|
data[key] = value
|
|
2304
2619
|
end
|
|
2305
2620
|
}
|
|
2306
2621
|
)
|
|
2307
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2308
2622
|
invoke(event, source, target, evData)
|
|
2309
2623
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2310
2624
|
local bonusHealth = math.ceil(evData.amount)
|
|
2311
|
-
target[
|
|
2625
|
+
target[105] = (target[105] or 0) + bonusHealth
|
|
2312
2626
|
BlzSetUnitMaxHP(
|
|
2313
2627
|
target.handle,
|
|
2314
2628
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2322,7 +2636,7 @@ Unit.onDamage = __TS__New(
|
|
|
2322
2636
|
evData[0],
|
|
2323
2637
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2324
2638
|
)
|
|
2325
|
-
target[
|
|
2639
|
+
target[105] = (target[105] or 0) - bonusHealth
|
|
2326
2640
|
SetWidgetLife(
|
|
2327
2641
|
target.handle,
|
|
2328
2642
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2342,32 +2656,106 @@ Unit.onDamage = __TS__New(
|
|
|
2342
2656
|
DestroyTrigger(trigger)
|
|
2343
2657
|
end
|
|
2344
2658
|
)
|
|
2345
|
-
Unit.
|
|
2659
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2346
2660
|
____exports.UnitTriggerEvent,
|
|
2347
2661
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2348
2662
|
function()
|
|
2349
2663
|
local unit = getTriggerUnit()
|
|
2350
|
-
|
|
2351
|
-
|
|
2664
|
+
local item = getManipulatedItem()
|
|
2665
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2666
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2352
2667
|
end
|
|
2353
2668
|
return IgnoreEvent
|
|
2354
2669
|
end
|
|
2355
2670
|
)
|
|
2356
|
-
Unit.
|
|
2671
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2357
2672
|
____exports.UnitTriggerEvent,
|
|
2358
2673
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2359
2674
|
function()
|
|
2360
2675
|
local unit = getTriggerUnit()
|
|
2361
|
-
|
|
2362
|
-
|
|
2676
|
+
local item = getManipulatedItem()
|
|
2677
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2678
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2363
2679
|
end
|
|
2364
2680
|
return IgnoreEvent
|
|
2365
2681
|
end
|
|
2366
2682
|
)
|
|
2367
|
-
Unit.
|
|
2683
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2368
2684
|
____exports.UnitTriggerEvent,
|
|
2369
2685
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2370
|
-
function()
|
|
2686
|
+
function()
|
|
2687
|
+
local unit = getTriggerUnit()
|
|
2688
|
+
local item = getManipulatedItem()
|
|
2689
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2690
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2691
|
+
end
|
|
2692
|
+
return IgnoreEvent
|
|
2693
|
+
end
|
|
2694
|
+
)
|
|
2695
|
+
Unit.itemStackedEvent = __TS__New(
|
|
2696
|
+
____exports.UnitTriggerEvent,
|
|
2697
|
+
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2698
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
|
|
2699
|
+
)
|
|
2700
|
+
__TS__ObjectDefineProperty(
|
|
2701
|
+
Unit,
|
|
2702
|
+
"itemChargesChangedEvent",
|
|
2703
|
+
{get = function(self)
|
|
2704
|
+
local event = __TS__New(Event)
|
|
2705
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2706
|
+
local unit = item.owner
|
|
2707
|
+
if unit ~= nil then
|
|
2708
|
+
invoke(event, unit, item)
|
|
2709
|
+
end
|
|
2710
|
+
end)
|
|
2711
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2712
|
+
return event
|
|
2713
|
+
end}
|
|
2714
|
+
)
|
|
2715
|
+
__TS__ObjectDefineProperty(
|
|
2716
|
+
Unit,
|
|
2717
|
+
"itemUseOrderEvent",
|
|
2718
|
+
{get = function(self)
|
|
2719
|
+
local event = __TS__New(Event)
|
|
2720
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2721
|
+
local slot = order - orderId("useslot0")
|
|
2722
|
+
local function listener(unit)
|
|
2723
|
+
local item = unit.items[slot + 1]
|
|
2724
|
+
if item ~= nil then
|
|
2725
|
+
invoke(event, unit, item)
|
|
2726
|
+
end
|
|
2727
|
+
end
|
|
2728
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2729
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2730
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2731
|
+
end
|
|
2732
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2733
|
+
return event
|
|
2734
|
+
end}
|
|
2735
|
+
)
|
|
2736
|
+
__TS__ObjectDefineProperty(
|
|
2737
|
+
Unit,
|
|
2738
|
+
"itemMoveOrderEvent",
|
|
2739
|
+
{get = function(self)
|
|
2740
|
+
local event = __TS__New(Event)
|
|
2741
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2742
|
+
local slotTo = order - orderId("moveslot0")
|
|
2743
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2744
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2745
|
+
if slotFrom ~= nil then
|
|
2746
|
+
invoke(
|
|
2747
|
+
event,
|
|
2748
|
+
unit,
|
|
2749
|
+
item,
|
|
2750
|
+
slotFrom,
|
|
2751
|
+
slotTo
|
|
2752
|
+
)
|
|
2753
|
+
end
|
|
2754
|
+
end)
|
|
2755
|
+
end
|
|
2756
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2757
|
+
return event
|
|
2758
|
+
end}
|
|
2371
2759
|
)
|
|
2372
2760
|
__TS__ObjectDefineProperty(
|
|
2373
2761
|
Unit,
|