warscript 0.0.1-dev.ee2345e → 0.0.1-dev.f024cc2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +5 -1
- package/attributes.lua +8 -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 +103 -13
- 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.lua +3 -1
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +79 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/timer.d.ts +8 -8
- package/core/types/timer.lua +25 -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 +844 -788
- package/engine/ability.d.ts +1 -1
- package/engine/behavior.d.ts +12 -10
- package/engine/behavior.lua +59 -33
- 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 +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 +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 +36 -2
- package/engine/behaviour/unit.lua +186 -0
- package/engine/buff.d.ts +104 -41
- package/engine/buff.lua +471 -212
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/internal/ability.d.ts +20 -13
- package/engine/internal/ability.lua +103 -76
- package/engine/internal/item/ability.lua +162 -4
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +7 -4
- package/engine/internal/item.lua +131 -28
- 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 +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/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 +3 -3
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit+transport.lua +4 -10
- package/engine/internal/unit-missile-launch.lua +33 -7
- package/engine/internal/unit.d.ts +87 -22
- package/engine/internal/unit.lua +585 -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 +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/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 +90 -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 +58 -7
- package/engine/object-data/entry/unit-type.lua +480 -75
- 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 +26 -3
- package/engine/object-field/ability.lua +54 -1
- package/engine/object-field/unit.d.ts +57 -3
- package/engine/object-field/unit.lua +207 -7
- package/engine/object-field.d.ts +17 -7
- package/engine/object-field.lua +187 -89
- 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 +39 -1
- package/engine/standard/entries/unit-type.lua +39 -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 +4 -0
- package/engine/standard/fields/unit.lua +7 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +249 -10
- package/engine/unit.d.ts +4 -0
- package/engine/unit.lua +13 -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 +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 +12 -5
- package/utility/arrays.lua +37 -3
- package/utility/bit-set.d.ts +0 -2
- 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 +12 -3
- package/utility/linked-set.lua +8 -2
- package/utility/lua-maps.d.ts +5 -2
- package/utility/lua-maps.lua +20 -0
- 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 +1 -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
|
@@ -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,21 @@ 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
|
|
51
65
|
local match = string.match
|
|
52
66
|
local ____tostring = _G.tostring
|
|
53
67
|
local setUnitAnimation = SetUnitAnimation
|
|
54
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
55
68
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
56
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
57
69
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
58
70
|
local getUnitRealField = BlzGetUnitRealField
|
|
59
71
|
local getHeroStr = GetHeroStr
|
|
@@ -72,9 +84,9 @@ local setUnitScale = SetUnitScale
|
|
|
72
84
|
local setUnitPosition = SetUnitPosition
|
|
73
85
|
local setUnitTimeScale = SetUnitTimeScale
|
|
74
86
|
local getHandleId = GetHandleId
|
|
87
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
75
88
|
local createUnit = CreateUnit
|
|
76
89
|
local killUnit = KillUnit
|
|
77
|
-
local setUnitExploded = SetUnitExploded
|
|
78
90
|
local removeUnit = RemoveUnit
|
|
79
91
|
local getUnitTypeId = GetUnitTypeId
|
|
80
92
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -90,8 +102,10 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
90
102
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
91
103
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
92
104
|
local isUnitInRange = IsUnitInRange
|
|
93
|
-
local
|
|
94
|
-
local
|
|
105
|
+
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
106
|
+
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
107
|
+
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
108
|
+
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
95
109
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
96
110
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
97
111
|
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
@@ -111,15 +125,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
111
125
|
local getIssuedOrderId = GetIssuedOrderId
|
|
112
126
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
113
127
|
local unitAlive = UnitAlive
|
|
114
|
-
local unitAddType = UnitAddType
|
|
115
|
-
local unitRemoveType = UnitRemoveType
|
|
116
|
-
local isUnitIllusion = IsUnitIllusion
|
|
117
|
-
local isUnitType = IsUnitType
|
|
118
128
|
local isUnitAlly = IsUnitAlly
|
|
119
129
|
local isUnitEnemy = IsUnitEnemy
|
|
120
130
|
local getOwningPlayer = GetOwningPlayer
|
|
121
|
-
local setUnitColor = SetUnitColor
|
|
122
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
123
131
|
____exports.UnitClassification = {}
|
|
124
132
|
local UnitClassification = ____exports.UnitClassification
|
|
125
133
|
do
|
|
@@ -129,6 +137,7 @@ do
|
|
|
129
137
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
130
138
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
131
139
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
140
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
132
141
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
133
142
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
134
143
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -275,16 +284,14 @@ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
|
|
|
275
284
|
end
|
|
276
285
|
local function dispatch(event, idGetter, argsGetter)
|
|
277
286
|
local initialized = false
|
|
278
|
-
local x = {}
|
|
279
287
|
return setmetatable(
|
|
280
|
-
|
|
288
|
+
{},
|
|
281
289
|
{
|
|
282
290
|
__index = function(self, id)
|
|
283
291
|
if type(id) ~= "number" then
|
|
284
292
|
return event[id]
|
|
285
293
|
end
|
|
286
294
|
if not initialized then
|
|
287
|
-
local invoke = Event.invoke
|
|
288
295
|
event:addListener(function(...)
|
|
289
296
|
local id = idGetter(...)
|
|
290
297
|
local dispatched = rawget(self, id)
|
|
@@ -322,7 +329,6 @@ local function dispatchAbility(event)
|
|
|
322
329
|
return event[id]
|
|
323
330
|
end
|
|
324
331
|
if not initialized then
|
|
325
|
-
local invoke = Event.invoke
|
|
326
332
|
event:addListener(function(unit, ability, ...)
|
|
327
333
|
local dispatched = rawget(self, ability.typeId)
|
|
328
334
|
if dispatched ~= nil then
|
|
@@ -339,6 +345,9 @@ local function dispatchAbility(event)
|
|
|
339
345
|
}
|
|
340
346
|
)
|
|
341
347
|
end
|
|
348
|
+
local function damagingEventPreventRetaliation(self)
|
|
349
|
+
self[0] = true
|
|
350
|
+
end
|
|
342
351
|
local function damageEventPreventDeath(self, callback, ...)
|
|
343
352
|
if self[0] ~= nil then
|
|
344
353
|
return
|
|
@@ -350,7 +359,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
350
359
|
rawset(self, 1 + i, (select(i, ...)))
|
|
351
360
|
end
|
|
352
361
|
end
|
|
353
|
-
local damageSetters = {
|
|
362
|
+
local damageSetters = {
|
|
363
|
+
amount = BlzSetEventDamage,
|
|
364
|
+
attackType = function(attackType)
|
|
365
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
366
|
+
end,
|
|
367
|
+
damageType = BlzSetEventDamageType,
|
|
368
|
+
weaponType = BlzSetEventWeaponType
|
|
369
|
+
}
|
|
354
370
|
local jlimitopByOperator = {
|
|
355
371
|
[0] = LESS_THAN_OR_EQUAL,
|
|
356
372
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -387,51 +403,171 @@ local getters = {
|
|
|
387
403
|
return BlzGetUnitArmor(unit)
|
|
388
404
|
end
|
|
389
405
|
}
|
|
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
|
-
|
|
406
|
+
____exports.UnitWeapon = __TS__Class()
|
|
407
|
+
local UnitWeapon = ____exports.UnitWeapon
|
|
408
|
+
UnitWeapon.name = "UnitWeapon"
|
|
409
|
+
function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
410
|
+
self.unit = unit
|
|
411
|
+
self.index = index
|
|
412
|
+
end
|
|
413
|
+
__TS__SetDescriptor(
|
|
414
|
+
UnitWeapon.prototype,
|
|
415
|
+
"cooldown",
|
|
416
|
+
{
|
|
417
|
+
get = function(self)
|
|
418
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index)
|
|
419
|
+
end,
|
|
420
|
+
set = function(self, cooldown)
|
|
421
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index, cooldown)
|
|
422
|
+
end
|
|
423
|
+
},
|
|
424
|
+
true
|
|
425
|
+
)
|
|
426
|
+
__TS__SetDescriptor(
|
|
427
|
+
UnitWeapon.prototype,
|
|
428
|
+
"damage",
|
|
429
|
+
{
|
|
430
|
+
get = function(self)
|
|
431
|
+
local minimumDamage = self.damageBase + self.damageDiceCount
|
|
432
|
+
local maximumDamage = self.damageBase + self.damageDiceCount * self.damageDiceSideCount
|
|
433
|
+
return {minimumDamage, maximumDamage}
|
|
434
|
+
end,
|
|
435
|
+
set = function(self, ____bindingPattern0)
|
|
436
|
+
local maximumDamage
|
|
437
|
+
local minimumDamage
|
|
438
|
+
minimumDamage = ____bindingPattern0[1]
|
|
439
|
+
maximumDamage = ____bindingPattern0[2]
|
|
440
|
+
self.damageBase = minimumDamage - 1
|
|
441
|
+
self.damageDiceCount = 1
|
|
442
|
+
self.damageDiceSideCount = maximumDamage - minimumDamage + 1
|
|
443
|
+
end
|
|
444
|
+
},
|
|
445
|
+
true
|
|
446
|
+
)
|
|
447
|
+
__TS__SetDescriptor(
|
|
448
|
+
UnitWeapon.prototype,
|
|
449
|
+
"allowedTargetCombatClassifications",
|
|
450
|
+
{
|
|
451
|
+
get = function(self)
|
|
452
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
453
|
+
end,
|
|
454
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
455
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
456
|
+
end
|
|
457
|
+
},
|
|
458
|
+
true
|
|
459
|
+
)
|
|
460
|
+
__TS__SetDescriptor(
|
|
461
|
+
UnitWeapon.prototype,
|
|
462
|
+
"damageBase",
|
|
463
|
+
{
|
|
464
|
+
get = function(self)
|
|
465
|
+
return BlzGetUnitBaseDamage(self.unit.handle, self.index)
|
|
466
|
+
end,
|
|
467
|
+
set = function(self, damageBase)
|
|
468
|
+
BlzSetUnitBaseDamage(self.unit.handle, self.index, damageBase)
|
|
469
|
+
end
|
|
470
|
+
},
|
|
471
|
+
true
|
|
472
|
+
)
|
|
473
|
+
__TS__SetDescriptor(
|
|
474
|
+
UnitWeapon.prototype,
|
|
475
|
+
"damageDiceCount",
|
|
476
|
+
{
|
|
477
|
+
get = function(self)
|
|
478
|
+
return BlzGetUnitDiceNumber(self.unit.handle, self.index)
|
|
479
|
+
end,
|
|
480
|
+
set = function(self, damageDiceCount)
|
|
481
|
+
BlzSetUnitDiceNumber(self.unit.handle, self.index, damageDiceCount)
|
|
482
|
+
end
|
|
483
|
+
},
|
|
484
|
+
true
|
|
485
|
+
)
|
|
486
|
+
__TS__SetDescriptor(
|
|
487
|
+
UnitWeapon.prototype,
|
|
488
|
+
"damageDiceSideCount",
|
|
489
|
+
{
|
|
490
|
+
get = function(self)
|
|
491
|
+
return BlzGetUnitDiceSides(self.unit.handle, self.index)
|
|
492
|
+
end,
|
|
493
|
+
set = function(self, damageDiceSideCount)
|
|
494
|
+
BlzSetUnitDiceSides(self.unit.handle, self.index, damageDiceSideCount)
|
|
495
|
+
end
|
|
496
|
+
},
|
|
497
|
+
true
|
|
498
|
+
)
|
|
499
|
+
__TS__SetDescriptor(
|
|
500
|
+
UnitWeapon.prototype,
|
|
501
|
+
"range",
|
|
502
|
+
{
|
|
503
|
+
get = function(self)
|
|
504
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_RANGE, self.index)
|
|
505
|
+
end,
|
|
506
|
+
set = function(self, range)
|
|
507
|
+
local handle = self.unit.handle
|
|
508
|
+
local index = self.index
|
|
509
|
+
setUnitWeaponRealField(
|
|
510
|
+
handle,
|
|
511
|
+
UNIT_WEAPON_RF_ATTACK_RANGE,
|
|
512
|
+
index + 1,
|
|
513
|
+
getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index + 1) + (range - getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index))
|
|
514
|
+
)
|
|
515
|
+
end
|
|
516
|
+
},
|
|
517
|
+
true
|
|
518
|
+
)
|
|
519
|
+
__TS__SetDescriptor(
|
|
520
|
+
UnitWeapon.prototype,
|
|
521
|
+
"impactDelay",
|
|
522
|
+
{
|
|
523
|
+
get = function(self)
|
|
524
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index)
|
|
525
|
+
end,
|
|
526
|
+
set = function(self, impactDelay)
|
|
527
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index, impactDelay)
|
|
528
|
+
end
|
|
529
|
+
},
|
|
530
|
+
true
|
|
531
|
+
)
|
|
532
|
+
__TS__SetDescriptor(
|
|
533
|
+
UnitWeapon.prototype,
|
|
534
|
+
"missileArc",
|
|
535
|
+
{
|
|
536
|
+
get = function(self)
|
|
537
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index)
|
|
538
|
+
end,
|
|
539
|
+
set = function(self, missileArc)
|
|
540
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index, missileArc)
|
|
541
|
+
end
|
|
542
|
+
},
|
|
543
|
+
true
|
|
544
|
+
)
|
|
545
|
+
__TS__SetDescriptor(
|
|
546
|
+
UnitWeapon.prototype,
|
|
547
|
+
"missileModelPath",
|
|
548
|
+
{
|
|
549
|
+
get = function(self)
|
|
550
|
+
return getUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index)
|
|
551
|
+
end,
|
|
552
|
+
set = function(self, missileModelPath)
|
|
553
|
+
setUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index, missileModelPath)
|
|
554
|
+
end
|
|
555
|
+
},
|
|
556
|
+
true
|
|
557
|
+
)
|
|
558
|
+
__TS__SetDescriptor(
|
|
559
|
+
UnitWeapon.prototype,
|
|
560
|
+
"missileSpeed",
|
|
561
|
+
{
|
|
562
|
+
get = function(self)
|
|
563
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index)
|
|
564
|
+
end,
|
|
565
|
+
set = function(self, missileSpeed)
|
|
566
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index, missileSpeed)
|
|
567
|
+
end
|
|
568
|
+
},
|
|
569
|
+
true
|
|
570
|
+
)
|
|
435
571
|
local unitInventorySize = UnitInventorySize
|
|
436
572
|
local unitItemInSlot = UnitItemInSlot
|
|
437
573
|
local getItemAbility = BlzGetItemAbility
|
|
@@ -442,8 +578,6 @@ local getAbilityName = GetAbilityName
|
|
|
442
578
|
local unitAddAbility = UnitAddAbility
|
|
443
579
|
local getUnitGoldCost = GetUnitGoldCost
|
|
444
580
|
local getUnitLumberCost = GetUnitWoodCost
|
|
445
|
-
local unitMakeAbilityPermanent = UnitMakeAbilityPermanent
|
|
446
|
-
local unitAddItem = UnitAddItem
|
|
447
581
|
local unitRemoveAbility = UnitRemoveAbility
|
|
448
582
|
local function retrieveAbility(unit, ability, abilityId)
|
|
449
583
|
if ability == nil then
|
|
@@ -453,17 +587,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
453
587
|
____exports.Unit:of(unit)
|
|
454
588
|
)
|
|
455
589
|
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
590
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
468
591
|
local item = unitItemInSlot(unit, i)
|
|
469
592
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -520,12 +643,44 @@ for ____, player in ipairs(Player.all) do
|
|
|
520
643
|
ShowUnit(dummy, false)
|
|
521
644
|
dummies[player] = dummy
|
|
522
645
|
end
|
|
646
|
+
local function delayHealthChecksCallback(unit)
|
|
647
|
+
local counter = (unit[103] or 0) - 1
|
|
648
|
+
if counter ~= 0 then
|
|
649
|
+
unit[103] = counter
|
|
650
|
+
return
|
|
651
|
+
end
|
|
652
|
+
unit[103] = nil
|
|
653
|
+
local healthBonus = unit[104]
|
|
654
|
+
if healthBonus ~= nil then
|
|
655
|
+
unit[104] = nil
|
|
656
|
+
local handle = unit.handle
|
|
657
|
+
BlzSetUnitMaxHP(
|
|
658
|
+
handle,
|
|
659
|
+
BlzGetUnitMaxHP(handle) - healthBonus
|
|
660
|
+
)
|
|
661
|
+
end
|
|
662
|
+
end
|
|
663
|
+
local nextSyncId = 1
|
|
664
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
665
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
666
|
+
local function addAbility(unit, abilityTypeId)
|
|
667
|
+
local ____unitAddAbility_result_0
|
|
668
|
+
if unitAddAbility(unit, abilityTypeId) then
|
|
669
|
+
____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
|
|
670
|
+
else
|
|
671
|
+
____unitAddAbility_result_0 = nil
|
|
672
|
+
end
|
|
673
|
+
return ____unitAddAbility_result_0
|
|
674
|
+
end
|
|
523
675
|
____exports.Unit = __TS__Class()
|
|
524
676
|
local Unit = ____exports.Unit
|
|
525
677
|
Unit.name = "Unit"
|
|
526
678
|
__TS__ClassExtends(Unit, Handle)
|
|
527
679
|
function Unit.prototype.____constructor(self, handle)
|
|
528
680
|
Handle.prototype.____constructor(self, handle)
|
|
681
|
+
local ____nextSyncId_1 = nextSyncId
|
|
682
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
683
|
+
self.syncId = ____nextSyncId_1
|
|
529
684
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
530
685
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
531
686
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -538,6 +693,7 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
538
693
|
fourCC("Amrf")
|
|
539
694
|
))
|
|
540
695
|
end
|
|
696
|
+
unitBySyncId[self.syncId] = self
|
|
541
697
|
local ____ = self.abilities
|
|
542
698
|
end
|
|
543
699
|
function Unit.prototype.getEvent(self, event, collector)
|
|
@@ -556,6 +712,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
556
712
|
end
|
|
557
713
|
function Unit.prototype.onDestroy(self)
|
|
558
714
|
local handle = self.handle
|
|
715
|
+
self[107] = getUnitX(handle)
|
|
716
|
+
self[108] = getUnitY(handle)
|
|
559
717
|
if not self._owner then
|
|
560
718
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
561
719
|
end
|
|
@@ -623,17 +781,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
623
781
|
end}
|
|
624
782
|
end
|
|
625
783
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
626
|
-
local
|
|
627
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
784
|
+
local ____combatClassification_2 = combatClassification
|
|
785
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
628
786
|
end
|
|
629
787
|
function Unit.prototype.addClassification(self, classification)
|
|
630
|
-
return
|
|
788
|
+
return UnitAddType(self.handle, classification)
|
|
631
789
|
end
|
|
632
790
|
function Unit.prototype.removeClassification(self, classification)
|
|
633
|
-
return
|
|
791
|
+
return UnitRemoveType(self.handle, classification)
|
|
634
792
|
end
|
|
635
793
|
function Unit.prototype.hasClassification(self, classification)
|
|
636
|
-
return
|
|
794
|
+
return IsUnitType(self.handle, classification)
|
|
637
795
|
end
|
|
638
796
|
function Unit.prototype.isVisibleTo(self, player)
|
|
639
797
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -642,13 +800,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
642
800
|
return isUnitInvisible(self.handle, player.handle)
|
|
643
801
|
end
|
|
644
802
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
645
|
-
local
|
|
803
|
+
local ____temp_3
|
|
646
804
|
if type(x) == "number" then
|
|
647
|
-
|
|
805
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
648
806
|
else
|
|
649
|
-
|
|
807
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
650
808
|
end
|
|
651
|
-
return
|
|
809
|
+
return ____temp_3
|
|
652
810
|
end
|
|
653
811
|
function Unit.prototype.isAllyOf(self, unit)
|
|
654
812
|
return isUnitAlly(
|
|
@@ -666,13 +824,29 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
666
824
|
if type(animation) == "number" then
|
|
667
825
|
setUnitAnimationByIndex(self.handle, animation)
|
|
668
826
|
elseif rarity then
|
|
669
|
-
|
|
827
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
670
828
|
else
|
|
671
829
|
setUnitAnimation(self.handle, animation)
|
|
672
830
|
end
|
|
673
831
|
end
|
|
832
|
+
function Unit.prototype.resetAnimation(self)
|
|
833
|
+
ResetUnitAnimation(self.handle)
|
|
834
|
+
end
|
|
674
835
|
function Unit.prototype.queueAnimation(self, animation)
|
|
675
|
-
|
|
836
|
+
QueueUnitAnimation(self.handle, animation)
|
|
837
|
+
end
|
|
838
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
839
|
+
if target:isAllowedTarget(self, self.firstWeapon.allowedTargetCombatClassifications) then
|
|
840
|
+
return self.firstWeapon
|
|
841
|
+
end
|
|
842
|
+
if target:isAllowedTarget(target, self.secondWeapon.allowedTargetCombatClassifications) then
|
|
843
|
+
return self.secondWeapon
|
|
844
|
+
end
|
|
845
|
+
return nil
|
|
846
|
+
end
|
|
847
|
+
function Unit.prototype.delayHealthChecks(self)
|
|
848
|
+
self[103] = (self[103] or 0) + 1
|
|
849
|
+
Timer:run(delayHealthChecksCallback, self)
|
|
676
850
|
end
|
|
677
851
|
function Unit.prototype.setPosition(self, x, y)
|
|
678
852
|
setUnitPosition(self.handle, x, y)
|
|
@@ -681,14 +855,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
681
855
|
return IsUnitSelected(self.handle, player.handle)
|
|
682
856
|
end
|
|
683
857
|
function Unit.prototype.explode(self)
|
|
684
|
-
|
|
858
|
+
SetUnitExploded(self.handle, true)
|
|
685
859
|
killUnit(self.handle)
|
|
686
860
|
end
|
|
687
861
|
function Unit.prototype.kill(self)
|
|
688
862
|
killUnit(self.handle)
|
|
689
863
|
end
|
|
690
|
-
function Unit.prototype.revive(self,
|
|
691
|
-
|
|
864
|
+
function Unit.prototype.revive(self, x, y, doEffect)
|
|
865
|
+
local ____ReviveHero_6 = ReviveHero
|
|
866
|
+
local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
|
|
867
|
+
local ____doEffect_4 = doEffect
|
|
868
|
+
if ____doEffect_4 == nil then
|
|
869
|
+
____doEffect_4 = false
|
|
870
|
+
end
|
|
871
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
872
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
692
873
|
end
|
|
693
874
|
function Unit.prototype.healTarget(self, target, amount)
|
|
694
875
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -728,20 +909,19 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
728
909
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
729
910
|
end
|
|
730
911
|
function Unit.prototype.itemInSlot(self, slot)
|
|
731
|
-
return Item:of(
|
|
912
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
732
913
|
end
|
|
733
914
|
function Unit.prototype.addAbility(self, abilityId)
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
915
|
+
local ability = UnitAbility:of(
|
|
916
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
917
|
+
abilityId,
|
|
918
|
+
self
|
|
919
|
+
)
|
|
920
|
+
if ability ~= nil then
|
|
740
921
|
local abilities = self.abilities
|
|
741
922
|
abilities[#abilities + 1] = ability
|
|
742
|
-
return ability
|
|
743
923
|
end
|
|
744
|
-
return
|
|
924
|
+
return ability
|
|
745
925
|
end
|
|
746
926
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
747
927
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -756,19 +936,11 @@ function Unit.prototype.hasAbility(self, abilityId)
|
|
|
756
936
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
757
937
|
end
|
|
758
938
|
function Unit.prototype.getAbilityById(self, abilityId)
|
|
759
|
-
local
|
|
760
|
-
|
|
761
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
762
|
-
return nil
|
|
763
|
-
end
|
|
764
|
-
return UnitAbility:of(
|
|
765
|
-
getUnitAbility(self.handle, abilityId),
|
|
766
|
-
abilityId,
|
|
767
|
-
self
|
|
768
|
-
)
|
|
939
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
940
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
769
941
|
end
|
|
770
942
|
function Unit.prototype.removeAbility(self, abilityId)
|
|
771
|
-
if
|
|
943
|
+
if doUnitAbilityAction(self.handle, abilityId, unitRemoveAbility, abilityId) then
|
|
772
944
|
local abilities = self.abilities
|
|
773
945
|
for i = 1, #abilities do
|
|
774
946
|
if abilities[i].typeId == abilityId then
|
|
@@ -784,18 +956,43 @@ end
|
|
|
784
956
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
785
957
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
786
958
|
end
|
|
959
|
+
function Unit.prototype.getAbilityRemainingCooldown(self, abilityId)
|
|
960
|
+
return BlzGetUnitAbilityCooldownRemaining(self.handle, abilityId)
|
|
961
|
+
end
|
|
787
962
|
function Unit.prototype.startAbilityCooldown(self, abilityId, cooldown)
|
|
788
963
|
BlzStartUnitAbilityCooldown(self.handle, abilityId, cooldown)
|
|
789
964
|
end
|
|
790
965
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
791
966
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
792
967
|
end
|
|
968
|
+
function Unit.prototype.interruptMovement(self)
|
|
969
|
+
local handle = self.handle
|
|
970
|
+
unitDisableAbility(
|
|
971
|
+
handle,
|
|
972
|
+
fourCC("Amov"),
|
|
973
|
+
true,
|
|
974
|
+
false
|
|
975
|
+
)
|
|
976
|
+
unitDisableAbility(
|
|
977
|
+
handle,
|
|
978
|
+
fourCC("Amov"),
|
|
979
|
+
false,
|
|
980
|
+
false
|
|
981
|
+
)
|
|
982
|
+
end
|
|
793
983
|
function Unit.prototype.interruptAttack(self)
|
|
794
984
|
unitInterruptAttack(self.handle)
|
|
795
985
|
end
|
|
796
986
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
797
|
-
|
|
798
|
-
unitDisableAbility(
|
|
987
|
+
local handle = self.handle
|
|
988
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
989
|
+
Timer:run(
|
|
990
|
+
unitDisableAbility,
|
|
991
|
+
handle,
|
|
992
|
+
abilityId,
|
|
993
|
+
false,
|
|
994
|
+
false
|
|
995
|
+
)
|
|
799
996
|
end
|
|
800
997
|
function Unit.prototype.getDistanceTo(self, target)
|
|
801
998
|
local handle = self.handle
|
|
@@ -855,18 +1052,18 @@ function Unit.prototype.unpauseEx(self)
|
|
|
855
1052
|
self:decrementStunCounter()
|
|
856
1053
|
end
|
|
857
1054
|
function Unit.prototype.incrementStunCounter(self)
|
|
858
|
-
local stunCounter = self[
|
|
859
|
-
if not self[
|
|
1055
|
+
local stunCounter = self[102] or 0
|
|
1056
|
+
if not self[101] or stunCounter >= 0 then
|
|
860
1057
|
BlzPauseUnitEx(self.handle, true)
|
|
861
1058
|
end
|
|
862
|
-
self[
|
|
1059
|
+
self[102] = stunCounter + 1
|
|
863
1060
|
end
|
|
864
1061
|
function Unit.prototype.decrementStunCounter(self)
|
|
865
|
-
local stunCounter = self[
|
|
866
|
-
if not self[
|
|
1062
|
+
local stunCounter = self[102] or 0
|
|
1063
|
+
if not self[101] or stunCounter >= 1 then
|
|
867
1064
|
BlzPauseUnitEx(self.handle, false)
|
|
868
1065
|
end
|
|
869
|
-
self[
|
|
1066
|
+
self[102] = stunCounter - 1
|
|
870
1067
|
end
|
|
871
1068
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
872
1069
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -968,8 +1165,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
968
1165
|
)
|
|
969
1166
|
return targetCollection
|
|
970
1167
|
end
|
|
971
|
-
function Unit.getSelectionOf(self, player)
|
|
972
|
-
|
|
1168
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1169
|
+
if target == nil then
|
|
1170
|
+
target = {}
|
|
1171
|
+
end
|
|
1172
|
+
targetCollection = target
|
|
973
1173
|
targetCollectionNextIndex = 1
|
|
974
1174
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
975
1175
|
return targetCollection
|
|
@@ -991,6 +1191,9 @@ end
|
|
|
991
1191
|
function Unit.prototype.__tostring(self)
|
|
992
1192
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
993
1193
|
end
|
|
1194
|
+
function Unit.getBySyncId(self, syncId)
|
|
1195
|
+
return unitBySyncId[syncId]
|
|
1196
|
+
end
|
|
994
1197
|
__TS__SetDescriptor(
|
|
995
1198
|
Unit.prototype,
|
|
996
1199
|
"_deltas",
|
|
@@ -1050,7 +1253,15 @@ __TS__SetDescriptor(
|
|
|
1050
1253
|
Unit.prototype,
|
|
1051
1254
|
"isIllusion",
|
|
1052
1255
|
{get = function(self)
|
|
1053
|
-
return
|
|
1256
|
+
return IsUnitIllusion(self.handle)
|
|
1257
|
+
end},
|
|
1258
|
+
true
|
|
1259
|
+
)
|
|
1260
|
+
__TS__SetDescriptor(
|
|
1261
|
+
Unit.prototype,
|
|
1262
|
+
"isStunned",
|
|
1263
|
+
{get = function(self)
|
|
1264
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1054
1265
|
end},
|
|
1055
1266
|
true
|
|
1056
1267
|
)
|
|
@@ -1071,12 +1282,27 @@ __TS__SetDescriptor(
|
|
|
1071
1282
|
Unit.prototype,
|
|
1072
1283
|
"weapons",
|
|
1073
1284
|
{get = function(self)
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1285
|
+
return {self.firstWeapon, self.secondWeapon}
|
|
1286
|
+
end},
|
|
1287
|
+
true
|
|
1288
|
+
)
|
|
1289
|
+
__TS__SetDescriptor(
|
|
1290
|
+
Unit.prototype,
|
|
1291
|
+
"firstWeapon",
|
|
1292
|
+
{get = function(self)
|
|
1293
|
+
local weapon = __TS__New(____exports.UnitWeapon, self, 0)
|
|
1294
|
+
rawset(self, "firstWeapon", weapon)
|
|
1295
|
+
return weapon
|
|
1296
|
+
end},
|
|
1297
|
+
true
|
|
1298
|
+
)
|
|
1299
|
+
__TS__SetDescriptor(
|
|
1300
|
+
Unit.prototype,
|
|
1301
|
+
"secondWeapon",
|
|
1302
|
+
{get = function(self)
|
|
1303
|
+
local weapon = __TS__New(____exports.UnitWeapon, self, 1)
|
|
1304
|
+
rawset(self, "secondWeapon", weapon)
|
|
1305
|
+
return weapon
|
|
1080
1306
|
end},
|
|
1081
1307
|
true
|
|
1082
1308
|
)
|
|
@@ -1112,6 +1338,19 @@ __TS__SetDescriptor(
|
|
|
1112
1338
|
},
|
|
1113
1339
|
true
|
|
1114
1340
|
)
|
|
1341
|
+
__TS__SetDescriptor(
|
|
1342
|
+
Unit.prototype,
|
|
1343
|
+
"primaryAttribute",
|
|
1344
|
+
{
|
|
1345
|
+
get = function(self)
|
|
1346
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1347
|
+
end,
|
|
1348
|
+
set = function(self, primaryAttribute)
|
|
1349
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1350
|
+
end
|
|
1351
|
+
},
|
|
1352
|
+
true
|
|
1353
|
+
)
|
|
1115
1354
|
__TS__SetDescriptor(
|
|
1116
1355
|
Unit.prototype,
|
|
1117
1356
|
"strengthBase",
|
|
@@ -1233,17 +1472,17 @@ __TS__SetDescriptor(
|
|
|
1233
1472
|
"isTeamGlowVisible",
|
|
1234
1473
|
{
|
|
1235
1474
|
get = function(self)
|
|
1236
|
-
return not self[
|
|
1475
|
+
return not self[106]
|
|
1237
1476
|
end,
|
|
1238
1477
|
set = function(self, isTeamGlowVisible)
|
|
1239
|
-
|
|
1240
|
-
local
|
|
1478
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1479
|
+
local ____temp_7
|
|
1241
1480
|
if not isTeamGlowVisible then
|
|
1242
|
-
|
|
1481
|
+
____temp_7 = true
|
|
1243
1482
|
else
|
|
1244
|
-
|
|
1483
|
+
____temp_7 = nil
|
|
1245
1484
|
end
|
|
1246
|
-
self[
|
|
1485
|
+
self[106] = ____temp_7
|
|
1247
1486
|
end
|
|
1248
1487
|
},
|
|
1249
1488
|
true
|
|
@@ -1252,9 +1491,9 @@ __TS__SetDescriptor(
|
|
|
1252
1491
|
Unit.prototype,
|
|
1253
1492
|
"color",
|
|
1254
1493
|
{set = function(self, color)
|
|
1255
|
-
|
|
1256
|
-
if self[
|
|
1257
|
-
|
|
1494
|
+
SetUnitColor(self.handle, color.handle)
|
|
1495
|
+
if self[106] then
|
|
1496
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1258
1497
|
end
|
|
1259
1498
|
end},
|
|
1260
1499
|
true
|
|
@@ -1277,10 +1516,14 @@ __TS__SetDescriptor(
|
|
|
1277
1516
|
"maxHealth",
|
|
1278
1517
|
{
|
|
1279
1518
|
get = function(self)
|
|
1280
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1519
|
+
return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
|
|
1281
1520
|
end,
|
|
1282
1521
|
set = function(self, maxHealth)
|
|
1283
|
-
|
|
1522
|
+
if maxHealth < 1 and self[103] ~= nil then
|
|
1523
|
+
self[104] = (self[104] or 0) + (1 - maxHealth)
|
|
1524
|
+
maxHealth = 1
|
|
1525
|
+
end
|
|
1526
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
|
|
1284
1527
|
end
|
|
1285
1528
|
},
|
|
1286
1529
|
true
|
|
@@ -1322,10 +1565,10 @@ __TS__SetDescriptor(
|
|
|
1322
1565
|
"health",
|
|
1323
1566
|
{
|
|
1324
1567
|
get = function(self)
|
|
1325
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1568
|
+
return GetWidgetLife(self.handle) - (self[105] or 0)
|
|
1326
1569
|
end,
|
|
1327
1570
|
set = function(self, health)
|
|
1328
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1571
|
+
SetWidgetLife(self.handle, health + (self[105] or 0))
|
|
1329
1572
|
end
|
|
1330
1573
|
},
|
|
1331
1574
|
true
|
|
@@ -1419,7 +1662,7 @@ __TS__SetDescriptor(
|
|
|
1419
1662
|
"x",
|
|
1420
1663
|
{
|
|
1421
1664
|
get = function(self)
|
|
1422
|
-
return getUnitX(self.handle)
|
|
1665
|
+
return self[107] or getUnitX(self.handle)
|
|
1423
1666
|
end,
|
|
1424
1667
|
set = function(self, v)
|
|
1425
1668
|
SetUnitX(self.handle, v)
|
|
@@ -1432,7 +1675,7 @@ __TS__SetDescriptor(
|
|
|
1432
1675
|
"y",
|
|
1433
1676
|
{
|
|
1434
1677
|
get = function(self)
|
|
1435
|
-
return getUnitY(self.handle)
|
|
1678
|
+
return self[108] or getUnitY(self.handle)
|
|
1436
1679
|
end,
|
|
1437
1680
|
set = function(self, v)
|
|
1438
1681
|
SetUnitY(self.handle, v)
|
|
@@ -1518,10 +1761,10 @@ __TS__SetDescriptor(
|
|
|
1518
1761
|
"gold",
|
|
1519
1762
|
{
|
|
1520
1763
|
get = function(self)
|
|
1521
|
-
return
|
|
1764
|
+
return GetResourceAmount(self.handle)
|
|
1522
1765
|
end,
|
|
1523
1766
|
set = function(self, gold)
|
|
1524
|
-
|
|
1767
|
+
SetResourceAmount(self.handle, gold)
|
|
1525
1768
|
end
|
|
1526
1769
|
},
|
|
1527
1770
|
true
|
|
@@ -1536,17 +1779,17 @@ __TS__SetDescriptor(
|
|
|
1536
1779
|
set = function(self, isPaused)
|
|
1537
1780
|
local handle = self.handle
|
|
1538
1781
|
if isPaused and not IsUnitPaused(handle) then
|
|
1539
|
-
self[
|
|
1540
|
-
for _ = self[
|
|
1782
|
+
self[101] = true
|
|
1783
|
+
for _ = self[102] or 0, -1 do
|
|
1541
1784
|
BlzPauseUnitEx(handle, true)
|
|
1542
1785
|
end
|
|
1543
1786
|
PauseUnit(handle, true)
|
|
1544
1787
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1545
1788
|
PauseUnit(handle, false)
|
|
1546
|
-
for _ = self[
|
|
1789
|
+
for _ = self[102] or 0, -1 do
|
|
1547
1790
|
BlzPauseUnitEx(handle, false)
|
|
1548
1791
|
end
|
|
1549
|
-
self[
|
|
1792
|
+
self[101] = nil
|
|
1550
1793
|
end
|
|
1551
1794
|
end
|
|
1552
1795
|
},
|
|
@@ -1649,6 +1892,19 @@ __TS__SetDescriptor(
|
|
|
1649
1892
|
end},
|
|
1650
1893
|
true
|
|
1651
1894
|
)
|
|
1895
|
+
__TS__SetDescriptor(
|
|
1896
|
+
Unit.prototype,
|
|
1897
|
+
"movementType",
|
|
1898
|
+
{
|
|
1899
|
+
get = function(self)
|
|
1900
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1901
|
+
end,
|
|
1902
|
+
set = function(self, movementType)
|
|
1903
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1904
|
+
end
|
|
1905
|
+
},
|
|
1906
|
+
true
|
|
1907
|
+
)
|
|
1652
1908
|
__TS__SetDescriptor(
|
|
1653
1909
|
Unit.prototype,
|
|
1654
1910
|
"pathing",
|
|
@@ -1830,6 +2086,14 @@ __TS__SetDescriptor(
|
|
|
1830
2086
|
end},
|
|
1831
2087
|
true
|
|
1832
2088
|
)
|
|
2089
|
+
__TS__SetDescriptor(
|
|
2090
|
+
Unit.prototype,
|
|
2091
|
+
"targetAcquiredEvent",
|
|
2092
|
+
{get = function(self)
|
|
2093
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2094
|
+
end},
|
|
2095
|
+
true
|
|
2096
|
+
)
|
|
1833
2097
|
__TS__SetDescriptor(
|
|
1834
2098
|
Unit.prototype,
|
|
1835
2099
|
"onSelect",
|
|
@@ -1903,7 +2167,6 @@ Unit.onDecay = __TS__New(
|
|
|
1903
2167
|
Unit.onResurrect = __TS__New(
|
|
1904
2168
|
InitializingEvent,
|
|
1905
2169
|
function(event)
|
|
1906
|
-
local invoke = Event.invoke
|
|
1907
2170
|
local dead = setmetatable({}, {__mode = "k"})
|
|
1908
2171
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
1909
2172
|
dead[unit] = true
|
|
@@ -1919,10 +2182,15 @@ Unit.onResurrect = __TS__New(
|
|
|
1919
2182
|
Unit.morphEvent = __TS__New(
|
|
1920
2183
|
InitializingEvent,
|
|
1921
2184
|
function(event)
|
|
2185
|
+
local function ifNotLeft(unit)
|
|
2186
|
+
local handle = unit.handle
|
|
2187
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
|
|
2188
|
+
invoke(event, unit)
|
|
2189
|
+
end
|
|
2190
|
+
end
|
|
1922
2191
|
____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
|
|
1923
2192
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
1924
|
-
|
|
1925
|
-
Timer:run(Event.invoke, event, unit)
|
|
2193
|
+
Timer:run(ifNotLeft, unit)
|
|
1926
2194
|
end
|
|
1927
2195
|
end)
|
|
1928
2196
|
end
|
|
@@ -1960,27 +2228,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
|
|
|
1960
2228
|
Unit.onTargetCast = dispatchId(__TS__New(
|
|
1961
2229
|
InitializingEvent,
|
|
1962
2230
|
function(event)
|
|
1963
|
-
local invoke = Event.invoke
|
|
1964
2231
|
local function listener(unit, id)
|
|
1965
|
-
local
|
|
2232
|
+
local ____GetSpellTargetUnit_result_10
|
|
1966
2233
|
if GetSpellTargetUnit() then
|
|
1967
|
-
|
|
2234
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
1968
2235
|
else
|
|
1969
|
-
local
|
|
2236
|
+
local ____GetSpellTargetItem_result_9
|
|
1970
2237
|
if GetSpellTargetItem() then
|
|
1971
|
-
|
|
2238
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
1972
2239
|
else
|
|
1973
|
-
local
|
|
2240
|
+
local ____GetSpellTargetDestructable_result_8
|
|
1974
2241
|
if GetSpellTargetDestructable() then
|
|
1975
|
-
|
|
2242
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
1976
2243
|
else
|
|
1977
|
-
|
|
2244
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
1978
2245
|
end
|
|
1979
|
-
|
|
2246
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
1980
2247
|
end
|
|
1981
|
-
|
|
2248
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
1982
2249
|
end
|
|
1983
|
-
local target =
|
|
2250
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
1984
2251
|
if target then
|
|
1985
2252
|
invoke(event, unit, id, target)
|
|
1986
2253
|
end
|
|
@@ -2152,10 +2419,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2152
2419
|
____exports.UnitTriggerEvent,
|
|
2153
2420
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2154
2421
|
function()
|
|
2155
|
-
local
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2422
|
+
local handle = getOrderedUnit()
|
|
2423
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2424
|
+
local unit = ____exports.Unit:of(handle)
|
|
2425
|
+
if unit.state == 1 then
|
|
2426
|
+
return unit, getIssuedOrderId()
|
|
2427
|
+
end
|
|
2159
2428
|
end
|
|
2160
2429
|
return IgnoreEvent
|
|
2161
2430
|
end
|
|
@@ -2177,7 +2446,6 @@ Unit.autoAttackStartEvent = __TS__New(
|
|
|
2177
2446
|
)
|
|
2178
2447
|
Unit.onDamaging = (function()
|
|
2179
2448
|
local event = __TS__New(Event)
|
|
2180
|
-
local invoke = Event.invoke
|
|
2181
2449
|
local trigger = CreateTrigger()
|
|
2182
2450
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2183
2451
|
TriggerAddCondition(
|
|
@@ -2187,13 +2455,19 @@ Unit.onDamaging = (function()
|
|
|
2187
2455
|
if source and source.typeId == dummyUnitId then
|
|
2188
2456
|
source = nil
|
|
2189
2457
|
end
|
|
2190
|
-
local target = BlzGetEventDamageTarget()
|
|
2458
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2459
|
+
local metadata = damageMetadataByTarget[target]
|
|
2460
|
+
damageMetadataByTarget[target] = nil
|
|
2191
2461
|
local data = {
|
|
2192
2462
|
amount = GetEventDamage(),
|
|
2193
|
-
attackType = BlzGetEventAttackType(),
|
|
2463
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2194
2464
|
damageType = BlzGetEventDamageType(),
|
|
2195
2465
|
weaponType = BlzGetEventWeaponType(),
|
|
2196
|
-
|
|
2466
|
+
metadata = metadata,
|
|
2467
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2468
|
+
originalAmount = GetEventDamage(),
|
|
2469
|
+
originalMetadata = metadata,
|
|
2470
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2197
2471
|
}
|
|
2198
2472
|
if data.isAttack and source then
|
|
2199
2473
|
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 +2481,36 @@ Unit.onDamaging = (function()
|
|
|
2207
2481
|
invoke(
|
|
2208
2482
|
event,
|
|
2209
2483
|
source,
|
|
2210
|
-
|
|
2484
|
+
target,
|
|
2211
2485
|
setmetatable(
|
|
2212
2486
|
{},
|
|
2213
2487
|
{
|
|
2214
2488
|
__index = data,
|
|
2215
2489
|
__newindex = function(self, key, value)
|
|
2216
|
-
damageSetters[key]
|
|
2490
|
+
local damageSetter = damageSetters[key]
|
|
2491
|
+
if damageSetter ~= nil then
|
|
2492
|
+
damageSetter(value)
|
|
2493
|
+
end
|
|
2217
2494
|
data[key] = value
|
|
2218
2495
|
end
|
|
2219
2496
|
}
|
|
2220
2497
|
)
|
|
2221
2498
|
)
|
|
2499
|
+
if data[0] and source then
|
|
2500
|
+
local sourceOwner = source.owner.handle
|
|
2501
|
+
data[1] = sourceOwner
|
|
2502
|
+
local targetOwner = target.owner.handle
|
|
2503
|
+
data[2] = targetOwner
|
|
2504
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2505
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2506
|
+
data[3] = true
|
|
2507
|
+
end
|
|
2508
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2509
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2510
|
+
data[4] = true
|
|
2511
|
+
end
|
|
2512
|
+
end
|
|
2513
|
+
damagingEventByTarget[target] = data
|
|
2222
2514
|
return
|
|
2223
2515
|
end
|
|
2224
2516
|
BlzSetEventDamage(0)
|
|
@@ -2226,7 +2518,7 @@ Unit.onDamaging = (function()
|
|
|
2226
2518
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2227
2519
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2228
2520
|
local sourceOwner = source.owner.handle
|
|
2229
|
-
local targetOwner =
|
|
2521
|
+
local targetOwner = target.owner.handle
|
|
2230
2522
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2231
2523
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2232
2524
|
Timer:run(function()
|
|
@@ -2242,23 +2534,19 @@ Unit.onDamaging = (function()
|
|
|
2242
2534
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2243
2535
|
local condition = ____value[1]
|
|
2244
2536
|
local action = ____value[2]
|
|
2245
|
-
if condition(
|
|
2246
|
-
source,
|
|
2247
|
-
____exports.Unit:of(target),
|
|
2248
|
-
data
|
|
2249
|
-
) then
|
|
2537
|
+
if condition(source, target, data) then
|
|
2250
2538
|
action(
|
|
2251
2539
|
source,
|
|
2252
|
-
|
|
2540
|
+
target,
|
|
2253
2541
|
setmetatable(
|
|
2254
2542
|
{fire = function()
|
|
2255
2543
|
UnitDamageTarget(
|
|
2256
2544
|
source.handle,
|
|
2257
|
-
target,
|
|
2545
|
+
target.handle,
|
|
2258
2546
|
data.amount,
|
|
2259
2547
|
true,
|
|
2260
2548
|
true,
|
|
2261
|
-
data.attackType,
|
|
2549
|
+
attackTypeToNative(data.attackType),
|
|
2262
2550
|
data.damageType,
|
|
2263
2551
|
data.weaponType
|
|
2264
2552
|
)
|
|
@@ -2276,7 +2564,6 @@ end)()
|
|
|
2276
2564
|
Unit.onDamage = __TS__New(
|
|
2277
2565
|
InitializingEvent,
|
|
2278
2566
|
function(event)
|
|
2279
|
-
local invoke = Event.invoke
|
|
2280
2567
|
local trigger = CreateTrigger()
|
|
2281
2568
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2282
2569
|
TriggerAddCondition(
|
|
@@ -2286,29 +2573,54 @@ Unit.onDamage = __TS__New(
|
|
|
2286
2573
|
if source and source.typeId == dummyUnitId then
|
|
2287
2574
|
source = nil
|
|
2288
2575
|
end
|
|
2576
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2577
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2578
|
+
damagingEventByTarget[target] = nil
|
|
2289
2579
|
local data = {
|
|
2290
2580
|
amount = GetEventDamage(),
|
|
2291
|
-
attackType = BlzGetEventAttackType(),
|
|
2581
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2292
2582
|
damageType = BlzGetEventDamageType(),
|
|
2293
2583
|
weaponType = BlzGetEventWeaponType(),
|
|
2584
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2294
2585
|
isAttack = BlzGetEventIsAttack(),
|
|
2586
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2587
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2295
2588
|
preventDeath = damageEventPreventDeath
|
|
2296
2589
|
}
|
|
2590
|
+
if damagingEvent then
|
|
2591
|
+
for key, value in pairs(damagingEvent) do
|
|
2592
|
+
if isAttribute(key) then
|
|
2593
|
+
data[key] = value
|
|
2594
|
+
end
|
|
2595
|
+
end
|
|
2596
|
+
local sourceOwner = damagingEvent[1]
|
|
2597
|
+
if sourceOwner then
|
|
2598
|
+
local targetOwner = damagingEvent[2]
|
|
2599
|
+
if damagingEvent[3] then
|
|
2600
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2601
|
+
end
|
|
2602
|
+
if damagingEvent[4] then
|
|
2603
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2604
|
+
end
|
|
2605
|
+
end
|
|
2606
|
+
end
|
|
2297
2607
|
local evData = setmetatable(
|
|
2298
2608
|
{},
|
|
2299
2609
|
{
|
|
2300
2610
|
__index = data,
|
|
2301
2611
|
__newindex = function(self, key, value)
|
|
2302
|
-
damageSetters[key]
|
|
2612
|
+
local damageSetter = damageSetters[key]
|
|
2613
|
+
if damageSetter ~= nil then
|
|
2614
|
+
damageSetter(value)
|
|
2615
|
+
end
|
|
2303
2616
|
data[key] = value
|
|
2304
2617
|
end
|
|
2305
2618
|
}
|
|
2306
2619
|
)
|
|
2307
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2308
2620
|
invoke(event, source, target, evData)
|
|
2309
2621
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2310
2622
|
local bonusHealth = math.ceil(evData.amount)
|
|
2311
|
-
target[
|
|
2623
|
+
target[105] = (target[105] or 0) + bonusHealth
|
|
2312
2624
|
BlzSetUnitMaxHP(
|
|
2313
2625
|
target.handle,
|
|
2314
2626
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2322,7 +2634,7 @@ Unit.onDamage = __TS__New(
|
|
|
2322
2634
|
evData[0],
|
|
2323
2635
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2324
2636
|
)
|
|
2325
|
-
target[
|
|
2637
|
+
target[105] = (target[105] or 0) - bonusHealth
|
|
2326
2638
|
SetWidgetLife(
|
|
2327
2639
|
target.handle,
|
|
2328
2640
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2342,32 +2654,110 @@ Unit.onDamage = __TS__New(
|
|
|
2342
2654
|
DestroyTrigger(trigger)
|
|
2343
2655
|
end
|
|
2344
2656
|
)
|
|
2345
|
-
Unit.
|
|
2657
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2346
2658
|
____exports.UnitTriggerEvent,
|
|
2347
2659
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2348
2660
|
function()
|
|
2349
2661
|
local unit = getTriggerUnit()
|
|
2350
|
-
|
|
2351
|
-
|
|
2662
|
+
local item = getManipulatedItem()
|
|
2663
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2664
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2352
2665
|
end
|
|
2353
2666
|
return IgnoreEvent
|
|
2354
2667
|
end
|
|
2355
2668
|
)
|
|
2356
|
-
Unit.
|
|
2669
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2357
2670
|
____exports.UnitTriggerEvent,
|
|
2358
2671
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2359
2672
|
function()
|
|
2360
|
-
local
|
|
2361
|
-
|
|
2362
|
-
|
|
2673
|
+
local unitHandle = getTriggerUnit()
|
|
2674
|
+
local itemHandle = getManipulatedItem()
|
|
2675
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
|
|
2676
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2677
|
+
local item = Item:of(itemHandle)
|
|
2678
|
+
if item.owner ~= unit then
|
|
2679
|
+
return unit, item
|
|
2680
|
+
end
|
|
2363
2681
|
end
|
|
2364
2682
|
return IgnoreEvent
|
|
2365
2683
|
end
|
|
2366
2684
|
)
|
|
2367
|
-
Unit.
|
|
2685
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2368
2686
|
____exports.UnitTriggerEvent,
|
|
2369
2687
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2370
|
-
function()
|
|
2688
|
+
function()
|
|
2689
|
+
local unit = getTriggerUnit()
|
|
2690
|
+
local item = getManipulatedItem()
|
|
2691
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2692
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2693
|
+
end
|
|
2694
|
+
return IgnoreEvent
|
|
2695
|
+
end
|
|
2696
|
+
)
|
|
2697
|
+
Unit.itemStackedEvent = __TS__New(
|
|
2698
|
+
____exports.UnitTriggerEvent,
|
|
2699
|
+
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2700
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2701
|
+
)
|
|
2702
|
+
__TS__ObjectDefineProperty(
|
|
2703
|
+
Unit,
|
|
2704
|
+
"itemChargesChangedEvent",
|
|
2705
|
+
{get = function(self)
|
|
2706
|
+
local event = __TS__New(Event)
|
|
2707
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2708
|
+
local unit = item.owner
|
|
2709
|
+
if unit ~= nil then
|
|
2710
|
+
invoke(event, unit, item)
|
|
2711
|
+
end
|
|
2712
|
+
end)
|
|
2713
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2714
|
+
return event
|
|
2715
|
+
end}
|
|
2716
|
+
)
|
|
2717
|
+
__TS__ObjectDefineProperty(
|
|
2718
|
+
Unit,
|
|
2719
|
+
"itemUseOrderEvent",
|
|
2720
|
+
{get = function(self)
|
|
2721
|
+
local event = __TS__New(Event)
|
|
2722
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2723
|
+
local slot = order - orderId("useslot0")
|
|
2724
|
+
local function listener(unit)
|
|
2725
|
+
local item = unit.items[slot + 1]
|
|
2726
|
+
if item ~= nil then
|
|
2727
|
+
invoke(event, unit, item)
|
|
2728
|
+
end
|
|
2729
|
+
end
|
|
2730
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2731
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2732
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2733
|
+
end
|
|
2734
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2735
|
+
return event
|
|
2736
|
+
end}
|
|
2737
|
+
)
|
|
2738
|
+
__TS__ObjectDefineProperty(
|
|
2739
|
+
Unit,
|
|
2740
|
+
"itemMoveOrderEvent",
|
|
2741
|
+
{get = function(self)
|
|
2742
|
+
local event = __TS__New(Event)
|
|
2743
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2744
|
+
local slotTo = order - orderId("moveslot0")
|
|
2745
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2746
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2747
|
+
if slotFrom ~= nil then
|
|
2748
|
+
invoke(
|
|
2749
|
+
event,
|
|
2750
|
+
unit,
|
|
2751
|
+
item,
|
|
2752
|
+
slotFrom,
|
|
2753
|
+
slotTo
|
|
2754
|
+
)
|
|
2755
|
+
end
|
|
2756
|
+
end)
|
|
2757
|
+
end
|
|
2758
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2759
|
+
return event
|
|
2760
|
+
end}
|
|
2371
2761
|
)
|
|
2372
2762
|
__TS__ObjectDefineProperty(
|
|
2373
2763
|
Unit,
|