warscript 0.0.1-dev.b34a02b → 0.0.1-dev.b356a12
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 -0
- package/attributes.lua +17 -1
- 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 +3 -0
- package/core/types/frame.lua +130 -22
- 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 +100 -25
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.d.ts +1 -1
- package/core/util.lua +12 -1
- package/decl/native.d.ts +846 -790
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- 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 +5 -0
- package/engine/behaviour/ability/apply-buff.lua +36 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +12 -3
- package/engine/behaviour/ability/damage.lua +33 -39
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +43 -0
- 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 +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +28 -7
- package/engine/behaviour/ability.lua +137 -43
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +40 -2
- package/engine/behaviour/unit.lua +269 -6
- package/engine/buff.d.ts +119 -54
- package/engine/buff.lua +565 -298
- package/engine/internal/ability.d.ts +22 -3
- package/engine/internal/ability.lua +133 -13
- 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.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +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 +8 -0
- package/engine/internal/unit/bonus.lua +50 -3
- 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 +1 -0
- package/engine/internal/unit/item.lua +8 -4
- 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 +10 -1
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +52 -14
- package/engine/internal/unit.d.ts +56 -27
- package/engine/internal/unit.lua +469 -309
- 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 +6 -0
- package/engine/local-client.lua +77 -2
- 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 -2
- 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/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -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/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +21 -17
- package/engine/object-data/entry/ability-type.lua +177 -40
- package/engine/object-data/entry/buff-type/applicable.lua +122 -137
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +28 -2
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/item-type.d.ts +3 -1
- package/engine/object-data/entry/item-type.lua +15 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- 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 -5
- package/engine/object-data/entry/unit-type.lua +258 -93
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- 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 +12 -6
- package/engine/object-field/ability.lua +10 -6
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +26 -7
- package/engine/object-field.lua +362 -117
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -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 +8 -0
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +11 -10
- package/objutil/object.lua +1 -1
- package/objutil/unit.lua +8 -0
- package/operation.lua +1 -4
- package/package.json +5 -5
- package/patch-lua.lua +15 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +10 -1
- package/utility/arrays.lua +45 -3
- 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 +4 -1
- package/utility/linked-set.lua +43 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/records.lua +20 -1
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/ability-disable-counter.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/engine/internal/unit.lua
CHANGED
|
@@ -15,7 +15,6 @@ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
|
15
15
|
local Set = ____lualib.Set
|
|
16
16
|
local __TS__Spread = ____lualib.__TS__Spread
|
|
17
17
|
local ____exports = {}
|
|
18
|
-
local mainSelectedUnitByPlayer
|
|
19
18
|
local ____handle = require("core.types.handle")
|
|
20
19
|
local Handle = ____handle.Handle
|
|
21
20
|
local ____player = require("core.types.player")
|
|
@@ -51,38 +50,43 @@ local MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT = ____constants.MANA_R
|
|
|
51
50
|
local ____arrays = require("utility.arrays")
|
|
52
51
|
local forEach = ____arrays.forEach
|
|
53
52
|
local ____math = require("math")
|
|
54
|
-
local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
|
|
55
53
|
local min = ____math.min
|
|
56
|
-
local
|
|
57
|
-
local
|
|
58
|
-
local
|
|
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
|
|
59
69
|
local match = string.match
|
|
60
70
|
local ____tostring = _G.tostring
|
|
61
71
|
local setUnitAnimation = SetUnitAnimation
|
|
62
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
63
72
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
64
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
65
73
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
66
74
|
local getUnitRealField = BlzGetUnitRealField
|
|
67
75
|
local getHeroStr = GetHeroStr
|
|
68
76
|
local getHeroAgi = GetHeroAgi
|
|
69
77
|
local getHeroInt = GetHeroInt
|
|
70
|
-
local setHeroStr = SetHeroStr
|
|
71
|
-
local setHeroAgi = SetHeroAgi
|
|
72
|
-
local setHeroInt = SetHeroInt
|
|
73
78
|
local getUnitBooleanField = BlzGetUnitBooleanField
|
|
74
79
|
local getUnitStringField = BlzGetUnitStringField
|
|
75
80
|
local setUnitIntegerField = BlzSetUnitIntegerField
|
|
76
81
|
local setUnitRealField = BlzSetUnitRealField
|
|
77
82
|
local setUnitBooleanField = BlzSetUnitBooleanField
|
|
78
83
|
local setUnitStringField = BlzSetUnitStringField
|
|
79
|
-
local setUnitScale = SetUnitScale
|
|
80
84
|
local setUnitPosition = SetUnitPosition
|
|
81
85
|
local setUnitTimeScale = SetUnitTimeScale
|
|
82
86
|
local getHandleId = GetHandleId
|
|
87
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
83
88
|
local createUnit = CreateUnit
|
|
84
89
|
local killUnit = KillUnit
|
|
85
|
-
local setUnitExploded = SetUnitExploded
|
|
86
90
|
local removeUnit = RemoveUnit
|
|
87
91
|
local getUnitTypeId = GetUnitTypeId
|
|
88
92
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -98,15 +102,12 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
98
102
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
99
103
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
100
104
|
local isUnitInRange = IsUnitInRange
|
|
101
|
-
local setResourceAmount = SetResourceAmount
|
|
102
|
-
local getResourceAmount = GetResourceAmount
|
|
103
105
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
104
106
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
105
107
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
106
108
|
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
107
109
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
108
110
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
109
|
-
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
110
111
|
local isUnitInvisible = IsUnitInvisible
|
|
111
112
|
local isUnitVisible = IsUnitVisible
|
|
112
113
|
local getUnitX = GetUnitX
|
|
@@ -123,15 +124,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
123
124
|
local getIssuedOrderId = GetIssuedOrderId
|
|
124
125
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
125
126
|
local unitAlive = UnitAlive
|
|
126
|
-
local unitAddType = UnitAddType
|
|
127
|
-
local unitRemoveType = UnitRemoveType
|
|
128
|
-
local isUnitIllusion = IsUnitIllusion
|
|
129
|
-
local isUnitType = IsUnitType
|
|
130
127
|
local isUnitAlly = IsUnitAlly
|
|
131
128
|
local isUnitEnemy = IsUnitEnemy
|
|
132
129
|
local getOwningPlayer = GetOwningPlayer
|
|
133
|
-
local setUnitColor = SetUnitColor
|
|
134
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
135
130
|
____exports.UnitClassification = {}
|
|
136
131
|
local UnitClassification = ____exports.UnitClassification
|
|
137
132
|
do
|
|
@@ -141,6 +136,7 @@ do
|
|
|
141
136
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
142
137
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
143
138
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
139
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
144
140
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
145
141
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
146
142
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -348,6 +344,9 @@ local function dispatchAbility(event)
|
|
|
348
344
|
}
|
|
349
345
|
)
|
|
350
346
|
end
|
|
347
|
+
local function damagingEventPreventRetaliation(self)
|
|
348
|
+
self[0] = true
|
|
349
|
+
end
|
|
351
350
|
local function damageEventPreventDeath(self, callback, ...)
|
|
352
351
|
if self[0] ~= nil then
|
|
353
352
|
return
|
|
@@ -359,7 +358,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
359
358
|
rawset(self, 1 + i, (select(i, ...)))
|
|
360
359
|
end
|
|
361
360
|
end
|
|
362
|
-
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
|
+
}
|
|
363
369
|
local jlimitopByOperator = {
|
|
364
370
|
[0] = LESS_THAN_OR_EQUAL,
|
|
365
371
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -377,15 +383,27 @@ local modifiers = {
|
|
|
377
383
|
end,
|
|
378
384
|
armor = function(unit, value)
|
|
379
385
|
if UnitAddAbility(unit, armorBonusAbilityId) then
|
|
380
|
-
assert(
|
|
386
|
+
assert(
|
|
387
|
+
UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
|
|
388
|
+
"armor bonus ability must be made permanent",
|
|
389
|
+
unit
|
|
390
|
+
)
|
|
381
391
|
end
|
|
382
|
-
local ability = assert(
|
|
383
|
-
|
|
384
|
-
ability,
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
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
|
+
)
|
|
389
407
|
end
|
|
390
408
|
}
|
|
391
409
|
local getters = {
|
|
@@ -403,6 +421,19 @@ function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
|
403
421
|
self.unit = unit
|
|
404
422
|
self.index = index
|
|
405
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
|
+
)
|
|
406
437
|
__TS__SetDescriptor(
|
|
407
438
|
UnitWeapon.prototype,
|
|
408
439
|
"cooldown",
|
|
@@ -437,6 +468,19 @@ __TS__SetDescriptor(
|
|
|
437
468
|
},
|
|
438
469
|
true
|
|
439
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
|
+
)
|
|
440
484
|
__TS__SetDescriptor(
|
|
441
485
|
UnitWeapon.prototype,
|
|
442
486
|
"damageBase",
|
|
@@ -567,17 +611,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
567
611
|
____exports.Unit:of(unit)
|
|
568
612
|
)
|
|
569
613
|
end
|
|
570
|
-
if not unitAddAbility(unit, abilityId) then
|
|
571
|
-
if getUnitAbility(unit, abilityId) == ability then
|
|
572
|
-
return UnitAbility:of(
|
|
573
|
-
ability,
|
|
574
|
-
abilityId,
|
|
575
|
-
____exports.Unit:of(unit)
|
|
576
|
-
)
|
|
577
|
-
end
|
|
578
|
-
else
|
|
579
|
-
unitRemoveAbility(unit, abilityId)
|
|
580
|
-
end
|
|
581
614
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
582
615
|
local item = unitItemInSlot(unit, i)
|
|
583
616
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -624,26 +657,30 @@ local fieldSetters = {
|
|
|
624
657
|
}
|
|
625
658
|
local dummies = {}
|
|
626
659
|
for ____, player in ipairs(Player.all) do
|
|
627
|
-
local dummy = assert(
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
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
|
+
)
|
|
634
671
|
ShowUnit(dummy, false)
|
|
635
672
|
dummies[player] = dummy
|
|
636
673
|
end
|
|
637
674
|
local function delayHealthChecksCallback(unit)
|
|
638
|
-
local counter = (unit[
|
|
675
|
+
local counter = (unit[104] or 0) - 1
|
|
639
676
|
if counter ~= 0 then
|
|
640
|
-
unit[
|
|
677
|
+
unit[104] = counter
|
|
641
678
|
return
|
|
642
679
|
end
|
|
643
|
-
unit[
|
|
644
|
-
local healthBonus = unit[
|
|
680
|
+
unit[104] = nil
|
|
681
|
+
local healthBonus = unit[105]
|
|
645
682
|
if healthBonus ~= nil then
|
|
646
|
-
unit[
|
|
683
|
+
unit[105] = nil
|
|
647
684
|
local handle = unit.handle
|
|
648
685
|
BlzSetUnitMaxHP(
|
|
649
686
|
handle,
|
|
@@ -652,50 +689,78 @@ local function delayHealthChecksCallback(unit)
|
|
|
652
689
|
end
|
|
653
690
|
end
|
|
654
691
|
local nextSyncId = 1
|
|
655
|
-
local unitBySyncId = setmetatable({}, {__mode = "
|
|
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
|
|
656
703
|
____exports.Unit = __TS__Class()
|
|
657
704
|
local Unit = ____exports.Unit
|
|
658
705
|
Unit.name = "Unit"
|
|
659
706
|
__TS__ClassExtends(Unit, Handle)
|
|
660
707
|
function Unit.prototype.____constructor(self, handle)
|
|
661
708
|
Handle.prototype.____constructor(self, handle)
|
|
662
|
-
local
|
|
663
|
-
nextSyncId =
|
|
664
|
-
self
|
|
709
|
+
local ____nextSyncId_1 = nextSyncId
|
|
710
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
711
|
+
self.syncId = ____nextSyncId_1
|
|
665
712
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
666
|
-
assert(
|
|
667
|
-
|
|
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
|
+
)
|
|
668
723
|
if unitAddAbility(
|
|
669
724
|
handle,
|
|
670
725
|
fourCC("Amrf")
|
|
671
726
|
) then
|
|
672
|
-
assert(
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
727
|
+
assert(
|
|
728
|
+
unitRemoveAbility(
|
|
729
|
+
handle,
|
|
730
|
+
fourCC("Amrf")
|
|
731
|
+
),
|
|
732
|
+
"fly ability must be removed after addition",
|
|
733
|
+
self
|
|
734
|
+
)
|
|
676
735
|
end
|
|
677
|
-
unitBySyncId[self
|
|
736
|
+
unitBySyncId[self.syncId] = self
|
|
678
737
|
local ____ = self.abilities
|
|
679
738
|
end
|
|
680
|
-
function Unit.prototype.getEvent(self,
|
|
681
|
-
self.events = self.events or (
|
|
682
|
-
local eventId = GetHandleId(
|
|
683
|
-
|
|
684
|
-
|
|
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(
|
|
685
745
|
TriggerEvent,
|
|
686
746
|
function(trigger)
|
|
687
|
-
TriggerRegisterUnitEvent(trigger, self.handle,
|
|
747
|
+
TriggerRegisterUnitEvent(trigger, self.handle, jevent)
|
|
688
748
|
end,
|
|
689
749
|
collector or (function() return {} end)
|
|
690
750
|
)
|
|
751
|
+
self.events:put(eventId, event)
|
|
691
752
|
end
|
|
692
|
-
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))
|
|
693
760
|
end
|
|
694
761
|
function Unit.prototype.onDestroy(self)
|
|
695
762
|
local handle = self.handle
|
|
696
|
-
|
|
697
|
-
self._owner = Player:of(getOwningPlayer(handle))
|
|
698
|
-
end
|
|
763
|
+
self:saveData()
|
|
699
764
|
local abilities = self.abilities
|
|
700
765
|
for ____, ability in ipairs(abilities) do
|
|
701
766
|
ability:destroy()
|
|
@@ -731,7 +796,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
|
|
|
731
796
|
self._attackHandlers = handlers
|
|
732
797
|
if #handlers == 1 then
|
|
733
798
|
local handle = self.handle
|
|
734
|
-
assert(
|
|
799
|
+
assert(
|
|
800
|
+
unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
|
|
801
|
+
"attack handler ability must be added",
|
|
802
|
+
self
|
|
803
|
+
)
|
|
735
804
|
end
|
|
736
805
|
return handler
|
|
737
806
|
end
|
|
@@ -760,17 +829,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
760
829
|
end}
|
|
761
830
|
end
|
|
762
831
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
763
|
-
local
|
|
764
|
-
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
|
|
765
834
|
end
|
|
766
835
|
function Unit.prototype.addClassification(self, classification)
|
|
767
|
-
return
|
|
836
|
+
return UnitAddType(self.handle, classification)
|
|
768
837
|
end
|
|
769
838
|
function Unit.prototype.removeClassification(self, classification)
|
|
770
|
-
return
|
|
839
|
+
return UnitRemoveType(self.handle, classification)
|
|
771
840
|
end
|
|
772
841
|
function Unit.prototype.hasClassification(self, classification)
|
|
773
|
-
return
|
|
842
|
+
return IsUnitType(self.handle, classification)
|
|
774
843
|
end
|
|
775
844
|
function Unit.prototype.isVisibleTo(self, player)
|
|
776
845
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -779,13 +848,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
779
848
|
return isUnitInvisible(self.handle, player.handle)
|
|
780
849
|
end
|
|
781
850
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
782
|
-
local
|
|
851
|
+
local ____temp_3
|
|
783
852
|
if type(x) == "number" then
|
|
784
|
-
|
|
853
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
785
854
|
else
|
|
786
|
-
|
|
855
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
787
856
|
end
|
|
788
|
-
return
|
|
857
|
+
return ____temp_3
|
|
789
858
|
end
|
|
790
859
|
function Unit.prototype.isAllyOf(self, unit)
|
|
791
860
|
return isUnitAlly(
|
|
@@ -803,16 +872,30 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
803
872
|
if type(animation) == "number" then
|
|
804
873
|
setUnitAnimationByIndex(self.handle, animation)
|
|
805
874
|
elseif rarity then
|
|
806
|
-
|
|
875
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
807
876
|
else
|
|
808
877
|
setUnitAnimation(self.handle, animation)
|
|
809
878
|
end
|
|
810
879
|
end
|
|
880
|
+
function Unit.prototype.resetAnimation(self)
|
|
881
|
+
ResetUnitAnimation(self.handle)
|
|
882
|
+
end
|
|
811
883
|
function Unit.prototype.queueAnimation(self, animation)
|
|
812
|
-
|
|
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
|
|
813
896
|
end
|
|
814
897
|
function Unit.prototype.delayHealthChecks(self)
|
|
815
|
-
self[
|
|
898
|
+
self[104] = (self[104] or 0) + 1
|
|
816
899
|
Timer:run(delayHealthChecksCallback, self)
|
|
817
900
|
end
|
|
818
901
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -822,21 +905,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
822
905
|
return IsUnitSelected(self.handle, player.handle)
|
|
823
906
|
end
|
|
824
907
|
function Unit.prototype.explode(self)
|
|
825
|
-
|
|
908
|
+
SetUnitExploded(self.handle, true)
|
|
826
909
|
killUnit(self.handle)
|
|
827
910
|
end
|
|
828
911
|
function Unit.prototype.kill(self)
|
|
829
912
|
killUnit(self.handle)
|
|
830
913
|
end
|
|
831
914
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
832
|
-
local
|
|
833
|
-
local
|
|
834
|
-
local
|
|
835
|
-
if
|
|
836
|
-
|
|
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
|
|
837
920
|
end
|
|
838
|
-
__TS__SparseArrayPush(
|
|
839
|
-
|
|
921
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
922
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
840
923
|
end
|
|
841
924
|
function Unit.prototype.healTarget(self, target, amount)
|
|
842
925
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -879,17 +962,16 @@ function Unit.prototype.itemInSlot(self, slot)
|
|
|
879
962
|
return Item:of(unitItemInSlot(self.handle, slot))
|
|
880
963
|
end
|
|
881
964
|
function Unit.prototype.addAbility(self, abilityId)
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
965
|
+
local ability = UnitAbility:of(
|
|
966
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
967
|
+
abilityId,
|
|
968
|
+
self
|
|
969
|
+
)
|
|
970
|
+
if ability ~= nil then
|
|
888
971
|
local abilities = self.abilities
|
|
889
972
|
abilities[#abilities + 1] = ability
|
|
890
|
-
return ability
|
|
891
973
|
end
|
|
892
|
-
return
|
|
974
|
+
return ability
|
|
893
975
|
end
|
|
894
976
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
895
977
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -903,31 +985,21 @@ end
|
|
|
903
985
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
904
986
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
905
987
|
end
|
|
906
|
-
function Unit.prototype.
|
|
907
|
-
local
|
|
908
|
-
|
|
909
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
910
|
-
return nil
|
|
911
|
-
end
|
|
912
|
-
return UnitAbility:of(
|
|
913
|
-
getUnitAbility(self.handle, abilityId),
|
|
914
|
-
abilityId,
|
|
915
|
-
self
|
|
916
|
-
)
|
|
988
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
989
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
990
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
917
991
|
end
|
|
918
|
-
function Unit.prototype.removeAbility(self,
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
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
|
|
927
1000
|
end
|
|
928
|
-
return true
|
|
929
1001
|
end
|
|
930
|
-
return
|
|
1002
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
931
1003
|
end
|
|
932
1004
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
933
1005
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -941,12 +1013,16 @@ end
|
|
|
941
1013
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
942
1014
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
943
1015
|
end
|
|
944
|
-
function Unit.prototype.interruptAttack(self)
|
|
945
|
-
unitInterruptAttack(self.handle)
|
|
946
|
-
end
|
|
947
1016
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
948
|
-
|
|
949
|
-
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
|
+
)
|
|
950
1026
|
end
|
|
951
1027
|
function Unit.prototype.getDistanceTo(self, target)
|
|
952
1028
|
local handle = self.handle
|
|
@@ -1007,18 +1083,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
1007
1083
|
end
|
|
1008
1084
|
function Unit.prototype.incrementStunCounter(self)
|
|
1009
1085
|
local stunCounter = self[102] or 0
|
|
1010
|
-
if not self[101] or stunCounter >= 0 then
|
|
1086
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
1011
1087
|
BlzPauseUnitEx(self.handle, true)
|
|
1012
1088
|
end
|
|
1013
1089
|
self[102] = stunCounter + 1
|
|
1014
1090
|
end
|
|
1015
1091
|
function Unit.prototype.decrementStunCounter(self)
|
|
1016
1092
|
local stunCounter = self[102] or 0
|
|
1017
|
-
if not self[101] or stunCounter >= 1 then
|
|
1093
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
1018
1094
|
BlzPauseUnitEx(self.handle, false)
|
|
1019
1095
|
end
|
|
1020
1096
|
self[102] = stunCounter - 1
|
|
1021
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
|
|
1123
|
+
end
|
|
1022
1124
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1023
1125
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
1024
1126
|
owner.handle,
|
|
@@ -1145,8 +1247,8 @@ end
|
|
|
1145
1247
|
function Unit.prototype.__tostring(self)
|
|
1146
1248
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1147
1249
|
end
|
|
1148
|
-
function Unit.
|
|
1149
|
-
return
|
|
1250
|
+
function Unit.getBySyncId(self, syncId)
|
|
1251
|
+
return unitBySyncId[syncId]
|
|
1150
1252
|
end
|
|
1151
1253
|
__TS__SetDescriptor(
|
|
1152
1254
|
Unit.prototype,
|
|
@@ -1207,7 +1309,15 @@ __TS__SetDescriptor(
|
|
|
1207
1309
|
Unit.prototype,
|
|
1208
1310
|
"isIllusion",
|
|
1209
1311
|
{get = function(self)
|
|
1210
|
-
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")
|
|
1211
1321
|
end},
|
|
1212
1322
|
true
|
|
1213
1323
|
)
|
|
@@ -1286,13 +1396,13 @@ __TS__SetDescriptor(
|
|
|
1286
1396
|
)
|
|
1287
1397
|
__TS__SetDescriptor(
|
|
1288
1398
|
Unit.prototype,
|
|
1289
|
-
"
|
|
1399
|
+
"primaryAttribute",
|
|
1290
1400
|
{
|
|
1291
1401
|
get = function(self)
|
|
1292
|
-
return
|
|
1402
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1293
1403
|
end,
|
|
1294
|
-
set = function(self,
|
|
1295
|
-
|
|
1404
|
+
set = function(self, primaryAttribute)
|
|
1405
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1296
1406
|
end
|
|
1297
1407
|
},
|
|
1298
1408
|
true
|
|
@@ -1314,19 +1424,6 @@ __TS__SetDescriptor(
|
|
|
1314
1424
|
end},
|
|
1315
1425
|
true
|
|
1316
1426
|
)
|
|
1317
|
-
__TS__SetDescriptor(
|
|
1318
|
-
Unit.prototype,
|
|
1319
|
-
"agilityBase",
|
|
1320
|
-
{
|
|
1321
|
-
get = function(self)
|
|
1322
|
-
return getHeroAgi(self.handle, false)
|
|
1323
|
-
end,
|
|
1324
|
-
set = function(self, agilityBase)
|
|
1325
|
-
setHeroAgi(self.handle, agilityBase, true)
|
|
1326
|
-
end
|
|
1327
|
-
},
|
|
1328
|
-
true
|
|
1329
|
-
)
|
|
1330
1427
|
__TS__SetDescriptor(
|
|
1331
1428
|
Unit.prototype,
|
|
1332
1429
|
"agilityBonus",
|
|
@@ -1344,19 +1441,6 @@ __TS__SetDescriptor(
|
|
|
1344
1441
|
end},
|
|
1345
1442
|
true
|
|
1346
1443
|
)
|
|
1347
|
-
__TS__SetDescriptor(
|
|
1348
|
-
Unit.prototype,
|
|
1349
|
-
"intelligenceBase",
|
|
1350
|
-
{
|
|
1351
|
-
get = function(self)
|
|
1352
|
-
return getHeroInt(self.handle, false)
|
|
1353
|
-
end,
|
|
1354
|
-
set = function(self, intelligenceBase)
|
|
1355
|
-
setHeroInt(self.handle, intelligenceBase, true)
|
|
1356
|
-
end
|
|
1357
|
-
},
|
|
1358
|
-
true
|
|
1359
|
-
)
|
|
1360
1444
|
__TS__SetDescriptor(
|
|
1361
1445
|
Unit.prototype,
|
|
1362
1446
|
"intelligenceBonus",
|
|
@@ -1405,17 +1489,17 @@ __TS__SetDescriptor(
|
|
|
1405
1489
|
"isTeamGlowVisible",
|
|
1406
1490
|
{
|
|
1407
1491
|
get = function(self)
|
|
1408
|
-
return not self[
|
|
1492
|
+
return not self[107]
|
|
1409
1493
|
end,
|
|
1410
1494
|
set = function(self, isTeamGlowVisible)
|
|
1411
|
-
|
|
1412
|
-
local
|
|
1495
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1496
|
+
local ____temp_7
|
|
1413
1497
|
if not isTeamGlowVisible then
|
|
1414
|
-
|
|
1498
|
+
____temp_7 = true
|
|
1415
1499
|
else
|
|
1416
|
-
|
|
1500
|
+
____temp_7 = nil
|
|
1417
1501
|
end
|
|
1418
|
-
self[
|
|
1502
|
+
self[107] = ____temp_7
|
|
1419
1503
|
end
|
|
1420
1504
|
},
|
|
1421
1505
|
true
|
|
@@ -1424,9 +1508,9 @@ __TS__SetDescriptor(
|
|
|
1424
1508
|
Unit.prototype,
|
|
1425
1509
|
"color",
|
|
1426
1510
|
{set = function(self, color)
|
|
1427
|
-
|
|
1428
|
-
if self[
|
|
1429
|
-
|
|
1511
|
+
SetUnitColor(self.handle, color.handle)
|
|
1512
|
+
if self[107] then
|
|
1513
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1430
1514
|
end
|
|
1431
1515
|
end},
|
|
1432
1516
|
true
|
|
@@ -1449,14 +1533,14 @@ __TS__SetDescriptor(
|
|
|
1449
1533
|
"maxHealth",
|
|
1450
1534
|
{
|
|
1451
1535
|
get = function(self)
|
|
1452
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1536
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1453
1537
|
end,
|
|
1454
1538
|
set = function(self, maxHealth)
|
|
1455
|
-
if maxHealth < 1 and self[
|
|
1456
|
-
self[
|
|
1539
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1540
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1457
1541
|
maxHealth = 1
|
|
1458
1542
|
end
|
|
1459
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1543
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1460
1544
|
end
|
|
1461
1545
|
},
|
|
1462
1546
|
true
|
|
@@ -1498,10 +1582,10 @@ __TS__SetDescriptor(
|
|
|
1498
1582
|
"health",
|
|
1499
1583
|
{
|
|
1500
1584
|
get = function(self)
|
|
1501
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1585
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1502
1586
|
end,
|
|
1503
1587
|
set = function(self, health)
|
|
1504
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1588
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1505
1589
|
end
|
|
1506
1590
|
},
|
|
1507
1591
|
true
|
|
@@ -1577,25 +1661,12 @@ __TS__SetDescriptor(
|
|
|
1577
1661
|
},
|
|
1578
1662
|
true
|
|
1579
1663
|
)
|
|
1580
|
-
__TS__SetDescriptor(
|
|
1581
|
-
Unit.prototype,
|
|
1582
|
-
"flyHeight",
|
|
1583
|
-
{
|
|
1584
|
-
get = function(self)
|
|
1585
|
-
return getUnitFlyHeight(self.handle)
|
|
1586
|
-
end,
|
|
1587
|
-
set = function(self, v)
|
|
1588
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1589
|
-
end
|
|
1590
|
-
},
|
|
1591
|
-
true
|
|
1592
|
-
)
|
|
1593
1664
|
__TS__SetDescriptor(
|
|
1594
1665
|
Unit.prototype,
|
|
1595
1666
|
"x",
|
|
1596
1667
|
{
|
|
1597
1668
|
get = function(self)
|
|
1598
|
-
return getUnitX(self.handle)
|
|
1669
|
+
return self[108] or getUnitX(self.handle)
|
|
1599
1670
|
end,
|
|
1600
1671
|
set = function(self, v)
|
|
1601
1672
|
SetUnitX(self.handle, v)
|
|
@@ -1608,7 +1679,7 @@ __TS__SetDescriptor(
|
|
|
1608
1679
|
"y",
|
|
1609
1680
|
{
|
|
1610
1681
|
get = function(self)
|
|
1611
|
-
return getUnitY(self.handle)
|
|
1682
|
+
return self[109] or getUnitY(self.handle)
|
|
1612
1683
|
end,
|
|
1613
1684
|
set = function(self, v)
|
|
1614
1685
|
SetUnitY(self.handle, v)
|
|
@@ -1694,10 +1765,10 @@ __TS__SetDescriptor(
|
|
|
1694
1765
|
"gold",
|
|
1695
1766
|
{
|
|
1696
1767
|
get = function(self)
|
|
1697
|
-
return
|
|
1768
|
+
return GetResourceAmount(self.handle)
|
|
1698
1769
|
end,
|
|
1699
1770
|
set = function(self, gold)
|
|
1700
|
-
|
|
1771
|
+
SetResourceAmount(self.handle, gold)
|
|
1701
1772
|
end
|
|
1702
1773
|
},
|
|
1703
1774
|
true
|
|
@@ -1713,14 +1784,18 @@ __TS__SetDescriptor(
|
|
|
1713
1784
|
local handle = self.handle
|
|
1714
1785
|
if isPaused and not IsUnitPaused(handle) then
|
|
1715
1786
|
self[101] = true
|
|
1716
|
-
|
|
1717
|
-
|
|
1787
|
+
if (self[103] or 0) <= 0 then
|
|
1788
|
+
for _ = self[102] or 0, -1 do
|
|
1789
|
+
BlzPauseUnitEx(handle, true)
|
|
1790
|
+
end
|
|
1718
1791
|
end
|
|
1719
1792
|
PauseUnit(handle, true)
|
|
1720
1793
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1721
1794
|
PauseUnit(handle, false)
|
|
1722
|
-
|
|
1723
|
-
|
|
1795
|
+
if (self[103] or 0) <= 0 then
|
|
1796
|
+
for _ = self[102] or 0, -1 do
|
|
1797
|
+
BlzPauseUnitEx(handle, false)
|
|
1798
|
+
end
|
|
1724
1799
|
end
|
|
1725
1800
|
self[101] = nil
|
|
1726
1801
|
end
|
|
@@ -1778,20 +1853,6 @@ __TS__SetDescriptor(
|
|
|
1778
1853
|
},
|
|
1779
1854
|
true
|
|
1780
1855
|
)
|
|
1781
|
-
__TS__SetDescriptor(
|
|
1782
|
-
Unit.prototype,
|
|
1783
|
-
"scale",
|
|
1784
|
-
{
|
|
1785
|
-
get = function(self)
|
|
1786
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1787
|
-
end,
|
|
1788
|
-
set = function(self, v)
|
|
1789
|
-
setUnitScale(self.handle, v, v, v)
|
|
1790
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1791
|
-
end
|
|
1792
|
-
},
|
|
1793
|
-
true
|
|
1794
|
-
)
|
|
1795
1856
|
__TS__SetDescriptor(
|
|
1796
1857
|
Unit.prototype,
|
|
1797
1858
|
"timeScale",
|
|
@@ -1825,6 +1886,19 @@ __TS__SetDescriptor(
|
|
|
1825
1886
|
end},
|
|
1826
1887
|
true
|
|
1827
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
|
+
)
|
|
1828
1902
|
__TS__SetDescriptor(
|
|
1829
1903
|
Unit.prototype,
|
|
1830
1904
|
"pathing",
|
|
@@ -1915,30 +1989,6 @@ __TS__SetDescriptor(
|
|
|
1915
1989
|
end},
|
|
1916
1990
|
true
|
|
1917
1991
|
)
|
|
1918
|
-
__TS__SetDescriptor(
|
|
1919
|
-
Unit.prototype,
|
|
1920
|
-
"onUnitInRange",
|
|
1921
|
-
{get = function(self)
|
|
1922
|
-
local handle = self.handle
|
|
1923
|
-
local onUnitInRange = setmetatable(
|
|
1924
|
-
{},
|
|
1925
|
-
{__index = function(self, value)
|
|
1926
|
-
local event = __TS__New(
|
|
1927
|
-
TriggerEvent,
|
|
1928
|
-
function(trigger)
|
|
1929
|
-
TriggerRegisterUnitInRangeSimple(trigger, value, handle)
|
|
1930
|
-
end,
|
|
1931
|
-
function() return ____exports.Unit:of(handle) end
|
|
1932
|
-
)
|
|
1933
|
-
rawset(self, value, event)
|
|
1934
|
-
return event
|
|
1935
|
-
end}
|
|
1936
|
-
)
|
|
1937
|
-
rawset(self, "onUnitInRange", onUnitInRange)
|
|
1938
|
-
return onUnitInRange
|
|
1939
|
-
end},
|
|
1940
|
-
true
|
|
1941
|
-
)
|
|
1942
1992
|
__TS__SetDescriptor(
|
|
1943
1993
|
Unit.prototype,
|
|
1944
1994
|
"onManaEqual",
|
|
@@ -2006,6 +2056,14 @@ __TS__SetDescriptor(
|
|
|
2006
2056
|
end},
|
|
2007
2057
|
true
|
|
2008
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
|
+
)
|
|
2009
2067
|
__TS__SetDescriptor(
|
|
2010
2068
|
Unit.prototype,
|
|
2011
2069
|
"onSelect",
|
|
@@ -2066,6 +2124,11 @@ __TS__SetDescriptor(
|
|
|
2066
2124
|
end},
|
|
2067
2125
|
true
|
|
2068
2126
|
)
|
|
2127
|
+
Unit.levelChangedEvent = __TS__New(
|
|
2128
|
+
____exports.UnitTriggerEvent,
|
|
2129
|
+
EVENT_PLAYER_HERO_LEVEL,
|
|
2130
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
2131
|
+
)
|
|
2069
2132
|
Unit.deathEvent = __TS__New(
|
|
2070
2133
|
____exports.UnitTriggerEvent,
|
|
2071
2134
|
EVENT_PLAYER_UNIT_DEATH,
|
|
@@ -2141,25 +2204,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2141
2204
|
InitializingEvent,
|
|
2142
2205
|
function(event)
|
|
2143
2206
|
local function listener(unit, id)
|
|
2144
|
-
local
|
|
2207
|
+
local ____GetSpellTargetUnit_result_10
|
|
2145
2208
|
if GetSpellTargetUnit() then
|
|
2146
|
-
|
|
2209
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2147
2210
|
else
|
|
2148
|
-
local
|
|
2211
|
+
local ____GetSpellTargetItem_result_9
|
|
2149
2212
|
if GetSpellTargetItem() then
|
|
2150
|
-
|
|
2213
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2151
2214
|
else
|
|
2152
|
-
local
|
|
2215
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2153
2216
|
if GetSpellTargetDestructable() then
|
|
2154
|
-
|
|
2217
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2155
2218
|
else
|
|
2156
|
-
|
|
2219
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2157
2220
|
end
|
|
2158
|
-
|
|
2221
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2159
2222
|
end
|
|
2160
|
-
|
|
2223
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2161
2224
|
end
|
|
2162
|
-
local target =
|
|
2225
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2163
2226
|
if target then
|
|
2164
2227
|
invoke(event, unit, id, target)
|
|
2165
2228
|
end
|
|
@@ -2331,10 +2394,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2331
2394
|
____exports.UnitTriggerEvent,
|
|
2332
2395
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2333
2396
|
function()
|
|
2334
|
-
local
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
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
|
|
2338
2403
|
end
|
|
2339
2404
|
return IgnoreEvent
|
|
2340
2405
|
end
|
|
@@ -2365,38 +2430,57 @@ Unit.onDamaging = (function()
|
|
|
2365
2430
|
if source and source.typeId == dummyUnitId then
|
|
2366
2431
|
source = nil
|
|
2367
2432
|
end
|
|
2368
|
-
local target = BlzGetEventDamageTarget()
|
|
2433
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2434
|
+
local metadata = damageMetadataByTarget[target]
|
|
2435
|
+
damageMetadataByTarget[target] = nil
|
|
2369
2436
|
local data = {
|
|
2370
2437
|
amount = GetEventDamage(),
|
|
2371
|
-
attackType = BlzGetEventAttackType(),
|
|
2438
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2372
2439
|
damageType = BlzGetEventDamageType(),
|
|
2373
2440
|
weaponType = BlzGetEventWeaponType(),
|
|
2374
|
-
|
|
2441
|
+
metadata = metadata,
|
|
2442
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2443
|
+
originalAmount = GetEventDamage(),
|
|
2444
|
+
originalMetadata = metadata,
|
|
2445
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2375
2446
|
}
|
|
2376
2447
|
if data.isAttack and source then
|
|
2377
|
-
|
|
2378
|
-
if weapon == -1 then
|
|
2379
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2380
|
-
weapon = 0
|
|
2381
|
-
end
|
|
2382
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2448
|
+
data.weapon = source:chooseWeapon(target)
|
|
2383
2449
|
end
|
|
2384
2450
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2385
2451
|
invoke(
|
|
2386
2452
|
event,
|
|
2387
2453
|
source,
|
|
2388
|
-
|
|
2454
|
+
target,
|
|
2389
2455
|
setmetatable(
|
|
2390
2456
|
{},
|
|
2391
2457
|
{
|
|
2392
2458
|
__index = data,
|
|
2393
2459
|
__newindex = function(self, key, value)
|
|
2394
|
-
damageSetters[key]
|
|
2460
|
+
local damageSetter = damageSetters[key]
|
|
2461
|
+
if damageSetter ~= nil then
|
|
2462
|
+
damageSetter(value)
|
|
2463
|
+
end
|
|
2395
2464
|
data[key] = value
|
|
2396
2465
|
end
|
|
2397
2466
|
}
|
|
2398
2467
|
)
|
|
2399
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
|
|
2400
2484
|
return
|
|
2401
2485
|
end
|
|
2402
2486
|
BlzSetEventDamage(0)
|
|
@@ -2404,7 +2488,7 @@ Unit.onDamaging = (function()
|
|
|
2404
2488
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2405
2489
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2406
2490
|
local sourceOwner = source.owner.handle
|
|
2407
|
-
local targetOwner =
|
|
2491
|
+
local targetOwner = target.owner.handle
|
|
2408
2492
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2409
2493
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2410
2494
|
Timer:run(function()
|
|
@@ -2420,23 +2504,19 @@ Unit.onDamaging = (function()
|
|
|
2420
2504
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2421
2505
|
local condition = ____value[1]
|
|
2422
2506
|
local action = ____value[2]
|
|
2423
|
-
if condition(
|
|
2424
|
-
source,
|
|
2425
|
-
____exports.Unit:of(target),
|
|
2426
|
-
data
|
|
2427
|
-
) then
|
|
2507
|
+
if condition(source, target, data) then
|
|
2428
2508
|
action(
|
|
2429
2509
|
source,
|
|
2430
|
-
|
|
2510
|
+
target,
|
|
2431
2511
|
setmetatable(
|
|
2432
2512
|
{fire = function()
|
|
2433
2513
|
UnitDamageTarget(
|
|
2434
2514
|
source.handle,
|
|
2435
|
-
target,
|
|
2515
|
+
target.handle,
|
|
2436
2516
|
data.amount,
|
|
2437
2517
|
true,
|
|
2438
2518
|
true,
|
|
2439
|
-
data.attackType,
|
|
2519
|
+
attackTypeToNative(data.attackType),
|
|
2440
2520
|
data.damageType,
|
|
2441
2521
|
data.weaponType
|
|
2442
2522
|
)
|
|
@@ -2463,30 +2543,54 @@ Unit.onDamage = __TS__New(
|
|
|
2463
2543
|
if source and source.typeId == dummyUnitId then
|
|
2464
2544
|
source = nil
|
|
2465
2545
|
end
|
|
2546
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2547
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2548
|
+
damagingEventByTarget[target] = nil
|
|
2466
2549
|
local data = {
|
|
2467
2550
|
amount = GetEventDamage(),
|
|
2468
|
-
attackType = BlzGetEventAttackType(),
|
|
2551
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2469
2552
|
damageType = BlzGetEventDamageType(),
|
|
2470
2553
|
weaponType = BlzGetEventWeaponType(),
|
|
2554
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2471
2555
|
isAttack = BlzGetEventIsAttack(),
|
|
2472
|
-
originalAmount = GetEventDamage(),
|
|
2556
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2557
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2473
2558
|
preventDeath = damageEventPreventDeath
|
|
2474
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
|
|
2475
2577
|
local evData = setmetatable(
|
|
2476
2578
|
{},
|
|
2477
2579
|
{
|
|
2478
2580
|
__index = data,
|
|
2479
2581
|
__newindex = function(self, key, value)
|
|
2480
|
-
damageSetters[key]
|
|
2582
|
+
local damageSetter = damageSetters[key]
|
|
2583
|
+
if damageSetter ~= nil then
|
|
2584
|
+
damageSetter(value)
|
|
2585
|
+
end
|
|
2481
2586
|
data[key] = value
|
|
2482
2587
|
end
|
|
2483
2588
|
}
|
|
2484
2589
|
)
|
|
2485
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2486
2590
|
invoke(event, source, target, evData)
|
|
2487
2591
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2488
2592
|
local bonusHealth = math.ceil(evData.amount)
|
|
2489
|
-
target[
|
|
2593
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2490
2594
|
BlzSetUnitMaxHP(
|
|
2491
2595
|
target.handle,
|
|
2492
2596
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2500,7 +2604,7 @@ Unit.onDamage = __TS__New(
|
|
|
2500
2604
|
evData[0],
|
|
2501
2605
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2502
2606
|
)
|
|
2503
|
-
target[
|
|
2607
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2504
2608
|
SetWidgetLife(
|
|
2505
2609
|
target.handle,
|
|
2506
2610
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2525,8 +2629,9 @@ Unit.itemDroppedEvent = __TS__New(
|
|
|
2525
2629
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2526
2630
|
function()
|
|
2527
2631
|
local unit = getTriggerUnit()
|
|
2528
|
-
|
|
2529
|
-
|
|
2632
|
+
local item = getManipulatedItem()
|
|
2633
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2634
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2530
2635
|
end
|
|
2531
2636
|
return IgnoreEvent
|
|
2532
2637
|
end
|
|
@@ -2535,9 +2640,14 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2535
2640
|
____exports.UnitTriggerEvent,
|
|
2536
2641
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2537
2642
|
function()
|
|
2538
|
-
local
|
|
2539
|
-
|
|
2540
|
-
|
|
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
|
|
2541
2651
|
end
|
|
2542
2652
|
return IgnoreEvent
|
|
2543
2653
|
end
|
|
@@ -2545,12 +2655,79 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2545
2655
|
Unit.itemUsedEvent = __TS__New(
|
|
2546
2656
|
____exports.UnitTriggerEvent,
|
|
2547
2657
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2548
|
-
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
|
|
2549
2666
|
)
|
|
2550
2667
|
Unit.itemStackedEvent = __TS__New(
|
|
2551
2668
|
____exports.UnitTriggerEvent,
|
|
2552
2669
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2553
|
-
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(
|
|
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}
|
|
2554
2731
|
)
|
|
2555
2732
|
__TS__ObjectDefineProperty(
|
|
2556
2733
|
Unit,
|
|
@@ -2577,6 +2754,10 @@ __TS__ObjectDefineProperty(
|
|
|
2577
2754
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2578
2755
|
return destroyEvent
|
|
2579
2756
|
end}
|
|
2757
|
+
)
|
|
2758
|
+
Unit.synchronize = synchronizer(
|
|
2759
|
+
function(unit) return unit.syncId end,
|
|
2760
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2580
2761
|
);
|
|
2581
2762
|
(function(self)
|
|
2582
2763
|
local leaveAbilityIds = postcompile(function()
|
|
@@ -2606,30 +2787,9 @@ __TS__ObjectDefineProperty(
|
|
|
2606
2787
|
return
|
|
2607
2788
|
end
|
|
2608
2789
|
end
|
|
2609
|
-
unit:
|
|
2790
|
+
unit:saveData()
|
|
2791
|
+
Timer:run(unit, "destroy")
|
|
2610
2792
|
end)
|
|
2611
2793
|
end
|
|
2612
2794
|
end)(Unit)
|
|
2613
|
-
mainSelectedUnitByPlayer = {}
|
|
2614
|
-
local syncSlider = BlzCreateFrameByType(
|
|
2615
|
-
"SLIDER",
|
|
2616
|
-
"UnitSyncId",
|
|
2617
|
-
BlzGetOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0),
|
|
2618
|
-
"",
|
|
2619
|
-
0
|
|
2620
|
-
)
|
|
2621
|
-
BlzFrameSetMinMaxValue(syncSlider, MINIMUM_INTEGER, MAXIMUM_INTEGER)
|
|
2622
|
-
LocalClient.mainSelectedUnitChangeEvent:addListener(function()
|
|
2623
|
-
local ____opt_10 = LocalClient.mainSelectedUnit
|
|
2624
|
-
local syncId = ____opt_10 and ____opt_10[100]
|
|
2625
|
-
BlzFrameSetValue(syncSlider, syncId or 0)
|
|
2626
|
-
end)
|
|
2627
|
-
local trg = CreateTrigger()
|
|
2628
|
-
BlzTriggerRegisterFrameEvent(trg, syncSlider, FRAMEEVENT_SLIDER_VALUE_CHANGED)
|
|
2629
|
-
TriggerAddAction(
|
|
2630
|
-
trg,
|
|
2631
|
-
function()
|
|
2632
|
-
mainSelectedUnitByPlayer[Player:of(GetTriggerPlayer())] = unitBySyncId[BlzGetTriggerFrameValue()]
|
|
2633
|
-
end
|
|
2634
|
-
)
|
|
2635
2795
|
return ____exports
|