warscript 0.0.1-dev.ee2345e → 0.0.1-dev.ee6e396
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/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 +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 +33 -5
- 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 +121 -46
- package/engine/buff.lua +567 -248
- 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/mechanics/cast-ability.lua +6 -3
- 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/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 +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/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +13 -8
- package/engine/internal/unit/bonus.lua +33 -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/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/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+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 +97 -36
- package/engine/internal/unit.lua +701 -336
- 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/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/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/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/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 +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 +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 +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +25 -7
- package/engine/object-field.lua +359 -116
- 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 +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 +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 +12 -11
- 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 +25 -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-map.d.ts +34 -0
- package/utility/linked-map.lua +101 -0
- package/utility/linked-set.d.ts +15 -4
- package/utility/linked-set.lua +48 -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/records.lua +20 -1
- 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,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,11 +102,12 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
90
102
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
91
103
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
92
104
|
local isUnitInRange = IsUnitInRange
|
|
93
|
-
local
|
|
94
|
-
local
|
|
105
|
+
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
106
|
+
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
107
|
+
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
108
|
+
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
95
109
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
96
110
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
97
|
-
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
98
111
|
local isUnitInvisible = IsUnitInvisible
|
|
99
112
|
local isUnitVisible = IsUnitVisible
|
|
100
113
|
local getUnitX = GetUnitX
|
|
@@ -111,15 +124,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
111
124
|
local getIssuedOrderId = GetIssuedOrderId
|
|
112
125
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
113
126
|
local unitAlive = UnitAlive
|
|
114
|
-
local unitAddType = UnitAddType
|
|
115
|
-
local unitRemoveType = UnitRemoveType
|
|
116
|
-
local isUnitIllusion = IsUnitIllusion
|
|
117
|
-
local isUnitType = IsUnitType
|
|
118
127
|
local isUnitAlly = IsUnitAlly
|
|
119
128
|
local isUnitEnemy = IsUnitEnemy
|
|
120
129
|
local getOwningPlayer = GetOwningPlayer
|
|
121
|
-
local setUnitColor = SetUnitColor
|
|
122
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
123
130
|
____exports.UnitClassification = {}
|
|
124
131
|
local UnitClassification = ____exports.UnitClassification
|
|
125
132
|
do
|
|
@@ -129,6 +136,7 @@ do
|
|
|
129
136
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
130
137
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
131
138
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
139
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
132
140
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
133
141
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
134
142
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -275,16 +283,14 @@ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
|
|
|
275
283
|
end
|
|
276
284
|
local function dispatch(event, idGetter, argsGetter)
|
|
277
285
|
local initialized = false
|
|
278
|
-
local x = {}
|
|
279
286
|
return setmetatable(
|
|
280
|
-
|
|
287
|
+
{},
|
|
281
288
|
{
|
|
282
289
|
__index = function(self, id)
|
|
283
290
|
if type(id) ~= "number" then
|
|
284
291
|
return event[id]
|
|
285
292
|
end
|
|
286
293
|
if not initialized then
|
|
287
|
-
local invoke = Event.invoke
|
|
288
294
|
event:addListener(function(...)
|
|
289
295
|
local id = idGetter(...)
|
|
290
296
|
local dispatched = rawget(self, id)
|
|
@@ -322,7 +328,6 @@ local function dispatchAbility(event)
|
|
|
322
328
|
return event[id]
|
|
323
329
|
end
|
|
324
330
|
if not initialized then
|
|
325
|
-
local invoke = Event.invoke
|
|
326
331
|
event:addListener(function(unit, ability, ...)
|
|
327
332
|
local dispatched = rawget(self, ability.typeId)
|
|
328
333
|
if dispatched ~= nil then
|
|
@@ -339,6 +344,9 @@ local function dispatchAbility(event)
|
|
|
339
344
|
}
|
|
340
345
|
)
|
|
341
346
|
end
|
|
347
|
+
local function damagingEventPreventRetaliation(self)
|
|
348
|
+
self[0] = true
|
|
349
|
+
end
|
|
342
350
|
local function damageEventPreventDeath(self, callback, ...)
|
|
343
351
|
if self[0] ~= nil then
|
|
344
352
|
return
|
|
@@ -350,7 +358,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
350
358
|
rawset(self, 1 + i, (select(i, ...)))
|
|
351
359
|
end
|
|
352
360
|
end
|
|
353
|
-
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
|
+
}
|
|
354
369
|
local jlimitopByOperator = {
|
|
355
370
|
[0] = LESS_THAN_OR_EQUAL,
|
|
356
371
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -368,15 +383,27 @@ local modifiers = {
|
|
|
368
383
|
end,
|
|
369
384
|
armor = function(unit, value)
|
|
370
385
|
if UnitAddAbility(unit, armorBonusAbilityId) then
|
|
371
|
-
assert(
|
|
386
|
+
assert(
|
|
387
|
+
UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
|
|
388
|
+
"armor bonus ability must be made permanent",
|
|
389
|
+
unit
|
|
390
|
+
)
|
|
372
391
|
end
|
|
373
|
-
local ability = assert(
|
|
374
|
-
|
|
375
|
-
ability,
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
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
|
+
)
|
|
380
407
|
end
|
|
381
408
|
}
|
|
382
409
|
local getters = {
|
|
@@ -387,51 +414,184 @@ local getters = {
|
|
|
387
414
|
return BlzGetUnitArmor(unit)
|
|
388
415
|
end
|
|
389
416
|
}
|
|
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
|
-
|
|
417
|
+
____exports.UnitWeapon = __TS__Class()
|
|
418
|
+
local UnitWeapon = ____exports.UnitWeapon
|
|
419
|
+
UnitWeapon.name = "UnitWeapon"
|
|
420
|
+
function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
421
|
+
self.unit = unit
|
|
422
|
+
self.index = index
|
|
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
|
+
)
|
|
437
|
+
__TS__SetDescriptor(
|
|
438
|
+
UnitWeapon.prototype,
|
|
439
|
+
"cooldown",
|
|
440
|
+
{
|
|
441
|
+
get = function(self)
|
|
442
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index)
|
|
443
|
+
end,
|
|
444
|
+
set = function(self, cooldown)
|
|
445
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index, cooldown)
|
|
446
|
+
end
|
|
447
|
+
},
|
|
448
|
+
true
|
|
449
|
+
)
|
|
450
|
+
__TS__SetDescriptor(
|
|
451
|
+
UnitWeapon.prototype,
|
|
452
|
+
"damage",
|
|
453
|
+
{
|
|
454
|
+
get = function(self)
|
|
455
|
+
local minimumDamage = self.damageBase + self.damageDiceCount
|
|
456
|
+
local maximumDamage = self.damageBase + self.damageDiceCount * self.damageDiceSideCount
|
|
457
|
+
return {minimumDamage, maximumDamage}
|
|
458
|
+
end,
|
|
459
|
+
set = function(self, ____bindingPattern0)
|
|
460
|
+
local maximumDamage
|
|
461
|
+
local minimumDamage
|
|
462
|
+
minimumDamage = ____bindingPattern0[1]
|
|
463
|
+
maximumDamage = ____bindingPattern0[2]
|
|
464
|
+
self.damageBase = minimumDamage - 1
|
|
465
|
+
self.damageDiceCount = 1
|
|
466
|
+
self.damageDiceSideCount = maximumDamage - minimumDamage + 1
|
|
467
|
+
end
|
|
468
|
+
},
|
|
469
|
+
true
|
|
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
|
+
)
|
|
484
|
+
__TS__SetDescriptor(
|
|
485
|
+
UnitWeapon.prototype,
|
|
486
|
+
"damageBase",
|
|
487
|
+
{
|
|
488
|
+
get = function(self)
|
|
489
|
+
return BlzGetUnitBaseDamage(self.unit.handle, self.index)
|
|
490
|
+
end,
|
|
491
|
+
set = function(self, damageBase)
|
|
492
|
+
BlzSetUnitBaseDamage(self.unit.handle, self.index, damageBase)
|
|
493
|
+
end
|
|
494
|
+
},
|
|
495
|
+
true
|
|
496
|
+
)
|
|
497
|
+
__TS__SetDescriptor(
|
|
498
|
+
UnitWeapon.prototype,
|
|
499
|
+
"damageDiceCount",
|
|
500
|
+
{
|
|
501
|
+
get = function(self)
|
|
502
|
+
return BlzGetUnitDiceNumber(self.unit.handle, self.index)
|
|
503
|
+
end,
|
|
504
|
+
set = function(self, damageDiceCount)
|
|
505
|
+
BlzSetUnitDiceNumber(self.unit.handle, self.index, damageDiceCount)
|
|
506
|
+
end
|
|
507
|
+
},
|
|
508
|
+
true
|
|
509
|
+
)
|
|
510
|
+
__TS__SetDescriptor(
|
|
511
|
+
UnitWeapon.prototype,
|
|
512
|
+
"damageDiceSideCount",
|
|
513
|
+
{
|
|
514
|
+
get = function(self)
|
|
515
|
+
return BlzGetUnitDiceSides(self.unit.handle, self.index)
|
|
516
|
+
end,
|
|
517
|
+
set = function(self, damageDiceSideCount)
|
|
518
|
+
BlzSetUnitDiceSides(self.unit.handle, self.index, damageDiceSideCount)
|
|
519
|
+
end
|
|
520
|
+
},
|
|
521
|
+
true
|
|
522
|
+
)
|
|
523
|
+
__TS__SetDescriptor(
|
|
524
|
+
UnitWeapon.prototype,
|
|
525
|
+
"range",
|
|
526
|
+
{
|
|
527
|
+
get = function(self)
|
|
528
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_RANGE, self.index)
|
|
529
|
+
end,
|
|
530
|
+
set = function(self, range)
|
|
531
|
+
local handle = self.unit.handle
|
|
532
|
+
local index = self.index
|
|
533
|
+
setUnitWeaponRealField(
|
|
534
|
+
handle,
|
|
535
|
+
UNIT_WEAPON_RF_ATTACK_RANGE,
|
|
536
|
+
index + 1,
|
|
537
|
+
getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index + 1) + (range - getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index))
|
|
538
|
+
)
|
|
539
|
+
end
|
|
540
|
+
},
|
|
541
|
+
true
|
|
542
|
+
)
|
|
543
|
+
__TS__SetDescriptor(
|
|
544
|
+
UnitWeapon.prototype,
|
|
545
|
+
"impactDelay",
|
|
546
|
+
{
|
|
547
|
+
get = function(self)
|
|
548
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index)
|
|
549
|
+
end,
|
|
550
|
+
set = function(self, impactDelay)
|
|
551
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index, impactDelay)
|
|
552
|
+
end
|
|
553
|
+
},
|
|
554
|
+
true
|
|
555
|
+
)
|
|
556
|
+
__TS__SetDescriptor(
|
|
557
|
+
UnitWeapon.prototype,
|
|
558
|
+
"missileArc",
|
|
559
|
+
{
|
|
560
|
+
get = function(self)
|
|
561
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index)
|
|
562
|
+
end,
|
|
563
|
+
set = function(self, missileArc)
|
|
564
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index, missileArc)
|
|
565
|
+
end
|
|
566
|
+
},
|
|
567
|
+
true
|
|
568
|
+
)
|
|
569
|
+
__TS__SetDescriptor(
|
|
570
|
+
UnitWeapon.prototype,
|
|
571
|
+
"missileModelPath",
|
|
572
|
+
{
|
|
573
|
+
get = function(self)
|
|
574
|
+
return getUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index)
|
|
575
|
+
end,
|
|
576
|
+
set = function(self, missileModelPath)
|
|
577
|
+
setUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index, missileModelPath)
|
|
578
|
+
end
|
|
579
|
+
},
|
|
580
|
+
true
|
|
581
|
+
)
|
|
582
|
+
__TS__SetDescriptor(
|
|
583
|
+
UnitWeapon.prototype,
|
|
584
|
+
"missileSpeed",
|
|
585
|
+
{
|
|
586
|
+
get = function(self)
|
|
587
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index)
|
|
588
|
+
end,
|
|
589
|
+
set = function(self, missileSpeed)
|
|
590
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index, missileSpeed)
|
|
591
|
+
end
|
|
592
|
+
},
|
|
593
|
+
true
|
|
594
|
+
)
|
|
435
595
|
local unitInventorySize = UnitInventorySize
|
|
436
596
|
local unitItemInSlot = UnitItemInSlot
|
|
437
597
|
local getItemAbility = BlzGetItemAbility
|
|
@@ -442,8 +602,6 @@ local getAbilityName = GetAbilityName
|
|
|
442
602
|
local unitAddAbility = UnitAddAbility
|
|
443
603
|
local getUnitGoldCost = GetUnitGoldCost
|
|
444
604
|
local getUnitLumberCost = GetUnitWoodCost
|
|
445
|
-
local unitMakeAbilityPermanent = UnitMakeAbilityPermanent
|
|
446
|
-
local unitAddItem = UnitAddItem
|
|
447
605
|
local unitRemoveAbility = UnitRemoveAbility
|
|
448
606
|
local function retrieveAbility(unit, ability, abilityId)
|
|
449
607
|
if ability == nil then
|
|
@@ -453,17 +611,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
453
611
|
____exports.Unit:of(unit)
|
|
454
612
|
)
|
|
455
613
|
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
614
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
468
615
|
local item = unitItemInSlot(unit, i)
|
|
469
616
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -510,55 +657,110 @@ local fieldSetters = {
|
|
|
510
657
|
}
|
|
511
658
|
local dummies = {}
|
|
512
659
|
for ____, player in ipairs(Player.all) do
|
|
513
|
-
local dummy = assert(
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
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
|
+
)
|
|
520
671
|
ShowUnit(dummy, false)
|
|
521
672
|
dummies[player] = dummy
|
|
522
673
|
end
|
|
674
|
+
local function delayHealthChecksCallback(unit)
|
|
675
|
+
local counter = (unit[104] or 0) - 1
|
|
676
|
+
if counter ~= 0 then
|
|
677
|
+
unit[104] = counter
|
|
678
|
+
return
|
|
679
|
+
end
|
|
680
|
+
unit[104] = nil
|
|
681
|
+
local healthBonus = unit[105]
|
|
682
|
+
if healthBonus ~= nil then
|
|
683
|
+
unit[105] = nil
|
|
684
|
+
local handle = unit.handle
|
|
685
|
+
BlzSetUnitMaxHP(
|
|
686
|
+
handle,
|
|
687
|
+
BlzGetUnitMaxHP(handle) - healthBonus
|
|
688
|
+
)
|
|
689
|
+
end
|
|
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
|
|
523
703
|
____exports.Unit = __TS__Class()
|
|
524
704
|
local Unit = ____exports.Unit
|
|
525
705
|
Unit.name = "Unit"
|
|
526
706
|
__TS__ClassExtends(Unit, Handle)
|
|
527
707
|
function Unit.prototype.____constructor(self, handle)
|
|
528
708
|
Handle.prototype.____constructor(self, handle)
|
|
709
|
+
local ____nextSyncId_1 = nextSyncId
|
|
710
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
711
|
+
self.syncId = ____nextSyncId_1
|
|
529
712
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
530
|
-
assert(
|
|
531
|
-
|
|
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
|
+
)
|
|
532
723
|
if unitAddAbility(
|
|
533
724
|
handle,
|
|
534
725
|
fourCC("Amrf")
|
|
535
726
|
) then
|
|
536
|
-
assert(
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
727
|
+
assert(
|
|
728
|
+
unitRemoveAbility(
|
|
729
|
+
handle,
|
|
730
|
+
fourCC("Amrf")
|
|
731
|
+
),
|
|
732
|
+
"fly ability must be removed after addition",
|
|
733
|
+
self
|
|
734
|
+
)
|
|
540
735
|
end
|
|
736
|
+
unitBySyncId[self.syncId] = self
|
|
541
737
|
local ____ = self.abilities
|
|
542
738
|
end
|
|
543
|
-
function Unit.prototype.getEvent(self,
|
|
544
|
-
self.events = self.events or (
|
|
545
|
-
local eventId = GetHandleId(
|
|
546
|
-
|
|
547
|
-
|
|
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(
|
|
548
745
|
TriggerEvent,
|
|
549
746
|
function(trigger)
|
|
550
|
-
TriggerRegisterUnitEvent(trigger, self.handle,
|
|
747
|
+
TriggerRegisterUnitEvent(trigger, self.handle, jevent)
|
|
551
748
|
end,
|
|
552
749
|
collector or (function() return {} end)
|
|
553
750
|
)
|
|
751
|
+
self.events:put(eventId, event)
|
|
554
752
|
end
|
|
555
|
-
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))
|
|
556
760
|
end
|
|
557
761
|
function Unit.prototype.onDestroy(self)
|
|
558
762
|
local handle = self.handle
|
|
559
|
-
|
|
560
|
-
self._owner = Player:of(getOwningPlayer(handle))
|
|
561
|
-
end
|
|
763
|
+
self:saveData()
|
|
562
764
|
local abilities = self.abilities
|
|
563
765
|
for ____, ability in ipairs(abilities) do
|
|
564
766
|
ability:destroy()
|
|
@@ -594,7 +796,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
|
|
|
594
796
|
self._attackHandlers = handlers
|
|
595
797
|
if #handlers == 1 then
|
|
596
798
|
local handle = self.handle
|
|
597
|
-
assert(
|
|
799
|
+
assert(
|
|
800
|
+
unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
|
|
801
|
+
"attack handler ability must be added",
|
|
802
|
+
self
|
|
803
|
+
)
|
|
598
804
|
end
|
|
599
805
|
return handler
|
|
600
806
|
end
|
|
@@ -623,17 +829,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
623
829
|
end}
|
|
624
830
|
end
|
|
625
831
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
626
|
-
local
|
|
627
|
-
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
|
|
628
834
|
end
|
|
629
835
|
function Unit.prototype.addClassification(self, classification)
|
|
630
|
-
return
|
|
836
|
+
return UnitAddType(self.handle, classification)
|
|
631
837
|
end
|
|
632
838
|
function Unit.prototype.removeClassification(self, classification)
|
|
633
|
-
return
|
|
839
|
+
return UnitRemoveType(self.handle, classification)
|
|
634
840
|
end
|
|
635
841
|
function Unit.prototype.hasClassification(self, classification)
|
|
636
|
-
return
|
|
842
|
+
return IsUnitType(self.handle, classification)
|
|
637
843
|
end
|
|
638
844
|
function Unit.prototype.isVisibleTo(self, player)
|
|
639
845
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -642,13 +848,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
642
848
|
return isUnitInvisible(self.handle, player.handle)
|
|
643
849
|
end
|
|
644
850
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
645
|
-
local
|
|
851
|
+
local ____temp_3
|
|
646
852
|
if type(x) == "number" then
|
|
647
|
-
|
|
853
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
648
854
|
else
|
|
649
|
-
|
|
855
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
650
856
|
end
|
|
651
|
-
return
|
|
857
|
+
return ____temp_3
|
|
652
858
|
end
|
|
653
859
|
function Unit.prototype.isAllyOf(self, unit)
|
|
654
860
|
return isUnitAlly(
|
|
@@ -666,13 +872,31 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
666
872
|
if type(animation) == "number" then
|
|
667
873
|
setUnitAnimationByIndex(self.handle, animation)
|
|
668
874
|
elseif rarity then
|
|
669
|
-
|
|
875
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
670
876
|
else
|
|
671
877
|
setUnitAnimation(self.handle, animation)
|
|
672
878
|
end
|
|
673
879
|
end
|
|
880
|
+
function Unit.prototype.resetAnimation(self)
|
|
881
|
+
ResetUnitAnimation(self.handle)
|
|
882
|
+
end
|
|
674
883
|
function Unit.prototype.queueAnimation(self, animation)
|
|
675
|
-
|
|
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
|
|
896
|
+
end
|
|
897
|
+
function Unit.prototype.delayHealthChecks(self)
|
|
898
|
+
self[104] = (self[104] or 0) + 1
|
|
899
|
+
Timer:run(delayHealthChecksCallback, self)
|
|
676
900
|
end
|
|
677
901
|
function Unit.prototype.setPosition(self, x, y)
|
|
678
902
|
setUnitPosition(self.handle, x, y)
|
|
@@ -681,14 +905,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
681
905
|
return IsUnitSelected(self.handle, player.handle)
|
|
682
906
|
end
|
|
683
907
|
function Unit.prototype.explode(self)
|
|
684
|
-
|
|
908
|
+
SetUnitExploded(self.handle, true)
|
|
685
909
|
killUnit(self.handle)
|
|
686
910
|
end
|
|
687
911
|
function Unit.prototype.kill(self)
|
|
688
912
|
killUnit(self.handle)
|
|
689
913
|
end
|
|
690
|
-
function Unit.prototype.revive(self,
|
|
691
|
-
|
|
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))
|
|
692
923
|
end
|
|
693
924
|
function Unit.prototype.healTarget(self, target, amount)
|
|
694
925
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -728,20 +959,19 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
728
959
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
729
960
|
end
|
|
730
961
|
function Unit.prototype.itemInSlot(self, slot)
|
|
731
|
-
return Item:of(
|
|
962
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
732
963
|
end
|
|
733
964
|
function Unit.prototype.addAbility(self, abilityId)
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
965
|
+
local ability = UnitAbility:of(
|
|
966
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
967
|
+
abilityId,
|
|
968
|
+
self
|
|
969
|
+
)
|
|
970
|
+
if ability ~= nil then
|
|
740
971
|
local abilities = self.abilities
|
|
741
972
|
abilities[#abilities + 1] = ability
|
|
742
|
-
return ability
|
|
743
973
|
end
|
|
744
|
-
return
|
|
974
|
+
return ability
|
|
745
975
|
end
|
|
746
976
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
747
977
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -755,47 +985,44 @@ end
|
|
|
755
985
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
756
986
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
757
987
|
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
|
-
)
|
|
988
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
989
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
990
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
769
991
|
end
|
|
770
|
-
function Unit.prototype.removeAbility(self,
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
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
|
|
779
1000
|
end
|
|
780
|
-
return true
|
|
781
1001
|
end
|
|
782
|
-
return
|
|
1002
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
783
1003
|
end
|
|
784
1004
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
785
1005
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
786
1006
|
end
|
|
1007
|
+
function Unit.prototype.getAbilityRemainingCooldown(self, abilityId)
|
|
1008
|
+
return BlzGetUnitAbilityCooldownRemaining(self.handle, abilityId)
|
|
1009
|
+
end
|
|
787
1010
|
function Unit.prototype.startAbilityCooldown(self, abilityId, cooldown)
|
|
788
1011
|
BlzStartUnitAbilityCooldown(self.handle, abilityId, cooldown)
|
|
789
1012
|
end
|
|
790
1013
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
791
1014
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
792
1015
|
end
|
|
793
|
-
function Unit.prototype.interruptAttack(self)
|
|
794
|
-
unitInterruptAttack(self.handle)
|
|
795
|
-
end
|
|
796
1016
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
797
|
-
|
|
798
|
-
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
|
+
)
|
|
799
1026
|
end
|
|
800
1027
|
function Unit.prototype.getDistanceTo(self, target)
|
|
801
1028
|
local handle = self.handle
|
|
@@ -855,18 +1082,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
855
1082
|
self:decrementStunCounter()
|
|
856
1083
|
end
|
|
857
1084
|
function Unit.prototype.incrementStunCounter(self)
|
|
858
|
-
local stunCounter = self[
|
|
859
|
-
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
|
|
860
1087
|
BlzPauseUnitEx(self.handle, true)
|
|
861
1088
|
end
|
|
862
|
-
self[
|
|
1089
|
+
self[102] = stunCounter + 1
|
|
863
1090
|
end
|
|
864
1091
|
function Unit.prototype.decrementStunCounter(self)
|
|
865
|
-
local stunCounter = self[
|
|
866
|
-
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
|
|
867
1094
|
BlzPauseUnitEx(self.handle, false)
|
|
868
1095
|
end
|
|
869
|
-
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
|
|
870
1123
|
end
|
|
871
1124
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
872
1125
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -968,8 +1221,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
968
1221
|
)
|
|
969
1222
|
return targetCollection
|
|
970
1223
|
end
|
|
971
|
-
function Unit.getSelectionOf(self, player)
|
|
972
|
-
|
|
1224
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1225
|
+
if target == nil then
|
|
1226
|
+
target = {}
|
|
1227
|
+
end
|
|
1228
|
+
targetCollection = target
|
|
973
1229
|
targetCollectionNextIndex = 1
|
|
974
1230
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
975
1231
|
return targetCollection
|
|
@@ -991,6 +1247,9 @@ end
|
|
|
991
1247
|
function Unit.prototype.__tostring(self)
|
|
992
1248
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
993
1249
|
end
|
|
1250
|
+
function Unit.getBySyncId(self, syncId)
|
|
1251
|
+
return unitBySyncId[syncId]
|
|
1252
|
+
end
|
|
994
1253
|
__TS__SetDescriptor(
|
|
995
1254
|
Unit.prototype,
|
|
996
1255
|
"_deltas",
|
|
@@ -1050,7 +1309,15 @@ __TS__SetDescriptor(
|
|
|
1050
1309
|
Unit.prototype,
|
|
1051
1310
|
"isIllusion",
|
|
1052
1311
|
{get = function(self)
|
|
1053
|
-
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")
|
|
1054
1321
|
end},
|
|
1055
1322
|
true
|
|
1056
1323
|
)
|
|
@@ -1071,12 +1338,27 @@ __TS__SetDescriptor(
|
|
|
1071
1338
|
Unit.prototype,
|
|
1072
1339
|
"weapons",
|
|
1073
1340
|
{get = function(self)
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1341
|
+
return {self.firstWeapon, self.secondWeapon}
|
|
1342
|
+
end},
|
|
1343
|
+
true
|
|
1344
|
+
)
|
|
1345
|
+
__TS__SetDescriptor(
|
|
1346
|
+
Unit.prototype,
|
|
1347
|
+
"firstWeapon",
|
|
1348
|
+
{get = function(self)
|
|
1349
|
+
local weapon = __TS__New(____exports.UnitWeapon, self, 0)
|
|
1350
|
+
rawset(self, "firstWeapon", weapon)
|
|
1351
|
+
return weapon
|
|
1352
|
+
end},
|
|
1353
|
+
true
|
|
1354
|
+
)
|
|
1355
|
+
__TS__SetDescriptor(
|
|
1356
|
+
Unit.prototype,
|
|
1357
|
+
"secondWeapon",
|
|
1358
|
+
{get = function(self)
|
|
1359
|
+
local weapon = __TS__New(____exports.UnitWeapon, self, 1)
|
|
1360
|
+
rawset(self, "secondWeapon", weapon)
|
|
1361
|
+
return weapon
|
|
1080
1362
|
end},
|
|
1081
1363
|
true
|
|
1082
1364
|
)
|
|
@@ -1114,13 +1396,13 @@ __TS__SetDescriptor(
|
|
|
1114
1396
|
)
|
|
1115
1397
|
__TS__SetDescriptor(
|
|
1116
1398
|
Unit.prototype,
|
|
1117
|
-
"
|
|
1399
|
+
"primaryAttribute",
|
|
1118
1400
|
{
|
|
1119
1401
|
get = function(self)
|
|
1120
|
-
return
|
|
1402
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1121
1403
|
end,
|
|
1122
|
-
set = function(self,
|
|
1123
|
-
|
|
1404
|
+
set = function(self, primaryAttribute)
|
|
1405
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1124
1406
|
end
|
|
1125
1407
|
},
|
|
1126
1408
|
true
|
|
@@ -1142,19 +1424,6 @@ __TS__SetDescriptor(
|
|
|
1142
1424
|
end},
|
|
1143
1425
|
true
|
|
1144
1426
|
)
|
|
1145
|
-
__TS__SetDescriptor(
|
|
1146
|
-
Unit.prototype,
|
|
1147
|
-
"agilityBase",
|
|
1148
|
-
{
|
|
1149
|
-
get = function(self)
|
|
1150
|
-
return getHeroAgi(self.handle, false)
|
|
1151
|
-
end,
|
|
1152
|
-
set = function(self, agilityBase)
|
|
1153
|
-
setHeroAgi(self.handle, agilityBase, true)
|
|
1154
|
-
end
|
|
1155
|
-
},
|
|
1156
|
-
true
|
|
1157
|
-
)
|
|
1158
1427
|
__TS__SetDescriptor(
|
|
1159
1428
|
Unit.prototype,
|
|
1160
1429
|
"agilityBonus",
|
|
@@ -1172,19 +1441,6 @@ __TS__SetDescriptor(
|
|
|
1172
1441
|
end},
|
|
1173
1442
|
true
|
|
1174
1443
|
)
|
|
1175
|
-
__TS__SetDescriptor(
|
|
1176
|
-
Unit.prototype,
|
|
1177
|
-
"intelligenceBase",
|
|
1178
|
-
{
|
|
1179
|
-
get = function(self)
|
|
1180
|
-
return getHeroInt(self.handle, false)
|
|
1181
|
-
end,
|
|
1182
|
-
set = function(self, intelligenceBase)
|
|
1183
|
-
setHeroInt(self.handle, intelligenceBase, true)
|
|
1184
|
-
end
|
|
1185
|
-
},
|
|
1186
|
-
true
|
|
1187
|
-
)
|
|
1188
1444
|
__TS__SetDescriptor(
|
|
1189
1445
|
Unit.prototype,
|
|
1190
1446
|
"intelligenceBonus",
|
|
@@ -1233,17 +1489,17 @@ __TS__SetDescriptor(
|
|
|
1233
1489
|
"isTeamGlowVisible",
|
|
1234
1490
|
{
|
|
1235
1491
|
get = function(self)
|
|
1236
|
-
return not self[
|
|
1492
|
+
return not self[107]
|
|
1237
1493
|
end,
|
|
1238
1494
|
set = function(self, isTeamGlowVisible)
|
|
1239
|
-
|
|
1240
|
-
local
|
|
1495
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1496
|
+
local ____temp_7
|
|
1241
1497
|
if not isTeamGlowVisible then
|
|
1242
|
-
|
|
1498
|
+
____temp_7 = true
|
|
1243
1499
|
else
|
|
1244
|
-
|
|
1500
|
+
____temp_7 = nil
|
|
1245
1501
|
end
|
|
1246
|
-
self[
|
|
1502
|
+
self[107] = ____temp_7
|
|
1247
1503
|
end
|
|
1248
1504
|
},
|
|
1249
1505
|
true
|
|
@@ -1252,9 +1508,9 @@ __TS__SetDescriptor(
|
|
|
1252
1508
|
Unit.prototype,
|
|
1253
1509
|
"color",
|
|
1254
1510
|
{set = function(self, color)
|
|
1255
|
-
|
|
1256
|
-
if self[
|
|
1257
|
-
|
|
1511
|
+
SetUnitColor(self.handle, color.handle)
|
|
1512
|
+
if self[107] then
|
|
1513
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1258
1514
|
end
|
|
1259
1515
|
end},
|
|
1260
1516
|
true
|
|
@@ -1277,10 +1533,14 @@ __TS__SetDescriptor(
|
|
|
1277
1533
|
"maxHealth",
|
|
1278
1534
|
{
|
|
1279
1535
|
get = function(self)
|
|
1280
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1536
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1281
1537
|
end,
|
|
1282
1538
|
set = function(self, maxHealth)
|
|
1283
|
-
|
|
1539
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1540
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1541
|
+
maxHealth = 1
|
|
1542
|
+
end
|
|
1543
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1284
1544
|
end
|
|
1285
1545
|
},
|
|
1286
1546
|
true
|
|
@@ -1322,10 +1582,10 @@ __TS__SetDescriptor(
|
|
|
1322
1582
|
"health",
|
|
1323
1583
|
{
|
|
1324
1584
|
get = function(self)
|
|
1325
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1585
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1326
1586
|
end,
|
|
1327
1587
|
set = function(self, health)
|
|
1328
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1588
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1329
1589
|
end
|
|
1330
1590
|
},
|
|
1331
1591
|
true
|
|
@@ -1401,25 +1661,12 @@ __TS__SetDescriptor(
|
|
|
1401
1661
|
},
|
|
1402
1662
|
true
|
|
1403
1663
|
)
|
|
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
1664
|
__TS__SetDescriptor(
|
|
1418
1665
|
Unit.prototype,
|
|
1419
1666
|
"x",
|
|
1420
1667
|
{
|
|
1421
1668
|
get = function(self)
|
|
1422
|
-
return getUnitX(self.handle)
|
|
1669
|
+
return self[108] or getUnitX(self.handle)
|
|
1423
1670
|
end,
|
|
1424
1671
|
set = function(self, v)
|
|
1425
1672
|
SetUnitX(self.handle, v)
|
|
@@ -1432,7 +1679,7 @@ __TS__SetDescriptor(
|
|
|
1432
1679
|
"y",
|
|
1433
1680
|
{
|
|
1434
1681
|
get = function(self)
|
|
1435
|
-
return getUnitY(self.handle)
|
|
1682
|
+
return self[109] or getUnitY(self.handle)
|
|
1436
1683
|
end,
|
|
1437
1684
|
set = function(self, v)
|
|
1438
1685
|
SetUnitY(self.handle, v)
|
|
@@ -1518,10 +1765,10 @@ __TS__SetDescriptor(
|
|
|
1518
1765
|
"gold",
|
|
1519
1766
|
{
|
|
1520
1767
|
get = function(self)
|
|
1521
|
-
return
|
|
1768
|
+
return GetResourceAmount(self.handle)
|
|
1522
1769
|
end,
|
|
1523
1770
|
set = function(self, gold)
|
|
1524
|
-
|
|
1771
|
+
SetResourceAmount(self.handle, gold)
|
|
1525
1772
|
end
|
|
1526
1773
|
},
|
|
1527
1774
|
true
|
|
@@ -1536,17 +1783,21 @@ __TS__SetDescriptor(
|
|
|
1536
1783
|
set = function(self, isPaused)
|
|
1537
1784
|
local handle = self.handle
|
|
1538
1785
|
if isPaused and not IsUnitPaused(handle) then
|
|
1539
|
-
self[
|
|
1540
|
-
|
|
1541
|
-
|
|
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
|
|
1542
1791
|
end
|
|
1543
1792
|
PauseUnit(handle, true)
|
|
1544
1793
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1545
1794
|
PauseUnit(handle, false)
|
|
1546
|
-
|
|
1547
|
-
|
|
1795
|
+
if (self[103] or 0) <= 0 then
|
|
1796
|
+
for _ = self[102] or 0, -1 do
|
|
1797
|
+
BlzPauseUnitEx(handle, false)
|
|
1798
|
+
end
|
|
1548
1799
|
end
|
|
1549
|
-
self[
|
|
1800
|
+
self[101] = nil
|
|
1550
1801
|
end
|
|
1551
1802
|
end
|
|
1552
1803
|
},
|
|
@@ -1602,20 +1853,6 @@ __TS__SetDescriptor(
|
|
|
1602
1853
|
},
|
|
1603
1854
|
true
|
|
1604
1855
|
)
|
|
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
1856
|
__TS__SetDescriptor(
|
|
1620
1857
|
Unit.prototype,
|
|
1621
1858
|
"timeScale",
|
|
@@ -1649,6 +1886,19 @@ __TS__SetDescriptor(
|
|
|
1649
1886
|
end},
|
|
1650
1887
|
true
|
|
1651
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
|
+
)
|
|
1652
1902
|
__TS__SetDescriptor(
|
|
1653
1903
|
Unit.prototype,
|
|
1654
1904
|
"pathing",
|
|
@@ -1739,30 +1989,6 @@ __TS__SetDescriptor(
|
|
|
1739
1989
|
end},
|
|
1740
1990
|
true
|
|
1741
1991
|
)
|
|
1742
|
-
__TS__SetDescriptor(
|
|
1743
|
-
Unit.prototype,
|
|
1744
|
-
"onUnitInRange",
|
|
1745
|
-
{get = function(self)
|
|
1746
|
-
local handle = self.handle
|
|
1747
|
-
local onUnitInRange = setmetatable(
|
|
1748
|
-
{},
|
|
1749
|
-
{__index = function(self, value)
|
|
1750
|
-
local event = __TS__New(
|
|
1751
|
-
TriggerEvent,
|
|
1752
|
-
function(trigger)
|
|
1753
|
-
TriggerRegisterUnitInRangeSimple(trigger, value, handle)
|
|
1754
|
-
end,
|
|
1755
|
-
function() return ____exports.Unit:of(handle) end
|
|
1756
|
-
)
|
|
1757
|
-
rawset(self, value, event)
|
|
1758
|
-
return event
|
|
1759
|
-
end}
|
|
1760
|
-
)
|
|
1761
|
-
rawset(self, "onUnitInRange", onUnitInRange)
|
|
1762
|
-
return onUnitInRange
|
|
1763
|
-
end},
|
|
1764
|
-
true
|
|
1765
|
-
)
|
|
1766
1992
|
__TS__SetDescriptor(
|
|
1767
1993
|
Unit.prototype,
|
|
1768
1994
|
"onManaEqual",
|
|
@@ -1830,6 +2056,14 @@ __TS__SetDescriptor(
|
|
|
1830
2056
|
end},
|
|
1831
2057
|
true
|
|
1832
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
|
+
)
|
|
1833
2067
|
__TS__SetDescriptor(
|
|
1834
2068
|
Unit.prototype,
|
|
1835
2069
|
"onSelect",
|
|
@@ -1890,6 +2124,11 @@ __TS__SetDescriptor(
|
|
|
1890
2124
|
end},
|
|
1891
2125
|
true
|
|
1892
2126
|
)
|
|
2127
|
+
Unit.levelChangedEvent = __TS__New(
|
|
2128
|
+
____exports.UnitTriggerEvent,
|
|
2129
|
+
EVENT_PLAYER_HERO_LEVEL,
|
|
2130
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
2131
|
+
)
|
|
1893
2132
|
Unit.deathEvent = __TS__New(
|
|
1894
2133
|
____exports.UnitTriggerEvent,
|
|
1895
2134
|
EVENT_PLAYER_UNIT_DEATH,
|
|
@@ -1903,7 +2142,6 @@ Unit.onDecay = __TS__New(
|
|
|
1903
2142
|
Unit.onResurrect = __TS__New(
|
|
1904
2143
|
InitializingEvent,
|
|
1905
2144
|
function(event)
|
|
1906
|
-
local invoke = Event.invoke
|
|
1907
2145
|
local dead = setmetatable({}, {__mode = "k"})
|
|
1908
2146
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
1909
2147
|
dead[unit] = true
|
|
@@ -1919,10 +2157,15 @@ Unit.onResurrect = __TS__New(
|
|
|
1919
2157
|
Unit.morphEvent = __TS__New(
|
|
1920
2158
|
InitializingEvent,
|
|
1921
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
|
|
1922
2166
|
____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
|
|
1923
2167
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
1924
|
-
|
|
1925
|
-
Timer:run(Event.invoke, event, unit)
|
|
2168
|
+
Timer:run(ifNotLeft, unit)
|
|
1926
2169
|
end
|
|
1927
2170
|
end)
|
|
1928
2171
|
end
|
|
@@ -1960,27 +2203,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
|
|
|
1960
2203
|
Unit.onTargetCast = dispatchId(__TS__New(
|
|
1961
2204
|
InitializingEvent,
|
|
1962
2205
|
function(event)
|
|
1963
|
-
local invoke = Event.invoke
|
|
1964
2206
|
local function listener(unit, id)
|
|
1965
|
-
local
|
|
2207
|
+
local ____GetSpellTargetUnit_result_10
|
|
1966
2208
|
if GetSpellTargetUnit() then
|
|
1967
|
-
|
|
2209
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
1968
2210
|
else
|
|
1969
|
-
local
|
|
2211
|
+
local ____GetSpellTargetItem_result_9
|
|
1970
2212
|
if GetSpellTargetItem() then
|
|
1971
|
-
|
|
2213
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
1972
2214
|
else
|
|
1973
|
-
local
|
|
2215
|
+
local ____GetSpellTargetDestructable_result_8
|
|
1974
2216
|
if GetSpellTargetDestructable() then
|
|
1975
|
-
|
|
2217
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
1976
2218
|
else
|
|
1977
|
-
|
|
2219
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
1978
2220
|
end
|
|
1979
|
-
|
|
2221
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
1980
2222
|
end
|
|
1981
|
-
|
|
2223
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
1982
2224
|
end
|
|
1983
|
-
local target =
|
|
2225
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
1984
2226
|
if target then
|
|
1985
2227
|
invoke(event, unit, id, target)
|
|
1986
2228
|
end
|
|
@@ -2152,10 +2394,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2152
2394
|
____exports.UnitTriggerEvent,
|
|
2153
2395
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2154
2396
|
function()
|
|
2155
|
-
local
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
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
|
|
2159
2403
|
end
|
|
2160
2404
|
return IgnoreEvent
|
|
2161
2405
|
end
|
|
@@ -2177,7 +2421,6 @@ Unit.autoAttackStartEvent = __TS__New(
|
|
|
2177
2421
|
)
|
|
2178
2422
|
Unit.onDamaging = (function()
|
|
2179
2423
|
local event = __TS__New(Event)
|
|
2180
|
-
local invoke = Event.invoke
|
|
2181
2424
|
local trigger = CreateTrigger()
|
|
2182
2425
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2183
2426
|
TriggerAddCondition(
|
|
@@ -2187,38 +2430,57 @@ Unit.onDamaging = (function()
|
|
|
2187
2430
|
if source and source.typeId == dummyUnitId then
|
|
2188
2431
|
source = nil
|
|
2189
2432
|
end
|
|
2190
|
-
local target = BlzGetEventDamageTarget()
|
|
2433
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2434
|
+
local metadata = damageMetadataByTarget[target]
|
|
2435
|
+
damageMetadataByTarget[target] = nil
|
|
2191
2436
|
local data = {
|
|
2192
2437
|
amount = GetEventDamage(),
|
|
2193
|
-
attackType = BlzGetEventAttackType(),
|
|
2438
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2194
2439
|
damageType = BlzGetEventDamageType(),
|
|
2195
2440
|
weaponType = BlzGetEventWeaponType(),
|
|
2196
|
-
|
|
2441
|
+
metadata = metadata,
|
|
2442
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2443
|
+
originalAmount = GetEventDamage(),
|
|
2444
|
+
originalMetadata = metadata,
|
|
2445
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2197
2446
|
}
|
|
2198
2447
|
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])
|
|
2448
|
+
data.weapon = source:chooseWeapon(target)
|
|
2205
2449
|
end
|
|
2206
2450
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2207
2451
|
invoke(
|
|
2208
2452
|
event,
|
|
2209
2453
|
source,
|
|
2210
|
-
|
|
2454
|
+
target,
|
|
2211
2455
|
setmetatable(
|
|
2212
2456
|
{},
|
|
2213
2457
|
{
|
|
2214
2458
|
__index = data,
|
|
2215
2459
|
__newindex = function(self, key, value)
|
|
2216
|
-
damageSetters[key]
|
|
2460
|
+
local damageSetter = damageSetters[key]
|
|
2461
|
+
if damageSetter ~= nil then
|
|
2462
|
+
damageSetter(value)
|
|
2463
|
+
end
|
|
2217
2464
|
data[key] = value
|
|
2218
2465
|
end
|
|
2219
2466
|
}
|
|
2220
2467
|
)
|
|
2221
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
|
|
2222
2484
|
return
|
|
2223
2485
|
end
|
|
2224
2486
|
BlzSetEventDamage(0)
|
|
@@ -2226,7 +2488,7 @@ Unit.onDamaging = (function()
|
|
|
2226
2488
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2227
2489
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2228
2490
|
local sourceOwner = source.owner.handle
|
|
2229
|
-
local targetOwner =
|
|
2491
|
+
local targetOwner = target.owner.handle
|
|
2230
2492
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2231
2493
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2232
2494
|
Timer:run(function()
|
|
@@ -2242,23 +2504,19 @@ Unit.onDamaging = (function()
|
|
|
2242
2504
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2243
2505
|
local condition = ____value[1]
|
|
2244
2506
|
local action = ____value[2]
|
|
2245
|
-
if condition(
|
|
2246
|
-
source,
|
|
2247
|
-
____exports.Unit:of(target),
|
|
2248
|
-
data
|
|
2249
|
-
) then
|
|
2507
|
+
if condition(source, target, data) then
|
|
2250
2508
|
action(
|
|
2251
2509
|
source,
|
|
2252
|
-
|
|
2510
|
+
target,
|
|
2253
2511
|
setmetatable(
|
|
2254
2512
|
{fire = function()
|
|
2255
2513
|
UnitDamageTarget(
|
|
2256
2514
|
source.handle,
|
|
2257
|
-
target,
|
|
2515
|
+
target.handle,
|
|
2258
2516
|
data.amount,
|
|
2259
2517
|
true,
|
|
2260
2518
|
true,
|
|
2261
|
-
data.attackType,
|
|
2519
|
+
attackTypeToNative(data.attackType),
|
|
2262
2520
|
data.damageType,
|
|
2263
2521
|
data.weaponType
|
|
2264
2522
|
)
|
|
@@ -2276,7 +2534,6 @@ end)()
|
|
|
2276
2534
|
Unit.onDamage = __TS__New(
|
|
2277
2535
|
InitializingEvent,
|
|
2278
2536
|
function(event)
|
|
2279
|
-
local invoke = Event.invoke
|
|
2280
2537
|
local trigger = CreateTrigger()
|
|
2281
2538
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2282
2539
|
TriggerAddCondition(
|
|
@@ -2286,29 +2543,54 @@ Unit.onDamage = __TS__New(
|
|
|
2286
2543
|
if source and source.typeId == dummyUnitId then
|
|
2287
2544
|
source = nil
|
|
2288
2545
|
end
|
|
2546
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2547
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2548
|
+
damagingEventByTarget[target] = nil
|
|
2289
2549
|
local data = {
|
|
2290
2550
|
amount = GetEventDamage(),
|
|
2291
|
-
attackType = BlzGetEventAttackType(),
|
|
2551
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2292
2552
|
damageType = BlzGetEventDamageType(),
|
|
2293
2553
|
weaponType = BlzGetEventWeaponType(),
|
|
2554
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2294
2555
|
isAttack = BlzGetEventIsAttack(),
|
|
2556
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2557
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2295
2558
|
preventDeath = damageEventPreventDeath
|
|
2296
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
|
|
2297
2577
|
local evData = setmetatable(
|
|
2298
2578
|
{},
|
|
2299
2579
|
{
|
|
2300
2580
|
__index = data,
|
|
2301
2581
|
__newindex = function(self, key, value)
|
|
2302
|
-
damageSetters[key]
|
|
2582
|
+
local damageSetter = damageSetters[key]
|
|
2583
|
+
if damageSetter ~= nil then
|
|
2584
|
+
damageSetter(value)
|
|
2585
|
+
end
|
|
2303
2586
|
data[key] = value
|
|
2304
2587
|
end
|
|
2305
2588
|
}
|
|
2306
2589
|
)
|
|
2307
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2308
2590
|
invoke(event, source, target, evData)
|
|
2309
2591
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2310
2592
|
local bonusHealth = math.ceil(evData.amount)
|
|
2311
|
-
target[
|
|
2593
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2312
2594
|
BlzSetUnitMaxHP(
|
|
2313
2595
|
target.handle,
|
|
2314
2596
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2322,7 +2604,7 @@ Unit.onDamage = __TS__New(
|
|
|
2322
2604
|
evData[0],
|
|
2323
2605
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2324
2606
|
)
|
|
2325
|
-
target[
|
|
2607
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2326
2608
|
SetWidgetLife(
|
|
2327
2609
|
target.handle,
|
|
2328
2610
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2342,32 +2624,110 @@ Unit.onDamage = __TS__New(
|
|
|
2342
2624
|
DestroyTrigger(trigger)
|
|
2343
2625
|
end
|
|
2344
2626
|
)
|
|
2345
|
-
Unit.
|
|
2627
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2346
2628
|
____exports.UnitTriggerEvent,
|
|
2347
2629
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2348
2630
|
function()
|
|
2349
2631
|
local unit = getTriggerUnit()
|
|
2350
|
-
|
|
2351
|
-
|
|
2632
|
+
local item = getManipulatedItem()
|
|
2633
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2634
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2352
2635
|
end
|
|
2353
2636
|
return IgnoreEvent
|
|
2354
2637
|
end
|
|
2355
2638
|
)
|
|
2356
|
-
Unit.
|
|
2639
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2357
2640
|
____exports.UnitTriggerEvent,
|
|
2358
2641
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2359
2642
|
function()
|
|
2360
|
-
local
|
|
2361
|
-
|
|
2362
|
-
|
|
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
|
|
2363
2651
|
end
|
|
2364
2652
|
return IgnoreEvent
|
|
2365
2653
|
end
|
|
2366
2654
|
)
|
|
2367
|
-
Unit.
|
|
2655
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2368
2656
|
____exports.UnitTriggerEvent,
|
|
2369
2657
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2370
|
-
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}
|
|
2371
2731
|
)
|
|
2372
2732
|
__TS__ObjectDefineProperty(
|
|
2373
2733
|
Unit,
|
|
@@ -2394,6 +2754,10 @@ __TS__ObjectDefineProperty(
|
|
|
2394
2754
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2395
2755
|
return destroyEvent
|
|
2396
2756
|
end}
|
|
2757
|
+
)
|
|
2758
|
+
Unit.synchronize = synchronizer(
|
|
2759
|
+
function(unit) return unit.syncId end,
|
|
2760
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2397
2761
|
);
|
|
2398
2762
|
(function(self)
|
|
2399
2763
|
local leaveAbilityIds = postcompile(function()
|
|
@@ -2423,7 +2787,8 @@ __TS__ObjectDefineProperty(
|
|
|
2423
2787
|
return
|
|
2424
2788
|
end
|
|
2425
2789
|
end
|
|
2426
|
-
unit:
|
|
2790
|
+
unit:saveData()
|
|
2791
|
+
Timer:run(unit, "destroy")
|
|
2427
2792
|
end)
|
|
2428
2793
|
end
|
|
2429
2794
|
end)(Unit)
|