warscript 0.0.1-dev.c59dd14 → 0.0.1-dev.c677d41
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/handle.lua +1 -1
- package/core/types/image.d.ts +0 -1
- 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 -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 +22 -5
- package/engine/behaviour/ability.lua +113 -48
- 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/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 +64 -31
- package/engine/internal/unit.lua +496 -262
- 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/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/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 +25 -6
- package/engine/object-data/entry/unit-type.lua +258 -93
- package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
- package/engine/object-data/entry/upgrade.d.ts +1 -2
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +18 -17
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +28 -5
- package/engine/object-field/ability.lua +59 -5
- package/engine/object-field/unit.d.ts +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 -5
- package/engine/random.lua +13 -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/fields/ability.d.ts +4 -2
- package/engine/standard/fields/ability.lua +4 -2
- 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 +8 -0
- package/engine/unit.lua +17 -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 -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 +26 -0
- package/utility/linked-map.lua +66 -0
- package/utility/linked-set.d.ts +13 -3
- package/utility/linked-set.lua +31 -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
|
@@ -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,42 +688,74 @@ 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
|
|
682
754
|
end
|
|
683
755
|
function Unit.prototype.onDestroy(self)
|
|
684
756
|
local handle = self.handle
|
|
757
|
+
self[108] = getUnitX(handle)
|
|
758
|
+
self[109] = getUnitY(handle)
|
|
685
759
|
if not self._owner then
|
|
686
760
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
687
761
|
end
|
|
@@ -720,7 +794,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
|
|
|
720
794
|
self._attackHandlers = handlers
|
|
721
795
|
if #handlers == 1 then
|
|
722
796
|
local handle = self.handle
|
|
723
|
-
assert(
|
|
797
|
+
assert(
|
|
798
|
+
unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
|
|
799
|
+
"attack handler ability must be added",
|
|
800
|
+
self
|
|
801
|
+
)
|
|
724
802
|
end
|
|
725
803
|
return handler
|
|
726
804
|
end
|
|
@@ -749,17 +827,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
749
827
|
end}
|
|
750
828
|
end
|
|
751
829
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
752
|
-
local
|
|
753
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
830
|
+
local ____combatClassification_2 = combatClassification
|
|
831
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
754
832
|
end
|
|
755
833
|
function Unit.prototype.addClassification(self, classification)
|
|
756
|
-
return
|
|
834
|
+
return UnitAddType(self.handle, classification)
|
|
757
835
|
end
|
|
758
836
|
function Unit.prototype.removeClassification(self, classification)
|
|
759
|
-
return
|
|
837
|
+
return UnitRemoveType(self.handle, classification)
|
|
760
838
|
end
|
|
761
839
|
function Unit.prototype.hasClassification(self, classification)
|
|
762
|
-
return
|
|
840
|
+
return IsUnitType(self.handle, classification)
|
|
763
841
|
end
|
|
764
842
|
function Unit.prototype.isVisibleTo(self, player)
|
|
765
843
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -768,13 +846,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
768
846
|
return isUnitInvisible(self.handle, player.handle)
|
|
769
847
|
end
|
|
770
848
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
771
|
-
local
|
|
849
|
+
local ____temp_3
|
|
772
850
|
if type(x) == "number" then
|
|
773
|
-
|
|
851
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
774
852
|
else
|
|
775
|
-
|
|
853
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
776
854
|
end
|
|
777
|
-
return
|
|
855
|
+
return ____temp_3
|
|
778
856
|
end
|
|
779
857
|
function Unit.prototype.isAllyOf(self, unit)
|
|
780
858
|
return isUnitAlly(
|
|
@@ -792,16 +870,30 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
792
870
|
if type(animation) == "number" then
|
|
793
871
|
setUnitAnimationByIndex(self.handle, animation)
|
|
794
872
|
elseif rarity then
|
|
795
|
-
|
|
873
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
796
874
|
else
|
|
797
875
|
setUnitAnimation(self.handle, animation)
|
|
798
876
|
end
|
|
799
877
|
end
|
|
878
|
+
function Unit.prototype.resetAnimation(self)
|
|
879
|
+
ResetUnitAnimation(self.handle)
|
|
880
|
+
end
|
|
800
881
|
function Unit.prototype.queueAnimation(self, animation)
|
|
801
|
-
|
|
882
|
+
QueueUnitAnimation(self.handle, animation)
|
|
883
|
+
end
|
|
884
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
885
|
+
local firstWeapon = self.firstWeapon
|
|
886
|
+
if firstWeapon.isEnabled and target:isAllowedTarget(self, firstWeapon.allowedTargetCombatClassifications) then
|
|
887
|
+
return firstWeapon
|
|
888
|
+
end
|
|
889
|
+
local secondWeapon = self.secondWeapon
|
|
890
|
+
if secondWeapon.isEnabled and target:isAllowedTarget(target, secondWeapon.allowedTargetCombatClassifications) then
|
|
891
|
+
return secondWeapon
|
|
892
|
+
end
|
|
893
|
+
return nil
|
|
802
894
|
end
|
|
803
895
|
function Unit.prototype.delayHealthChecks(self)
|
|
804
|
-
self[
|
|
896
|
+
self[104] = (self[104] or 0) + 1
|
|
805
897
|
Timer:run(delayHealthChecksCallback, self)
|
|
806
898
|
end
|
|
807
899
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -811,14 +903,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
811
903
|
return IsUnitSelected(self.handle, player.handle)
|
|
812
904
|
end
|
|
813
905
|
function Unit.prototype.explode(self)
|
|
814
|
-
|
|
906
|
+
SetUnitExploded(self.handle, true)
|
|
815
907
|
killUnit(self.handle)
|
|
816
908
|
end
|
|
817
909
|
function Unit.prototype.kill(self)
|
|
818
910
|
killUnit(self.handle)
|
|
819
911
|
end
|
|
820
|
-
function Unit.prototype.revive(self,
|
|
821
|
-
|
|
912
|
+
function Unit.prototype.revive(self, x, y, doEffect)
|
|
913
|
+
local ____ReviveHero_6 = ReviveHero
|
|
914
|
+
local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
|
|
915
|
+
local ____doEffect_4 = doEffect
|
|
916
|
+
if ____doEffect_4 == nil then
|
|
917
|
+
____doEffect_4 = false
|
|
918
|
+
end
|
|
919
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
920
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
822
921
|
end
|
|
823
922
|
function Unit.prototype.healTarget(self, target, amount)
|
|
824
923
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -858,20 +957,19 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
858
957
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
859
958
|
end
|
|
860
959
|
function Unit.prototype.itemInSlot(self, slot)
|
|
861
|
-
return Item:of(
|
|
960
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
862
961
|
end
|
|
863
962
|
function Unit.prototype.addAbility(self, abilityId)
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
963
|
+
local ability = UnitAbility:of(
|
|
964
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
965
|
+
abilityId,
|
|
966
|
+
self
|
|
967
|
+
)
|
|
968
|
+
if ability ~= nil then
|
|
870
969
|
local abilities = self.abilities
|
|
871
970
|
abilities[#abilities + 1] = ability
|
|
872
|
-
return ability
|
|
873
971
|
end
|
|
874
|
-
return
|
|
972
|
+
return ability
|
|
875
973
|
end
|
|
876
974
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
877
975
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -885,31 +983,21 @@ end
|
|
|
885
983
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
886
984
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
887
985
|
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
|
-
)
|
|
986
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
987
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
988
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
899
989
|
end
|
|
900
|
-
function Unit.prototype.removeAbility(self,
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
end
|
|
990
|
+
function Unit.prototype.removeAbility(self, abilityTypeId)
|
|
991
|
+
local abilities = self.abilities
|
|
992
|
+
for i = 1, #abilities do
|
|
993
|
+
if abilities[i].typeId == abilityTypeId then
|
|
994
|
+
local ability = abilities[i]
|
|
995
|
+
tremove(abilities, i)
|
|
996
|
+
ability:destroy()
|
|
997
|
+
return true
|
|
909
998
|
end
|
|
910
|
-
return true
|
|
911
999
|
end
|
|
912
|
-
return
|
|
1000
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
913
1001
|
end
|
|
914
1002
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
915
1003
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -923,12 +1011,16 @@ end
|
|
|
923
1011
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
924
1012
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
925
1013
|
end
|
|
926
|
-
function Unit.prototype.interruptAttack(self)
|
|
927
|
-
unitInterruptAttack(self.handle)
|
|
928
|
-
end
|
|
929
1014
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
930
|
-
|
|
931
|
-
unitDisableAbility(
|
|
1015
|
+
local handle = self.handle
|
|
1016
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
1017
|
+
Timer:run(
|
|
1018
|
+
unitDisableAbility,
|
|
1019
|
+
handle,
|
|
1020
|
+
abilityId,
|
|
1021
|
+
false,
|
|
1022
|
+
false
|
|
1023
|
+
)
|
|
932
1024
|
end
|
|
933
1025
|
function Unit.prototype.getDistanceTo(self, target)
|
|
934
1026
|
local handle = self.handle
|
|
@@ -988,18 +1080,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
988
1080
|
self:decrementStunCounter()
|
|
989
1081
|
end
|
|
990
1082
|
function Unit.prototype.incrementStunCounter(self)
|
|
991
|
-
local stunCounter = self[
|
|
992
|
-
if not self[
|
|
1083
|
+
local stunCounter = self[102] or 0
|
|
1084
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
993
1085
|
BlzPauseUnitEx(self.handle, true)
|
|
994
1086
|
end
|
|
995
|
-
self[
|
|
1087
|
+
self[102] = stunCounter + 1
|
|
996
1088
|
end
|
|
997
1089
|
function Unit.prototype.decrementStunCounter(self)
|
|
998
|
-
local stunCounter = self[
|
|
999
|
-
if not self[
|
|
1090
|
+
local stunCounter = self[102] or 0
|
|
1091
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
1000
1092
|
BlzPauseUnitEx(self.handle, false)
|
|
1001
1093
|
end
|
|
1002
|
-
self[
|
|
1094
|
+
self[102] = stunCounter - 1
|
|
1095
|
+
end
|
|
1096
|
+
function Unit.prototype.incrementForceStunCounter(self)
|
|
1097
|
+
local forceStunCounter = self[103] or 0
|
|
1098
|
+
if forceStunCounter == 0 then
|
|
1099
|
+
local handle = self.handle
|
|
1100
|
+
if not self[101] then
|
|
1101
|
+
for _ = self[102] or 0, -1 do
|
|
1102
|
+
BlzPauseUnitEx(handle, true)
|
|
1103
|
+
end
|
|
1104
|
+
end
|
|
1105
|
+
BlzPauseUnitEx(handle, true)
|
|
1106
|
+
end
|
|
1107
|
+
self[103] = forceStunCounter + 1
|
|
1108
|
+
end
|
|
1109
|
+
function Unit.prototype.decrementForceStunCounter(self)
|
|
1110
|
+
local forceStunCounter = self[103] or 0
|
|
1111
|
+
if forceStunCounter == 1 then
|
|
1112
|
+
local handle = self.handle
|
|
1113
|
+
if not self[101] then
|
|
1114
|
+
for _ = self[102] or 0, -1 do
|
|
1115
|
+
BlzPauseUnitEx(handle, false)
|
|
1116
|
+
end
|
|
1117
|
+
end
|
|
1118
|
+
BlzPauseUnitEx(handle, false)
|
|
1119
|
+
end
|
|
1120
|
+
self[103] = forceStunCounter - 1
|
|
1003
1121
|
end
|
|
1004
1122
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1005
1123
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1101,8 +1219,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1101
1219
|
)
|
|
1102
1220
|
return targetCollection
|
|
1103
1221
|
end
|
|
1104
|
-
function Unit.getSelectionOf(self, player)
|
|
1105
|
-
|
|
1222
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1223
|
+
if target == nil then
|
|
1224
|
+
target = {}
|
|
1225
|
+
end
|
|
1226
|
+
targetCollection = target
|
|
1106
1227
|
targetCollectionNextIndex = 1
|
|
1107
1228
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1108
1229
|
return targetCollection
|
|
@@ -1124,6 +1245,9 @@ end
|
|
|
1124
1245
|
function Unit.prototype.__tostring(self)
|
|
1125
1246
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1126
1247
|
end
|
|
1248
|
+
function Unit.getBySyncId(self, syncId)
|
|
1249
|
+
return unitBySyncId[syncId]
|
|
1250
|
+
end
|
|
1127
1251
|
__TS__SetDescriptor(
|
|
1128
1252
|
Unit.prototype,
|
|
1129
1253
|
"_deltas",
|
|
@@ -1183,7 +1307,15 @@ __TS__SetDescriptor(
|
|
|
1183
1307
|
Unit.prototype,
|
|
1184
1308
|
"isIllusion",
|
|
1185
1309
|
{get = function(self)
|
|
1186
|
-
return
|
|
1310
|
+
return IsUnitIllusion(self.handle)
|
|
1311
|
+
end},
|
|
1312
|
+
true
|
|
1313
|
+
)
|
|
1314
|
+
__TS__SetDescriptor(
|
|
1315
|
+
Unit.prototype,
|
|
1316
|
+
"isStunned",
|
|
1317
|
+
{get = function(self)
|
|
1318
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1187
1319
|
end},
|
|
1188
1320
|
true
|
|
1189
1321
|
)
|
|
@@ -1262,13 +1394,13 @@ __TS__SetDescriptor(
|
|
|
1262
1394
|
)
|
|
1263
1395
|
__TS__SetDescriptor(
|
|
1264
1396
|
Unit.prototype,
|
|
1265
|
-
"
|
|
1397
|
+
"primaryAttribute",
|
|
1266
1398
|
{
|
|
1267
1399
|
get = function(self)
|
|
1268
|
-
return
|
|
1400
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1269
1401
|
end,
|
|
1270
|
-
set = function(self,
|
|
1271
|
-
|
|
1402
|
+
set = function(self, primaryAttribute)
|
|
1403
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1272
1404
|
end
|
|
1273
1405
|
},
|
|
1274
1406
|
true
|
|
@@ -1290,19 +1422,6 @@ __TS__SetDescriptor(
|
|
|
1290
1422
|
end},
|
|
1291
1423
|
true
|
|
1292
1424
|
)
|
|
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
1425
|
__TS__SetDescriptor(
|
|
1307
1426
|
Unit.prototype,
|
|
1308
1427
|
"agilityBonus",
|
|
@@ -1320,19 +1439,6 @@ __TS__SetDescriptor(
|
|
|
1320
1439
|
end},
|
|
1321
1440
|
true
|
|
1322
1441
|
)
|
|
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
1442
|
__TS__SetDescriptor(
|
|
1337
1443
|
Unit.prototype,
|
|
1338
1444
|
"intelligenceBonus",
|
|
@@ -1381,17 +1487,17 @@ __TS__SetDescriptor(
|
|
|
1381
1487
|
"isTeamGlowVisible",
|
|
1382
1488
|
{
|
|
1383
1489
|
get = function(self)
|
|
1384
|
-
return not self[
|
|
1490
|
+
return not self[107]
|
|
1385
1491
|
end,
|
|
1386
1492
|
set = function(self, isTeamGlowVisible)
|
|
1387
|
-
|
|
1388
|
-
local
|
|
1493
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1494
|
+
local ____temp_7
|
|
1389
1495
|
if not isTeamGlowVisible then
|
|
1390
|
-
|
|
1496
|
+
____temp_7 = true
|
|
1391
1497
|
else
|
|
1392
|
-
|
|
1498
|
+
____temp_7 = nil
|
|
1393
1499
|
end
|
|
1394
|
-
self[
|
|
1500
|
+
self[107] = ____temp_7
|
|
1395
1501
|
end
|
|
1396
1502
|
},
|
|
1397
1503
|
true
|
|
@@ -1400,9 +1506,9 @@ __TS__SetDescriptor(
|
|
|
1400
1506
|
Unit.prototype,
|
|
1401
1507
|
"color",
|
|
1402
1508
|
{set = function(self, color)
|
|
1403
|
-
|
|
1404
|
-
if self[
|
|
1405
|
-
|
|
1509
|
+
SetUnitColor(self.handle, color.handle)
|
|
1510
|
+
if self[107] then
|
|
1511
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1406
1512
|
end
|
|
1407
1513
|
end},
|
|
1408
1514
|
true
|
|
@@ -1425,14 +1531,14 @@ __TS__SetDescriptor(
|
|
|
1425
1531
|
"maxHealth",
|
|
1426
1532
|
{
|
|
1427
1533
|
get = function(self)
|
|
1428
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1534
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1429
1535
|
end,
|
|
1430
1536
|
set = function(self, maxHealth)
|
|
1431
|
-
if maxHealth < 1 and self[
|
|
1432
|
-
self[
|
|
1537
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1538
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1433
1539
|
maxHealth = 1
|
|
1434
1540
|
end
|
|
1435
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1541
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1436
1542
|
end
|
|
1437
1543
|
},
|
|
1438
1544
|
true
|
|
@@ -1474,10 +1580,10 @@ __TS__SetDescriptor(
|
|
|
1474
1580
|
"health",
|
|
1475
1581
|
{
|
|
1476
1582
|
get = function(self)
|
|
1477
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1583
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1478
1584
|
end,
|
|
1479
1585
|
set = function(self, health)
|
|
1480
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1586
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1481
1587
|
end
|
|
1482
1588
|
},
|
|
1483
1589
|
true
|
|
@@ -1553,25 +1659,12 @@ __TS__SetDescriptor(
|
|
|
1553
1659
|
},
|
|
1554
1660
|
true
|
|
1555
1661
|
)
|
|
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
1662
|
__TS__SetDescriptor(
|
|
1570
1663
|
Unit.prototype,
|
|
1571
1664
|
"x",
|
|
1572
1665
|
{
|
|
1573
1666
|
get = function(self)
|
|
1574
|
-
return getUnitX(self.handle)
|
|
1667
|
+
return self[108] or getUnitX(self.handle)
|
|
1575
1668
|
end,
|
|
1576
1669
|
set = function(self, v)
|
|
1577
1670
|
SetUnitX(self.handle, v)
|
|
@@ -1584,7 +1677,7 @@ __TS__SetDescriptor(
|
|
|
1584
1677
|
"y",
|
|
1585
1678
|
{
|
|
1586
1679
|
get = function(self)
|
|
1587
|
-
return getUnitY(self.handle)
|
|
1680
|
+
return self[109] or getUnitY(self.handle)
|
|
1588
1681
|
end,
|
|
1589
1682
|
set = function(self, v)
|
|
1590
1683
|
SetUnitY(self.handle, v)
|
|
@@ -1670,10 +1763,10 @@ __TS__SetDescriptor(
|
|
|
1670
1763
|
"gold",
|
|
1671
1764
|
{
|
|
1672
1765
|
get = function(self)
|
|
1673
|
-
return
|
|
1766
|
+
return GetResourceAmount(self.handle)
|
|
1674
1767
|
end,
|
|
1675
1768
|
set = function(self, gold)
|
|
1676
|
-
|
|
1769
|
+
SetResourceAmount(self.handle, gold)
|
|
1677
1770
|
end
|
|
1678
1771
|
},
|
|
1679
1772
|
true
|
|
@@ -1688,17 +1781,21 @@ __TS__SetDescriptor(
|
|
|
1688
1781
|
set = function(self, isPaused)
|
|
1689
1782
|
local handle = self.handle
|
|
1690
1783
|
if isPaused and not IsUnitPaused(handle) then
|
|
1691
|
-
self[
|
|
1692
|
-
|
|
1693
|
-
|
|
1784
|
+
self[101] = true
|
|
1785
|
+
if (self[103] or 0) <= 0 then
|
|
1786
|
+
for _ = self[102] or 0, -1 do
|
|
1787
|
+
BlzPauseUnitEx(handle, true)
|
|
1788
|
+
end
|
|
1694
1789
|
end
|
|
1695
1790
|
PauseUnit(handle, true)
|
|
1696
1791
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1697
1792
|
PauseUnit(handle, false)
|
|
1698
|
-
|
|
1699
|
-
|
|
1793
|
+
if (self[103] or 0) <= 0 then
|
|
1794
|
+
for _ = self[102] or 0, -1 do
|
|
1795
|
+
BlzPauseUnitEx(handle, false)
|
|
1796
|
+
end
|
|
1700
1797
|
end
|
|
1701
|
-
self[
|
|
1798
|
+
self[101] = nil
|
|
1702
1799
|
end
|
|
1703
1800
|
end
|
|
1704
1801
|
},
|
|
@@ -1754,20 +1851,6 @@ __TS__SetDescriptor(
|
|
|
1754
1851
|
},
|
|
1755
1852
|
true
|
|
1756
1853
|
)
|
|
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
1854
|
__TS__SetDescriptor(
|
|
1772
1855
|
Unit.prototype,
|
|
1773
1856
|
"timeScale",
|
|
@@ -1801,6 +1884,19 @@ __TS__SetDescriptor(
|
|
|
1801
1884
|
end},
|
|
1802
1885
|
true
|
|
1803
1886
|
)
|
|
1887
|
+
__TS__SetDescriptor(
|
|
1888
|
+
Unit.prototype,
|
|
1889
|
+
"movementType",
|
|
1890
|
+
{
|
|
1891
|
+
get = function(self)
|
|
1892
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1893
|
+
end,
|
|
1894
|
+
set = function(self, movementType)
|
|
1895
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1896
|
+
end
|
|
1897
|
+
},
|
|
1898
|
+
true
|
|
1899
|
+
)
|
|
1804
1900
|
__TS__SetDescriptor(
|
|
1805
1901
|
Unit.prototype,
|
|
1806
1902
|
"pathing",
|
|
@@ -1982,6 +2078,14 @@ __TS__SetDescriptor(
|
|
|
1982
2078
|
end},
|
|
1983
2079
|
true
|
|
1984
2080
|
)
|
|
2081
|
+
__TS__SetDescriptor(
|
|
2082
|
+
Unit.prototype,
|
|
2083
|
+
"targetAcquiredEvent",
|
|
2084
|
+
{get = function(self)
|
|
2085
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2086
|
+
end},
|
|
2087
|
+
true
|
|
2088
|
+
)
|
|
1985
2089
|
__TS__SetDescriptor(
|
|
1986
2090
|
Unit.prototype,
|
|
1987
2091
|
"onSelect",
|
|
@@ -2042,6 +2146,11 @@ __TS__SetDescriptor(
|
|
|
2042
2146
|
end},
|
|
2043
2147
|
true
|
|
2044
2148
|
)
|
|
2149
|
+
Unit.levelChangedEvent = __TS__New(
|
|
2150
|
+
____exports.UnitTriggerEvent,
|
|
2151
|
+
EVENT_PLAYER_HERO_LEVEL,
|
|
2152
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
2153
|
+
)
|
|
2045
2154
|
Unit.deathEvent = __TS__New(
|
|
2046
2155
|
____exports.UnitTriggerEvent,
|
|
2047
2156
|
EVENT_PLAYER_UNIT_DEATH,
|
|
@@ -2055,7 +2164,6 @@ Unit.onDecay = __TS__New(
|
|
|
2055
2164
|
Unit.onResurrect = __TS__New(
|
|
2056
2165
|
InitializingEvent,
|
|
2057
2166
|
function(event)
|
|
2058
|
-
local invoke = Event.invoke
|
|
2059
2167
|
local dead = setmetatable({}, {__mode = "k"})
|
|
2060
2168
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
2061
2169
|
dead[unit] = true
|
|
@@ -2071,10 +2179,15 @@ Unit.onResurrect = __TS__New(
|
|
|
2071
2179
|
Unit.morphEvent = __TS__New(
|
|
2072
2180
|
InitializingEvent,
|
|
2073
2181
|
function(event)
|
|
2182
|
+
local function ifNotLeft(unit)
|
|
2183
|
+
local handle = unit.handle
|
|
2184
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
|
|
2185
|
+
invoke(event, unit)
|
|
2186
|
+
end
|
|
2187
|
+
end
|
|
2074
2188
|
____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
|
|
2075
2189
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
2076
|
-
|
|
2077
|
-
Timer:run(Event.invoke, event, unit)
|
|
2190
|
+
Timer:run(ifNotLeft, unit)
|
|
2078
2191
|
end
|
|
2079
2192
|
end)
|
|
2080
2193
|
end
|
|
@@ -2112,27 +2225,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
|
|
|
2112
2225
|
Unit.onTargetCast = dispatchId(__TS__New(
|
|
2113
2226
|
InitializingEvent,
|
|
2114
2227
|
function(event)
|
|
2115
|
-
local invoke = Event.invoke
|
|
2116
2228
|
local function listener(unit, id)
|
|
2117
|
-
local
|
|
2229
|
+
local ____GetSpellTargetUnit_result_10
|
|
2118
2230
|
if GetSpellTargetUnit() then
|
|
2119
|
-
|
|
2231
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2120
2232
|
else
|
|
2121
|
-
local
|
|
2233
|
+
local ____GetSpellTargetItem_result_9
|
|
2122
2234
|
if GetSpellTargetItem() then
|
|
2123
|
-
|
|
2235
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2124
2236
|
else
|
|
2125
|
-
local
|
|
2237
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2126
2238
|
if GetSpellTargetDestructable() then
|
|
2127
|
-
|
|
2239
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2128
2240
|
else
|
|
2129
|
-
|
|
2241
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2130
2242
|
end
|
|
2131
|
-
|
|
2243
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2132
2244
|
end
|
|
2133
|
-
|
|
2245
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2134
2246
|
end
|
|
2135
|
-
local target =
|
|
2247
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2136
2248
|
if target then
|
|
2137
2249
|
invoke(event, unit, id, target)
|
|
2138
2250
|
end
|
|
@@ -2304,10 +2416,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2304
2416
|
____exports.UnitTriggerEvent,
|
|
2305
2417
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2306
2418
|
function()
|
|
2307
|
-
local
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2419
|
+
local handle = getOrderedUnit()
|
|
2420
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2421
|
+
local unit = ____exports.Unit:of(handle)
|
|
2422
|
+
if unit.state == 1 then
|
|
2423
|
+
return unit, getIssuedOrderId()
|
|
2424
|
+
end
|
|
2311
2425
|
end
|
|
2312
2426
|
return IgnoreEvent
|
|
2313
2427
|
end
|
|
@@ -2329,7 +2443,6 @@ Unit.autoAttackStartEvent = __TS__New(
|
|
|
2329
2443
|
)
|
|
2330
2444
|
Unit.onDamaging = (function()
|
|
2331
2445
|
local event = __TS__New(Event)
|
|
2332
|
-
local invoke = Event.invoke
|
|
2333
2446
|
local trigger = CreateTrigger()
|
|
2334
2447
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2335
2448
|
TriggerAddCondition(
|
|
@@ -2339,38 +2452,57 @@ Unit.onDamaging = (function()
|
|
|
2339
2452
|
if source and source.typeId == dummyUnitId then
|
|
2340
2453
|
source = nil
|
|
2341
2454
|
end
|
|
2342
|
-
local target = BlzGetEventDamageTarget()
|
|
2455
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2456
|
+
local metadata = damageMetadataByTarget[target]
|
|
2457
|
+
damageMetadataByTarget[target] = nil
|
|
2343
2458
|
local data = {
|
|
2344
2459
|
amount = GetEventDamage(),
|
|
2345
|
-
attackType = BlzGetEventAttackType(),
|
|
2460
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2346
2461
|
damageType = BlzGetEventDamageType(),
|
|
2347
2462
|
weaponType = BlzGetEventWeaponType(),
|
|
2348
|
-
|
|
2463
|
+
metadata = metadata,
|
|
2464
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2465
|
+
originalAmount = GetEventDamage(),
|
|
2466
|
+
originalMetadata = metadata,
|
|
2467
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2349
2468
|
}
|
|
2350
2469
|
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])
|
|
2470
|
+
data.weapon = source:chooseWeapon(target)
|
|
2357
2471
|
end
|
|
2358
2472
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2359
2473
|
invoke(
|
|
2360
2474
|
event,
|
|
2361
2475
|
source,
|
|
2362
|
-
|
|
2476
|
+
target,
|
|
2363
2477
|
setmetatable(
|
|
2364
2478
|
{},
|
|
2365
2479
|
{
|
|
2366
2480
|
__index = data,
|
|
2367
2481
|
__newindex = function(self, key, value)
|
|
2368
|
-
damageSetters[key]
|
|
2482
|
+
local damageSetter = damageSetters[key]
|
|
2483
|
+
if damageSetter ~= nil then
|
|
2484
|
+
damageSetter(value)
|
|
2485
|
+
end
|
|
2369
2486
|
data[key] = value
|
|
2370
2487
|
end
|
|
2371
2488
|
}
|
|
2372
2489
|
)
|
|
2373
2490
|
)
|
|
2491
|
+
if data[0] and source then
|
|
2492
|
+
local sourceOwner = source.owner.handle
|
|
2493
|
+
data[1] = sourceOwner
|
|
2494
|
+
local targetOwner = target.owner.handle
|
|
2495
|
+
data[2] = targetOwner
|
|
2496
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2497
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2498
|
+
data[3] = true
|
|
2499
|
+
end
|
|
2500
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2501
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2502
|
+
data[4] = true
|
|
2503
|
+
end
|
|
2504
|
+
end
|
|
2505
|
+
damagingEventByTarget[target] = data
|
|
2374
2506
|
return
|
|
2375
2507
|
end
|
|
2376
2508
|
BlzSetEventDamage(0)
|
|
@@ -2378,7 +2510,7 @@ Unit.onDamaging = (function()
|
|
|
2378
2510
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2379
2511
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2380
2512
|
local sourceOwner = source.owner.handle
|
|
2381
|
-
local targetOwner =
|
|
2513
|
+
local targetOwner = target.owner.handle
|
|
2382
2514
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2383
2515
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2384
2516
|
Timer:run(function()
|
|
@@ -2394,23 +2526,19 @@ Unit.onDamaging = (function()
|
|
|
2394
2526
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2395
2527
|
local condition = ____value[1]
|
|
2396
2528
|
local action = ____value[2]
|
|
2397
|
-
if condition(
|
|
2398
|
-
source,
|
|
2399
|
-
____exports.Unit:of(target),
|
|
2400
|
-
data
|
|
2401
|
-
) then
|
|
2529
|
+
if condition(source, target, data) then
|
|
2402
2530
|
action(
|
|
2403
2531
|
source,
|
|
2404
|
-
|
|
2532
|
+
target,
|
|
2405
2533
|
setmetatable(
|
|
2406
2534
|
{fire = function()
|
|
2407
2535
|
UnitDamageTarget(
|
|
2408
2536
|
source.handle,
|
|
2409
|
-
target,
|
|
2537
|
+
target.handle,
|
|
2410
2538
|
data.amount,
|
|
2411
2539
|
true,
|
|
2412
2540
|
true,
|
|
2413
|
-
data.attackType,
|
|
2541
|
+
attackTypeToNative(data.attackType),
|
|
2414
2542
|
data.damageType,
|
|
2415
2543
|
data.weaponType
|
|
2416
2544
|
)
|
|
@@ -2428,7 +2556,6 @@ end)()
|
|
|
2428
2556
|
Unit.onDamage = __TS__New(
|
|
2429
2557
|
InitializingEvent,
|
|
2430
2558
|
function(event)
|
|
2431
|
-
local invoke = Event.invoke
|
|
2432
2559
|
local trigger = CreateTrigger()
|
|
2433
2560
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2434
2561
|
TriggerAddCondition(
|
|
@@ -2438,29 +2565,54 @@ Unit.onDamage = __TS__New(
|
|
|
2438
2565
|
if source and source.typeId == dummyUnitId then
|
|
2439
2566
|
source = nil
|
|
2440
2567
|
end
|
|
2568
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2569
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2570
|
+
damagingEventByTarget[target] = nil
|
|
2441
2571
|
local data = {
|
|
2442
2572
|
amount = GetEventDamage(),
|
|
2443
|
-
attackType = BlzGetEventAttackType(),
|
|
2573
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2444
2574
|
damageType = BlzGetEventDamageType(),
|
|
2445
2575
|
weaponType = BlzGetEventWeaponType(),
|
|
2576
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2446
2577
|
isAttack = BlzGetEventIsAttack(),
|
|
2578
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2579
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2447
2580
|
preventDeath = damageEventPreventDeath
|
|
2448
2581
|
}
|
|
2582
|
+
if damagingEvent then
|
|
2583
|
+
for key, value in pairs(damagingEvent) do
|
|
2584
|
+
if isAttribute(key) then
|
|
2585
|
+
data[key] = value
|
|
2586
|
+
end
|
|
2587
|
+
end
|
|
2588
|
+
local sourceOwner = damagingEvent[1]
|
|
2589
|
+
if sourceOwner then
|
|
2590
|
+
local targetOwner = damagingEvent[2]
|
|
2591
|
+
if damagingEvent[3] then
|
|
2592
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2593
|
+
end
|
|
2594
|
+
if damagingEvent[4] then
|
|
2595
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2596
|
+
end
|
|
2597
|
+
end
|
|
2598
|
+
end
|
|
2449
2599
|
local evData = setmetatable(
|
|
2450
2600
|
{},
|
|
2451
2601
|
{
|
|
2452
2602
|
__index = data,
|
|
2453
2603
|
__newindex = function(self, key, value)
|
|
2454
|
-
damageSetters[key]
|
|
2604
|
+
local damageSetter = damageSetters[key]
|
|
2605
|
+
if damageSetter ~= nil then
|
|
2606
|
+
damageSetter(value)
|
|
2607
|
+
end
|
|
2455
2608
|
data[key] = value
|
|
2456
2609
|
end
|
|
2457
2610
|
}
|
|
2458
2611
|
)
|
|
2459
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2460
2612
|
invoke(event, source, target, evData)
|
|
2461
2613
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2462
2614
|
local bonusHealth = math.ceil(evData.amount)
|
|
2463
|
-
target[
|
|
2615
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2464
2616
|
BlzSetUnitMaxHP(
|
|
2465
2617
|
target.handle,
|
|
2466
2618
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2474,7 +2626,7 @@ Unit.onDamage = __TS__New(
|
|
|
2474
2626
|
evData[0],
|
|
2475
2627
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2476
2628
|
)
|
|
2477
|
-
target[
|
|
2629
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2478
2630
|
SetWidgetLife(
|
|
2479
2631
|
target.handle,
|
|
2480
2632
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2494,32 +2646,110 @@ Unit.onDamage = __TS__New(
|
|
|
2494
2646
|
DestroyTrigger(trigger)
|
|
2495
2647
|
end
|
|
2496
2648
|
)
|
|
2497
|
-
Unit.
|
|
2649
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2498
2650
|
____exports.UnitTriggerEvent,
|
|
2499
2651
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2500
2652
|
function()
|
|
2501
2653
|
local unit = getTriggerUnit()
|
|
2502
|
-
|
|
2503
|
-
|
|
2654
|
+
local item = getManipulatedItem()
|
|
2655
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2656
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2504
2657
|
end
|
|
2505
2658
|
return IgnoreEvent
|
|
2506
2659
|
end
|
|
2507
2660
|
)
|
|
2508
|
-
Unit.
|
|
2661
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2509
2662
|
____exports.UnitTriggerEvent,
|
|
2510
2663
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2511
2664
|
function()
|
|
2512
|
-
local
|
|
2513
|
-
|
|
2514
|
-
|
|
2665
|
+
local unitHandle = getTriggerUnit()
|
|
2666
|
+
local itemHandle = getManipulatedItem()
|
|
2667
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
|
|
2668
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2669
|
+
local item = Item:of(itemHandle)
|
|
2670
|
+
if item.owner ~= unit then
|
|
2671
|
+
return unit, item
|
|
2672
|
+
end
|
|
2515
2673
|
end
|
|
2516
2674
|
return IgnoreEvent
|
|
2517
2675
|
end
|
|
2518
2676
|
)
|
|
2519
|
-
Unit.
|
|
2677
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2520
2678
|
____exports.UnitTriggerEvent,
|
|
2521
2679
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2522
|
-
function()
|
|
2680
|
+
function()
|
|
2681
|
+
local unit = getTriggerUnit()
|
|
2682
|
+
local item = getManipulatedItem()
|
|
2683
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2684
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2685
|
+
end
|
|
2686
|
+
return IgnoreEvent
|
|
2687
|
+
end
|
|
2688
|
+
)
|
|
2689
|
+
Unit.itemStackedEvent = __TS__New(
|
|
2690
|
+
____exports.UnitTriggerEvent,
|
|
2691
|
+
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2692
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2693
|
+
)
|
|
2694
|
+
__TS__ObjectDefineProperty(
|
|
2695
|
+
Unit,
|
|
2696
|
+
"itemChargesChangedEvent",
|
|
2697
|
+
{get = function(self)
|
|
2698
|
+
local event = __TS__New(Event)
|
|
2699
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2700
|
+
local unit = item.owner
|
|
2701
|
+
if unit ~= nil then
|
|
2702
|
+
invoke(event, unit, item)
|
|
2703
|
+
end
|
|
2704
|
+
end)
|
|
2705
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2706
|
+
return event
|
|
2707
|
+
end}
|
|
2708
|
+
)
|
|
2709
|
+
__TS__ObjectDefineProperty(
|
|
2710
|
+
Unit,
|
|
2711
|
+
"itemUseOrderEvent",
|
|
2712
|
+
{get = function(self)
|
|
2713
|
+
local event = __TS__New(Event)
|
|
2714
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2715
|
+
local slot = order - orderId("useslot0")
|
|
2716
|
+
local function listener(unit)
|
|
2717
|
+
local item = unit.items[slot + 1]
|
|
2718
|
+
if item ~= nil then
|
|
2719
|
+
invoke(event, unit, item)
|
|
2720
|
+
end
|
|
2721
|
+
end
|
|
2722
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2723
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2724
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2725
|
+
end
|
|
2726
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2727
|
+
return event
|
|
2728
|
+
end}
|
|
2729
|
+
)
|
|
2730
|
+
__TS__ObjectDefineProperty(
|
|
2731
|
+
Unit,
|
|
2732
|
+
"itemMoveOrderEvent",
|
|
2733
|
+
{get = function(self)
|
|
2734
|
+
local event = __TS__New(Event)
|
|
2735
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2736
|
+
local slotTo = order - orderId("moveslot0")
|
|
2737
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2738
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2739
|
+
if slotFrom ~= nil then
|
|
2740
|
+
invoke(
|
|
2741
|
+
event,
|
|
2742
|
+
unit,
|
|
2743
|
+
item,
|
|
2744
|
+
slotFrom,
|
|
2745
|
+
slotTo
|
|
2746
|
+
)
|
|
2747
|
+
end
|
|
2748
|
+
end)
|
|
2749
|
+
end
|
|
2750
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2751
|
+
return event
|
|
2752
|
+
end}
|
|
2523
2753
|
)
|
|
2524
2754
|
__TS__ObjectDefineProperty(
|
|
2525
2755
|
Unit,
|
|
@@ -2546,6 +2776,10 @@ __TS__ObjectDefineProperty(
|
|
|
2546
2776
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2547
2777
|
return destroyEvent
|
|
2548
2778
|
end}
|
|
2779
|
+
)
|
|
2780
|
+
Unit.synchronize = synchronizer(
|
|
2781
|
+
function(unit) return unit.syncId end,
|
|
2782
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2549
2783
|
);
|
|
2550
2784
|
(function(self)
|
|
2551
2785
|
local leaveAbilityIds = postcompile(function()
|