warscript 0.0.1-dev.2af030d → 0.0.1-dev.2b9d42c
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 -1
- package/attributes.lua +17 -1
- 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 +117 -22
- package/core/types/group.d.ts +0 -1
- 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/player.d.ts +16 -0
- package/core/types/player.lua +60 -15
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/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 +846 -790
- package/engine/ability.d.ts +1 -1
- package/engine/behavior.d.ts +22 -11
- package/engine/behavior.lua +175 -73
- 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 +36 -4
- package/engine/behaviour/ability/apply-unit-behavior.d.ts +6 -1
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- 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 +43 -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 +25 -0
- package/engine/behaviour/ability/remove-buffs.lua +49 -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 +29 -5
- package/engine/behaviour/ability.lua +154 -27
- package/engine/behaviour/unit/stun-immunity.d.ts +11 -6
- package/engine/behaviour/unit/stun-immunity.lua +53 -28
- package/engine/behaviour/unit.d.ts +48 -4
- package/engine/behaviour/unit.lua +282 -2
- package/engine/buff.d.ts +114 -44
- package/engine/buff.lua +525 -224
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/internal/ability.d.ts +23 -14
- package/engine/internal/ability.lua +129 -85
- package/engine/internal/item/ability.lua +162 -4
- 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/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/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +128 -17
- 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/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/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 +36 -0
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +12 -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+transport.lua +4 -10
- package/engine/internal/unit-missile-launch.lua +63 -13
- package/engine/internal/unit.d.ts +65 -24
- package/engine/internal/unit.lua +453 -195
- 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 +9 -2
- package/engine/local-client.lua +112 -0
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -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/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 +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/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 +19 -18
- package/engine/object-data/entry/ability-type.lua +93 -36
- package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- 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 +25 -6
- package/engine/object-data/entry/unit-type.lua +258 -93
- 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 +28 -5
- package/engine/object-field/ability.lua +59 -5
- package/engine/object-field/unit.d.ts +69 -3
- package/engine/object-field/unit.lua +264 -7
- package/engine/object-field.d.ts +23 -7
- package/engine/object-field.lua +311 -124
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +22 -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 +18 -0
- package/engine/standard/entries/unit-type.lua +18 -0
- package/engine/standard/fields/ability.d.ts +5 -3
- package/engine/standard/fields/ability.lua +5 -3
- package/engine/standard/fields/unit.d.ts +6 -0
- package/engine/standard/fields/unit.lua +11 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +6 -0
- package/engine/unit.lua +15 -2
- package/event.d.ts +2 -3
- package/event.lua +9 -5
- 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 +3 -4
- package/objutil/object.d.ts +0 -1
- package/objutil/unit.d.ts +0 -1
- package/objutil/unit.lua +8 -0
- package/package.json +13 -13
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -0
- package/patch-lualib.lua +1 -1
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- package/string.d.ts +16 -0
- package/string.lua +5 -0
- package/util/stream.d.ts +0 -1
- package/utility/arrays.d.ts +13 -5
- package/utility/arrays.lua +45 -3
- package/utility/bit-set.d.ts +0 -2
- 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/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +13 -3
- package/utility/linked-set.lua +27 -3
- package/utility/lua-maps.d.ts +16 -4
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +3 -2
- package/utility/lua-sets.lua +7 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +4 -0
- 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
|
@@ -7,6 +7,9 @@ local __TS__Class = ____lualib.__TS__Class
|
|
|
7
7
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
8
8
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
9
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
|
|
10
13
|
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
11
14
|
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
12
15
|
local Set = ____lualib.Set
|
|
@@ -48,12 +51,23 @@ 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
|
|
63
|
+
local ____ability = require("engine.internal.item.ability")
|
|
64
|
+
local doUnitAbilityAction = ____ability.doUnitAbilityAction
|
|
65
|
+
local ____synchronization = require("engine.synchronization")
|
|
66
|
+
local synchronizer = ____synchronization.synchronizer
|
|
51
67
|
local match = string.match
|
|
52
68
|
local ____tostring = _G.tostring
|
|
53
69
|
local setUnitAnimation = SetUnitAnimation
|
|
54
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
55
70
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
56
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
57
71
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
58
72
|
local getUnitRealField = BlzGetUnitRealField
|
|
59
73
|
local getHeroStr = GetHeroStr
|
|
@@ -72,9 +86,9 @@ local setUnitScale = SetUnitScale
|
|
|
72
86
|
local setUnitPosition = SetUnitPosition
|
|
73
87
|
local setUnitTimeScale = SetUnitTimeScale
|
|
74
88
|
local getHandleId = GetHandleId
|
|
89
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
75
90
|
local createUnit = CreateUnit
|
|
76
91
|
local killUnit = KillUnit
|
|
77
|
-
local setUnitExploded = SetUnitExploded
|
|
78
92
|
local removeUnit = RemoveUnit
|
|
79
93
|
local getUnitTypeId = GetUnitTypeId
|
|
80
94
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -90,8 +104,6 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
90
104
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
91
105
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
92
106
|
local isUnitInRange = IsUnitInRange
|
|
93
|
-
local setResourceAmount = SetResourceAmount
|
|
94
|
-
local getResourceAmount = GetResourceAmount
|
|
95
107
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
96
108
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
97
109
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
@@ -115,15 +127,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
115
127
|
local getIssuedOrderId = GetIssuedOrderId
|
|
116
128
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
117
129
|
local unitAlive = UnitAlive
|
|
118
|
-
local unitAddType = UnitAddType
|
|
119
|
-
local unitRemoveType = UnitRemoveType
|
|
120
|
-
local isUnitIllusion = IsUnitIllusion
|
|
121
|
-
local isUnitType = IsUnitType
|
|
122
130
|
local isUnitAlly = IsUnitAlly
|
|
123
131
|
local isUnitEnemy = IsUnitEnemy
|
|
124
132
|
local getOwningPlayer = GetOwningPlayer
|
|
125
|
-
local setUnitColor = SetUnitColor
|
|
126
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
127
133
|
____exports.UnitClassification = {}
|
|
128
134
|
local UnitClassification = ____exports.UnitClassification
|
|
129
135
|
do
|
|
@@ -133,6 +139,7 @@ do
|
|
|
133
139
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
134
140
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
135
141
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
142
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
136
143
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
137
144
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
138
145
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -279,16 +286,14 @@ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
|
|
|
279
286
|
end
|
|
280
287
|
local function dispatch(event, idGetter, argsGetter)
|
|
281
288
|
local initialized = false
|
|
282
|
-
local x = {}
|
|
283
289
|
return setmetatable(
|
|
284
|
-
|
|
290
|
+
{},
|
|
285
291
|
{
|
|
286
292
|
__index = function(self, id)
|
|
287
293
|
if type(id) ~= "number" then
|
|
288
294
|
return event[id]
|
|
289
295
|
end
|
|
290
296
|
if not initialized then
|
|
291
|
-
local invoke = Event.invoke
|
|
292
297
|
event:addListener(function(...)
|
|
293
298
|
local id = idGetter(...)
|
|
294
299
|
local dispatched = rawget(self, id)
|
|
@@ -326,7 +331,6 @@ local function dispatchAbility(event)
|
|
|
326
331
|
return event[id]
|
|
327
332
|
end
|
|
328
333
|
if not initialized then
|
|
329
|
-
local invoke = Event.invoke
|
|
330
334
|
event:addListener(function(unit, ability, ...)
|
|
331
335
|
local dispatched = rawget(self, ability.typeId)
|
|
332
336
|
if dispatched ~= nil then
|
|
@@ -343,6 +347,9 @@ local function dispatchAbility(event)
|
|
|
343
347
|
}
|
|
344
348
|
)
|
|
345
349
|
end
|
|
350
|
+
local function damagingEventPreventRetaliation(self)
|
|
351
|
+
self[0] = true
|
|
352
|
+
end
|
|
346
353
|
local function damageEventPreventDeath(self, callback, ...)
|
|
347
354
|
if self[0] ~= nil then
|
|
348
355
|
return
|
|
@@ -354,7 +361,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
354
361
|
rawset(self, 1 + i, (select(i, ...)))
|
|
355
362
|
end
|
|
356
363
|
end
|
|
357
|
-
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
|
+
}
|
|
358
372
|
local jlimitopByOperator = {
|
|
359
373
|
[0] = LESS_THAN_OR_EQUAL,
|
|
360
374
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -398,6 +412,19 @@ function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
|
398
412
|
self.unit = unit
|
|
399
413
|
self.index = index
|
|
400
414
|
end
|
|
415
|
+
__TS__SetDescriptor(
|
|
416
|
+
UnitWeapon.prototype,
|
|
417
|
+
"isEnabled",
|
|
418
|
+
{
|
|
419
|
+
get = function(self)
|
|
420
|
+
return BlzGetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index)
|
|
421
|
+
end,
|
|
422
|
+
set = function(self, isEnabled)
|
|
423
|
+
BlzSetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index, isEnabled)
|
|
424
|
+
end
|
|
425
|
+
},
|
|
426
|
+
true
|
|
427
|
+
)
|
|
401
428
|
__TS__SetDescriptor(
|
|
402
429
|
UnitWeapon.prototype,
|
|
403
430
|
"cooldown",
|
|
@@ -432,6 +459,19 @@ __TS__SetDescriptor(
|
|
|
432
459
|
},
|
|
433
460
|
true
|
|
434
461
|
)
|
|
462
|
+
__TS__SetDescriptor(
|
|
463
|
+
UnitWeapon.prototype,
|
|
464
|
+
"allowedTargetCombatClassifications",
|
|
465
|
+
{
|
|
466
|
+
get = function(self)
|
|
467
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
468
|
+
end,
|
|
469
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
470
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
471
|
+
end
|
|
472
|
+
},
|
|
473
|
+
true
|
|
474
|
+
)
|
|
435
475
|
__TS__SetDescriptor(
|
|
436
476
|
UnitWeapon.prototype,
|
|
437
477
|
"damageBase",
|
|
@@ -562,17 +602,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
562
602
|
____exports.Unit:of(unit)
|
|
563
603
|
)
|
|
564
604
|
end
|
|
565
|
-
if not unitAddAbility(unit, abilityId) then
|
|
566
|
-
if getUnitAbility(unit, abilityId) == ability then
|
|
567
|
-
return UnitAbility:of(
|
|
568
|
-
ability,
|
|
569
|
-
abilityId,
|
|
570
|
-
____exports.Unit:of(unit)
|
|
571
|
-
)
|
|
572
|
-
end
|
|
573
|
-
else
|
|
574
|
-
unitRemoveAbility(unit, abilityId)
|
|
575
|
-
end
|
|
576
605
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
577
606
|
local item = unitItemInSlot(unit, i)
|
|
578
607
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -630,15 +659,15 @@ for ____, player in ipairs(Player.all) do
|
|
|
630
659
|
dummies[player] = dummy
|
|
631
660
|
end
|
|
632
661
|
local function delayHealthChecksCallback(unit)
|
|
633
|
-
local counter = (unit[
|
|
662
|
+
local counter = (unit[104] or 0) - 1
|
|
634
663
|
if counter ~= 0 then
|
|
635
|
-
unit[
|
|
664
|
+
unit[104] = counter
|
|
636
665
|
return
|
|
637
666
|
end
|
|
638
|
-
unit[
|
|
639
|
-
local healthBonus = unit[
|
|
667
|
+
unit[104] = nil
|
|
668
|
+
local healthBonus = unit[105]
|
|
640
669
|
if healthBonus ~= nil then
|
|
641
|
-
unit[
|
|
670
|
+
unit[105] = nil
|
|
642
671
|
local handle = unit.handle
|
|
643
672
|
BlzSetUnitMaxHP(
|
|
644
673
|
handle,
|
|
@@ -646,12 +675,27 @@ local function delayHealthChecksCallback(unit)
|
|
|
646
675
|
)
|
|
647
676
|
end
|
|
648
677
|
end
|
|
678
|
+
local nextSyncId = 1
|
|
679
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
680
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
681
|
+
local function addAbility(unit, abilityTypeId)
|
|
682
|
+
local ____unitAddAbility_result_0
|
|
683
|
+
if unitAddAbility(unit, abilityTypeId) then
|
|
684
|
+
____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
|
|
685
|
+
else
|
|
686
|
+
____unitAddAbility_result_0 = nil
|
|
687
|
+
end
|
|
688
|
+
return ____unitAddAbility_result_0
|
|
689
|
+
end
|
|
649
690
|
____exports.Unit = __TS__Class()
|
|
650
691
|
local Unit = ____exports.Unit
|
|
651
692
|
Unit.name = "Unit"
|
|
652
693
|
__TS__ClassExtends(Unit, Handle)
|
|
653
694
|
function Unit.prototype.____constructor(self, handle)
|
|
654
695
|
Handle.prototype.____constructor(self, handle)
|
|
696
|
+
local ____nextSyncId_1 = nextSyncId
|
|
697
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
698
|
+
self.syncId = ____nextSyncId_1
|
|
655
699
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
656
700
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
657
701
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -664,6 +708,7 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
664
708
|
fourCC("Amrf")
|
|
665
709
|
))
|
|
666
710
|
end
|
|
711
|
+
unitBySyncId[self.syncId] = self
|
|
667
712
|
local ____ = self.abilities
|
|
668
713
|
end
|
|
669
714
|
function Unit.prototype.getEvent(self, event, collector)
|
|
@@ -682,6 +727,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
682
727
|
end
|
|
683
728
|
function Unit.prototype.onDestroy(self)
|
|
684
729
|
local handle = self.handle
|
|
730
|
+
self[108] = getUnitX(handle)
|
|
731
|
+
self[109] = getUnitY(handle)
|
|
685
732
|
if not self._owner then
|
|
686
733
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
687
734
|
end
|
|
@@ -749,17 +796,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
749
796
|
end}
|
|
750
797
|
end
|
|
751
798
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
752
|
-
local
|
|
753
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
799
|
+
local ____combatClassification_2 = combatClassification
|
|
800
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
754
801
|
end
|
|
755
802
|
function Unit.prototype.addClassification(self, classification)
|
|
756
|
-
return
|
|
803
|
+
return UnitAddType(self.handle, classification)
|
|
757
804
|
end
|
|
758
805
|
function Unit.prototype.removeClassification(self, classification)
|
|
759
|
-
return
|
|
806
|
+
return UnitRemoveType(self.handle, classification)
|
|
760
807
|
end
|
|
761
808
|
function Unit.prototype.hasClassification(self, classification)
|
|
762
|
-
return
|
|
809
|
+
return IsUnitType(self.handle, classification)
|
|
763
810
|
end
|
|
764
811
|
function Unit.prototype.isVisibleTo(self, player)
|
|
765
812
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -768,13 +815,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
768
815
|
return isUnitInvisible(self.handle, player.handle)
|
|
769
816
|
end
|
|
770
817
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
771
|
-
local
|
|
818
|
+
local ____temp_3
|
|
772
819
|
if type(x) == "number" then
|
|
773
|
-
|
|
820
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
774
821
|
else
|
|
775
|
-
|
|
822
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
776
823
|
end
|
|
777
|
-
return
|
|
824
|
+
return ____temp_3
|
|
778
825
|
end
|
|
779
826
|
function Unit.prototype.isAllyOf(self, unit)
|
|
780
827
|
return isUnitAlly(
|
|
@@ -792,16 +839,30 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
792
839
|
if type(animation) == "number" then
|
|
793
840
|
setUnitAnimationByIndex(self.handle, animation)
|
|
794
841
|
elseif rarity then
|
|
795
|
-
|
|
842
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
796
843
|
else
|
|
797
844
|
setUnitAnimation(self.handle, animation)
|
|
798
845
|
end
|
|
799
846
|
end
|
|
847
|
+
function Unit.prototype.resetAnimation(self)
|
|
848
|
+
ResetUnitAnimation(self.handle)
|
|
849
|
+
end
|
|
800
850
|
function Unit.prototype.queueAnimation(self, animation)
|
|
801
|
-
|
|
851
|
+
QueueUnitAnimation(self.handle, animation)
|
|
852
|
+
end
|
|
853
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
854
|
+
local firstWeapon = self.firstWeapon
|
|
855
|
+
if firstWeapon.isEnabled and target:isAllowedTarget(self, firstWeapon.allowedTargetCombatClassifications) then
|
|
856
|
+
return firstWeapon
|
|
857
|
+
end
|
|
858
|
+
local secondWeapon = self.secondWeapon
|
|
859
|
+
if secondWeapon.isEnabled and target:isAllowedTarget(target, secondWeapon.allowedTargetCombatClassifications) then
|
|
860
|
+
return secondWeapon
|
|
861
|
+
end
|
|
862
|
+
return nil
|
|
802
863
|
end
|
|
803
864
|
function Unit.prototype.delayHealthChecks(self)
|
|
804
|
-
self[
|
|
865
|
+
self[104] = (self[104] or 0) + 1
|
|
805
866
|
Timer:run(delayHealthChecksCallback, self)
|
|
806
867
|
end
|
|
807
868
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -811,14 +872,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
811
872
|
return IsUnitSelected(self.handle, player.handle)
|
|
812
873
|
end
|
|
813
874
|
function Unit.prototype.explode(self)
|
|
814
|
-
|
|
875
|
+
SetUnitExploded(self.handle, true)
|
|
815
876
|
killUnit(self.handle)
|
|
816
877
|
end
|
|
817
878
|
function Unit.prototype.kill(self)
|
|
818
879
|
killUnit(self.handle)
|
|
819
880
|
end
|
|
820
|
-
function Unit.prototype.revive(self,
|
|
821
|
-
|
|
881
|
+
function Unit.prototype.revive(self, x, y, doEffect)
|
|
882
|
+
local ____ReviveHero_6 = ReviveHero
|
|
883
|
+
local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
|
|
884
|
+
local ____doEffect_4 = doEffect
|
|
885
|
+
if ____doEffect_4 == nil then
|
|
886
|
+
____doEffect_4 = false
|
|
887
|
+
end
|
|
888
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
889
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
822
890
|
end
|
|
823
891
|
function Unit.prototype.healTarget(self, target, amount)
|
|
824
892
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -858,20 +926,19 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
858
926
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
859
927
|
end
|
|
860
928
|
function Unit.prototype.itemInSlot(self, slot)
|
|
861
|
-
return Item:of(
|
|
929
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
862
930
|
end
|
|
863
931
|
function Unit.prototype.addAbility(self, abilityId)
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
932
|
+
local ability = UnitAbility:of(
|
|
933
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
934
|
+
abilityId,
|
|
935
|
+
self
|
|
936
|
+
)
|
|
937
|
+
if ability ~= nil then
|
|
870
938
|
local abilities = self.abilities
|
|
871
939
|
abilities[#abilities + 1] = ability
|
|
872
|
-
return ability
|
|
873
940
|
end
|
|
874
|
-
return
|
|
941
|
+
return ability
|
|
875
942
|
end
|
|
876
943
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
877
944
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -885,47 +952,62 @@ end
|
|
|
885
952
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
886
953
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
887
954
|
end
|
|
888
|
-
function Unit.prototype.
|
|
889
|
-
local
|
|
890
|
-
|
|
891
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
892
|
-
return nil
|
|
893
|
-
end
|
|
894
|
-
return UnitAbility:of(
|
|
895
|
-
getUnitAbility(self.handle, abilityId),
|
|
896
|
-
abilityId,
|
|
897
|
-
self
|
|
898
|
-
)
|
|
955
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
956
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
957
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
899
958
|
end
|
|
900
|
-
function Unit.prototype.removeAbility(self,
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
end
|
|
959
|
+
function Unit.prototype.removeAbility(self, abilityTypeId)
|
|
960
|
+
local abilities = self.abilities
|
|
961
|
+
for i = 1, #abilities do
|
|
962
|
+
if abilities[i].typeId == abilityTypeId then
|
|
963
|
+
local ability = abilities[i]
|
|
964
|
+
tremove(abilities, i)
|
|
965
|
+
ability:destroy()
|
|
966
|
+
return true
|
|
909
967
|
end
|
|
910
|
-
return true
|
|
911
968
|
end
|
|
912
|
-
return
|
|
969
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
913
970
|
end
|
|
914
971
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
915
972
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
916
973
|
end
|
|
974
|
+
function Unit.prototype.getAbilityRemainingCooldown(self, abilityId)
|
|
975
|
+
return BlzGetUnitAbilityCooldownRemaining(self.handle, abilityId)
|
|
976
|
+
end
|
|
917
977
|
function Unit.prototype.startAbilityCooldown(self, abilityId, cooldown)
|
|
918
978
|
BlzStartUnitAbilityCooldown(self.handle, abilityId, cooldown)
|
|
919
979
|
end
|
|
920
980
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
921
981
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
922
982
|
end
|
|
983
|
+
function Unit.prototype.interruptMovement(self)
|
|
984
|
+
local handle = self.handle
|
|
985
|
+
unitDisableAbility(
|
|
986
|
+
handle,
|
|
987
|
+
fourCC("Amov"),
|
|
988
|
+
true,
|
|
989
|
+
false
|
|
990
|
+
)
|
|
991
|
+
unitDisableAbility(
|
|
992
|
+
handle,
|
|
993
|
+
fourCC("Amov"),
|
|
994
|
+
false,
|
|
995
|
+
false
|
|
996
|
+
)
|
|
997
|
+
end
|
|
923
998
|
function Unit.prototype.interruptAttack(self)
|
|
924
999
|
unitInterruptAttack(self.handle)
|
|
925
1000
|
end
|
|
926
1001
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
927
|
-
|
|
928
|
-
unitDisableAbility(
|
|
1002
|
+
local handle = self.handle
|
|
1003
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
1004
|
+
Timer:run(
|
|
1005
|
+
unitDisableAbility,
|
|
1006
|
+
handle,
|
|
1007
|
+
abilityId,
|
|
1008
|
+
false,
|
|
1009
|
+
false
|
|
1010
|
+
)
|
|
929
1011
|
end
|
|
930
1012
|
function Unit.prototype.getDistanceTo(self, target)
|
|
931
1013
|
local handle = self.handle
|
|
@@ -985,18 +1067,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
985
1067
|
self:decrementStunCounter()
|
|
986
1068
|
end
|
|
987
1069
|
function Unit.prototype.incrementStunCounter(self)
|
|
988
|
-
local stunCounter = self[
|
|
989
|
-
if not self[
|
|
1070
|
+
local stunCounter = self[102] or 0
|
|
1071
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
990
1072
|
BlzPauseUnitEx(self.handle, true)
|
|
991
1073
|
end
|
|
992
|
-
self[
|
|
1074
|
+
self[102] = stunCounter + 1
|
|
993
1075
|
end
|
|
994
1076
|
function Unit.prototype.decrementStunCounter(self)
|
|
995
|
-
local stunCounter = self[
|
|
996
|
-
if not self[
|
|
1077
|
+
local stunCounter = self[102] or 0
|
|
1078
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
997
1079
|
BlzPauseUnitEx(self.handle, false)
|
|
998
1080
|
end
|
|
999
|
-
self[
|
|
1081
|
+
self[102] = stunCounter - 1
|
|
1082
|
+
end
|
|
1083
|
+
function Unit.prototype.incrementForceStunCounter(self)
|
|
1084
|
+
local forceStunCounter = self[103] or 0
|
|
1085
|
+
if forceStunCounter == 0 then
|
|
1086
|
+
local handle = self.handle
|
|
1087
|
+
if not self[101] then
|
|
1088
|
+
for _ = self[102] or 0, -1 do
|
|
1089
|
+
BlzPauseUnitEx(handle, true)
|
|
1090
|
+
end
|
|
1091
|
+
end
|
|
1092
|
+
BlzPauseUnitEx(handle, true)
|
|
1093
|
+
end
|
|
1094
|
+
self[103] = forceStunCounter + 1
|
|
1095
|
+
end
|
|
1096
|
+
function Unit.prototype.decrementForceStunCounter(self)
|
|
1097
|
+
local forceStunCounter = self[103] or 0
|
|
1098
|
+
if forceStunCounter == 1 then
|
|
1099
|
+
local handle = self.handle
|
|
1100
|
+
if not self[101] then
|
|
1101
|
+
for _ = self[102] or 0, -1 do
|
|
1102
|
+
BlzPauseUnitEx(handle, false)
|
|
1103
|
+
end
|
|
1104
|
+
end
|
|
1105
|
+
BlzPauseUnitEx(handle, false)
|
|
1106
|
+
end
|
|
1107
|
+
self[103] = forceStunCounter - 1
|
|
1000
1108
|
end
|
|
1001
1109
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1002
1110
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1098,8 +1206,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1098
1206
|
)
|
|
1099
1207
|
return targetCollection
|
|
1100
1208
|
end
|
|
1101
|
-
function Unit.getSelectionOf(self, player)
|
|
1102
|
-
|
|
1209
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1210
|
+
if target == nil then
|
|
1211
|
+
target = {}
|
|
1212
|
+
end
|
|
1213
|
+
targetCollection = target
|
|
1103
1214
|
targetCollectionNextIndex = 1
|
|
1104
1215
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1105
1216
|
return targetCollection
|
|
@@ -1121,6 +1232,9 @@ end
|
|
|
1121
1232
|
function Unit.prototype.__tostring(self)
|
|
1122
1233
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1123
1234
|
end
|
|
1235
|
+
function Unit.getBySyncId(self, syncId)
|
|
1236
|
+
return unitBySyncId[syncId]
|
|
1237
|
+
end
|
|
1124
1238
|
__TS__SetDescriptor(
|
|
1125
1239
|
Unit.prototype,
|
|
1126
1240
|
"_deltas",
|
|
@@ -1180,7 +1294,15 @@ __TS__SetDescriptor(
|
|
|
1180
1294
|
Unit.prototype,
|
|
1181
1295
|
"isIllusion",
|
|
1182
1296
|
{get = function(self)
|
|
1183
|
-
return
|
|
1297
|
+
return IsUnitIllusion(self.handle)
|
|
1298
|
+
end},
|
|
1299
|
+
true
|
|
1300
|
+
)
|
|
1301
|
+
__TS__SetDescriptor(
|
|
1302
|
+
Unit.prototype,
|
|
1303
|
+
"isStunned",
|
|
1304
|
+
{get = function(self)
|
|
1305
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1184
1306
|
end},
|
|
1185
1307
|
true
|
|
1186
1308
|
)
|
|
@@ -1257,6 +1379,19 @@ __TS__SetDescriptor(
|
|
|
1257
1379
|
},
|
|
1258
1380
|
true
|
|
1259
1381
|
)
|
|
1382
|
+
__TS__SetDescriptor(
|
|
1383
|
+
Unit.prototype,
|
|
1384
|
+
"primaryAttribute",
|
|
1385
|
+
{
|
|
1386
|
+
get = function(self)
|
|
1387
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1388
|
+
end,
|
|
1389
|
+
set = function(self, primaryAttribute)
|
|
1390
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1391
|
+
end
|
|
1392
|
+
},
|
|
1393
|
+
true
|
|
1394
|
+
)
|
|
1260
1395
|
__TS__SetDescriptor(
|
|
1261
1396
|
Unit.prototype,
|
|
1262
1397
|
"strengthBase",
|
|
@@ -1378,17 +1513,17 @@ __TS__SetDescriptor(
|
|
|
1378
1513
|
"isTeamGlowVisible",
|
|
1379
1514
|
{
|
|
1380
1515
|
get = function(self)
|
|
1381
|
-
return not self[
|
|
1516
|
+
return not self[107]
|
|
1382
1517
|
end,
|
|
1383
1518
|
set = function(self, isTeamGlowVisible)
|
|
1384
|
-
|
|
1385
|
-
local
|
|
1519
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1520
|
+
local ____temp_7
|
|
1386
1521
|
if not isTeamGlowVisible then
|
|
1387
|
-
|
|
1522
|
+
____temp_7 = true
|
|
1388
1523
|
else
|
|
1389
|
-
|
|
1524
|
+
____temp_7 = nil
|
|
1390
1525
|
end
|
|
1391
|
-
self[
|
|
1526
|
+
self[107] = ____temp_7
|
|
1392
1527
|
end
|
|
1393
1528
|
},
|
|
1394
1529
|
true
|
|
@@ -1397,9 +1532,9 @@ __TS__SetDescriptor(
|
|
|
1397
1532
|
Unit.prototype,
|
|
1398
1533
|
"color",
|
|
1399
1534
|
{set = function(self, color)
|
|
1400
|
-
|
|
1401
|
-
if self[
|
|
1402
|
-
|
|
1535
|
+
SetUnitColor(self.handle, color.handle)
|
|
1536
|
+
if self[107] then
|
|
1537
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1403
1538
|
end
|
|
1404
1539
|
end},
|
|
1405
1540
|
true
|
|
@@ -1422,14 +1557,14 @@ __TS__SetDescriptor(
|
|
|
1422
1557
|
"maxHealth",
|
|
1423
1558
|
{
|
|
1424
1559
|
get = function(self)
|
|
1425
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1560
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1426
1561
|
end,
|
|
1427
1562
|
set = function(self, maxHealth)
|
|
1428
|
-
if maxHealth < 1 and self[
|
|
1429
|
-
self[
|
|
1563
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1564
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1430
1565
|
maxHealth = 1
|
|
1431
1566
|
end
|
|
1432
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1567
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1433
1568
|
end
|
|
1434
1569
|
},
|
|
1435
1570
|
true
|
|
@@ -1471,10 +1606,10 @@ __TS__SetDescriptor(
|
|
|
1471
1606
|
"health",
|
|
1472
1607
|
{
|
|
1473
1608
|
get = function(self)
|
|
1474
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1609
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1475
1610
|
end,
|
|
1476
1611
|
set = function(self, health)
|
|
1477
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1612
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1478
1613
|
end
|
|
1479
1614
|
},
|
|
1480
1615
|
true
|
|
@@ -1550,25 +1685,12 @@ __TS__SetDescriptor(
|
|
|
1550
1685
|
},
|
|
1551
1686
|
true
|
|
1552
1687
|
)
|
|
1553
|
-
__TS__SetDescriptor(
|
|
1554
|
-
Unit.prototype,
|
|
1555
|
-
"flyHeight",
|
|
1556
|
-
{
|
|
1557
|
-
get = function(self)
|
|
1558
|
-
return getUnitFlyHeight(self.handle)
|
|
1559
|
-
end,
|
|
1560
|
-
set = function(self, v)
|
|
1561
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1562
|
-
end
|
|
1563
|
-
},
|
|
1564
|
-
true
|
|
1565
|
-
)
|
|
1566
1688
|
__TS__SetDescriptor(
|
|
1567
1689
|
Unit.prototype,
|
|
1568
1690
|
"x",
|
|
1569
1691
|
{
|
|
1570
1692
|
get = function(self)
|
|
1571
|
-
return getUnitX(self.handle)
|
|
1693
|
+
return self[108] or getUnitX(self.handle)
|
|
1572
1694
|
end,
|
|
1573
1695
|
set = function(self, v)
|
|
1574
1696
|
SetUnitX(self.handle, v)
|
|
@@ -1581,7 +1703,7 @@ __TS__SetDescriptor(
|
|
|
1581
1703
|
"y",
|
|
1582
1704
|
{
|
|
1583
1705
|
get = function(self)
|
|
1584
|
-
return getUnitY(self.handle)
|
|
1706
|
+
return self[109] or getUnitY(self.handle)
|
|
1585
1707
|
end,
|
|
1586
1708
|
set = function(self, v)
|
|
1587
1709
|
SetUnitY(self.handle, v)
|
|
@@ -1667,10 +1789,10 @@ __TS__SetDescriptor(
|
|
|
1667
1789
|
"gold",
|
|
1668
1790
|
{
|
|
1669
1791
|
get = function(self)
|
|
1670
|
-
return
|
|
1792
|
+
return GetResourceAmount(self.handle)
|
|
1671
1793
|
end,
|
|
1672
1794
|
set = function(self, gold)
|
|
1673
|
-
|
|
1795
|
+
SetResourceAmount(self.handle, gold)
|
|
1674
1796
|
end
|
|
1675
1797
|
},
|
|
1676
1798
|
true
|
|
@@ -1685,17 +1807,21 @@ __TS__SetDescriptor(
|
|
|
1685
1807
|
set = function(self, isPaused)
|
|
1686
1808
|
local handle = self.handle
|
|
1687
1809
|
if isPaused and not IsUnitPaused(handle) then
|
|
1688
|
-
self[
|
|
1689
|
-
|
|
1690
|
-
|
|
1810
|
+
self[101] = true
|
|
1811
|
+
if (self[103] or 0) <= 0 then
|
|
1812
|
+
for _ = self[102] or 0, -1 do
|
|
1813
|
+
BlzPauseUnitEx(handle, true)
|
|
1814
|
+
end
|
|
1691
1815
|
end
|
|
1692
1816
|
PauseUnit(handle, true)
|
|
1693
1817
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1694
1818
|
PauseUnit(handle, false)
|
|
1695
|
-
|
|
1696
|
-
|
|
1819
|
+
if (self[103] or 0) <= 0 then
|
|
1820
|
+
for _ = self[102] or 0, -1 do
|
|
1821
|
+
BlzPauseUnitEx(handle, false)
|
|
1822
|
+
end
|
|
1697
1823
|
end
|
|
1698
|
-
self[
|
|
1824
|
+
self[101] = nil
|
|
1699
1825
|
end
|
|
1700
1826
|
end
|
|
1701
1827
|
},
|
|
@@ -1751,20 +1877,6 @@ __TS__SetDescriptor(
|
|
|
1751
1877
|
},
|
|
1752
1878
|
true
|
|
1753
1879
|
)
|
|
1754
|
-
__TS__SetDescriptor(
|
|
1755
|
-
Unit.prototype,
|
|
1756
|
-
"scale",
|
|
1757
|
-
{
|
|
1758
|
-
get = function(self)
|
|
1759
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1760
|
-
end,
|
|
1761
|
-
set = function(self, v)
|
|
1762
|
-
setUnitScale(self.handle, v, v, v)
|
|
1763
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1764
|
-
end
|
|
1765
|
-
},
|
|
1766
|
-
true
|
|
1767
|
-
)
|
|
1768
1880
|
__TS__SetDescriptor(
|
|
1769
1881
|
Unit.prototype,
|
|
1770
1882
|
"timeScale",
|
|
@@ -1798,6 +1910,19 @@ __TS__SetDescriptor(
|
|
|
1798
1910
|
end},
|
|
1799
1911
|
true
|
|
1800
1912
|
)
|
|
1913
|
+
__TS__SetDescriptor(
|
|
1914
|
+
Unit.prototype,
|
|
1915
|
+
"movementType",
|
|
1916
|
+
{
|
|
1917
|
+
get = function(self)
|
|
1918
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1919
|
+
end,
|
|
1920
|
+
set = function(self, movementType)
|
|
1921
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1922
|
+
end
|
|
1923
|
+
},
|
|
1924
|
+
true
|
|
1925
|
+
)
|
|
1801
1926
|
__TS__SetDescriptor(
|
|
1802
1927
|
Unit.prototype,
|
|
1803
1928
|
"pathing",
|
|
@@ -1979,6 +2104,14 @@ __TS__SetDescriptor(
|
|
|
1979
2104
|
end},
|
|
1980
2105
|
true
|
|
1981
2106
|
)
|
|
2107
|
+
__TS__SetDescriptor(
|
|
2108
|
+
Unit.prototype,
|
|
2109
|
+
"targetAcquiredEvent",
|
|
2110
|
+
{get = function(self)
|
|
2111
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2112
|
+
end},
|
|
2113
|
+
true
|
|
2114
|
+
)
|
|
1982
2115
|
__TS__SetDescriptor(
|
|
1983
2116
|
Unit.prototype,
|
|
1984
2117
|
"onSelect",
|
|
@@ -2052,7 +2185,6 @@ Unit.onDecay = __TS__New(
|
|
|
2052
2185
|
Unit.onResurrect = __TS__New(
|
|
2053
2186
|
InitializingEvent,
|
|
2054
2187
|
function(event)
|
|
2055
|
-
local invoke = Event.invoke
|
|
2056
2188
|
local dead = setmetatable({}, {__mode = "k"})
|
|
2057
2189
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
2058
2190
|
dead[unit] = true
|
|
@@ -2068,10 +2200,15 @@ Unit.onResurrect = __TS__New(
|
|
|
2068
2200
|
Unit.morphEvent = __TS__New(
|
|
2069
2201
|
InitializingEvent,
|
|
2070
2202
|
function(event)
|
|
2203
|
+
local function ifNotLeft(unit)
|
|
2204
|
+
local handle = unit.handle
|
|
2205
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
|
|
2206
|
+
invoke(event, unit)
|
|
2207
|
+
end
|
|
2208
|
+
end
|
|
2071
2209
|
____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
|
|
2072
2210
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
2073
|
-
|
|
2074
|
-
Timer:run(Event.invoke, event, unit)
|
|
2211
|
+
Timer:run(ifNotLeft, unit)
|
|
2075
2212
|
end
|
|
2076
2213
|
end)
|
|
2077
2214
|
end
|
|
@@ -2109,27 +2246,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
|
|
|
2109
2246
|
Unit.onTargetCast = dispatchId(__TS__New(
|
|
2110
2247
|
InitializingEvent,
|
|
2111
2248
|
function(event)
|
|
2112
|
-
local invoke = Event.invoke
|
|
2113
2249
|
local function listener(unit, id)
|
|
2114
|
-
local
|
|
2250
|
+
local ____GetSpellTargetUnit_result_10
|
|
2115
2251
|
if GetSpellTargetUnit() then
|
|
2116
|
-
|
|
2252
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2117
2253
|
else
|
|
2118
|
-
local
|
|
2254
|
+
local ____GetSpellTargetItem_result_9
|
|
2119
2255
|
if GetSpellTargetItem() then
|
|
2120
|
-
|
|
2256
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2121
2257
|
else
|
|
2122
|
-
local
|
|
2258
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2123
2259
|
if GetSpellTargetDestructable() then
|
|
2124
|
-
|
|
2260
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2125
2261
|
else
|
|
2126
|
-
|
|
2262
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2127
2263
|
end
|
|
2128
|
-
|
|
2264
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2129
2265
|
end
|
|
2130
|
-
|
|
2266
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2131
2267
|
end
|
|
2132
|
-
local target =
|
|
2268
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2133
2269
|
if target then
|
|
2134
2270
|
invoke(event, unit, id, target)
|
|
2135
2271
|
end
|
|
@@ -2301,10 +2437,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2301
2437
|
____exports.UnitTriggerEvent,
|
|
2302
2438
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2303
2439
|
function()
|
|
2304
|
-
local
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2440
|
+
local handle = getOrderedUnit()
|
|
2441
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2442
|
+
local unit = ____exports.Unit:of(handle)
|
|
2443
|
+
if unit.state == 1 then
|
|
2444
|
+
return unit, getIssuedOrderId()
|
|
2445
|
+
end
|
|
2308
2446
|
end
|
|
2309
2447
|
return IgnoreEvent
|
|
2310
2448
|
end
|
|
@@ -2326,7 +2464,6 @@ Unit.autoAttackStartEvent = __TS__New(
|
|
|
2326
2464
|
)
|
|
2327
2465
|
Unit.onDamaging = (function()
|
|
2328
2466
|
local event = __TS__New(Event)
|
|
2329
|
-
local invoke = Event.invoke
|
|
2330
2467
|
local trigger = CreateTrigger()
|
|
2331
2468
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2332
2469
|
TriggerAddCondition(
|
|
@@ -2336,38 +2473,57 @@ Unit.onDamaging = (function()
|
|
|
2336
2473
|
if source and source.typeId == dummyUnitId then
|
|
2337
2474
|
source = nil
|
|
2338
2475
|
end
|
|
2339
|
-
local target = BlzGetEventDamageTarget()
|
|
2476
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2477
|
+
local metadata = damageMetadataByTarget[target]
|
|
2478
|
+
damageMetadataByTarget[target] = nil
|
|
2340
2479
|
local data = {
|
|
2341
2480
|
amount = GetEventDamage(),
|
|
2342
|
-
attackType = BlzGetEventAttackType(),
|
|
2481
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2343
2482
|
damageType = BlzGetEventDamageType(),
|
|
2344
2483
|
weaponType = BlzGetEventWeaponType(),
|
|
2345
|
-
|
|
2484
|
+
metadata = metadata,
|
|
2485
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2486
|
+
originalAmount = GetEventDamage(),
|
|
2487
|
+
originalMetadata = metadata,
|
|
2488
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2346
2489
|
}
|
|
2347
2490
|
if data.isAttack and source then
|
|
2348
|
-
|
|
2349
|
-
if weapon == -1 then
|
|
2350
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2351
|
-
weapon = 0
|
|
2352
|
-
end
|
|
2353
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2491
|
+
data.weapon = source:chooseWeapon(target)
|
|
2354
2492
|
end
|
|
2355
2493
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2356
2494
|
invoke(
|
|
2357
2495
|
event,
|
|
2358
2496
|
source,
|
|
2359
|
-
|
|
2497
|
+
target,
|
|
2360
2498
|
setmetatable(
|
|
2361
2499
|
{},
|
|
2362
2500
|
{
|
|
2363
2501
|
__index = data,
|
|
2364
2502
|
__newindex = function(self, key, value)
|
|
2365
|
-
damageSetters[key]
|
|
2503
|
+
local damageSetter = damageSetters[key]
|
|
2504
|
+
if damageSetter ~= nil then
|
|
2505
|
+
damageSetter(value)
|
|
2506
|
+
end
|
|
2366
2507
|
data[key] = value
|
|
2367
2508
|
end
|
|
2368
2509
|
}
|
|
2369
2510
|
)
|
|
2370
2511
|
)
|
|
2512
|
+
if data[0] and source then
|
|
2513
|
+
local sourceOwner = source.owner.handle
|
|
2514
|
+
data[1] = sourceOwner
|
|
2515
|
+
local targetOwner = target.owner.handle
|
|
2516
|
+
data[2] = targetOwner
|
|
2517
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2518
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2519
|
+
data[3] = true
|
|
2520
|
+
end
|
|
2521
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2522
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2523
|
+
data[4] = true
|
|
2524
|
+
end
|
|
2525
|
+
end
|
|
2526
|
+
damagingEventByTarget[target] = data
|
|
2371
2527
|
return
|
|
2372
2528
|
end
|
|
2373
2529
|
BlzSetEventDamage(0)
|
|
@@ -2375,7 +2531,7 @@ Unit.onDamaging = (function()
|
|
|
2375
2531
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2376
2532
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2377
2533
|
local sourceOwner = source.owner.handle
|
|
2378
|
-
local targetOwner =
|
|
2534
|
+
local targetOwner = target.owner.handle
|
|
2379
2535
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2380
2536
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2381
2537
|
Timer:run(function()
|
|
@@ -2391,23 +2547,19 @@ Unit.onDamaging = (function()
|
|
|
2391
2547
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2392
2548
|
local condition = ____value[1]
|
|
2393
2549
|
local action = ____value[2]
|
|
2394
|
-
if condition(
|
|
2395
|
-
source,
|
|
2396
|
-
____exports.Unit:of(target),
|
|
2397
|
-
data
|
|
2398
|
-
) then
|
|
2550
|
+
if condition(source, target, data) then
|
|
2399
2551
|
action(
|
|
2400
2552
|
source,
|
|
2401
|
-
|
|
2553
|
+
target,
|
|
2402
2554
|
setmetatable(
|
|
2403
2555
|
{fire = function()
|
|
2404
2556
|
UnitDamageTarget(
|
|
2405
2557
|
source.handle,
|
|
2406
|
-
target,
|
|
2558
|
+
target.handle,
|
|
2407
2559
|
data.amount,
|
|
2408
2560
|
true,
|
|
2409
2561
|
true,
|
|
2410
|
-
data.attackType,
|
|
2562
|
+
attackTypeToNative(data.attackType),
|
|
2411
2563
|
data.damageType,
|
|
2412
2564
|
data.weaponType
|
|
2413
2565
|
)
|
|
@@ -2425,7 +2577,6 @@ end)()
|
|
|
2425
2577
|
Unit.onDamage = __TS__New(
|
|
2426
2578
|
InitializingEvent,
|
|
2427
2579
|
function(event)
|
|
2428
|
-
local invoke = Event.invoke
|
|
2429
2580
|
local trigger = CreateTrigger()
|
|
2430
2581
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2431
2582
|
TriggerAddCondition(
|
|
@@ -2435,29 +2586,54 @@ Unit.onDamage = __TS__New(
|
|
|
2435
2586
|
if source and source.typeId == dummyUnitId then
|
|
2436
2587
|
source = nil
|
|
2437
2588
|
end
|
|
2589
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2590
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2591
|
+
damagingEventByTarget[target] = nil
|
|
2438
2592
|
local data = {
|
|
2439
2593
|
amount = GetEventDamage(),
|
|
2440
|
-
attackType = BlzGetEventAttackType(),
|
|
2594
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2441
2595
|
damageType = BlzGetEventDamageType(),
|
|
2442
2596
|
weaponType = BlzGetEventWeaponType(),
|
|
2597
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2443
2598
|
isAttack = BlzGetEventIsAttack(),
|
|
2599
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2600
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2444
2601
|
preventDeath = damageEventPreventDeath
|
|
2445
2602
|
}
|
|
2603
|
+
if damagingEvent then
|
|
2604
|
+
for key, value in pairs(damagingEvent) do
|
|
2605
|
+
if isAttribute(key) then
|
|
2606
|
+
data[key] = value
|
|
2607
|
+
end
|
|
2608
|
+
end
|
|
2609
|
+
local sourceOwner = damagingEvent[1]
|
|
2610
|
+
if sourceOwner then
|
|
2611
|
+
local targetOwner = damagingEvent[2]
|
|
2612
|
+
if damagingEvent[3] then
|
|
2613
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2614
|
+
end
|
|
2615
|
+
if damagingEvent[4] then
|
|
2616
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2617
|
+
end
|
|
2618
|
+
end
|
|
2619
|
+
end
|
|
2446
2620
|
local evData = setmetatable(
|
|
2447
2621
|
{},
|
|
2448
2622
|
{
|
|
2449
2623
|
__index = data,
|
|
2450
2624
|
__newindex = function(self, key, value)
|
|
2451
|
-
damageSetters[key]
|
|
2625
|
+
local damageSetter = damageSetters[key]
|
|
2626
|
+
if damageSetter ~= nil then
|
|
2627
|
+
damageSetter(value)
|
|
2628
|
+
end
|
|
2452
2629
|
data[key] = value
|
|
2453
2630
|
end
|
|
2454
2631
|
}
|
|
2455
2632
|
)
|
|
2456
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2457
2633
|
invoke(event, source, target, evData)
|
|
2458
2634
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2459
2635
|
local bonusHealth = math.ceil(evData.amount)
|
|
2460
|
-
target[
|
|
2636
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2461
2637
|
BlzSetUnitMaxHP(
|
|
2462
2638
|
target.handle,
|
|
2463
2639
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2471,7 +2647,7 @@ Unit.onDamage = __TS__New(
|
|
|
2471
2647
|
evData[0],
|
|
2472
2648
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2473
2649
|
)
|
|
2474
|
-
target[
|
|
2650
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2475
2651
|
SetWidgetLife(
|
|
2476
2652
|
target.handle,
|
|
2477
2653
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2491,32 +2667,110 @@ Unit.onDamage = __TS__New(
|
|
|
2491
2667
|
DestroyTrigger(trigger)
|
|
2492
2668
|
end
|
|
2493
2669
|
)
|
|
2494
|
-
Unit.
|
|
2670
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2495
2671
|
____exports.UnitTriggerEvent,
|
|
2496
2672
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2497
2673
|
function()
|
|
2498
2674
|
local unit = getTriggerUnit()
|
|
2499
|
-
|
|
2500
|
-
|
|
2675
|
+
local item = getManipulatedItem()
|
|
2676
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2677
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2501
2678
|
end
|
|
2502
2679
|
return IgnoreEvent
|
|
2503
2680
|
end
|
|
2504
2681
|
)
|
|
2505
|
-
Unit.
|
|
2682
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2506
2683
|
____exports.UnitTriggerEvent,
|
|
2507
2684
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2508
2685
|
function()
|
|
2509
|
-
local
|
|
2510
|
-
|
|
2511
|
-
|
|
2686
|
+
local unitHandle = getTriggerUnit()
|
|
2687
|
+
local itemHandle = getManipulatedItem()
|
|
2688
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
|
|
2689
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2690
|
+
local item = Item:of(itemHandle)
|
|
2691
|
+
if item.owner ~= unit then
|
|
2692
|
+
return unit, item
|
|
2693
|
+
end
|
|
2512
2694
|
end
|
|
2513
2695
|
return IgnoreEvent
|
|
2514
2696
|
end
|
|
2515
2697
|
)
|
|
2516
|
-
Unit.
|
|
2698
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2517
2699
|
____exports.UnitTriggerEvent,
|
|
2518
2700
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2519
|
-
function()
|
|
2701
|
+
function()
|
|
2702
|
+
local unit = getTriggerUnit()
|
|
2703
|
+
local item = getManipulatedItem()
|
|
2704
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2705
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2706
|
+
end
|
|
2707
|
+
return IgnoreEvent
|
|
2708
|
+
end
|
|
2709
|
+
)
|
|
2710
|
+
Unit.itemStackedEvent = __TS__New(
|
|
2711
|
+
____exports.UnitTriggerEvent,
|
|
2712
|
+
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2713
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2714
|
+
)
|
|
2715
|
+
__TS__ObjectDefineProperty(
|
|
2716
|
+
Unit,
|
|
2717
|
+
"itemChargesChangedEvent",
|
|
2718
|
+
{get = function(self)
|
|
2719
|
+
local event = __TS__New(Event)
|
|
2720
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2721
|
+
local unit = item.owner
|
|
2722
|
+
if unit ~= nil then
|
|
2723
|
+
invoke(event, unit, item)
|
|
2724
|
+
end
|
|
2725
|
+
end)
|
|
2726
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2727
|
+
return event
|
|
2728
|
+
end}
|
|
2729
|
+
)
|
|
2730
|
+
__TS__ObjectDefineProperty(
|
|
2731
|
+
Unit,
|
|
2732
|
+
"itemUseOrderEvent",
|
|
2733
|
+
{get = function(self)
|
|
2734
|
+
local event = __TS__New(Event)
|
|
2735
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2736
|
+
local slot = order - orderId("useslot0")
|
|
2737
|
+
local function listener(unit)
|
|
2738
|
+
local item = unit.items[slot + 1]
|
|
2739
|
+
if item ~= nil then
|
|
2740
|
+
invoke(event, unit, item)
|
|
2741
|
+
end
|
|
2742
|
+
end
|
|
2743
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2744
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2745
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2746
|
+
end
|
|
2747
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2748
|
+
return event
|
|
2749
|
+
end}
|
|
2750
|
+
)
|
|
2751
|
+
__TS__ObjectDefineProperty(
|
|
2752
|
+
Unit,
|
|
2753
|
+
"itemMoveOrderEvent",
|
|
2754
|
+
{get = function(self)
|
|
2755
|
+
local event = __TS__New(Event)
|
|
2756
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2757
|
+
local slotTo = order - orderId("moveslot0")
|
|
2758
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2759
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2760
|
+
if slotFrom ~= nil then
|
|
2761
|
+
invoke(
|
|
2762
|
+
event,
|
|
2763
|
+
unit,
|
|
2764
|
+
item,
|
|
2765
|
+
slotFrom,
|
|
2766
|
+
slotTo
|
|
2767
|
+
)
|
|
2768
|
+
end
|
|
2769
|
+
end)
|
|
2770
|
+
end
|
|
2771
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2772
|
+
return event
|
|
2773
|
+
end}
|
|
2520
2774
|
)
|
|
2521
2775
|
__TS__ObjectDefineProperty(
|
|
2522
2776
|
Unit,
|
|
@@ -2543,6 +2797,10 @@ __TS__ObjectDefineProperty(
|
|
|
2543
2797
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2544
2798
|
return destroyEvent
|
|
2545
2799
|
end}
|
|
2800
|
+
)
|
|
2801
|
+
Unit.synchronize = synchronizer(
|
|
2802
|
+
function(unit) return unit.syncId end,
|
|
2803
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2546
2804
|
);
|
|
2547
2805
|
(function(self)
|
|
2548
2806
|
local leaveAbilityIds = postcompile(function()
|