warscript 0.0.1-dev.9d56c5c → 0.0.1-dev.9e6f20e
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 +9 -1
- package/core/types/frame.lua +193 -23
- package/core/types/group.d.ts +0 -1
- package/core/types/handle.lua +6 -9
- package/core/types/image.d.ts +0 -1
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/missile.d.ts +2 -2
- package/core/types/missile.lua +8 -2
- package/core/types/player.d.ts +17 -1
- package/core/types/player.lua +70 -24
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +100 -25
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/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/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/ability.d.ts +1 -1
- package/engine/behavior.d.ts +24 -11
- package/engine/behavior.lua +233 -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 +42 -11
- package/engine/behaviour/ability/damage.lua +89 -37
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +44 -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 -19
- 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 +35 -7
- package/engine/behaviour/ability.lua +183 -27
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -7
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +48 -4
- package/engine/behaviour/unit.lua +292 -2
- package/engine/buff.d.ts +160 -53
- package/engine/buff.lua +711 -269
- 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/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +18 -18
- package/engine/internal/item.lua +208 -94
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- 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/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +142 -19
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +17 -8
- package/engine/internal/unit/bonus.lua +56 -4
- package/engine/internal/unit/buff.d.ts +2 -2
- package/engine/internal/unit/buff.lua +32 -17
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/item.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/pseudo-passive-abilities.d.ts +2 -0
- package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +12 -3
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit+transport.lua +4 -10
- package/engine/internal/unit-missile-launch.lua +70 -13
- package/engine/internal/unit.d.ts +65 -32
- package/engine/internal/unit.lua +503 -290
- 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 +14 -2
- package/engine/local-client.lua +168 -1
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -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/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/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/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -1
- package/engine/object-data/entry/ability-type/blank-configurable.lua +42 -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/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/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/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +21 -18
- package/engine/object-data/entry/ability-type.lua +177 -40
- package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
- package/engine/object-data/entry/buff-type/applicable.lua +122 -137
- 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 +28 -3
- package/engine/object-data/entry/destructible-type.lua +155 -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 +25 -6
- package/engine/object-data/entry/unit-type.lua +258 -93
- package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
- package/engine/object-data/entry/upgrade.d.ts +1 -2
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +18 -17
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +28 -5
- package/engine/object-field/ability.lua +61 -7
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +26 -8
- package/engine/object-field.lua +362 -117
- package/engine/random.d.ts +11 -0
- package/engine/random.lua +30 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/entries/unit-type.d.ts +18 -0
- package/engine/standard/entries/unit-type.lua +18 -0
- package/engine/standard/fields/ability.d.ts +5 -3
- package/engine/standard/fields/ability.lua +5 -3
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +9 -0
- package/engine/unit.lua +18 -2
- package/event.d.ts +3 -4
- package/event.lua +9 -5
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/lualib_bundle.lua +147 -43
- package/math/vec2.d.ts +2 -9
- package/math.d.ts +2 -2
- package/math.lua +14 -0
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +28 -3
- package/objutil/ability.d.ts +0 -1
- package/objutil/buff.d.ts +0 -1
- package/objutil/buff.lua +12 -11
- package/objutil/object.d.ts +0 -1
- package/objutil/object.lua +1 -1
- package/objutil/unit.d.ts +0 -1
- package/objutil/unit.lua +8 -0
- package/operation.d.ts +8 -1
- package/operation.lua +38 -18
- package/package.json +13 -13
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +25 -0
- package/patch-lualib.lua +1 -1
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- package/string.d.ts +16 -0
- package/string.lua +5 -0
- package/util/stream.d.ts +0 -1
- package/utility/arrays.d.ts +13 -5
- package/utility/arrays.lua +45 -3
- package/utility/bit-set.d.ts +0 -2
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +16 -4
- package/utility/linked-set.lua +54 -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/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/records.lua +20 -1
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +4 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -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/{object-data/armor-increase.d.ts → misc/ability-disable-counter.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/engine/internal/unit.lua
CHANGED
|
@@ -7,6 +7,9 @@ local __TS__Class = ____lualib.__TS__Class
|
|
|
7
7
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
8
8
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
9
9
|
local __TS__ArraySetLength = ____lualib.__TS__ArraySetLength
|
|
10
|
+
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
|
|
11
|
+
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
|
|
12
|
+
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
|
|
10
13
|
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
11
14
|
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
12
15
|
local Set = ____lualib.Set
|
|
@@ -48,33 +51,42 @@ 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
|
|
67
|
+
local ____linked_2Dmap = require("utility.linked-map")
|
|
68
|
+
local LinkedMap = ____linked_2Dmap.LinkedMap
|
|
51
69
|
local match = string.match
|
|
52
70
|
local ____tostring = _G.tostring
|
|
53
71
|
local setUnitAnimation = SetUnitAnimation
|
|
54
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
55
72
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
56
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
57
73
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
58
74
|
local getUnitRealField = BlzGetUnitRealField
|
|
59
75
|
local getHeroStr = GetHeroStr
|
|
60
76
|
local getHeroAgi = GetHeroAgi
|
|
61
77
|
local getHeroInt = GetHeroInt
|
|
62
|
-
local setHeroStr = SetHeroStr
|
|
63
|
-
local setHeroAgi = SetHeroAgi
|
|
64
|
-
local setHeroInt = SetHeroInt
|
|
65
78
|
local getUnitBooleanField = BlzGetUnitBooleanField
|
|
66
79
|
local getUnitStringField = BlzGetUnitStringField
|
|
67
80
|
local setUnitIntegerField = BlzSetUnitIntegerField
|
|
68
81
|
local setUnitRealField = BlzSetUnitRealField
|
|
69
82
|
local setUnitBooleanField = BlzSetUnitBooleanField
|
|
70
83
|
local setUnitStringField = BlzSetUnitStringField
|
|
71
|
-
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,15 +102,12 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
90
102
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
91
103
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
92
104
|
local isUnitInRange = IsUnitInRange
|
|
93
|
-
local setResourceAmount = SetResourceAmount
|
|
94
|
-
local getResourceAmount = GetResourceAmount
|
|
95
105
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
96
106
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
97
107
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
98
108
|
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
99
109
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
100
110
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
101
|
-
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
102
111
|
local isUnitInvisible = IsUnitInvisible
|
|
103
112
|
local isUnitVisible = IsUnitVisible
|
|
104
113
|
local getUnitX = GetUnitX
|
|
@@ -115,15 +124,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
115
124
|
local getIssuedOrderId = GetIssuedOrderId
|
|
116
125
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
117
126
|
local unitAlive = UnitAlive
|
|
118
|
-
local unitAddType = UnitAddType
|
|
119
|
-
local unitRemoveType = UnitRemoveType
|
|
120
|
-
local isUnitIllusion = IsUnitIllusion
|
|
121
|
-
local isUnitType = IsUnitType
|
|
122
127
|
local isUnitAlly = IsUnitAlly
|
|
123
128
|
local isUnitEnemy = IsUnitEnemy
|
|
124
129
|
local getOwningPlayer = GetOwningPlayer
|
|
125
|
-
local setUnitColor = SetUnitColor
|
|
126
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
127
130
|
____exports.UnitClassification = {}
|
|
128
131
|
local UnitClassification = ____exports.UnitClassification
|
|
129
132
|
do
|
|
@@ -133,6 +136,7 @@ do
|
|
|
133
136
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
134
137
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
135
138
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
139
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
136
140
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
137
141
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
138
142
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -279,16 +283,14 @@ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
|
|
|
279
283
|
end
|
|
280
284
|
local function dispatch(event, idGetter, argsGetter)
|
|
281
285
|
local initialized = false
|
|
282
|
-
local x = {}
|
|
283
286
|
return setmetatable(
|
|
284
|
-
|
|
287
|
+
{},
|
|
285
288
|
{
|
|
286
289
|
__index = function(self, id)
|
|
287
290
|
if type(id) ~= "number" then
|
|
288
291
|
return event[id]
|
|
289
292
|
end
|
|
290
293
|
if not initialized then
|
|
291
|
-
local invoke = Event.invoke
|
|
292
294
|
event:addListener(function(...)
|
|
293
295
|
local id = idGetter(...)
|
|
294
296
|
local dispatched = rawget(self, id)
|
|
@@ -326,7 +328,6 @@ local function dispatchAbility(event)
|
|
|
326
328
|
return event[id]
|
|
327
329
|
end
|
|
328
330
|
if not initialized then
|
|
329
|
-
local invoke = Event.invoke
|
|
330
331
|
event:addListener(function(unit, ability, ...)
|
|
331
332
|
local dispatched = rawget(self, ability.typeId)
|
|
332
333
|
if dispatched ~= nil then
|
|
@@ -343,6 +344,9 @@ local function dispatchAbility(event)
|
|
|
343
344
|
}
|
|
344
345
|
)
|
|
345
346
|
end
|
|
347
|
+
local function damagingEventPreventRetaliation(self)
|
|
348
|
+
self[0] = true
|
|
349
|
+
end
|
|
346
350
|
local function damageEventPreventDeath(self, callback, ...)
|
|
347
351
|
if self[0] ~= nil then
|
|
348
352
|
return
|
|
@@ -354,7 +358,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
354
358
|
rawset(self, 1 + i, (select(i, ...)))
|
|
355
359
|
end
|
|
356
360
|
end
|
|
357
|
-
local damageSetters = {
|
|
361
|
+
local damageSetters = {
|
|
362
|
+
amount = BlzSetEventDamage,
|
|
363
|
+
attackType = function(attackType)
|
|
364
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
365
|
+
end,
|
|
366
|
+
damageType = BlzSetEventDamageType,
|
|
367
|
+
weaponType = BlzSetEventWeaponType
|
|
368
|
+
}
|
|
358
369
|
local jlimitopByOperator = {
|
|
359
370
|
[0] = LESS_THAN_OR_EQUAL,
|
|
360
371
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -372,15 +383,27 @@ local modifiers = {
|
|
|
372
383
|
end,
|
|
373
384
|
armor = function(unit, value)
|
|
374
385
|
if UnitAddAbility(unit, armorBonusAbilityId) then
|
|
375
|
-
assert(
|
|
386
|
+
assert(
|
|
387
|
+
UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
|
|
388
|
+
"armor bonus ability must be made permanent",
|
|
389
|
+
unit
|
|
390
|
+
)
|
|
376
391
|
end
|
|
377
|
-
local ability = assert(
|
|
378
|
-
|
|
379
|
-
ability,
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
392
|
+
local ability = assert(
|
|
393
|
+
BlzGetUnitAbility(unit, armorBonusAbilityId),
|
|
394
|
+
"armor bonus ability must be existing",
|
|
395
|
+
unit
|
|
396
|
+
)
|
|
397
|
+
assert(
|
|
398
|
+
BlzSetAbilityRealLevelField(
|
|
399
|
+
ability,
|
|
400
|
+
armorBonusField,
|
|
401
|
+
0,
|
|
402
|
+
BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
|
|
403
|
+
),
|
|
404
|
+
"armor bonus ability field must be set",
|
|
405
|
+
unit
|
|
406
|
+
)
|
|
384
407
|
end
|
|
385
408
|
}
|
|
386
409
|
local getters = {
|
|
@@ -398,6 +421,19 @@ function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
|
398
421
|
self.unit = unit
|
|
399
422
|
self.index = index
|
|
400
423
|
end
|
|
424
|
+
__TS__SetDescriptor(
|
|
425
|
+
UnitWeapon.prototype,
|
|
426
|
+
"isEnabled",
|
|
427
|
+
{
|
|
428
|
+
get = function(self)
|
|
429
|
+
return BlzGetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index)
|
|
430
|
+
end,
|
|
431
|
+
set = function(self, isEnabled)
|
|
432
|
+
BlzSetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index, isEnabled)
|
|
433
|
+
end
|
|
434
|
+
},
|
|
435
|
+
true
|
|
436
|
+
)
|
|
401
437
|
__TS__SetDescriptor(
|
|
402
438
|
UnitWeapon.prototype,
|
|
403
439
|
"cooldown",
|
|
@@ -432,6 +468,19 @@ __TS__SetDescriptor(
|
|
|
432
468
|
},
|
|
433
469
|
true
|
|
434
470
|
)
|
|
471
|
+
__TS__SetDescriptor(
|
|
472
|
+
UnitWeapon.prototype,
|
|
473
|
+
"allowedTargetCombatClassifications",
|
|
474
|
+
{
|
|
475
|
+
get = function(self)
|
|
476
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
477
|
+
end,
|
|
478
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
479
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
480
|
+
end
|
|
481
|
+
},
|
|
482
|
+
true
|
|
483
|
+
)
|
|
435
484
|
__TS__SetDescriptor(
|
|
436
485
|
UnitWeapon.prototype,
|
|
437
486
|
"damageBase",
|
|
@@ -562,17 +611,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
562
611
|
____exports.Unit:of(unit)
|
|
563
612
|
)
|
|
564
613
|
end
|
|
565
|
-
if not unitAddAbility(unit, abilityId) then
|
|
566
|
-
if getUnitAbility(unit, abilityId) == ability then
|
|
567
|
-
return UnitAbility:of(
|
|
568
|
-
ability,
|
|
569
|
-
abilityId,
|
|
570
|
-
____exports.Unit:of(unit)
|
|
571
|
-
)
|
|
572
|
-
end
|
|
573
|
-
else
|
|
574
|
-
unitRemoveAbility(unit, abilityId)
|
|
575
|
-
end
|
|
576
614
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
577
615
|
local item = unitItemInSlot(unit, i)
|
|
578
616
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -619,26 +657,30 @@ local fieldSetters = {
|
|
|
619
657
|
}
|
|
620
658
|
local dummies = {}
|
|
621
659
|
for ____, player in ipairs(Player.all) do
|
|
622
|
-
local dummy = assert(
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
660
|
+
local dummy = assert(
|
|
661
|
+
createUnit(
|
|
662
|
+
player.handle,
|
|
663
|
+
dummyUnitId,
|
|
664
|
+
0,
|
|
665
|
+
0,
|
|
666
|
+
270
|
|
667
|
+
),
|
|
668
|
+
"dummy must be created",
|
|
669
|
+
player
|
|
670
|
+
)
|
|
629
671
|
ShowUnit(dummy, false)
|
|
630
672
|
dummies[player] = dummy
|
|
631
673
|
end
|
|
632
674
|
local function delayHealthChecksCallback(unit)
|
|
633
|
-
local counter = (unit[
|
|
675
|
+
local counter = (unit[104] or 0) - 1
|
|
634
676
|
if counter ~= 0 then
|
|
635
|
-
unit[
|
|
677
|
+
unit[104] = counter
|
|
636
678
|
return
|
|
637
679
|
end
|
|
638
|
-
unit[
|
|
639
|
-
local healthBonus = unit[
|
|
680
|
+
unit[104] = nil
|
|
681
|
+
local healthBonus = unit[105]
|
|
640
682
|
if healthBonus ~= nil then
|
|
641
|
-
unit[
|
|
683
|
+
unit[105] = nil
|
|
642
684
|
local handle = unit.handle
|
|
643
685
|
BlzSetUnitMaxHP(
|
|
644
686
|
handle,
|
|
@@ -646,45 +688,79 @@ local function delayHealthChecksCallback(unit)
|
|
|
646
688
|
)
|
|
647
689
|
end
|
|
648
690
|
end
|
|
691
|
+
local nextSyncId = 1
|
|
692
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
693
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
694
|
+
local function addAbility(unit, abilityTypeId)
|
|
695
|
+
local ____unitAddAbility_result_0
|
|
696
|
+
if unitAddAbility(unit, abilityTypeId) then
|
|
697
|
+
____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
|
|
698
|
+
else
|
|
699
|
+
____unitAddAbility_result_0 = nil
|
|
700
|
+
end
|
|
701
|
+
return ____unitAddAbility_result_0
|
|
702
|
+
end
|
|
649
703
|
____exports.Unit = __TS__Class()
|
|
650
704
|
local Unit = ____exports.Unit
|
|
651
705
|
Unit.name = "Unit"
|
|
652
706
|
__TS__ClassExtends(Unit, Handle)
|
|
653
707
|
function Unit.prototype.____constructor(self, handle)
|
|
654
708
|
Handle.prototype.____constructor(self, handle)
|
|
709
|
+
local ____nextSyncId_1 = nextSyncId
|
|
710
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
711
|
+
self.syncId = ____nextSyncId_1
|
|
655
712
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
656
|
-
assert(
|
|
657
|
-
|
|
713
|
+
assert(
|
|
714
|
+
unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId),
|
|
715
|
+
"leave detection ability must be added",
|
|
716
|
+
self
|
|
717
|
+
)
|
|
718
|
+
assert(
|
|
719
|
+
unitAddAbility(handle, morphDetectAbilityId),
|
|
720
|
+
"morph detection ability must be added",
|
|
721
|
+
self
|
|
722
|
+
)
|
|
658
723
|
if unitAddAbility(
|
|
659
724
|
handle,
|
|
660
725
|
fourCC("Amrf")
|
|
661
726
|
) then
|
|
662
|
-
assert(
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
727
|
+
assert(
|
|
728
|
+
unitRemoveAbility(
|
|
729
|
+
handle,
|
|
730
|
+
fourCC("Amrf")
|
|
731
|
+
),
|
|
732
|
+
"fly ability must be removed after addition",
|
|
733
|
+
self
|
|
734
|
+
)
|
|
666
735
|
end
|
|
736
|
+
unitBySyncId[self.syncId] = self
|
|
667
737
|
local ____ = self.abilities
|
|
668
738
|
end
|
|
669
|
-
function Unit.prototype.getEvent(self,
|
|
670
|
-
self.events = self.events or (
|
|
671
|
-
local eventId = GetHandleId(
|
|
672
|
-
|
|
673
|
-
|
|
739
|
+
function Unit.prototype.getEvent(self, jevent, collector)
|
|
740
|
+
self.events = self.events or __TS__New(LinkedMap)
|
|
741
|
+
local eventId = GetHandleId(jevent)
|
|
742
|
+
local event = self.events:get(eventId)
|
|
743
|
+
if event == nil then
|
|
744
|
+
event = __TS__New(
|
|
674
745
|
TriggerEvent,
|
|
675
746
|
function(trigger)
|
|
676
|
-
TriggerRegisterUnitEvent(trigger, self.handle,
|
|
747
|
+
TriggerRegisterUnitEvent(trigger, self.handle, jevent)
|
|
677
748
|
end,
|
|
678
749
|
collector or (function() return {} end)
|
|
679
750
|
)
|
|
751
|
+
self.events:put(eventId, event)
|
|
680
752
|
end
|
|
681
|
-
return
|
|
753
|
+
return event
|
|
754
|
+
end
|
|
755
|
+
function Unit.prototype.saveData(self)
|
|
756
|
+
local handle = self.handle
|
|
757
|
+
self[108] = self[108] or getUnitX(handle)
|
|
758
|
+
self[109] = self[109] or getUnitY(handle)
|
|
759
|
+
self._owner = self._owner or Player:of(getOwningPlayer(handle))
|
|
682
760
|
end
|
|
683
761
|
function Unit.prototype.onDestroy(self)
|
|
684
762
|
local handle = self.handle
|
|
685
|
-
|
|
686
|
-
self._owner = Player:of(getOwningPlayer(handle))
|
|
687
|
-
end
|
|
763
|
+
self:saveData()
|
|
688
764
|
local abilities = self.abilities
|
|
689
765
|
for ____, ability in ipairs(abilities) do
|
|
690
766
|
ability:destroy()
|
|
@@ -720,7 +796,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
|
|
|
720
796
|
self._attackHandlers = handlers
|
|
721
797
|
if #handlers == 1 then
|
|
722
798
|
local handle = self.handle
|
|
723
|
-
assert(
|
|
799
|
+
assert(
|
|
800
|
+
unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
|
|
801
|
+
"attack handler ability must be added",
|
|
802
|
+
self
|
|
803
|
+
)
|
|
724
804
|
end
|
|
725
805
|
return handler
|
|
726
806
|
end
|
|
@@ -749,17 +829,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
749
829
|
end}
|
|
750
830
|
end
|
|
751
831
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
752
|
-
local
|
|
753
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
832
|
+
local ____combatClassification_2 = combatClassification
|
|
833
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
754
834
|
end
|
|
755
835
|
function Unit.prototype.addClassification(self, classification)
|
|
756
|
-
return
|
|
836
|
+
return UnitAddType(self.handle, classification)
|
|
757
837
|
end
|
|
758
838
|
function Unit.prototype.removeClassification(self, classification)
|
|
759
|
-
return
|
|
839
|
+
return UnitRemoveType(self.handle, classification)
|
|
760
840
|
end
|
|
761
841
|
function Unit.prototype.hasClassification(self, classification)
|
|
762
|
-
return
|
|
842
|
+
return IsUnitType(self.handle, classification)
|
|
763
843
|
end
|
|
764
844
|
function Unit.prototype.isVisibleTo(self, player)
|
|
765
845
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -768,13 +848,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
768
848
|
return isUnitInvisible(self.handle, player.handle)
|
|
769
849
|
end
|
|
770
850
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
771
|
-
local
|
|
851
|
+
local ____temp_3
|
|
772
852
|
if type(x) == "number" then
|
|
773
|
-
|
|
853
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
774
854
|
else
|
|
775
|
-
|
|
855
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
776
856
|
end
|
|
777
|
-
return
|
|
857
|
+
return ____temp_3
|
|
778
858
|
end
|
|
779
859
|
function Unit.prototype.isAllyOf(self, unit)
|
|
780
860
|
return isUnitAlly(
|
|
@@ -792,16 +872,30 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
792
872
|
if type(animation) == "number" then
|
|
793
873
|
setUnitAnimationByIndex(self.handle, animation)
|
|
794
874
|
elseif rarity then
|
|
795
|
-
|
|
875
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
796
876
|
else
|
|
797
877
|
setUnitAnimation(self.handle, animation)
|
|
798
878
|
end
|
|
799
879
|
end
|
|
880
|
+
function Unit.prototype.resetAnimation(self)
|
|
881
|
+
ResetUnitAnimation(self.handle)
|
|
882
|
+
end
|
|
800
883
|
function Unit.prototype.queueAnimation(self, animation)
|
|
801
|
-
|
|
884
|
+
QueueUnitAnimation(self.handle, animation)
|
|
885
|
+
end
|
|
886
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
887
|
+
local firstWeapon = self.firstWeapon
|
|
888
|
+
if firstWeapon.isEnabled and target:isAllowedTarget(self, firstWeapon.allowedTargetCombatClassifications) then
|
|
889
|
+
return firstWeapon
|
|
890
|
+
end
|
|
891
|
+
local secondWeapon = self.secondWeapon
|
|
892
|
+
if secondWeapon.isEnabled and target:isAllowedTarget(target, secondWeapon.allowedTargetCombatClassifications) then
|
|
893
|
+
return secondWeapon
|
|
894
|
+
end
|
|
895
|
+
return nil
|
|
802
896
|
end
|
|
803
897
|
function Unit.prototype.delayHealthChecks(self)
|
|
804
|
-
self[
|
|
898
|
+
self[104] = (self[104] or 0) + 1
|
|
805
899
|
Timer:run(delayHealthChecksCallback, self)
|
|
806
900
|
end
|
|
807
901
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -811,14 +905,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
811
905
|
return IsUnitSelected(self.handle, player.handle)
|
|
812
906
|
end
|
|
813
907
|
function Unit.prototype.explode(self)
|
|
814
|
-
|
|
908
|
+
SetUnitExploded(self.handle, true)
|
|
815
909
|
killUnit(self.handle)
|
|
816
910
|
end
|
|
817
911
|
function Unit.prototype.kill(self)
|
|
818
912
|
killUnit(self.handle)
|
|
819
913
|
end
|
|
820
|
-
function Unit.prototype.revive(self,
|
|
821
|
-
|
|
914
|
+
function Unit.prototype.revive(self, x, y, doEffect)
|
|
915
|
+
local ____ReviveHero_6 = ReviveHero
|
|
916
|
+
local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
|
|
917
|
+
local ____doEffect_4 = doEffect
|
|
918
|
+
if ____doEffect_4 == nil then
|
|
919
|
+
____doEffect_4 = false
|
|
920
|
+
end
|
|
921
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
922
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
822
923
|
end
|
|
823
924
|
function Unit.prototype.healTarget(self, target, amount)
|
|
824
925
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -858,20 +959,19 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
858
959
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
859
960
|
end
|
|
860
961
|
function Unit.prototype.itemInSlot(self, slot)
|
|
861
|
-
return Item:of(
|
|
962
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
862
963
|
end
|
|
863
964
|
function Unit.prototype.addAbility(self, abilityId)
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
965
|
+
local ability = UnitAbility:of(
|
|
966
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
967
|
+
abilityId,
|
|
968
|
+
self
|
|
969
|
+
)
|
|
970
|
+
if ability ~= nil then
|
|
870
971
|
local abilities = self.abilities
|
|
871
972
|
abilities[#abilities + 1] = ability
|
|
872
|
-
return ability
|
|
873
973
|
end
|
|
874
|
-
return
|
|
974
|
+
return ability
|
|
875
975
|
end
|
|
876
976
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
877
977
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -885,31 +985,21 @@ end
|
|
|
885
985
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
886
986
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
887
987
|
end
|
|
888
|
-
function Unit.prototype.
|
|
889
|
-
local
|
|
890
|
-
|
|
891
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
892
|
-
return nil
|
|
893
|
-
end
|
|
894
|
-
return UnitAbility:of(
|
|
895
|
-
getUnitAbility(self.handle, abilityId),
|
|
896
|
-
abilityId,
|
|
897
|
-
self
|
|
898
|
-
)
|
|
988
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
989
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
990
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
899
991
|
end
|
|
900
|
-
function Unit.prototype.removeAbility(self,
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
end
|
|
992
|
+
function Unit.prototype.removeAbility(self, abilityTypeId)
|
|
993
|
+
local abilities = self.abilities
|
|
994
|
+
for i = 1, #abilities do
|
|
995
|
+
if abilities[i].typeId == abilityTypeId then
|
|
996
|
+
local ability = abilities[i]
|
|
997
|
+
tremove(abilities, i)
|
|
998
|
+
ability:destroy()
|
|
999
|
+
return true
|
|
909
1000
|
end
|
|
910
|
-
return true
|
|
911
1001
|
end
|
|
912
|
-
return
|
|
1002
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
913
1003
|
end
|
|
914
1004
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
915
1005
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -923,12 +1013,16 @@ end
|
|
|
923
1013
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
924
1014
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
925
1015
|
end
|
|
926
|
-
function Unit.prototype.interruptAttack(self)
|
|
927
|
-
unitInterruptAttack(self.handle)
|
|
928
|
-
end
|
|
929
1016
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
930
|
-
|
|
931
|
-
unitDisableAbility(
|
|
1017
|
+
local handle = self.handle
|
|
1018
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
1019
|
+
Timer:run(
|
|
1020
|
+
unitDisableAbility,
|
|
1021
|
+
handle,
|
|
1022
|
+
abilityId,
|
|
1023
|
+
false,
|
|
1024
|
+
false
|
|
1025
|
+
)
|
|
932
1026
|
end
|
|
933
1027
|
function Unit.prototype.getDistanceTo(self, target)
|
|
934
1028
|
local handle = self.handle
|
|
@@ -988,18 +1082,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
988
1082
|
self:decrementStunCounter()
|
|
989
1083
|
end
|
|
990
1084
|
function Unit.prototype.incrementStunCounter(self)
|
|
991
|
-
local stunCounter = self[
|
|
992
|
-
if not self[
|
|
1085
|
+
local stunCounter = self[102] or 0
|
|
1086
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
993
1087
|
BlzPauseUnitEx(self.handle, true)
|
|
994
1088
|
end
|
|
995
|
-
self[
|
|
1089
|
+
self[102] = stunCounter + 1
|
|
996
1090
|
end
|
|
997
1091
|
function Unit.prototype.decrementStunCounter(self)
|
|
998
|
-
local stunCounter = self[
|
|
999
|
-
if not self[
|
|
1092
|
+
local stunCounter = self[102] or 0
|
|
1093
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
1000
1094
|
BlzPauseUnitEx(self.handle, false)
|
|
1001
1095
|
end
|
|
1002
|
-
self[
|
|
1096
|
+
self[102] = stunCounter - 1
|
|
1097
|
+
end
|
|
1098
|
+
function Unit.prototype.incrementForceStunCounter(self)
|
|
1099
|
+
local forceStunCounter = self[103] or 0
|
|
1100
|
+
if forceStunCounter == 0 then
|
|
1101
|
+
local handle = self.handle
|
|
1102
|
+
if not self[101] then
|
|
1103
|
+
for _ = self[102] or 0, -1 do
|
|
1104
|
+
BlzPauseUnitEx(handle, true)
|
|
1105
|
+
end
|
|
1106
|
+
end
|
|
1107
|
+
BlzPauseUnitEx(handle, true)
|
|
1108
|
+
end
|
|
1109
|
+
self[103] = forceStunCounter + 1
|
|
1110
|
+
end
|
|
1111
|
+
function Unit.prototype.decrementForceStunCounter(self)
|
|
1112
|
+
local forceStunCounter = self[103] or 0
|
|
1113
|
+
if forceStunCounter == 1 then
|
|
1114
|
+
local handle = self.handle
|
|
1115
|
+
if not self[101] then
|
|
1116
|
+
for _ = self[102] or 0, -1 do
|
|
1117
|
+
BlzPauseUnitEx(handle, false)
|
|
1118
|
+
end
|
|
1119
|
+
end
|
|
1120
|
+
BlzPauseUnitEx(handle, false)
|
|
1121
|
+
end
|
|
1122
|
+
self[103] = forceStunCounter - 1
|
|
1003
1123
|
end
|
|
1004
1124
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1005
1125
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1101,8 +1221,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1101
1221
|
)
|
|
1102
1222
|
return targetCollection
|
|
1103
1223
|
end
|
|
1104
|
-
function Unit.getSelectionOf(self, player)
|
|
1105
|
-
|
|
1224
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1225
|
+
if target == nil then
|
|
1226
|
+
target = {}
|
|
1227
|
+
end
|
|
1228
|
+
targetCollection = target
|
|
1106
1229
|
targetCollectionNextIndex = 1
|
|
1107
1230
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1108
1231
|
return targetCollection
|
|
@@ -1124,6 +1247,9 @@ end
|
|
|
1124
1247
|
function Unit.prototype.__tostring(self)
|
|
1125
1248
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1126
1249
|
end
|
|
1250
|
+
function Unit.getBySyncId(self, syncId)
|
|
1251
|
+
return unitBySyncId[syncId]
|
|
1252
|
+
end
|
|
1127
1253
|
__TS__SetDescriptor(
|
|
1128
1254
|
Unit.prototype,
|
|
1129
1255
|
"_deltas",
|
|
@@ -1183,7 +1309,15 @@ __TS__SetDescriptor(
|
|
|
1183
1309
|
Unit.prototype,
|
|
1184
1310
|
"isIllusion",
|
|
1185
1311
|
{get = function(self)
|
|
1186
|
-
return
|
|
1312
|
+
return IsUnitIllusion(self.handle)
|
|
1313
|
+
end},
|
|
1314
|
+
true
|
|
1315
|
+
)
|
|
1316
|
+
__TS__SetDescriptor(
|
|
1317
|
+
Unit.prototype,
|
|
1318
|
+
"isStunned",
|
|
1319
|
+
{get = function(self)
|
|
1320
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1187
1321
|
end},
|
|
1188
1322
|
true
|
|
1189
1323
|
)
|
|
@@ -1262,13 +1396,13 @@ __TS__SetDescriptor(
|
|
|
1262
1396
|
)
|
|
1263
1397
|
__TS__SetDescriptor(
|
|
1264
1398
|
Unit.prototype,
|
|
1265
|
-
"
|
|
1399
|
+
"primaryAttribute",
|
|
1266
1400
|
{
|
|
1267
1401
|
get = function(self)
|
|
1268
|
-
return
|
|
1402
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1269
1403
|
end,
|
|
1270
|
-
set = function(self,
|
|
1271
|
-
|
|
1404
|
+
set = function(self, primaryAttribute)
|
|
1405
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1272
1406
|
end
|
|
1273
1407
|
},
|
|
1274
1408
|
true
|
|
@@ -1290,19 +1424,6 @@ __TS__SetDescriptor(
|
|
|
1290
1424
|
end},
|
|
1291
1425
|
true
|
|
1292
1426
|
)
|
|
1293
|
-
__TS__SetDescriptor(
|
|
1294
|
-
Unit.prototype,
|
|
1295
|
-
"agilityBase",
|
|
1296
|
-
{
|
|
1297
|
-
get = function(self)
|
|
1298
|
-
return getHeroAgi(self.handle, false)
|
|
1299
|
-
end,
|
|
1300
|
-
set = function(self, agilityBase)
|
|
1301
|
-
setHeroAgi(self.handle, agilityBase, true)
|
|
1302
|
-
end
|
|
1303
|
-
},
|
|
1304
|
-
true
|
|
1305
|
-
)
|
|
1306
1427
|
__TS__SetDescriptor(
|
|
1307
1428
|
Unit.prototype,
|
|
1308
1429
|
"agilityBonus",
|
|
@@ -1320,19 +1441,6 @@ __TS__SetDescriptor(
|
|
|
1320
1441
|
end},
|
|
1321
1442
|
true
|
|
1322
1443
|
)
|
|
1323
|
-
__TS__SetDescriptor(
|
|
1324
|
-
Unit.prototype,
|
|
1325
|
-
"intelligenceBase",
|
|
1326
|
-
{
|
|
1327
|
-
get = function(self)
|
|
1328
|
-
return getHeroInt(self.handle, false)
|
|
1329
|
-
end,
|
|
1330
|
-
set = function(self, intelligenceBase)
|
|
1331
|
-
setHeroInt(self.handle, intelligenceBase, true)
|
|
1332
|
-
end
|
|
1333
|
-
},
|
|
1334
|
-
true
|
|
1335
|
-
)
|
|
1336
1444
|
__TS__SetDescriptor(
|
|
1337
1445
|
Unit.prototype,
|
|
1338
1446
|
"intelligenceBonus",
|
|
@@ -1381,17 +1489,17 @@ __TS__SetDescriptor(
|
|
|
1381
1489
|
"isTeamGlowVisible",
|
|
1382
1490
|
{
|
|
1383
1491
|
get = function(self)
|
|
1384
|
-
return not self[
|
|
1492
|
+
return not self[107]
|
|
1385
1493
|
end,
|
|
1386
1494
|
set = function(self, isTeamGlowVisible)
|
|
1387
|
-
|
|
1388
|
-
local
|
|
1495
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1496
|
+
local ____temp_7
|
|
1389
1497
|
if not isTeamGlowVisible then
|
|
1390
|
-
|
|
1498
|
+
____temp_7 = true
|
|
1391
1499
|
else
|
|
1392
|
-
|
|
1500
|
+
____temp_7 = nil
|
|
1393
1501
|
end
|
|
1394
|
-
self[
|
|
1502
|
+
self[107] = ____temp_7
|
|
1395
1503
|
end
|
|
1396
1504
|
},
|
|
1397
1505
|
true
|
|
@@ -1400,9 +1508,9 @@ __TS__SetDescriptor(
|
|
|
1400
1508
|
Unit.prototype,
|
|
1401
1509
|
"color",
|
|
1402
1510
|
{set = function(self, color)
|
|
1403
|
-
|
|
1404
|
-
if self[
|
|
1405
|
-
|
|
1511
|
+
SetUnitColor(self.handle, color.handle)
|
|
1512
|
+
if self[107] then
|
|
1513
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1406
1514
|
end
|
|
1407
1515
|
end},
|
|
1408
1516
|
true
|
|
@@ -1425,14 +1533,14 @@ __TS__SetDescriptor(
|
|
|
1425
1533
|
"maxHealth",
|
|
1426
1534
|
{
|
|
1427
1535
|
get = function(self)
|
|
1428
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1536
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1429
1537
|
end,
|
|
1430
1538
|
set = function(self, maxHealth)
|
|
1431
|
-
if maxHealth < 1 and self[
|
|
1432
|
-
self[
|
|
1539
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1540
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1433
1541
|
maxHealth = 1
|
|
1434
1542
|
end
|
|
1435
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1543
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1436
1544
|
end
|
|
1437
1545
|
},
|
|
1438
1546
|
true
|
|
@@ -1474,10 +1582,10 @@ __TS__SetDescriptor(
|
|
|
1474
1582
|
"health",
|
|
1475
1583
|
{
|
|
1476
1584
|
get = function(self)
|
|
1477
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1585
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1478
1586
|
end,
|
|
1479
1587
|
set = function(self, health)
|
|
1480
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1588
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1481
1589
|
end
|
|
1482
1590
|
},
|
|
1483
1591
|
true
|
|
@@ -1553,25 +1661,12 @@ __TS__SetDescriptor(
|
|
|
1553
1661
|
},
|
|
1554
1662
|
true
|
|
1555
1663
|
)
|
|
1556
|
-
__TS__SetDescriptor(
|
|
1557
|
-
Unit.prototype,
|
|
1558
|
-
"flyHeight",
|
|
1559
|
-
{
|
|
1560
|
-
get = function(self)
|
|
1561
|
-
return getUnitFlyHeight(self.handle)
|
|
1562
|
-
end,
|
|
1563
|
-
set = function(self, v)
|
|
1564
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1565
|
-
end
|
|
1566
|
-
},
|
|
1567
|
-
true
|
|
1568
|
-
)
|
|
1569
1664
|
__TS__SetDescriptor(
|
|
1570
1665
|
Unit.prototype,
|
|
1571
1666
|
"x",
|
|
1572
1667
|
{
|
|
1573
1668
|
get = function(self)
|
|
1574
|
-
return getUnitX(self.handle)
|
|
1669
|
+
return self[108] or getUnitX(self.handle)
|
|
1575
1670
|
end,
|
|
1576
1671
|
set = function(self, v)
|
|
1577
1672
|
SetUnitX(self.handle, v)
|
|
@@ -1584,7 +1679,7 @@ __TS__SetDescriptor(
|
|
|
1584
1679
|
"y",
|
|
1585
1680
|
{
|
|
1586
1681
|
get = function(self)
|
|
1587
|
-
return getUnitY(self.handle)
|
|
1682
|
+
return self[109] or getUnitY(self.handle)
|
|
1588
1683
|
end,
|
|
1589
1684
|
set = function(self, v)
|
|
1590
1685
|
SetUnitY(self.handle, v)
|
|
@@ -1670,10 +1765,10 @@ __TS__SetDescriptor(
|
|
|
1670
1765
|
"gold",
|
|
1671
1766
|
{
|
|
1672
1767
|
get = function(self)
|
|
1673
|
-
return
|
|
1768
|
+
return GetResourceAmount(self.handle)
|
|
1674
1769
|
end,
|
|
1675
1770
|
set = function(self, gold)
|
|
1676
|
-
|
|
1771
|
+
SetResourceAmount(self.handle, gold)
|
|
1677
1772
|
end
|
|
1678
1773
|
},
|
|
1679
1774
|
true
|
|
@@ -1688,17 +1783,21 @@ __TS__SetDescriptor(
|
|
|
1688
1783
|
set = function(self, isPaused)
|
|
1689
1784
|
local handle = self.handle
|
|
1690
1785
|
if isPaused and not IsUnitPaused(handle) then
|
|
1691
|
-
self[
|
|
1692
|
-
|
|
1693
|
-
|
|
1786
|
+
self[101] = true
|
|
1787
|
+
if (self[103] or 0) <= 0 then
|
|
1788
|
+
for _ = self[102] or 0, -1 do
|
|
1789
|
+
BlzPauseUnitEx(handle, true)
|
|
1790
|
+
end
|
|
1694
1791
|
end
|
|
1695
1792
|
PauseUnit(handle, true)
|
|
1696
1793
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1697
1794
|
PauseUnit(handle, false)
|
|
1698
|
-
|
|
1699
|
-
|
|
1795
|
+
if (self[103] or 0) <= 0 then
|
|
1796
|
+
for _ = self[102] or 0, -1 do
|
|
1797
|
+
BlzPauseUnitEx(handle, false)
|
|
1798
|
+
end
|
|
1700
1799
|
end
|
|
1701
|
-
self[
|
|
1800
|
+
self[101] = nil
|
|
1702
1801
|
end
|
|
1703
1802
|
end
|
|
1704
1803
|
},
|
|
@@ -1754,20 +1853,6 @@ __TS__SetDescriptor(
|
|
|
1754
1853
|
},
|
|
1755
1854
|
true
|
|
1756
1855
|
)
|
|
1757
|
-
__TS__SetDescriptor(
|
|
1758
|
-
Unit.prototype,
|
|
1759
|
-
"scale",
|
|
1760
|
-
{
|
|
1761
|
-
get = function(self)
|
|
1762
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1763
|
-
end,
|
|
1764
|
-
set = function(self, v)
|
|
1765
|
-
setUnitScale(self.handle, v, v, v)
|
|
1766
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1767
|
-
end
|
|
1768
|
-
},
|
|
1769
|
-
true
|
|
1770
|
-
)
|
|
1771
1856
|
__TS__SetDescriptor(
|
|
1772
1857
|
Unit.prototype,
|
|
1773
1858
|
"timeScale",
|
|
@@ -1801,6 +1886,19 @@ __TS__SetDescriptor(
|
|
|
1801
1886
|
end},
|
|
1802
1887
|
true
|
|
1803
1888
|
)
|
|
1889
|
+
__TS__SetDescriptor(
|
|
1890
|
+
Unit.prototype,
|
|
1891
|
+
"movementType",
|
|
1892
|
+
{
|
|
1893
|
+
get = function(self)
|
|
1894
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1895
|
+
end,
|
|
1896
|
+
set = function(self, movementType)
|
|
1897
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1898
|
+
end
|
|
1899
|
+
},
|
|
1900
|
+
true
|
|
1901
|
+
)
|
|
1804
1902
|
__TS__SetDescriptor(
|
|
1805
1903
|
Unit.prototype,
|
|
1806
1904
|
"pathing",
|
|
@@ -1891,30 +1989,6 @@ __TS__SetDescriptor(
|
|
|
1891
1989
|
end},
|
|
1892
1990
|
true
|
|
1893
1991
|
)
|
|
1894
|
-
__TS__SetDescriptor(
|
|
1895
|
-
Unit.prototype,
|
|
1896
|
-
"onUnitInRange",
|
|
1897
|
-
{get = function(self)
|
|
1898
|
-
local handle = self.handle
|
|
1899
|
-
local onUnitInRange = setmetatable(
|
|
1900
|
-
{},
|
|
1901
|
-
{__index = function(self, value)
|
|
1902
|
-
local event = __TS__New(
|
|
1903
|
-
TriggerEvent,
|
|
1904
|
-
function(trigger)
|
|
1905
|
-
TriggerRegisterUnitInRangeSimple(trigger, value, handle)
|
|
1906
|
-
end,
|
|
1907
|
-
function() return ____exports.Unit:of(handle) end
|
|
1908
|
-
)
|
|
1909
|
-
rawset(self, value, event)
|
|
1910
|
-
return event
|
|
1911
|
-
end}
|
|
1912
|
-
)
|
|
1913
|
-
rawset(self, "onUnitInRange", onUnitInRange)
|
|
1914
|
-
return onUnitInRange
|
|
1915
|
-
end},
|
|
1916
|
-
true
|
|
1917
|
-
)
|
|
1918
1992
|
__TS__SetDescriptor(
|
|
1919
1993
|
Unit.prototype,
|
|
1920
1994
|
"onManaEqual",
|
|
@@ -1982,6 +2056,14 @@ __TS__SetDescriptor(
|
|
|
1982
2056
|
end},
|
|
1983
2057
|
true
|
|
1984
2058
|
)
|
|
2059
|
+
__TS__SetDescriptor(
|
|
2060
|
+
Unit.prototype,
|
|
2061
|
+
"targetAcquiredEvent",
|
|
2062
|
+
{get = function(self)
|
|
2063
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2064
|
+
end},
|
|
2065
|
+
true
|
|
2066
|
+
)
|
|
1985
2067
|
__TS__SetDescriptor(
|
|
1986
2068
|
Unit.prototype,
|
|
1987
2069
|
"onSelect",
|
|
@@ -2042,6 +2124,11 @@ __TS__SetDescriptor(
|
|
|
2042
2124
|
end},
|
|
2043
2125
|
true
|
|
2044
2126
|
)
|
|
2127
|
+
Unit.levelChangedEvent = __TS__New(
|
|
2128
|
+
____exports.UnitTriggerEvent,
|
|
2129
|
+
EVENT_PLAYER_HERO_LEVEL,
|
|
2130
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
2131
|
+
)
|
|
2045
2132
|
Unit.deathEvent = __TS__New(
|
|
2046
2133
|
____exports.UnitTriggerEvent,
|
|
2047
2134
|
EVENT_PLAYER_UNIT_DEATH,
|
|
@@ -2055,7 +2142,6 @@ Unit.onDecay = __TS__New(
|
|
|
2055
2142
|
Unit.onResurrect = __TS__New(
|
|
2056
2143
|
InitializingEvent,
|
|
2057
2144
|
function(event)
|
|
2058
|
-
local invoke = Event.invoke
|
|
2059
2145
|
local dead = setmetatable({}, {__mode = "k"})
|
|
2060
2146
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
2061
2147
|
dead[unit] = true
|
|
@@ -2071,10 +2157,15 @@ Unit.onResurrect = __TS__New(
|
|
|
2071
2157
|
Unit.morphEvent = __TS__New(
|
|
2072
2158
|
InitializingEvent,
|
|
2073
2159
|
function(event)
|
|
2160
|
+
local function ifNotLeft(unit)
|
|
2161
|
+
local handle = unit.handle
|
|
2162
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
|
|
2163
|
+
invoke(event, unit)
|
|
2164
|
+
end
|
|
2165
|
+
end
|
|
2074
2166
|
____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
|
|
2075
2167
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
2076
|
-
|
|
2077
|
-
Timer:run(Event.invoke, event, unit)
|
|
2168
|
+
Timer:run(ifNotLeft, unit)
|
|
2078
2169
|
end
|
|
2079
2170
|
end)
|
|
2080
2171
|
end
|
|
@@ -2112,27 +2203,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
|
|
|
2112
2203
|
Unit.onTargetCast = dispatchId(__TS__New(
|
|
2113
2204
|
InitializingEvent,
|
|
2114
2205
|
function(event)
|
|
2115
|
-
local invoke = Event.invoke
|
|
2116
2206
|
local function listener(unit, id)
|
|
2117
|
-
local
|
|
2207
|
+
local ____GetSpellTargetUnit_result_10
|
|
2118
2208
|
if GetSpellTargetUnit() then
|
|
2119
|
-
|
|
2209
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2120
2210
|
else
|
|
2121
|
-
local
|
|
2211
|
+
local ____GetSpellTargetItem_result_9
|
|
2122
2212
|
if GetSpellTargetItem() then
|
|
2123
|
-
|
|
2213
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2124
2214
|
else
|
|
2125
|
-
local
|
|
2215
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2126
2216
|
if GetSpellTargetDestructable() then
|
|
2127
|
-
|
|
2217
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2128
2218
|
else
|
|
2129
|
-
|
|
2219
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2130
2220
|
end
|
|
2131
|
-
|
|
2221
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2132
2222
|
end
|
|
2133
|
-
|
|
2223
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2134
2224
|
end
|
|
2135
|
-
local target =
|
|
2225
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2136
2226
|
if target then
|
|
2137
2227
|
invoke(event, unit, id, target)
|
|
2138
2228
|
end
|
|
@@ -2304,10 +2394,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2304
2394
|
____exports.UnitTriggerEvent,
|
|
2305
2395
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2306
2396
|
function()
|
|
2307
|
-
local
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2397
|
+
local handle = getOrderedUnit()
|
|
2398
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2399
|
+
local unit = ____exports.Unit:of(handle)
|
|
2400
|
+
if unit.state == 1 then
|
|
2401
|
+
return unit, getIssuedOrderId()
|
|
2402
|
+
end
|
|
2311
2403
|
end
|
|
2312
2404
|
return IgnoreEvent
|
|
2313
2405
|
end
|
|
@@ -2329,7 +2421,6 @@ Unit.autoAttackStartEvent = __TS__New(
|
|
|
2329
2421
|
)
|
|
2330
2422
|
Unit.onDamaging = (function()
|
|
2331
2423
|
local event = __TS__New(Event)
|
|
2332
|
-
local invoke = Event.invoke
|
|
2333
2424
|
local trigger = CreateTrigger()
|
|
2334
2425
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2335
2426
|
TriggerAddCondition(
|
|
@@ -2339,38 +2430,57 @@ Unit.onDamaging = (function()
|
|
|
2339
2430
|
if source and source.typeId == dummyUnitId then
|
|
2340
2431
|
source = nil
|
|
2341
2432
|
end
|
|
2342
|
-
local target = BlzGetEventDamageTarget()
|
|
2433
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2434
|
+
local metadata = damageMetadataByTarget[target]
|
|
2435
|
+
damageMetadataByTarget[target] = nil
|
|
2343
2436
|
local data = {
|
|
2344
2437
|
amount = GetEventDamage(),
|
|
2345
|
-
attackType = BlzGetEventAttackType(),
|
|
2438
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2346
2439
|
damageType = BlzGetEventDamageType(),
|
|
2347
2440
|
weaponType = BlzGetEventWeaponType(),
|
|
2348
|
-
|
|
2441
|
+
metadata = metadata,
|
|
2442
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2443
|
+
originalAmount = GetEventDamage(),
|
|
2444
|
+
originalMetadata = metadata,
|
|
2445
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2349
2446
|
}
|
|
2350
2447
|
if data.isAttack and source then
|
|
2351
|
-
|
|
2352
|
-
if weapon == -1 then
|
|
2353
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2354
|
-
weapon = 0
|
|
2355
|
-
end
|
|
2356
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2448
|
+
data.weapon = source:chooseWeapon(target)
|
|
2357
2449
|
end
|
|
2358
2450
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2359
2451
|
invoke(
|
|
2360
2452
|
event,
|
|
2361
2453
|
source,
|
|
2362
|
-
|
|
2454
|
+
target,
|
|
2363
2455
|
setmetatable(
|
|
2364
2456
|
{},
|
|
2365
2457
|
{
|
|
2366
2458
|
__index = data,
|
|
2367
2459
|
__newindex = function(self, key, value)
|
|
2368
|
-
damageSetters[key]
|
|
2460
|
+
local damageSetter = damageSetters[key]
|
|
2461
|
+
if damageSetter ~= nil then
|
|
2462
|
+
damageSetter(value)
|
|
2463
|
+
end
|
|
2369
2464
|
data[key] = value
|
|
2370
2465
|
end
|
|
2371
2466
|
}
|
|
2372
2467
|
)
|
|
2373
2468
|
)
|
|
2469
|
+
if data[0] and source then
|
|
2470
|
+
local sourceOwner = source.owner.handle
|
|
2471
|
+
data[1] = sourceOwner
|
|
2472
|
+
local targetOwner = target.owner.handle
|
|
2473
|
+
data[2] = targetOwner
|
|
2474
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2475
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2476
|
+
data[3] = true
|
|
2477
|
+
end
|
|
2478
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2479
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2480
|
+
data[4] = true
|
|
2481
|
+
end
|
|
2482
|
+
end
|
|
2483
|
+
damagingEventByTarget[target] = data
|
|
2374
2484
|
return
|
|
2375
2485
|
end
|
|
2376
2486
|
BlzSetEventDamage(0)
|
|
@@ -2378,7 +2488,7 @@ Unit.onDamaging = (function()
|
|
|
2378
2488
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2379
2489
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2380
2490
|
local sourceOwner = source.owner.handle
|
|
2381
|
-
local targetOwner =
|
|
2491
|
+
local targetOwner = target.owner.handle
|
|
2382
2492
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2383
2493
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2384
2494
|
Timer:run(function()
|
|
@@ -2394,23 +2504,19 @@ Unit.onDamaging = (function()
|
|
|
2394
2504
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2395
2505
|
local condition = ____value[1]
|
|
2396
2506
|
local action = ____value[2]
|
|
2397
|
-
if condition(
|
|
2398
|
-
source,
|
|
2399
|
-
____exports.Unit:of(target),
|
|
2400
|
-
data
|
|
2401
|
-
) then
|
|
2507
|
+
if condition(source, target, data) then
|
|
2402
2508
|
action(
|
|
2403
2509
|
source,
|
|
2404
|
-
|
|
2510
|
+
target,
|
|
2405
2511
|
setmetatable(
|
|
2406
2512
|
{fire = function()
|
|
2407
2513
|
UnitDamageTarget(
|
|
2408
2514
|
source.handle,
|
|
2409
|
-
target,
|
|
2515
|
+
target.handle,
|
|
2410
2516
|
data.amount,
|
|
2411
2517
|
true,
|
|
2412
2518
|
true,
|
|
2413
|
-
data.attackType,
|
|
2519
|
+
attackTypeToNative(data.attackType),
|
|
2414
2520
|
data.damageType,
|
|
2415
2521
|
data.weaponType
|
|
2416
2522
|
)
|
|
@@ -2428,7 +2534,6 @@ end)()
|
|
|
2428
2534
|
Unit.onDamage = __TS__New(
|
|
2429
2535
|
InitializingEvent,
|
|
2430
2536
|
function(event)
|
|
2431
|
-
local invoke = Event.invoke
|
|
2432
2537
|
local trigger = CreateTrigger()
|
|
2433
2538
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2434
2539
|
TriggerAddCondition(
|
|
@@ -2438,29 +2543,54 @@ Unit.onDamage = __TS__New(
|
|
|
2438
2543
|
if source and source.typeId == dummyUnitId then
|
|
2439
2544
|
source = nil
|
|
2440
2545
|
end
|
|
2546
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2547
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2548
|
+
damagingEventByTarget[target] = nil
|
|
2441
2549
|
local data = {
|
|
2442
2550
|
amount = GetEventDamage(),
|
|
2443
|
-
attackType = BlzGetEventAttackType(),
|
|
2551
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2444
2552
|
damageType = BlzGetEventDamageType(),
|
|
2445
2553
|
weaponType = BlzGetEventWeaponType(),
|
|
2554
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2446
2555
|
isAttack = BlzGetEventIsAttack(),
|
|
2556
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2557
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2447
2558
|
preventDeath = damageEventPreventDeath
|
|
2448
2559
|
}
|
|
2560
|
+
if damagingEvent then
|
|
2561
|
+
for key, value in pairs(damagingEvent) do
|
|
2562
|
+
if isAttribute(key) then
|
|
2563
|
+
data[key] = value
|
|
2564
|
+
end
|
|
2565
|
+
end
|
|
2566
|
+
local sourceOwner = damagingEvent[1]
|
|
2567
|
+
if sourceOwner then
|
|
2568
|
+
local targetOwner = damagingEvent[2]
|
|
2569
|
+
if damagingEvent[3] then
|
|
2570
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2571
|
+
end
|
|
2572
|
+
if damagingEvent[4] then
|
|
2573
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2574
|
+
end
|
|
2575
|
+
end
|
|
2576
|
+
end
|
|
2449
2577
|
local evData = setmetatable(
|
|
2450
2578
|
{},
|
|
2451
2579
|
{
|
|
2452
2580
|
__index = data,
|
|
2453
2581
|
__newindex = function(self, key, value)
|
|
2454
|
-
damageSetters[key]
|
|
2582
|
+
local damageSetter = damageSetters[key]
|
|
2583
|
+
if damageSetter ~= nil then
|
|
2584
|
+
damageSetter(value)
|
|
2585
|
+
end
|
|
2455
2586
|
data[key] = value
|
|
2456
2587
|
end
|
|
2457
2588
|
}
|
|
2458
2589
|
)
|
|
2459
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2460
2590
|
invoke(event, source, target, evData)
|
|
2461
2591
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2462
2592
|
local bonusHealth = math.ceil(evData.amount)
|
|
2463
|
-
target[
|
|
2593
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2464
2594
|
BlzSetUnitMaxHP(
|
|
2465
2595
|
target.handle,
|
|
2466
2596
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2474,7 +2604,7 @@ Unit.onDamage = __TS__New(
|
|
|
2474
2604
|
evData[0],
|
|
2475
2605
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2476
2606
|
)
|
|
2477
|
-
target[
|
|
2607
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2478
2608
|
SetWidgetLife(
|
|
2479
2609
|
target.handle,
|
|
2480
2610
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2494,32 +2624,110 @@ Unit.onDamage = __TS__New(
|
|
|
2494
2624
|
DestroyTrigger(trigger)
|
|
2495
2625
|
end
|
|
2496
2626
|
)
|
|
2497
|
-
Unit.
|
|
2627
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2498
2628
|
____exports.UnitTriggerEvent,
|
|
2499
2629
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2500
2630
|
function()
|
|
2501
2631
|
local unit = getTriggerUnit()
|
|
2502
|
-
|
|
2503
|
-
|
|
2632
|
+
local item = getManipulatedItem()
|
|
2633
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2634
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2504
2635
|
end
|
|
2505
2636
|
return IgnoreEvent
|
|
2506
2637
|
end
|
|
2507
2638
|
)
|
|
2508
|
-
Unit.
|
|
2639
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2509
2640
|
____exports.UnitTriggerEvent,
|
|
2510
2641
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2511
2642
|
function()
|
|
2512
|
-
local
|
|
2513
|
-
|
|
2514
|
-
|
|
2643
|
+
local unitHandle = getTriggerUnit()
|
|
2644
|
+
local itemHandle = getManipulatedItem()
|
|
2645
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
|
|
2646
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2647
|
+
local item = Item:of(itemHandle)
|
|
2648
|
+
if item.owner ~= unit then
|
|
2649
|
+
return unit, item
|
|
2650
|
+
end
|
|
2515
2651
|
end
|
|
2516
2652
|
return IgnoreEvent
|
|
2517
2653
|
end
|
|
2518
2654
|
)
|
|
2519
|
-
Unit.
|
|
2655
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2520
2656
|
____exports.UnitTriggerEvent,
|
|
2521
2657
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2522
|
-
function()
|
|
2658
|
+
function()
|
|
2659
|
+
local unit = getTriggerUnit()
|
|
2660
|
+
local item = getManipulatedItem()
|
|
2661
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2662
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2663
|
+
end
|
|
2664
|
+
return IgnoreEvent
|
|
2665
|
+
end
|
|
2666
|
+
)
|
|
2667
|
+
Unit.itemStackedEvent = __TS__New(
|
|
2668
|
+
____exports.UnitTriggerEvent,
|
|
2669
|
+
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2670
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2671
|
+
)
|
|
2672
|
+
__TS__ObjectDefineProperty(
|
|
2673
|
+
Unit,
|
|
2674
|
+
"itemChargesChangedEvent",
|
|
2675
|
+
{get = function(self)
|
|
2676
|
+
local event = __TS__New(Event)
|
|
2677
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2678
|
+
local unit = item.owner
|
|
2679
|
+
if unit ~= nil then
|
|
2680
|
+
invoke(event, unit, item)
|
|
2681
|
+
end
|
|
2682
|
+
end)
|
|
2683
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2684
|
+
return event
|
|
2685
|
+
end}
|
|
2686
|
+
)
|
|
2687
|
+
__TS__ObjectDefineProperty(
|
|
2688
|
+
Unit,
|
|
2689
|
+
"itemUseOrderEvent",
|
|
2690
|
+
{get = function(self)
|
|
2691
|
+
local event = __TS__New(Event)
|
|
2692
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2693
|
+
local slot = order - orderId("useslot0")
|
|
2694
|
+
local function listener(unit)
|
|
2695
|
+
local item = unit.items[slot + 1]
|
|
2696
|
+
if item ~= nil then
|
|
2697
|
+
invoke(event, unit, item)
|
|
2698
|
+
end
|
|
2699
|
+
end
|
|
2700
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2701
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2702
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2703
|
+
end
|
|
2704
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2705
|
+
return event
|
|
2706
|
+
end}
|
|
2707
|
+
)
|
|
2708
|
+
__TS__ObjectDefineProperty(
|
|
2709
|
+
Unit,
|
|
2710
|
+
"itemMoveOrderEvent",
|
|
2711
|
+
{get = function(self)
|
|
2712
|
+
local event = __TS__New(Event)
|
|
2713
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2714
|
+
local slotTo = order - orderId("moveslot0")
|
|
2715
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2716
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2717
|
+
if slotFrom ~= nil then
|
|
2718
|
+
invoke(
|
|
2719
|
+
event,
|
|
2720
|
+
unit,
|
|
2721
|
+
item,
|
|
2722
|
+
slotFrom,
|
|
2723
|
+
slotTo
|
|
2724
|
+
)
|
|
2725
|
+
end
|
|
2726
|
+
end)
|
|
2727
|
+
end
|
|
2728
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2729
|
+
return event
|
|
2730
|
+
end}
|
|
2523
2731
|
)
|
|
2524
2732
|
__TS__ObjectDefineProperty(
|
|
2525
2733
|
Unit,
|
|
@@ -2546,6 +2754,10 @@ __TS__ObjectDefineProperty(
|
|
|
2546
2754
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2547
2755
|
return destroyEvent
|
|
2548
2756
|
end}
|
|
2757
|
+
)
|
|
2758
|
+
Unit.synchronize = synchronizer(
|
|
2759
|
+
function(unit) return unit.syncId end,
|
|
2760
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2549
2761
|
);
|
|
2550
2762
|
(function(self)
|
|
2551
2763
|
local leaveAbilityIds = postcompile(function()
|
|
@@ -2575,7 +2787,8 @@ __TS__ObjectDefineProperty(
|
|
|
2575
2787
|
return
|
|
2576
2788
|
end
|
|
2577
2789
|
end
|
|
2578
|
-
unit:
|
|
2790
|
+
unit:saveData()
|
|
2791
|
+
Timer:run(unit, "destroy")
|
|
2579
2792
|
end)
|
|
2580
2793
|
end
|
|
2581
2794
|
end)(Unit)
|