warscript 0.0.1-dev.ee2345e → 0.0.1-dev.ef189a5
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 +96 -28
- package/engine/internal/unit.lua +648 -241
- 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 +6 -3
- package/engine/object-data/entry/destructible-type.lua +12 -0
- 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 +62 -7
- package/engine/object-data/entry/unit-type.lua +524 -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 +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 +39 -1
- package/engine/standard/entries/unit-type.lua +39 -1
- 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 -14
- 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 +30 -0
- package/string.lua +14 -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
|
@@ -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,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,10 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
90
104
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
91
105
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
92
106
|
local isUnitInRange = IsUnitInRange
|
|
93
|
-
local
|
|
94
|
-
local
|
|
107
|
+
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
108
|
+
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
109
|
+
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
110
|
+
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
95
111
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
96
112
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
97
113
|
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
@@ -111,15 +127,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
111
127
|
local getIssuedOrderId = GetIssuedOrderId
|
|
112
128
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
113
129
|
local unitAlive = UnitAlive
|
|
114
|
-
local unitAddType = UnitAddType
|
|
115
|
-
local unitRemoveType = UnitRemoveType
|
|
116
|
-
local isUnitIllusion = IsUnitIllusion
|
|
117
|
-
local isUnitType = IsUnitType
|
|
118
130
|
local isUnitAlly = IsUnitAlly
|
|
119
131
|
local isUnitEnemy = IsUnitEnemy
|
|
120
132
|
local getOwningPlayer = GetOwningPlayer
|
|
121
|
-
local setUnitColor = SetUnitColor
|
|
122
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
123
133
|
____exports.UnitClassification = {}
|
|
124
134
|
local UnitClassification = ____exports.UnitClassification
|
|
125
135
|
do
|
|
@@ -129,6 +139,7 @@ do
|
|
|
129
139
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
130
140
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
131
141
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
142
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
132
143
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
133
144
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
134
145
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -275,16 +286,14 @@ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
|
|
|
275
286
|
end
|
|
276
287
|
local function dispatch(event, idGetter, argsGetter)
|
|
277
288
|
local initialized = false
|
|
278
|
-
local x = {}
|
|
279
289
|
return setmetatable(
|
|
280
|
-
|
|
290
|
+
{},
|
|
281
291
|
{
|
|
282
292
|
__index = function(self, id)
|
|
283
293
|
if type(id) ~= "number" then
|
|
284
294
|
return event[id]
|
|
285
295
|
end
|
|
286
296
|
if not initialized then
|
|
287
|
-
local invoke = Event.invoke
|
|
288
297
|
event:addListener(function(...)
|
|
289
298
|
local id = idGetter(...)
|
|
290
299
|
local dispatched = rawget(self, id)
|
|
@@ -322,7 +331,6 @@ local function dispatchAbility(event)
|
|
|
322
331
|
return event[id]
|
|
323
332
|
end
|
|
324
333
|
if not initialized then
|
|
325
|
-
local invoke = Event.invoke
|
|
326
334
|
event:addListener(function(unit, ability, ...)
|
|
327
335
|
local dispatched = rawget(self, ability.typeId)
|
|
328
336
|
if dispatched ~= nil then
|
|
@@ -339,6 +347,9 @@ local function dispatchAbility(event)
|
|
|
339
347
|
}
|
|
340
348
|
)
|
|
341
349
|
end
|
|
350
|
+
local function damagingEventPreventRetaliation(self)
|
|
351
|
+
self[0] = true
|
|
352
|
+
end
|
|
342
353
|
local function damageEventPreventDeath(self, callback, ...)
|
|
343
354
|
if self[0] ~= nil then
|
|
344
355
|
return
|
|
@@ -350,7 +361,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
350
361
|
rawset(self, 1 + i, (select(i, ...)))
|
|
351
362
|
end
|
|
352
363
|
end
|
|
353
|
-
local damageSetters = {
|
|
364
|
+
local damageSetters = {
|
|
365
|
+
amount = BlzSetEventDamage,
|
|
366
|
+
attackType = function(attackType)
|
|
367
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
368
|
+
end,
|
|
369
|
+
damageType = BlzSetEventDamageType,
|
|
370
|
+
weaponType = BlzSetEventWeaponType
|
|
371
|
+
}
|
|
354
372
|
local jlimitopByOperator = {
|
|
355
373
|
[0] = LESS_THAN_OR_EQUAL,
|
|
356
374
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -387,51 +405,184 @@ local getters = {
|
|
|
387
405
|
return BlzGetUnitArmor(unit)
|
|
388
406
|
end
|
|
389
407
|
}
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
408
|
+
____exports.UnitWeapon = __TS__Class()
|
|
409
|
+
local UnitWeapon = ____exports.UnitWeapon
|
|
410
|
+
UnitWeapon.name = "UnitWeapon"
|
|
411
|
+
function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
412
|
+
self.unit = unit
|
|
413
|
+
self.index = index
|
|
414
|
+
end
|
|
415
|
+
__TS__SetDescriptor(
|
|
416
|
+
UnitWeapon.prototype,
|
|
417
|
+
"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
|
+
)
|
|
428
|
+
__TS__SetDescriptor(
|
|
429
|
+
UnitWeapon.prototype,
|
|
430
|
+
"cooldown",
|
|
431
|
+
{
|
|
432
|
+
get = function(self)
|
|
433
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index)
|
|
434
|
+
end,
|
|
435
|
+
set = function(self, cooldown)
|
|
436
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index, cooldown)
|
|
437
|
+
end
|
|
438
|
+
},
|
|
439
|
+
true
|
|
440
|
+
)
|
|
441
|
+
__TS__SetDescriptor(
|
|
442
|
+
UnitWeapon.prototype,
|
|
443
|
+
"damage",
|
|
444
|
+
{
|
|
445
|
+
get = function(self)
|
|
446
|
+
local minimumDamage = self.damageBase + self.damageDiceCount
|
|
447
|
+
local maximumDamage = self.damageBase + self.damageDiceCount * self.damageDiceSideCount
|
|
448
|
+
return {minimumDamage, maximumDamage}
|
|
449
|
+
end,
|
|
450
|
+
set = function(self, ____bindingPattern0)
|
|
451
|
+
local maximumDamage
|
|
452
|
+
local minimumDamage
|
|
453
|
+
minimumDamage = ____bindingPattern0[1]
|
|
454
|
+
maximumDamage = ____bindingPattern0[2]
|
|
455
|
+
self.damageBase = minimumDamage - 1
|
|
456
|
+
self.damageDiceCount = 1
|
|
457
|
+
self.damageDiceSideCount = maximumDamage - minimumDamage + 1
|
|
458
|
+
end
|
|
459
|
+
},
|
|
460
|
+
true
|
|
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
|
+
)
|
|
475
|
+
__TS__SetDescriptor(
|
|
476
|
+
UnitWeapon.prototype,
|
|
477
|
+
"damageBase",
|
|
478
|
+
{
|
|
479
|
+
get = function(self)
|
|
480
|
+
return BlzGetUnitBaseDamage(self.unit.handle, self.index)
|
|
481
|
+
end,
|
|
482
|
+
set = function(self, damageBase)
|
|
483
|
+
BlzSetUnitBaseDamage(self.unit.handle, self.index, damageBase)
|
|
484
|
+
end
|
|
485
|
+
},
|
|
486
|
+
true
|
|
487
|
+
)
|
|
488
|
+
__TS__SetDescriptor(
|
|
489
|
+
UnitWeapon.prototype,
|
|
490
|
+
"damageDiceCount",
|
|
491
|
+
{
|
|
492
|
+
get = function(self)
|
|
493
|
+
return BlzGetUnitDiceNumber(self.unit.handle, self.index)
|
|
494
|
+
end,
|
|
495
|
+
set = function(self, damageDiceCount)
|
|
496
|
+
BlzSetUnitDiceNumber(self.unit.handle, self.index, damageDiceCount)
|
|
497
|
+
end
|
|
498
|
+
},
|
|
499
|
+
true
|
|
500
|
+
)
|
|
501
|
+
__TS__SetDescriptor(
|
|
502
|
+
UnitWeapon.prototype,
|
|
503
|
+
"damageDiceSideCount",
|
|
504
|
+
{
|
|
505
|
+
get = function(self)
|
|
506
|
+
return BlzGetUnitDiceSides(self.unit.handle, self.index)
|
|
507
|
+
end,
|
|
508
|
+
set = function(self, damageDiceSideCount)
|
|
509
|
+
BlzSetUnitDiceSides(self.unit.handle, self.index, damageDiceSideCount)
|
|
510
|
+
end
|
|
511
|
+
},
|
|
512
|
+
true
|
|
513
|
+
)
|
|
514
|
+
__TS__SetDescriptor(
|
|
515
|
+
UnitWeapon.prototype,
|
|
516
|
+
"range",
|
|
517
|
+
{
|
|
518
|
+
get = function(self)
|
|
519
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_RANGE, self.index)
|
|
520
|
+
end,
|
|
521
|
+
set = function(self, range)
|
|
522
|
+
local handle = self.unit.handle
|
|
523
|
+
local index = self.index
|
|
524
|
+
setUnitWeaponRealField(
|
|
525
|
+
handle,
|
|
526
|
+
UNIT_WEAPON_RF_ATTACK_RANGE,
|
|
527
|
+
index + 1,
|
|
528
|
+
getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index + 1) + (range - getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index))
|
|
529
|
+
)
|
|
530
|
+
end
|
|
531
|
+
},
|
|
532
|
+
true
|
|
533
|
+
)
|
|
534
|
+
__TS__SetDescriptor(
|
|
535
|
+
UnitWeapon.prototype,
|
|
536
|
+
"impactDelay",
|
|
537
|
+
{
|
|
538
|
+
get = function(self)
|
|
539
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index)
|
|
540
|
+
end,
|
|
541
|
+
set = function(self, impactDelay)
|
|
542
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index, impactDelay)
|
|
543
|
+
end
|
|
544
|
+
},
|
|
545
|
+
true
|
|
546
|
+
)
|
|
547
|
+
__TS__SetDescriptor(
|
|
548
|
+
UnitWeapon.prototype,
|
|
549
|
+
"missileArc",
|
|
550
|
+
{
|
|
551
|
+
get = function(self)
|
|
552
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index)
|
|
553
|
+
end,
|
|
554
|
+
set = function(self, missileArc)
|
|
555
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index, missileArc)
|
|
556
|
+
end
|
|
557
|
+
},
|
|
558
|
+
true
|
|
559
|
+
)
|
|
560
|
+
__TS__SetDescriptor(
|
|
561
|
+
UnitWeapon.prototype,
|
|
562
|
+
"missileModelPath",
|
|
563
|
+
{
|
|
564
|
+
get = function(self)
|
|
565
|
+
return getUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index)
|
|
566
|
+
end,
|
|
567
|
+
set = function(self, missileModelPath)
|
|
568
|
+
setUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index, missileModelPath)
|
|
569
|
+
end
|
|
570
|
+
},
|
|
571
|
+
true
|
|
572
|
+
)
|
|
573
|
+
__TS__SetDescriptor(
|
|
574
|
+
UnitWeapon.prototype,
|
|
575
|
+
"missileSpeed",
|
|
576
|
+
{
|
|
577
|
+
get = function(self)
|
|
578
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index)
|
|
579
|
+
end,
|
|
580
|
+
set = function(self, missileSpeed)
|
|
581
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index, missileSpeed)
|
|
582
|
+
end
|
|
583
|
+
},
|
|
584
|
+
true
|
|
585
|
+
)
|
|
435
586
|
local unitInventorySize = UnitInventorySize
|
|
436
587
|
local unitItemInSlot = UnitItemInSlot
|
|
437
588
|
local getItemAbility = BlzGetItemAbility
|
|
@@ -442,8 +593,6 @@ local getAbilityName = GetAbilityName
|
|
|
442
593
|
local unitAddAbility = UnitAddAbility
|
|
443
594
|
local getUnitGoldCost = GetUnitGoldCost
|
|
444
595
|
local getUnitLumberCost = GetUnitWoodCost
|
|
445
|
-
local unitMakeAbilityPermanent = UnitMakeAbilityPermanent
|
|
446
|
-
local unitAddItem = UnitAddItem
|
|
447
596
|
local unitRemoveAbility = UnitRemoveAbility
|
|
448
597
|
local function retrieveAbility(unit, ability, abilityId)
|
|
449
598
|
if ability == nil then
|
|
@@ -453,17 +602,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
453
602
|
____exports.Unit:of(unit)
|
|
454
603
|
)
|
|
455
604
|
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
605
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
468
606
|
local item = unitItemInSlot(unit, i)
|
|
469
607
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -520,12 +658,44 @@ for ____, player in ipairs(Player.all) do
|
|
|
520
658
|
ShowUnit(dummy, false)
|
|
521
659
|
dummies[player] = dummy
|
|
522
660
|
end
|
|
661
|
+
local function delayHealthChecksCallback(unit)
|
|
662
|
+
local counter = (unit[104] or 0) - 1
|
|
663
|
+
if counter ~= 0 then
|
|
664
|
+
unit[104] = counter
|
|
665
|
+
return
|
|
666
|
+
end
|
|
667
|
+
unit[104] = nil
|
|
668
|
+
local healthBonus = unit[105]
|
|
669
|
+
if healthBonus ~= nil then
|
|
670
|
+
unit[105] = nil
|
|
671
|
+
local handle = unit.handle
|
|
672
|
+
BlzSetUnitMaxHP(
|
|
673
|
+
handle,
|
|
674
|
+
BlzGetUnitMaxHP(handle) - healthBonus
|
|
675
|
+
)
|
|
676
|
+
end
|
|
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
|
|
523
690
|
____exports.Unit = __TS__Class()
|
|
524
691
|
local Unit = ____exports.Unit
|
|
525
692
|
Unit.name = "Unit"
|
|
526
693
|
__TS__ClassExtends(Unit, Handle)
|
|
527
694
|
function Unit.prototype.____constructor(self, handle)
|
|
528
695
|
Handle.prototype.____constructor(self, handle)
|
|
696
|
+
local ____nextSyncId_1 = nextSyncId
|
|
697
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
698
|
+
self.syncId = ____nextSyncId_1
|
|
529
699
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
530
700
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
531
701
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -538,6 +708,7 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
538
708
|
fourCC("Amrf")
|
|
539
709
|
))
|
|
540
710
|
end
|
|
711
|
+
unitBySyncId[self.syncId] = self
|
|
541
712
|
local ____ = self.abilities
|
|
542
713
|
end
|
|
543
714
|
function Unit.prototype.getEvent(self, event, collector)
|
|
@@ -556,6 +727,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
556
727
|
end
|
|
557
728
|
function Unit.prototype.onDestroy(self)
|
|
558
729
|
local handle = self.handle
|
|
730
|
+
self[108] = getUnitX(handle)
|
|
731
|
+
self[109] = getUnitY(handle)
|
|
559
732
|
if not self._owner then
|
|
560
733
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
561
734
|
end
|
|
@@ -623,17 +796,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
623
796
|
end}
|
|
624
797
|
end
|
|
625
798
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
626
|
-
local
|
|
627
|
-
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
|
|
628
801
|
end
|
|
629
802
|
function Unit.prototype.addClassification(self, classification)
|
|
630
|
-
return
|
|
803
|
+
return UnitAddType(self.handle, classification)
|
|
631
804
|
end
|
|
632
805
|
function Unit.prototype.removeClassification(self, classification)
|
|
633
|
-
return
|
|
806
|
+
return UnitRemoveType(self.handle, classification)
|
|
634
807
|
end
|
|
635
808
|
function Unit.prototype.hasClassification(self, classification)
|
|
636
|
-
return
|
|
809
|
+
return IsUnitType(self.handle, classification)
|
|
637
810
|
end
|
|
638
811
|
function Unit.prototype.isVisibleTo(self, player)
|
|
639
812
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -642,13 +815,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
642
815
|
return isUnitInvisible(self.handle, player.handle)
|
|
643
816
|
end
|
|
644
817
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
645
|
-
local
|
|
818
|
+
local ____temp_3
|
|
646
819
|
if type(x) == "number" then
|
|
647
|
-
|
|
820
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
648
821
|
else
|
|
649
|
-
|
|
822
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
650
823
|
end
|
|
651
|
-
return
|
|
824
|
+
return ____temp_3
|
|
652
825
|
end
|
|
653
826
|
function Unit.prototype.isAllyOf(self, unit)
|
|
654
827
|
return isUnitAlly(
|
|
@@ -666,13 +839,31 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
666
839
|
if type(animation) == "number" then
|
|
667
840
|
setUnitAnimationByIndex(self.handle, animation)
|
|
668
841
|
elseif rarity then
|
|
669
|
-
|
|
842
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
670
843
|
else
|
|
671
844
|
setUnitAnimation(self.handle, animation)
|
|
672
845
|
end
|
|
673
846
|
end
|
|
847
|
+
function Unit.prototype.resetAnimation(self)
|
|
848
|
+
ResetUnitAnimation(self.handle)
|
|
849
|
+
end
|
|
674
850
|
function Unit.prototype.queueAnimation(self, animation)
|
|
675
|
-
|
|
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
|
|
863
|
+
end
|
|
864
|
+
function Unit.prototype.delayHealthChecks(self)
|
|
865
|
+
self[104] = (self[104] or 0) + 1
|
|
866
|
+
Timer:run(delayHealthChecksCallback, self)
|
|
676
867
|
end
|
|
677
868
|
function Unit.prototype.setPosition(self, x, y)
|
|
678
869
|
setUnitPosition(self.handle, x, y)
|
|
@@ -681,14 +872,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
681
872
|
return IsUnitSelected(self.handle, player.handle)
|
|
682
873
|
end
|
|
683
874
|
function Unit.prototype.explode(self)
|
|
684
|
-
|
|
875
|
+
SetUnitExploded(self.handle, true)
|
|
685
876
|
killUnit(self.handle)
|
|
686
877
|
end
|
|
687
878
|
function Unit.prototype.kill(self)
|
|
688
879
|
killUnit(self.handle)
|
|
689
880
|
end
|
|
690
|
-
function Unit.prototype.revive(self,
|
|
691
|
-
|
|
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))
|
|
692
890
|
end
|
|
693
891
|
function Unit.prototype.healTarget(self, target, amount)
|
|
694
892
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -728,20 +926,19 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
728
926
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
729
927
|
end
|
|
730
928
|
function Unit.prototype.itemInSlot(self, slot)
|
|
731
|
-
return Item:of(
|
|
929
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
732
930
|
end
|
|
733
931
|
function Unit.prototype.addAbility(self, abilityId)
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
932
|
+
local ability = UnitAbility:of(
|
|
933
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
934
|
+
abilityId,
|
|
935
|
+
self
|
|
936
|
+
)
|
|
937
|
+
if ability ~= nil then
|
|
740
938
|
local abilities = self.abilities
|
|
741
939
|
abilities[#abilities + 1] = ability
|
|
742
|
-
return ability
|
|
743
940
|
end
|
|
744
|
-
return
|
|
941
|
+
return ability
|
|
745
942
|
end
|
|
746
943
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
747
944
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -755,47 +952,62 @@ end
|
|
|
755
952
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
756
953
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
757
954
|
end
|
|
758
|
-
function Unit.prototype.
|
|
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
|
-
)
|
|
955
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
956
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
957
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
769
958
|
end
|
|
770
|
-
function Unit.prototype.removeAbility(self,
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
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
|
|
779
967
|
end
|
|
780
|
-
return true
|
|
781
968
|
end
|
|
782
|
-
return
|
|
969
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
783
970
|
end
|
|
784
971
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
785
972
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
786
973
|
end
|
|
974
|
+
function Unit.prototype.getAbilityRemainingCooldown(self, abilityId)
|
|
975
|
+
return BlzGetUnitAbilityCooldownRemaining(self.handle, abilityId)
|
|
976
|
+
end
|
|
787
977
|
function Unit.prototype.startAbilityCooldown(self, abilityId, cooldown)
|
|
788
978
|
BlzStartUnitAbilityCooldown(self.handle, abilityId, cooldown)
|
|
789
979
|
end
|
|
790
980
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
791
981
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
792
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
|
|
793
998
|
function Unit.prototype.interruptAttack(self)
|
|
794
999
|
unitInterruptAttack(self.handle)
|
|
795
1000
|
end
|
|
796
1001
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
797
|
-
|
|
798
|
-
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
|
+
)
|
|
799
1011
|
end
|
|
800
1012
|
function Unit.prototype.getDistanceTo(self, target)
|
|
801
1013
|
local handle = self.handle
|
|
@@ -855,18 +1067,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
855
1067
|
self:decrementStunCounter()
|
|
856
1068
|
end
|
|
857
1069
|
function Unit.prototype.incrementStunCounter(self)
|
|
858
|
-
local stunCounter = self[
|
|
859
|
-
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
|
|
860
1072
|
BlzPauseUnitEx(self.handle, true)
|
|
861
1073
|
end
|
|
862
|
-
self[
|
|
1074
|
+
self[102] = stunCounter + 1
|
|
863
1075
|
end
|
|
864
1076
|
function Unit.prototype.decrementStunCounter(self)
|
|
865
|
-
local stunCounter = self[
|
|
866
|
-
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
|
|
867
1079
|
BlzPauseUnitEx(self.handle, false)
|
|
868
1080
|
end
|
|
869
|
-
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
|
|
870
1108
|
end
|
|
871
1109
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
872
1110
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -968,8 +1206,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
968
1206
|
)
|
|
969
1207
|
return targetCollection
|
|
970
1208
|
end
|
|
971
|
-
function Unit.getSelectionOf(self, player)
|
|
972
|
-
|
|
1209
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1210
|
+
if target == nil then
|
|
1211
|
+
target = {}
|
|
1212
|
+
end
|
|
1213
|
+
targetCollection = target
|
|
973
1214
|
targetCollectionNextIndex = 1
|
|
974
1215
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
975
1216
|
return targetCollection
|
|
@@ -991,6 +1232,9 @@ end
|
|
|
991
1232
|
function Unit.prototype.__tostring(self)
|
|
992
1233
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
993
1234
|
end
|
|
1235
|
+
function Unit.getBySyncId(self, syncId)
|
|
1236
|
+
return unitBySyncId[syncId]
|
|
1237
|
+
end
|
|
994
1238
|
__TS__SetDescriptor(
|
|
995
1239
|
Unit.prototype,
|
|
996
1240
|
"_deltas",
|
|
@@ -1050,7 +1294,15 @@ __TS__SetDescriptor(
|
|
|
1050
1294
|
Unit.prototype,
|
|
1051
1295
|
"isIllusion",
|
|
1052
1296
|
{get = function(self)
|
|
1053
|
-
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")
|
|
1054
1306
|
end},
|
|
1055
1307
|
true
|
|
1056
1308
|
)
|
|
@@ -1071,12 +1323,27 @@ __TS__SetDescriptor(
|
|
|
1071
1323
|
Unit.prototype,
|
|
1072
1324
|
"weapons",
|
|
1073
1325
|
{get = function(self)
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1326
|
+
return {self.firstWeapon, self.secondWeapon}
|
|
1327
|
+
end},
|
|
1328
|
+
true
|
|
1329
|
+
)
|
|
1330
|
+
__TS__SetDescriptor(
|
|
1331
|
+
Unit.prototype,
|
|
1332
|
+
"firstWeapon",
|
|
1333
|
+
{get = function(self)
|
|
1334
|
+
local weapon = __TS__New(____exports.UnitWeapon, self, 0)
|
|
1335
|
+
rawset(self, "firstWeapon", weapon)
|
|
1336
|
+
return weapon
|
|
1337
|
+
end},
|
|
1338
|
+
true
|
|
1339
|
+
)
|
|
1340
|
+
__TS__SetDescriptor(
|
|
1341
|
+
Unit.prototype,
|
|
1342
|
+
"secondWeapon",
|
|
1343
|
+
{get = function(self)
|
|
1344
|
+
local weapon = __TS__New(____exports.UnitWeapon, self, 1)
|
|
1345
|
+
rawset(self, "secondWeapon", weapon)
|
|
1346
|
+
return weapon
|
|
1080
1347
|
end},
|
|
1081
1348
|
true
|
|
1082
1349
|
)
|
|
@@ -1112,6 +1379,19 @@ __TS__SetDescriptor(
|
|
|
1112
1379
|
},
|
|
1113
1380
|
true
|
|
1114
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
|
+
)
|
|
1115
1395
|
__TS__SetDescriptor(
|
|
1116
1396
|
Unit.prototype,
|
|
1117
1397
|
"strengthBase",
|
|
@@ -1233,17 +1513,17 @@ __TS__SetDescriptor(
|
|
|
1233
1513
|
"isTeamGlowVisible",
|
|
1234
1514
|
{
|
|
1235
1515
|
get = function(self)
|
|
1236
|
-
return not self[
|
|
1516
|
+
return not self[107]
|
|
1237
1517
|
end,
|
|
1238
1518
|
set = function(self, isTeamGlowVisible)
|
|
1239
|
-
|
|
1240
|
-
local
|
|
1519
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1520
|
+
local ____temp_7
|
|
1241
1521
|
if not isTeamGlowVisible then
|
|
1242
|
-
|
|
1522
|
+
____temp_7 = true
|
|
1243
1523
|
else
|
|
1244
|
-
|
|
1524
|
+
____temp_7 = nil
|
|
1245
1525
|
end
|
|
1246
|
-
self[
|
|
1526
|
+
self[107] = ____temp_7
|
|
1247
1527
|
end
|
|
1248
1528
|
},
|
|
1249
1529
|
true
|
|
@@ -1252,9 +1532,9 @@ __TS__SetDescriptor(
|
|
|
1252
1532
|
Unit.prototype,
|
|
1253
1533
|
"color",
|
|
1254
1534
|
{set = function(self, color)
|
|
1255
|
-
|
|
1256
|
-
if self[
|
|
1257
|
-
|
|
1535
|
+
SetUnitColor(self.handle, color.handle)
|
|
1536
|
+
if self[107] then
|
|
1537
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1258
1538
|
end
|
|
1259
1539
|
end},
|
|
1260
1540
|
true
|
|
@@ -1277,10 +1557,14 @@ __TS__SetDescriptor(
|
|
|
1277
1557
|
"maxHealth",
|
|
1278
1558
|
{
|
|
1279
1559
|
get = function(self)
|
|
1280
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1560
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1281
1561
|
end,
|
|
1282
1562
|
set = function(self, maxHealth)
|
|
1283
|
-
|
|
1563
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1564
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1565
|
+
maxHealth = 1
|
|
1566
|
+
end
|
|
1567
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1284
1568
|
end
|
|
1285
1569
|
},
|
|
1286
1570
|
true
|
|
@@ -1322,10 +1606,10 @@ __TS__SetDescriptor(
|
|
|
1322
1606
|
"health",
|
|
1323
1607
|
{
|
|
1324
1608
|
get = function(self)
|
|
1325
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1609
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1326
1610
|
end,
|
|
1327
1611
|
set = function(self, health)
|
|
1328
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1612
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1329
1613
|
end
|
|
1330
1614
|
},
|
|
1331
1615
|
true
|
|
@@ -1401,25 +1685,12 @@ __TS__SetDescriptor(
|
|
|
1401
1685
|
},
|
|
1402
1686
|
true
|
|
1403
1687
|
)
|
|
1404
|
-
__TS__SetDescriptor(
|
|
1405
|
-
Unit.prototype,
|
|
1406
|
-
"flyHeight",
|
|
1407
|
-
{
|
|
1408
|
-
get = function(self)
|
|
1409
|
-
return getUnitFlyHeight(self.handle)
|
|
1410
|
-
end,
|
|
1411
|
-
set = function(self, v)
|
|
1412
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1413
|
-
end
|
|
1414
|
-
},
|
|
1415
|
-
true
|
|
1416
|
-
)
|
|
1417
1688
|
__TS__SetDescriptor(
|
|
1418
1689
|
Unit.prototype,
|
|
1419
1690
|
"x",
|
|
1420
1691
|
{
|
|
1421
1692
|
get = function(self)
|
|
1422
|
-
return getUnitX(self.handle)
|
|
1693
|
+
return self[108] or getUnitX(self.handle)
|
|
1423
1694
|
end,
|
|
1424
1695
|
set = function(self, v)
|
|
1425
1696
|
SetUnitX(self.handle, v)
|
|
@@ -1432,7 +1703,7 @@ __TS__SetDescriptor(
|
|
|
1432
1703
|
"y",
|
|
1433
1704
|
{
|
|
1434
1705
|
get = function(self)
|
|
1435
|
-
return getUnitY(self.handle)
|
|
1706
|
+
return self[109] or getUnitY(self.handle)
|
|
1436
1707
|
end,
|
|
1437
1708
|
set = function(self, v)
|
|
1438
1709
|
SetUnitY(self.handle, v)
|
|
@@ -1518,10 +1789,10 @@ __TS__SetDescriptor(
|
|
|
1518
1789
|
"gold",
|
|
1519
1790
|
{
|
|
1520
1791
|
get = function(self)
|
|
1521
|
-
return
|
|
1792
|
+
return GetResourceAmount(self.handle)
|
|
1522
1793
|
end,
|
|
1523
1794
|
set = function(self, gold)
|
|
1524
|
-
|
|
1795
|
+
SetResourceAmount(self.handle, gold)
|
|
1525
1796
|
end
|
|
1526
1797
|
},
|
|
1527
1798
|
true
|
|
@@ -1536,17 +1807,21 @@ __TS__SetDescriptor(
|
|
|
1536
1807
|
set = function(self, isPaused)
|
|
1537
1808
|
local handle = self.handle
|
|
1538
1809
|
if isPaused and not IsUnitPaused(handle) then
|
|
1539
|
-
self[
|
|
1540
|
-
|
|
1541
|
-
|
|
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
|
|
1542
1815
|
end
|
|
1543
1816
|
PauseUnit(handle, true)
|
|
1544
1817
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1545
1818
|
PauseUnit(handle, false)
|
|
1546
|
-
|
|
1547
|
-
|
|
1819
|
+
if (self[103] or 0) <= 0 then
|
|
1820
|
+
for _ = self[102] or 0, -1 do
|
|
1821
|
+
BlzPauseUnitEx(handle, false)
|
|
1822
|
+
end
|
|
1548
1823
|
end
|
|
1549
|
-
self[
|
|
1824
|
+
self[101] = nil
|
|
1550
1825
|
end
|
|
1551
1826
|
end
|
|
1552
1827
|
},
|
|
@@ -1602,20 +1877,6 @@ __TS__SetDescriptor(
|
|
|
1602
1877
|
},
|
|
1603
1878
|
true
|
|
1604
1879
|
)
|
|
1605
|
-
__TS__SetDescriptor(
|
|
1606
|
-
Unit.prototype,
|
|
1607
|
-
"scale",
|
|
1608
|
-
{
|
|
1609
|
-
get = function(self)
|
|
1610
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1611
|
-
end,
|
|
1612
|
-
set = function(self, v)
|
|
1613
|
-
setUnitScale(self.handle, v, v, v)
|
|
1614
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1615
|
-
end
|
|
1616
|
-
},
|
|
1617
|
-
true
|
|
1618
|
-
)
|
|
1619
1880
|
__TS__SetDescriptor(
|
|
1620
1881
|
Unit.prototype,
|
|
1621
1882
|
"timeScale",
|
|
@@ -1649,6 +1910,19 @@ __TS__SetDescriptor(
|
|
|
1649
1910
|
end},
|
|
1650
1911
|
true
|
|
1651
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
|
+
)
|
|
1652
1926
|
__TS__SetDescriptor(
|
|
1653
1927
|
Unit.prototype,
|
|
1654
1928
|
"pathing",
|
|
@@ -1830,6 +2104,14 @@ __TS__SetDescriptor(
|
|
|
1830
2104
|
end},
|
|
1831
2105
|
true
|
|
1832
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
|
+
)
|
|
1833
2115
|
__TS__SetDescriptor(
|
|
1834
2116
|
Unit.prototype,
|
|
1835
2117
|
"onSelect",
|
|
@@ -1903,7 +2185,6 @@ Unit.onDecay = __TS__New(
|
|
|
1903
2185
|
Unit.onResurrect = __TS__New(
|
|
1904
2186
|
InitializingEvent,
|
|
1905
2187
|
function(event)
|
|
1906
|
-
local invoke = Event.invoke
|
|
1907
2188
|
local dead = setmetatable({}, {__mode = "k"})
|
|
1908
2189
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
1909
2190
|
dead[unit] = true
|
|
@@ -1919,10 +2200,15 @@ Unit.onResurrect = __TS__New(
|
|
|
1919
2200
|
Unit.morphEvent = __TS__New(
|
|
1920
2201
|
InitializingEvent,
|
|
1921
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
|
|
1922
2209
|
____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
|
|
1923
2210
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
1924
|
-
|
|
1925
|
-
Timer:run(Event.invoke, event, unit)
|
|
2211
|
+
Timer:run(ifNotLeft, unit)
|
|
1926
2212
|
end
|
|
1927
2213
|
end)
|
|
1928
2214
|
end
|
|
@@ -1960,27 +2246,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
|
|
|
1960
2246
|
Unit.onTargetCast = dispatchId(__TS__New(
|
|
1961
2247
|
InitializingEvent,
|
|
1962
2248
|
function(event)
|
|
1963
|
-
local invoke = Event.invoke
|
|
1964
2249
|
local function listener(unit, id)
|
|
1965
|
-
local
|
|
2250
|
+
local ____GetSpellTargetUnit_result_10
|
|
1966
2251
|
if GetSpellTargetUnit() then
|
|
1967
|
-
|
|
2252
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
1968
2253
|
else
|
|
1969
|
-
local
|
|
2254
|
+
local ____GetSpellTargetItem_result_9
|
|
1970
2255
|
if GetSpellTargetItem() then
|
|
1971
|
-
|
|
2256
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
1972
2257
|
else
|
|
1973
|
-
local
|
|
2258
|
+
local ____GetSpellTargetDestructable_result_8
|
|
1974
2259
|
if GetSpellTargetDestructable() then
|
|
1975
|
-
|
|
2260
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
1976
2261
|
else
|
|
1977
|
-
|
|
2262
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
1978
2263
|
end
|
|
1979
|
-
|
|
2264
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
1980
2265
|
end
|
|
1981
|
-
|
|
2266
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
1982
2267
|
end
|
|
1983
|
-
local target =
|
|
2268
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
1984
2269
|
if target then
|
|
1985
2270
|
invoke(event, unit, id, target)
|
|
1986
2271
|
end
|
|
@@ -2152,10 +2437,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2152
2437
|
____exports.UnitTriggerEvent,
|
|
2153
2438
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2154
2439
|
function()
|
|
2155
|
-
local
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
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
|
|
2159
2446
|
end
|
|
2160
2447
|
return IgnoreEvent
|
|
2161
2448
|
end
|
|
@@ -2177,7 +2464,6 @@ Unit.autoAttackStartEvent = __TS__New(
|
|
|
2177
2464
|
)
|
|
2178
2465
|
Unit.onDamaging = (function()
|
|
2179
2466
|
local event = __TS__New(Event)
|
|
2180
|
-
local invoke = Event.invoke
|
|
2181
2467
|
local trigger = CreateTrigger()
|
|
2182
2468
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2183
2469
|
TriggerAddCondition(
|
|
@@ -2187,38 +2473,57 @@ Unit.onDamaging = (function()
|
|
|
2187
2473
|
if source and source.typeId == dummyUnitId then
|
|
2188
2474
|
source = nil
|
|
2189
2475
|
end
|
|
2190
|
-
local target = BlzGetEventDamageTarget()
|
|
2476
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2477
|
+
local metadata = damageMetadataByTarget[target]
|
|
2478
|
+
damageMetadataByTarget[target] = nil
|
|
2191
2479
|
local data = {
|
|
2192
2480
|
amount = GetEventDamage(),
|
|
2193
|
-
attackType = BlzGetEventAttackType(),
|
|
2481
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2194
2482
|
damageType = BlzGetEventDamageType(),
|
|
2195
2483
|
weaponType = BlzGetEventWeaponType(),
|
|
2196
|
-
|
|
2484
|
+
metadata = metadata,
|
|
2485
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2486
|
+
originalAmount = GetEventDamage(),
|
|
2487
|
+
originalMetadata = metadata,
|
|
2488
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2197
2489
|
}
|
|
2198
2490
|
if data.isAttack and source then
|
|
2199
|
-
|
|
2200
|
-
if weapon == -1 then
|
|
2201
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2202
|
-
weapon = 0
|
|
2203
|
-
end
|
|
2204
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2491
|
+
data.weapon = source:chooseWeapon(target)
|
|
2205
2492
|
end
|
|
2206
2493
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2207
2494
|
invoke(
|
|
2208
2495
|
event,
|
|
2209
2496
|
source,
|
|
2210
|
-
|
|
2497
|
+
target,
|
|
2211
2498
|
setmetatable(
|
|
2212
2499
|
{},
|
|
2213
2500
|
{
|
|
2214
2501
|
__index = data,
|
|
2215
2502
|
__newindex = function(self, key, value)
|
|
2216
|
-
damageSetters[key]
|
|
2503
|
+
local damageSetter = damageSetters[key]
|
|
2504
|
+
if damageSetter ~= nil then
|
|
2505
|
+
damageSetter(value)
|
|
2506
|
+
end
|
|
2217
2507
|
data[key] = value
|
|
2218
2508
|
end
|
|
2219
2509
|
}
|
|
2220
2510
|
)
|
|
2221
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
|
|
2222
2527
|
return
|
|
2223
2528
|
end
|
|
2224
2529
|
BlzSetEventDamage(0)
|
|
@@ -2226,7 +2531,7 @@ Unit.onDamaging = (function()
|
|
|
2226
2531
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2227
2532
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2228
2533
|
local sourceOwner = source.owner.handle
|
|
2229
|
-
local targetOwner =
|
|
2534
|
+
local targetOwner = target.owner.handle
|
|
2230
2535
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2231
2536
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2232
2537
|
Timer:run(function()
|
|
@@ -2242,23 +2547,19 @@ Unit.onDamaging = (function()
|
|
|
2242
2547
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2243
2548
|
local condition = ____value[1]
|
|
2244
2549
|
local action = ____value[2]
|
|
2245
|
-
if condition(
|
|
2246
|
-
source,
|
|
2247
|
-
____exports.Unit:of(target),
|
|
2248
|
-
data
|
|
2249
|
-
) then
|
|
2550
|
+
if condition(source, target, data) then
|
|
2250
2551
|
action(
|
|
2251
2552
|
source,
|
|
2252
|
-
|
|
2553
|
+
target,
|
|
2253
2554
|
setmetatable(
|
|
2254
2555
|
{fire = function()
|
|
2255
2556
|
UnitDamageTarget(
|
|
2256
2557
|
source.handle,
|
|
2257
|
-
target,
|
|
2558
|
+
target.handle,
|
|
2258
2559
|
data.amount,
|
|
2259
2560
|
true,
|
|
2260
2561
|
true,
|
|
2261
|
-
data.attackType,
|
|
2562
|
+
attackTypeToNative(data.attackType),
|
|
2262
2563
|
data.damageType,
|
|
2263
2564
|
data.weaponType
|
|
2264
2565
|
)
|
|
@@ -2276,7 +2577,6 @@ end)()
|
|
|
2276
2577
|
Unit.onDamage = __TS__New(
|
|
2277
2578
|
InitializingEvent,
|
|
2278
2579
|
function(event)
|
|
2279
|
-
local invoke = Event.invoke
|
|
2280
2580
|
local trigger = CreateTrigger()
|
|
2281
2581
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2282
2582
|
TriggerAddCondition(
|
|
@@ -2286,29 +2586,54 @@ Unit.onDamage = __TS__New(
|
|
|
2286
2586
|
if source and source.typeId == dummyUnitId then
|
|
2287
2587
|
source = nil
|
|
2288
2588
|
end
|
|
2589
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2590
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2591
|
+
damagingEventByTarget[target] = nil
|
|
2289
2592
|
local data = {
|
|
2290
2593
|
amount = GetEventDamage(),
|
|
2291
|
-
attackType = BlzGetEventAttackType(),
|
|
2594
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2292
2595
|
damageType = BlzGetEventDamageType(),
|
|
2293
2596
|
weaponType = BlzGetEventWeaponType(),
|
|
2597
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2294
2598
|
isAttack = BlzGetEventIsAttack(),
|
|
2599
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2600
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2295
2601
|
preventDeath = damageEventPreventDeath
|
|
2296
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
|
|
2297
2620
|
local evData = setmetatable(
|
|
2298
2621
|
{},
|
|
2299
2622
|
{
|
|
2300
2623
|
__index = data,
|
|
2301
2624
|
__newindex = function(self, key, value)
|
|
2302
|
-
damageSetters[key]
|
|
2625
|
+
local damageSetter = damageSetters[key]
|
|
2626
|
+
if damageSetter ~= nil then
|
|
2627
|
+
damageSetter(value)
|
|
2628
|
+
end
|
|
2303
2629
|
data[key] = value
|
|
2304
2630
|
end
|
|
2305
2631
|
}
|
|
2306
2632
|
)
|
|
2307
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2308
2633
|
invoke(event, source, target, evData)
|
|
2309
2634
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2310
2635
|
local bonusHealth = math.ceil(evData.amount)
|
|
2311
|
-
target[
|
|
2636
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2312
2637
|
BlzSetUnitMaxHP(
|
|
2313
2638
|
target.handle,
|
|
2314
2639
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2322,7 +2647,7 @@ Unit.onDamage = __TS__New(
|
|
|
2322
2647
|
evData[0],
|
|
2323
2648
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2324
2649
|
)
|
|
2325
|
-
target[
|
|
2650
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2326
2651
|
SetWidgetLife(
|
|
2327
2652
|
target.handle,
|
|
2328
2653
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2342,32 +2667,110 @@ Unit.onDamage = __TS__New(
|
|
|
2342
2667
|
DestroyTrigger(trigger)
|
|
2343
2668
|
end
|
|
2344
2669
|
)
|
|
2345
|
-
Unit.
|
|
2670
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2346
2671
|
____exports.UnitTriggerEvent,
|
|
2347
2672
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2348
2673
|
function()
|
|
2349
2674
|
local unit = getTriggerUnit()
|
|
2350
|
-
|
|
2351
|
-
|
|
2675
|
+
local item = getManipulatedItem()
|
|
2676
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2677
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2352
2678
|
end
|
|
2353
2679
|
return IgnoreEvent
|
|
2354
2680
|
end
|
|
2355
2681
|
)
|
|
2356
|
-
Unit.
|
|
2682
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2357
2683
|
____exports.UnitTriggerEvent,
|
|
2358
2684
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2359
2685
|
function()
|
|
2360
|
-
local
|
|
2361
|
-
|
|
2362
|
-
|
|
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
|
|
2363
2694
|
end
|
|
2364
2695
|
return IgnoreEvent
|
|
2365
2696
|
end
|
|
2366
2697
|
)
|
|
2367
|
-
Unit.
|
|
2698
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2368
2699
|
____exports.UnitTriggerEvent,
|
|
2369
2700
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2370
|
-
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}
|
|
2371
2774
|
)
|
|
2372
2775
|
__TS__ObjectDefineProperty(
|
|
2373
2776
|
Unit,
|
|
@@ -2394,6 +2797,10 @@ __TS__ObjectDefineProperty(
|
|
|
2394
2797
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2395
2798
|
return destroyEvent
|
|
2396
2799
|
end}
|
|
2800
|
+
)
|
|
2801
|
+
Unit.synchronize = synchronizer(
|
|
2802
|
+
function(unit) return unit.syncId end,
|
|
2803
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2397
2804
|
);
|
|
2398
2805
|
(function(self)
|
|
2399
2806
|
local leaveAbilityIds = postcompile(function()
|