warscript 0.0.1-dev.ee2345e → 0.0.1-dev.ee6f224
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 +5 -1
- package/attributes.lua +8 -1
- package/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +8 -1
- package/core/types/frame.lua +117 -22
- package/core/types/group.d.ts +0 -1
- package/core/types/image.d.ts +0 -1
- package/core/types/missile.d.ts +2 -2
- package/core/types/missile.lua +8 -2
- package/core/types/player.lua +3 -1
- 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 +9 -0
- package/core/types/tileCell.lua +92 -0
- package/core/types/timer.d.ts +8 -8
- package/core/types/timer.lua +39 -23
- package/core/types/unit.lua +8 -0
- package/core/util.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/index.d.ts +1 -0
- package/decl/native.d.ts +846 -790
- package/engine/ability.d.ts +1 -1
- package/engine/behavior.d.ts +15 -10
- package/engine/behavior.lua +112 -33
- 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 +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.d.ts +6 -1
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +39 -11
- package/engine/behaviour/ability/damage.lua +83 -37
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +43 -0
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -15
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
- package/engine/behaviour/ability/remove-buffs.lua +28 -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 +27 -4
- package/engine/behaviour/ability.lua +152 -26
- package/engine/behaviour/unit/stun-immunity.d.ts +5 -4
- package/engine/behaviour/unit/stun-immunity.lua +43 -27
- package/engine/behaviour/unit.d.ts +40 -2
- package/engine/behaviour/unit.lua +208 -0
- package/engine/buff.d.ts +104 -44
- package/engine/buff.lua +453 -215
- 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 +8 -7
- package/engine/internal/item.lua +153 -51
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +98 -14
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/bonus.d.ts +11 -8
- package/engine/internal/unit/bonus.lua +23 -1
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/item.d.ts +24 -0
- package/engine/internal/unit/item.lua +78 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +51 -0
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -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 +33 -7
- package/engine/internal/unit.d.ts +89 -24
- package/engine/internal/unit.lua +594 -206
- 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 +7 -2
- package/engine/local-client.lua +82 -0
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -3
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
- package/engine/object-data/entry/ability-type/mine.lua +39 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
- package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +19 -18
- package/engine/object-data/entry/ability-type.lua +90 -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 +1 -2
- 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 +58 -7
- package/engine/object-data/entry/unit-type.lua +480 -75
- package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
- package/engine/object-data/entry/upgrade.d.ts +1 -2
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +18 -17
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +28 -5
- package/engine/object-field/ability.lua +59 -5
- package/engine/object-field/unit.d.ts +57 -3
- package/engine/object-field/unit.lua +207 -7
- package/engine/object-field.d.ts +17 -7
- package/engine/object-field.lua +190 -90
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +22 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/entries/unit-type.d.ts +39 -1
- package/engine/standard/entries/unit-type.lua +39 -1
- package/engine/standard/fields/ability.d.ts +3 -1
- package/engine/standard/fields/ability.lua +3 -1
- package/engine/standard/fields/unit.d.ts +4 -0
- package/engine/standard/fields/unit.lua +7 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +249 -10
- package/engine/unit.d.ts +4 -0
- package/engine/unit.lua +13 -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 +2 -3
- package/objutil/object.d.ts +0 -1
- package/objutil/unit.d.ts +0 -1
- package/objutil/unit.lua +8 -0
- package/package.json +13 -14
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -0
- package/patch-lualib.lua +1 -1
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- package/string.d.ts +30 -0
- package/string.lua +14 -0
- package/util/stream.d.ts +0 -1
- package/utility/arrays.d.ts +12 -5
- package/utility/arrays.lua +37 -3
- package/utility/bit-set.d.ts +0 -2
- package/utility/callback-array.d.ts +13 -0
- package/utility/callback-array.lua +46 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +12 -3
- package/utility/linked-set.lua +8 -2
- package/utility/lua-maps.d.ts +16 -4
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +3 -2
- package/utility/lua-sets.lua +7 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +1 -0
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/internal/unit.lua
CHANGED
|
@@ -5,9 +5,12 @@ local __TS__ArrayMap = ____lualib.__TS__ArrayMap
|
|
|
5
5
|
local __TS__New = ____lualib.__TS__New
|
|
6
6
|
local __TS__Class = ____lualib.__TS__Class
|
|
7
7
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
8
|
+
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
8
9
|
local __TS__ArraySetLength = ____lualib.__TS__ArraySetLength
|
|
10
|
+
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
|
|
11
|
+
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
|
|
12
|
+
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
|
|
9
13
|
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
10
|
-
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
11
14
|
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
12
15
|
local Set = ____lualib.Set
|
|
13
16
|
local __TS__Spread = ____lualib.__TS__Spread
|
|
@@ -48,12 +51,21 @@ 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
|
|
51
65
|
local match = string.match
|
|
52
66
|
local ____tostring = _G.tostring
|
|
53
67
|
local setUnitAnimation = SetUnitAnimation
|
|
54
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
55
68
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
56
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
57
69
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
58
70
|
local getUnitRealField = BlzGetUnitRealField
|
|
59
71
|
local getHeroStr = GetHeroStr
|
|
@@ -72,9 +84,9 @@ 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,8 +102,10 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
90
102
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
91
103
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
92
104
|
local isUnitInRange = IsUnitInRange
|
|
93
|
-
local
|
|
94
|
-
local
|
|
105
|
+
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
106
|
+
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
107
|
+
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
108
|
+
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
95
109
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
96
110
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
97
111
|
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
@@ -111,15 +125,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
111
125
|
local getIssuedOrderId = GetIssuedOrderId
|
|
112
126
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
113
127
|
local unitAlive = UnitAlive
|
|
114
|
-
local unitAddType = UnitAddType
|
|
115
|
-
local unitRemoveType = UnitRemoveType
|
|
116
|
-
local isUnitIllusion = IsUnitIllusion
|
|
117
|
-
local isUnitType = IsUnitType
|
|
118
128
|
local isUnitAlly = IsUnitAlly
|
|
119
129
|
local isUnitEnemy = IsUnitEnemy
|
|
120
130
|
local getOwningPlayer = GetOwningPlayer
|
|
121
|
-
local setUnitColor = SetUnitColor
|
|
122
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
123
131
|
____exports.UnitClassification = {}
|
|
124
132
|
local UnitClassification = ____exports.UnitClassification
|
|
125
133
|
do
|
|
@@ -129,6 +137,7 @@ do
|
|
|
129
137
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
130
138
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
131
139
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
140
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
132
141
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
133
142
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
134
143
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -275,16 +284,14 @@ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
|
|
|
275
284
|
end
|
|
276
285
|
local function dispatch(event, idGetter, argsGetter)
|
|
277
286
|
local initialized = false
|
|
278
|
-
local x = {}
|
|
279
287
|
return setmetatable(
|
|
280
|
-
|
|
288
|
+
{},
|
|
281
289
|
{
|
|
282
290
|
__index = function(self, id)
|
|
283
291
|
if type(id) ~= "number" then
|
|
284
292
|
return event[id]
|
|
285
293
|
end
|
|
286
294
|
if not initialized then
|
|
287
|
-
local invoke = Event.invoke
|
|
288
295
|
event:addListener(function(...)
|
|
289
296
|
local id = idGetter(...)
|
|
290
297
|
local dispatched = rawget(self, id)
|
|
@@ -322,7 +329,6 @@ local function dispatchAbility(event)
|
|
|
322
329
|
return event[id]
|
|
323
330
|
end
|
|
324
331
|
if not initialized then
|
|
325
|
-
local invoke = Event.invoke
|
|
326
332
|
event:addListener(function(unit, ability, ...)
|
|
327
333
|
local dispatched = rawget(self, ability.typeId)
|
|
328
334
|
if dispatched ~= nil then
|
|
@@ -339,6 +345,9 @@ local function dispatchAbility(event)
|
|
|
339
345
|
}
|
|
340
346
|
)
|
|
341
347
|
end
|
|
348
|
+
local function damagingEventPreventRetaliation(self)
|
|
349
|
+
self[0] = true
|
|
350
|
+
end
|
|
342
351
|
local function damageEventPreventDeath(self, callback, ...)
|
|
343
352
|
if self[0] ~= nil then
|
|
344
353
|
return
|
|
@@ -350,7 +359,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
350
359
|
rawset(self, 1 + i, (select(i, ...)))
|
|
351
360
|
end
|
|
352
361
|
end
|
|
353
|
-
local damageSetters = {
|
|
362
|
+
local damageSetters = {
|
|
363
|
+
amount = BlzSetEventDamage,
|
|
364
|
+
attackType = function(attackType)
|
|
365
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
366
|
+
end,
|
|
367
|
+
damageType = BlzSetEventDamageType,
|
|
368
|
+
weaponType = BlzSetEventWeaponType
|
|
369
|
+
}
|
|
354
370
|
local jlimitopByOperator = {
|
|
355
371
|
[0] = LESS_THAN_OR_EQUAL,
|
|
356
372
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -387,51 +403,171 @@ local getters = {
|
|
|
387
403
|
return BlzGetUnitArmor(unit)
|
|
388
404
|
end
|
|
389
405
|
}
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
406
|
+
____exports.UnitWeapon = __TS__Class()
|
|
407
|
+
local UnitWeapon = ____exports.UnitWeapon
|
|
408
|
+
UnitWeapon.name = "UnitWeapon"
|
|
409
|
+
function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
410
|
+
self.unit = unit
|
|
411
|
+
self.index = index
|
|
412
|
+
end
|
|
413
|
+
__TS__SetDescriptor(
|
|
414
|
+
UnitWeapon.prototype,
|
|
415
|
+
"cooldown",
|
|
416
|
+
{
|
|
417
|
+
get = function(self)
|
|
418
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index)
|
|
419
|
+
end,
|
|
420
|
+
set = function(self, cooldown)
|
|
421
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index, cooldown)
|
|
422
|
+
end
|
|
423
|
+
},
|
|
424
|
+
true
|
|
425
|
+
)
|
|
426
|
+
__TS__SetDescriptor(
|
|
427
|
+
UnitWeapon.prototype,
|
|
428
|
+
"damage",
|
|
429
|
+
{
|
|
430
|
+
get = function(self)
|
|
431
|
+
local minimumDamage = self.damageBase + self.damageDiceCount
|
|
432
|
+
local maximumDamage = self.damageBase + self.damageDiceCount * self.damageDiceSideCount
|
|
433
|
+
return {minimumDamage, maximumDamage}
|
|
434
|
+
end,
|
|
435
|
+
set = function(self, ____bindingPattern0)
|
|
436
|
+
local maximumDamage
|
|
437
|
+
local minimumDamage
|
|
438
|
+
minimumDamage = ____bindingPattern0[1]
|
|
439
|
+
maximumDamage = ____bindingPattern0[2]
|
|
440
|
+
self.damageBase = minimumDamage - 1
|
|
441
|
+
self.damageDiceCount = 1
|
|
442
|
+
self.damageDiceSideCount = maximumDamage - minimumDamage + 1
|
|
443
|
+
end
|
|
444
|
+
},
|
|
445
|
+
true
|
|
446
|
+
)
|
|
447
|
+
__TS__SetDescriptor(
|
|
448
|
+
UnitWeapon.prototype,
|
|
449
|
+
"allowedTargetCombatClassifications",
|
|
450
|
+
{
|
|
451
|
+
get = function(self)
|
|
452
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
453
|
+
end,
|
|
454
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
455
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
456
|
+
end
|
|
457
|
+
},
|
|
458
|
+
true
|
|
459
|
+
)
|
|
460
|
+
__TS__SetDescriptor(
|
|
461
|
+
UnitWeapon.prototype,
|
|
462
|
+
"damageBase",
|
|
463
|
+
{
|
|
464
|
+
get = function(self)
|
|
465
|
+
return BlzGetUnitBaseDamage(self.unit.handle, self.index)
|
|
466
|
+
end,
|
|
467
|
+
set = function(self, damageBase)
|
|
468
|
+
BlzSetUnitBaseDamage(self.unit.handle, self.index, damageBase)
|
|
469
|
+
end
|
|
470
|
+
},
|
|
471
|
+
true
|
|
472
|
+
)
|
|
473
|
+
__TS__SetDescriptor(
|
|
474
|
+
UnitWeapon.prototype,
|
|
475
|
+
"damageDiceCount",
|
|
476
|
+
{
|
|
477
|
+
get = function(self)
|
|
478
|
+
return BlzGetUnitDiceNumber(self.unit.handle, self.index)
|
|
479
|
+
end,
|
|
480
|
+
set = function(self, damageDiceCount)
|
|
481
|
+
BlzSetUnitDiceNumber(self.unit.handle, self.index, damageDiceCount)
|
|
482
|
+
end
|
|
483
|
+
},
|
|
484
|
+
true
|
|
485
|
+
)
|
|
486
|
+
__TS__SetDescriptor(
|
|
487
|
+
UnitWeapon.prototype,
|
|
488
|
+
"damageDiceSideCount",
|
|
489
|
+
{
|
|
490
|
+
get = function(self)
|
|
491
|
+
return BlzGetUnitDiceSides(self.unit.handle, self.index)
|
|
492
|
+
end,
|
|
493
|
+
set = function(self, damageDiceSideCount)
|
|
494
|
+
BlzSetUnitDiceSides(self.unit.handle, self.index, damageDiceSideCount)
|
|
495
|
+
end
|
|
496
|
+
},
|
|
497
|
+
true
|
|
498
|
+
)
|
|
499
|
+
__TS__SetDescriptor(
|
|
500
|
+
UnitWeapon.prototype,
|
|
501
|
+
"range",
|
|
502
|
+
{
|
|
503
|
+
get = function(self)
|
|
504
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_RANGE, self.index)
|
|
505
|
+
end,
|
|
506
|
+
set = function(self, range)
|
|
507
|
+
local handle = self.unit.handle
|
|
508
|
+
local index = self.index
|
|
509
|
+
setUnitWeaponRealField(
|
|
510
|
+
handle,
|
|
511
|
+
UNIT_WEAPON_RF_ATTACK_RANGE,
|
|
512
|
+
index + 1,
|
|
513
|
+
getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index + 1) + (range - getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index))
|
|
514
|
+
)
|
|
515
|
+
end
|
|
516
|
+
},
|
|
517
|
+
true
|
|
518
|
+
)
|
|
519
|
+
__TS__SetDescriptor(
|
|
520
|
+
UnitWeapon.prototype,
|
|
521
|
+
"impactDelay",
|
|
522
|
+
{
|
|
523
|
+
get = function(self)
|
|
524
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index)
|
|
525
|
+
end,
|
|
526
|
+
set = function(self, impactDelay)
|
|
527
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index, impactDelay)
|
|
528
|
+
end
|
|
529
|
+
},
|
|
530
|
+
true
|
|
531
|
+
)
|
|
532
|
+
__TS__SetDescriptor(
|
|
533
|
+
UnitWeapon.prototype,
|
|
534
|
+
"missileArc",
|
|
535
|
+
{
|
|
536
|
+
get = function(self)
|
|
537
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index)
|
|
538
|
+
end,
|
|
539
|
+
set = function(self, missileArc)
|
|
540
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index, missileArc)
|
|
541
|
+
end
|
|
542
|
+
},
|
|
543
|
+
true
|
|
544
|
+
)
|
|
545
|
+
__TS__SetDescriptor(
|
|
546
|
+
UnitWeapon.prototype,
|
|
547
|
+
"missileModelPath",
|
|
548
|
+
{
|
|
549
|
+
get = function(self)
|
|
550
|
+
return getUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index)
|
|
551
|
+
end,
|
|
552
|
+
set = function(self, missileModelPath)
|
|
553
|
+
setUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index, missileModelPath)
|
|
554
|
+
end
|
|
555
|
+
},
|
|
556
|
+
true
|
|
557
|
+
)
|
|
558
|
+
__TS__SetDescriptor(
|
|
559
|
+
UnitWeapon.prototype,
|
|
560
|
+
"missileSpeed",
|
|
561
|
+
{
|
|
562
|
+
get = function(self)
|
|
563
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index)
|
|
564
|
+
end,
|
|
565
|
+
set = function(self, missileSpeed)
|
|
566
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index, missileSpeed)
|
|
567
|
+
end
|
|
568
|
+
},
|
|
569
|
+
true
|
|
570
|
+
)
|
|
435
571
|
local unitInventorySize = UnitInventorySize
|
|
436
572
|
local unitItemInSlot = UnitItemInSlot
|
|
437
573
|
local getItemAbility = BlzGetItemAbility
|
|
@@ -442,8 +578,6 @@ local getAbilityName = GetAbilityName
|
|
|
442
578
|
local unitAddAbility = UnitAddAbility
|
|
443
579
|
local getUnitGoldCost = GetUnitGoldCost
|
|
444
580
|
local getUnitLumberCost = GetUnitWoodCost
|
|
445
|
-
local unitMakeAbilityPermanent = UnitMakeAbilityPermanent
|
|
446
|
-
local unitAddItem = UnitAddItem
|
|
447
581
|
local unitRemoveAbility = UnitRemoveAbility
|
|
448
582
|
local function retrieveAbility(unit, ability, abilityId)
|
|
449
583
|
if ability == nil then
|
|
@@ -453,17 +587,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
453
587
|
____exports.Unit:of(unit)
|
|
454
588
|
)
|
|
455
589
|
end
|
|
456
|
-
if not unitAddAbility(unit, abilityId) then
|
|
457
|
-
if getUnitAbility(unit, abilityId) == ability then
|
|
458
|
-
return UnitAbility:of(
|
|
459
|
-
ability,
|
|
460
|
-
abilityId,
|
|
461
|
-
____exports.Unit:of(unit)
|
|
462
|
-
)
|
|
463
|
-
end
|
|
464
|
-
else
|
|
465
|
-
unitRemoveAbility(unit, abilityId)
|
|
466
|
-
end
|
|
467
590
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
468
591
|
local item = unitItemInSlot(unit, i)
|
|
469
592
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -520,12 +643,44 @@ for ____, player in ipairs(Player.all) do
|
|
|
520
643
|
ShowUnit(dummy, false)
|
|
521
644
|
dummies[player] = dummy
|
|
522
645
|
end
|
|
646
|
+
local function delayHealthChecksCallback(unit)
|
|
647
|
+
local counter = (unit[103] or 0) - 1
|
|
648
|
+
if counter ~= 0 then
|
|
649
|
+
unit[103] = counter
|
|
650
|
+
return
|
|
651
|
+
end
|
|
652
|
+
unit[103] = nil
|
|
653
|
+
local healthBonus = unit[104]
|
|
654
|
+
if healthBonus ~= nil then
|
|
655
|
+
unit[104] = nil
|
|
656
|
+
local handle = unit.handle
|
|
657
|
+
BlzSetUnitMaxHP(
|
|
658
|
+
handle,
|
|
659
|
+
BlzGetUnitMaxHP(handle) - healthBonus
|
|
660
|
+
)
|
|
661
|
+
end
|
|
662
|
+
end
|
|
663
|
+
local nextSyncId = 1
|
|
664
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
665
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
666
|
+
local function addAbility(unit, abilityTypeId)
|
|
667
|
+
local ____unitAddAbility_result_0
|
|
668
|
+
if unitAddAbility(unit, abilityTypeId) then
|
|
669
|
+
____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
|
|
670
|
+
else
|
|
671
|
+
____unitAddAbility_result_0 = nil
|
|
672
|
+
end
|
|
673
|
+
return ____unitAddAbility_result_0
|
|
674
|
+
end
|
|
523
675
|
____exports.Unit = __TS__Class()
|
|
524
676
|
local Unit = ____exports.Unit
|
|
525
677
|
Unit.name = "Unit"
|
|
526
678
|
__TS__ClassExtends(Unit, Handle)
|
|
527
679
|
function Unit.prototype.____constructor(self, handle)
|
|
528
680
|
Handle.prototype.____constructor(self, handle)
|
|
681
|
+
local ____nextSyncId_1 = nextSyncId
|
|
682
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
683
|
+
self.syncId = ____nextSyncId_1
|
|
529
684
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
530
685
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
531
686
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -538,6 +693,7 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
538
693
|
fourCC("Amrf")
|
|
539
694
|
))
|
|
540
695
|
end
|
|
696
|
+
unitBySyncId[self.syncId] = self
|
|
541
697
|
local ____ = self.abilities
|
|
542
698
|
end
|
|
543
699
|
function Unit.prototype.getEvent(self, event, collector)
|
|
@@ -556,6 +712,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
556
712
|
end
|
|
557
713
|
function Unit.prototype.onDestroy(self)
|
|
558
714
|
local handle = self.handle
|
|
715
|
+
self[107] = getUnitX(handle)
|
|
716
|
+
self[108] = getUnitY(handle)
|
|
559
717
|
if not self._owner then
|
|
560
718
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
561
719
|
end
|
|
@@ -623,17 +781,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
623
781
|
end}
|
|
624
782
|
end
|
|
625
783
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
626
|
-
local
|
|
627
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
784
|
+
local ____combatClassification_2 = combatClassification
|
|
785
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
628
786
|
end
|
|
629
787
|
function Unit.prototype.addClassification(self, classification)
|
|
630
|
-
return
|
|
788
|
+
return UnitAddType(self.handle, classification)
|
|
631
789
|
end
|
|
632
790
|
function Unit.prototype.removeClassification(self, classification)
|
|
633
|
-
return
|
|
791
|
+
return UnitRemoveType(self.handle, classification)
|
|
634
792
|
end
|
|
635
793
|
function Unit.prototype.hasClassification(self, classification)
|
|
636
|
-
return
|
|
794
|
+
return IsUnitType(self.handle, classification)
|
|
637
795
|
end
|
|
638
796
|
function Unit.prototype.isVisibleTo(self, player)
|
|
639
797
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -642,13 +800,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
642
800
|
return isUnitInvisible(self.handle, player.handle)
|
|
643
801
|
end
|
|
644
802
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
645
|
-
local
|
|
803
|
+
local ____temp_3
|
|
646
804
|
if type(x) == "number" then
|
|
647
|
-
|
|
805
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
648
806
|
else
|
|
649
|
-
|
|
807
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
650
808
|
end
|
|
651
|
-
return
|
|
809
|
+
return ____temp_3
|
|
652
810
|
end
|
|
653
811
|
function Unit.prototype.isAllyOf(self, unit)
|
|
654
812
|
return isUnitAlly(
|
|
@@ -666,13 +824,29 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
666
824
|
if type(animation) == "number" then
|
|
667
825
|
setUnitAnimationByIndex(self.handle, animation)
|
|
668
826
|
elseif rarity then
|
|
669
|
-
|
|
827
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
670
828
|
else
|
|
671
829
|
setUnitAnimation(self.handle, animation)
|
|
672
830
|
end
|
|
673
831
|
end
|
|
832
|
+
function Unit.prototype.resetAnimation(self)
|
|
833
|
+
ResetUnitAnimation(self.handle)
|
|
834
|
+
end
|
|
674
835
|
function Unit.prototype.queueAnimation(self, animation)
|
|
675
|
-
|
|
836
|
+
QueueUnitAnimation(self.handle, animation)
|
|
837
|
+
end
|
|
838
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
839
|
+
if target:isAllowedTarget(self, self.firstWeapon.allowedTargetCombatClassifications) then
|
|
840
|
+
return self.firstWeapon
|
|
841
|
+
end
|
|
842
|
+
if target:isAllowedTarget(target, self.secondWeapon.allowedTargetCombatClassifications) then
|
|
843
|
+
return self.secondWeapon
|
|
844
|
+
end
|
|
845
|
+
return nil
|
|
846
|
+
end
|
|
847
|
+
function Unit.prototype.delayHealthChecks(self)
|
|
848
|
+
self[103] = (self[103] or 0) + 1
|
|
849
|
+
Timer:run(delayHealthChecksCallback, self)
|
|
676
850
|
end
|
|
677
851
|
function Unit.prototype.setPosition(self, x, y)
|
|
678
852
|
setUnitPosition(self.handle, x, y)
|
|
@@ -681,14 +855,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
681
855
|
return IsUnitSelected(self.handle, player.handle)
|
|
682
856
|
end
|
|
683
857
|
function Unit.prototype.explode(self)
|
|
684
|
-
|
|
858
|
+
SetUnitExploded(self.handle, true)
|
|
685
859
|
killUnit(self.handle)
|
|
686
860
|
end
|
|
687
861
|
function Unit.prototype.kill(self)
|
|
688
862
|
killUnit(self.handle)
|
|
689
863
|
end
|
|
690
|
-
function Unit.prototype.revive(self,
|
|
691
|
-
|
|
864
|
+
function Unit.prototype.revive(self, x, y, doEffect)
|
|
865
|
+
local ____ReviveHero_6 = ReviveHero
|
|
866
|
+
local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
|
|
867
|
+
local ____doEffect_4 = doEffect
|
|
868
|
+
if ____doEffect_4 == nil then
|
|
869
|
+
____doEffect_4 = false
|
|
870
|
+
end
|
|
871
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
872
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
692
873
|
end
|
|
693
874
|
function Unit.prototype.healTarget(self, target, amount)
|
|
694
875
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -728,20 +909,19 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
728
909
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
729
910
|
end
|
|
730
911
|
function Unit.prototype.itemInSlot(self, slot)
|
|
731
|
-
return Item:of(
|
|
912
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
732
913
|
end
|
|
733
914
|
function Unit.prototype.addAbility(self, abilityId)
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
915
|
+
local ability = UnitAbility:of(
|
|
916
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
917
|
+
abilityId,
|
|
918
|
+
self
|
|
919
|
+
)
|
|
920
|
+
if ability ~= nil then
|
|
740
921
|
local abilities = self.abilities
|
|
741
922
|
abilities[#abilities + 1] = ability
|
|
742
|
-
return ability
|
|
743
923
|
end
|
|
744
|
-
return
|
|
924
|
+
return ability
|
|
745
925
|
end
|
|
746
926
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
747
927
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -755,47 +935,62 @@ end
|
|
|
755
935
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
756
936
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
757
937
|
end
|
|
758
|
-
function Unit.prototype.
|
|
759
|
-
local
|
|
760
|
-
|
|
761
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
762
|
-
return nil
|
|
763
|
-
end
|
|
764
|
-
return UnitAbility:of(
|
|
765
|
-
getUnitAbility(self.handle, abilityId),
|
|
766
|
-
abilityId,
|
|
767
|
-
self
|
|
768
|
-
)
|
|
938
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
939
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
940
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
769
941
|
end
|
|
770
|
-
function Unit.prototype.removeAbility(self,
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
end
|
|
942
|
+
function Unit.prototype.removeAbility(self, abilityTypeId)
|
|
943
|
+
local abilities = self.abilities
|
|
944
|
+
for i = 1, #abilities do
|
|
945
|
+
if abilities[i].typeId == abilityTypeId then
|
|
946
|
+
local ability = abilities[i]
|
|
947
|
+
tremove(abilities, i)
|
|
948
|
+
ability:destroy()
|
|
949
|
+
return true
|
|
779
950
|
end
|
|
780
|
-
return true
|
|
781
951
|
end
|
|
782
|
-
return
|
|
952
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
783
953
|
end
|
|
784
954
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
785
955
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
786
956
|
end
|
|
957
|
+
function Unit.prototype.getAbilityRemainingCooldown(self, abilityId)
|
|
958
|
+
return BlzGetUnitAbilityCooldownRemaining(self.handle, abilityId)
|
|
959
|
+
end
|
|
787
960
|
function Unit.prototype.startAbilityCooldown(self, abilityId, cooldown)
|
|
788
961
|
BlzStartUnitAbilityCooldown(self.handle, abilityId, cooldown)
|
|
789
962
|
end
|
|
790
963
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
791
964
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
792
965
|
end
|
|
966
|
+
function Unit.prototype.interruptMovement(self)
|
|
967
|
+
local handle = self.handle
|
|
968
|
+
unitDisableAbility(
|
|
969
|
+
handle,
|
|
970
|
+
fourCC("Amov"),
|
|
971
|
+
true,
|
|
972
|
+
false
|
|
973
|
+
)
|
|
974
|
+
unitDisableAbility(
|
|
975
|
+
handle,
|
|
976
|
+
fourCC("Amov"),
|
|
977
|
+
false,
|
|
978
|
+
false
|
|
979
|
+
)
|
|
980
|
+
end
|
|
793
981
|
function Unit.prototype.interruptAttack(self)
|
|
794
982
|
unitInterruptAttack(self.handle)
|
|
795
983
|
end
|
|
796
984
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
797
|
-
|
|
798
|
-
unitDisableAbility(
|
|
985
|
+
local handle = self.handle
|
|
986
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
987
|
+
Timer:run(
|
|
988
|
+
unitDisableAbility,
|
|
989
|
+
handle,
|
|
990
|
+
abilityId,
|
|
991
|
+
false,
|
|
992
|
+
false
|
|
993
|
+
)
|
|
799
994
|
end
|
|
800
995
|
function Unit.prototype.getDistanceTo(self, target)
|
|
801
996
|
local handle = self.handle
|
|
@@ -855,18 +1050,18 @@ function Unit.prototype.unpauseEx(self)
|
|
|
855
1050
|
self:decrementStunCounter()
|
|
856
1051
|
end
|
|
857
1052
|
function Unit.prototype.incrementStunCounter(self)
|
|
858
|
-
local stunCounter = self[
|
|
859
|
-
if not self[
|
|
1053
|
+
local stunCounter = self[102] or 0
|
|
1054
|
+
if not self[101] or stunCounter >= 0 then
|
|
860
1055
|
BlzPauseUnitEx(self.handle, true)
|
|
861
1056
|
end
|
|
862
|
-
self[
|
|
1057
|
+
self[102] = stunCounter + 1
|
|
863
1058
|
end
|
|
864
1059
|
function Unit.prototype.decrementStunCounter(self)
|
|
865
|
-
local stunCounter = self[
|
|
866
|
-
if not self[
|
|
1060
|
+
local stunCounter = self[102] or 0
|
|
1061
|
+
if not self[101] or stunCounter >= 1 then
|
|
867
1062
|
BlzPauseUnitEx(self.handle, false)
|
|
868
1063
|
end
|
|
869
|
-
self[
|
|
1064
|
+
self[102] = stunCounter - 1
|
|
870
1065
|
end
|
|
871
1066
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
872
1067
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -968,8 +1163,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
968
1163
|
)
|
|
969
1164
|
return targetCollection
|
|
970
1165
|
end
|
|
971
|
-
function Unit.getSelectionOf(self, player)
|
|
972
|
-
|
|
1166
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1167
|
+
if target == nil then
|
|
1168
|
+
target = {}
|
|
1169
|
+
end
|
|
1170
|
+
targetCollection = target
|
|
973
1171
|
targetCollectionNextIndex = 1
|
|
974
1172
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
975
1173
|
return targetCollection
|
|
@@ -991,6 +1189,9 @@ end
|
|
|
991
1189
|
function Unit.prototype.__tostring(self)
|
|
992
1190
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
993
1191
|
end
|
|
1192
|
+
function Unit.getBySyncId(self, syncId)
|
|
1193
|
+
return unitBySyncId[syncId]
|
|
1194
|
+
end
|
|
994
1195
|
__TS__SetDescriptor(
|
|
995
1196
|
Unit.prototype,
|
|
996
1197
|
"_deltas",
|
|
@@ -1050,7 +1251,15 @@ __TS__SetDescriptor(
|
|
|
1050
1251
|
Unit.prototype,
|
|
1051
1252
|
"isIllusion",
|
|
1052
1253
|
{get = function(self)
|
|
1053
|
-
return
|
|
1254
|
+
return IsUnitIllusion(self.handle)
|
|
1255
|
+
end},
|
|
1256
|
+
true
|
|
1257
|
+
)
|
|
1258
|
+
__TS__SetDescriptor(
|
|
1259
|
+
Unit.prototype,
|
|
1260
|
+
"isStunned",
|
|
1261
|
+
{get = function(self)
|
|
1262
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1054
1263
|
end},
|
|
1055
1264
|
true
|
|
1056
1265
|
)
|
|
@@ -1071,12 +1280,27 @@ __TS__SetDescriptor(
|
|
|
1071
1280
|
Unit.prototype,
|
|
1072
1281
|
"weapons",
|
|
1073
1282
|
{get = function(self)
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1283
|
+
return {self.firstWeapon, self.secondWeapon}
|
|
1284
|
+
end},
|
|
1285
|
+
true
|
|
1286
|
+
)
|
|
1287
|
+
__TS__SetDescriptor(
|
|
1288
|
+
Unit.prototype,
|
|
1289
|
+
"firstWeapon",
|
|
1290
|
+
{get = function(self)
|
|
1291
|
+
local weapon = __TS__New(____exports.UnitWeapon, self, 0)
|
|
1292
|
+
rawset(self, "firstWeapon", weapon)
|
|
1293
|
+
return weapon
|
|
1294
|
+
end},
|
|
1295
|
+
true
|
|
1296
|
+
)
|
|
1297
|
+
__TS__SetDescriptor(
|
|
1298
|
+
Unit.prototype,
|
|
1299
|
+
"secondWeapon",
|
|
1300
|
+
{get = function(self)
|
|
1301
|
+
local weapon = __TS__New(____exports.UnitWeapon, self, 1)
|
|
1302
|
+
rawset(self, "secondWeapon", weapon)
|
|
1303
|
+
return weapon
|
|
1080
1304
|
end},
|
|
1081
1305
|
true
|
|
1082
1306
|
)
|
|
@@ -1112,6 +1336,19 @@ __TS__SetDescriptor(
|
|
|
1112
1336
|
},
|
|
1113
1337
|
true
|
|
1114
1338
|
)
|
|
1339
|
+
__TS__SetDescriptor(
|
|
1340
|
+
Unit.prototype,
|
|
1341
|
+
"primaryAttribute",
|
|
1342
|
+
{
|
|
1343
|
+
get = function(self)
|
|
1344
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1345
|
+
end,
|
|
1346
|
+
set = function(self, primaryAttribute)
|
|
1347
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1348
|
+
end
|
|
1349
|
+
},
|
|
1350
|
+
true
|
|
1351
|
+
)
|
|
1115
1352
|
__TS__SetDescriptor(
|
|
1116
1353
|
Unit.prototype,
|
|
1117
1354
|
"strengthBase",
|
|
@@ -1233,17 +1470,17 @@ __TS__SetDescriptor(
|
|
|
1233
1470
|
"isTeamGlowVisible",
|
|
1234
1471
|
{
|
|
1235
1472
|
get = function(self)
|
|
1236
|
-
return not self[
|
|
1473
|
+
return not self[106]
|
|
1237
1474
|
end,
|
|
1238
1475
|
set = function(self, isTeamGlowVisible)
|
|
1239
|
-
|
|
1240
|
-
local
|
|
1476
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1477
|
+
local ____temp_7
|
|
1241
1478
|
if not isTeamGlowVisible then
|
|
1242
|
-
|
|
1479
|
+
____temp_7 = true
|
|
1243
1480
|
else
|
|
1244
|
-
|
|
1481
|
+
____temp_7 = nil
|
|
1245
1482
|
end
|
|
1246
|
-
self[
|
|
1483
|
+
self[106] = ____temp_7
|
|
1247
1484
|
end
|
|
1248
1485
|
},
|
|
1249
1486
|
true
|
|
@@ -1252,9 +1489,9 @@ __TS__SetDescriptor(
|
|
|
1252
1489
|
Unit.prototype,
|
|
1253
1490
|
"color",
|
|
1254
1491
|
{set = function(self, color)
|
|
1255
|
-
|
|
1256
|
-
if self[
|
|
1257
|
-
|
|
1492
|
+
SetUnitColor(self.handle, color.handle)
|
|
1493
|
+
if self[106] then
|
|
1494
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1258
1495
|
end
|
|
1259
1496
|
end},
|
|
1260
1497
|
true
|
|
@@ -1277,10 +1514,14 @@ __TS__SetDescriptor(
|
|
|
1277
1514
|
"maxHealth",
|
|
1278
1515
|
{
|
|
1279
1516
|
get = function(self)
|
|
1280
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1517
|
+
return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
|
|
1281
1518
|
end,
|
|
1282
1519
|
set = function(self, maxHealth)
|
|
1283
|
-
|
|
1520
|
+
if maxHealth < 1 and self[103] ~= nil then
|
|
1521
|
+
self[104] = (self[104] or 0) + (1 - maxHealth)
|
|
1522
|
+
maxHealth = 1
|
|
1523
|
+
end
|
|
1524
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
|
|
1284
1525
|
end
|
|
1285
1526
|
},
|
|
1286
1527
|
true
|
|
@@ -1322,10 +1563,10 @@ __TS__SetDescriptor(
|
|
|
1322
1563
|
"health",
|
|
1323
1564
|
{
|
|
1324
1565
|
get = function(self)
|
|
1325
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1566
|
+
return GetWidgetLife(self.handle) - (self[105] or 0)
|
|
1326
1567
|
end,
|
|
1327
1568
|
set = function(self, health)
|
|
1328
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1569
|
+
SetWidgetLife(self.handle, health + (self[105] or 0))
|
|
1329
1570
|
end
|
|
1330
1571
|
},
|
|
1331
1572
|
true
|
|
@@ -1419,7 +1660,7 @@ __TS__SetDescriptor(
|
|
|
1419
1660
|
"x",
|
|
1420
1661
|
{
|
|
1421
1662
|
get = function(self)
|
|
1422
|
-
return getUnitX(self.handle)
|
|
1663
|
+
return self[107] or getUnitX(self.handle)
|
|
1423
1664
|
end,
|
|
1424
1665
|
set = function(self, v)
|
|
1425
1666
|
SetUnitX(self.handle, v)
|
|
@@ -1432,7 +1673,7 @@ __TS__SetDescriptor(
|
|
|
1432
1673
|
"y",
|
|
1433
1674
|
{
|
|
1434
1675
|
get = function(self)
|
|
1435
|
-
return getUnitY(self.handle)
|
|
1676
|
+
return self[108] or getUnitY(self.handle)
|
|
1436
1677
|
end,
|
|
1437
1678
|
set = function(self, v)
|
|
1438
1679
|
SetUnitY(self.handle, v)
|
|
@@ -1518,10 +1759,10 @@ __TS__SetDescriptor(
|
|
|
1518
1759
|
"gold",
|
|
1519
1760
|
{
|
|
1520
1761
|
get = function(self)
|
|
1521
|
-
return
|
|
1762
|
+
return GetResourceAmount(self.handle)
|
|
1522
1763
|
end,
|
|
1523
1764
|
set = function(self, gold)
|
|
1524
|
-
|
|
1765
|
+
SetResourceAmount(self.handle, gold)
|
|
1525
1766
|
end
|
|
1526
1767
|
},
|
|
1527
1768
|
true
|
|
@@ -1536,17 +1777,17 @@ __TS__SetDescriptor(
|
|
|
1536
1777
|
set = function(self, isPaused)
|
|
1537
1778
|
local handle = self.handle
|
|
1538
1779
|
if isPaused and not IsUnitPaused(handle) then
|
|
1539
|
-
self[
|
|
1540
|
-
for _ = self[
|
|
1780
|
+
self[101] = true
|
|
1781
|
+
for _ = self[102] or 0, -1 do
|
|
1541
1782
|
BlzPauseUnitEx(handle, true)
|
|
1542
1783
|
end
|
|
1543
1784
|
PauseUnit(handle, true)
|
|
1544
1785
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1545
1786
|
PauseUnit(handle, false)
|
|
1546
|
-
for _ = self[
|
|
1787
|
+
for _ = self[102] or 0, -1 do
|
|
1547
1788
|
BlzPauseUnitEx(handle, false)
|
|
1548
1789
|
end
|
|
1549
|
-
self[
|
|
1790
|
+
self[101] = nil
|
|
1550
1791
|
end
|
|
1551
1792
|
end
|
|
1552
1793
|
},
|
|
@@ -1649,6 +1890,19 @@ __TS__SetDescriptor(
|
|
|
1649
1890
|
end},
|
|
1650
1891
|
true
|
|
1651
1892
|
)
|
|
1893
|
+
__TS__SetDescriptor(
|
|
1894
|
+
Unit.prototype,
|
|
1895
|
+
"movementType",
|
|
1896
|
+
{
|
|
1897
|
+
get = function(self)
|
|
1898
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1899
|
+
end,
|
|
1900
|
+
set = function(self, movementType)
|
|
1901
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1902
|
+
end
|
|
1903
|
+
},
|
|
1904
|
+
true
|
|
1905
|
+
)
|
|
1652
1906
|
__TS__SetDescriptor(
|
|
1653
1907
|
Unit.prototype,
|
|
1654
1908
|
"pathing",
|
|
@@ -1830,6 +2084,14 @@ __TS__SetDescriptor(
|
|
|
1830
2084
|
end},
|
|
1831
2085
|
true
|
|
1832
2086
|
)
|
|
2087
|
+
__TS__SetDescriptor(
|
|
2088
|
+
Unit.prototype,
|
|
2089
|
+
"targetAcquiredEvent",
|
|
2090
|
+
{get = function(self)
|
|
2091
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2092
|
+
end},
|
|
2093
|
+
true
|
|
2094
|
+
)
|
|
1833
2095
|
__TS__SetDescriptor(
|
|
1834
2096
|
Unit.prototype,
|
|
1835
2097
|
"onSelect",
|
|
@@ -1903,7 +2165,6 @@ Unit.onDecay = __TS__New(
|
|
|
1903
2165
|
Unit.onResurrect = __TS__New(
|
|
1904
2166
|
InitializingEvent,
|
|
1905
2167
|
function(event)
|
|
1906
|
-
local invoke = Event.invoke
|
|
1907
2168
|
local dead = setmetatable({}, {__mode = "k"})
|
|
1908
2169
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
1909
2170
|
dead[unit] = true
|
|
@@ -1919,10 +2180,15 @@ Unit.onResurrect = __TS__New(
|
|
|
1919
2180
|
Unit.morphEvent = __TS__New(
|
|
1920
2181
|
InitializingEvent,
|
|
1921
2182
|
function(event)
|
|
2183
|
+
local function ifNotLeft(unit)
|
|
2184
|
+
local handle = unit.handle
|
|
2185
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
|
|
2186
|
+
invoke(event, unit)
|
|
2187
|
+
end
|
|
2188
|
+
end
|
|
1922
2189
|
____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
|
|
1923
2190
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
1924
|
-
|
|
1925
|
-
Timer:run(Event.invoke, event, unit)
|
|
2191
|
+
Timer:run(ifNotLeft, unit)
|
|
1926
2192
|
end
|
|
1927
2193
|
end)
|
|
1928
2194
|
end
|
|
@@ -1960,27 +2226,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
|
|
|
1960
2226
|
Unit.onTargetCast = dispatchId(__TS__New(
|
|
1961
2227
|
InitializingEvent,
|
|
1962
2228
|
function(event)
|
|
1963
|
-
local invoke = Event.invoke
|
|
1964
2229
|
local function listener(unit, id)
|
|
1965
|
-
local
|
|
2230
|
+
local ____GetSpellTargetUnit_result_10
|
|
1966
2231
|
if GetSpellTargetUnit() then
|
|
1967
|
-
|
|
2232
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
1968
2233
|
else
|
|
1969
|
-
local
|
|
2234
|
+
local ____GetSpellTargetItem_result_9
|
|
1970
2235
|
if GetSpellTargetItem() then
|
|
1971
|
-
|
|
2236
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
1972
2237
|
else
|
|
1973
|
-
local
|
|
2238
|
+
local ____GetSpellTargetDestructable_result_8
|
|
1974
2239
|
if GetSpellTargetDestructable() then
|
|
1975
|
-
|
|
2240
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
1976
2241
|
else
|
|
1977
|
-
|
|
2242
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
1978
2243
|
end
|
|
1979
|
-
|
|
2244
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
1980
2245
|
end
|
|
1981
|
-
|
|
2246
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
1982
2247
|
end
|
|
1983
|
-
local target =
|
|
2248
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
1984
2249
|
if target then
|
|
1985
2250
|
invoke(event, unit, id, target)
|
|
1986
2251
|
end
|
|
@@ -2152,10 +2417,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2152
2417
|
____exports.UnitTriggerEvent,
|
|
2153
2418
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2154
2419
|
function()
|
|
2155
|
-
local
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2420
|
+
local handle = getOrderedUnit()
|
|
2421
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2422
|
+
local unit = ____exports.Unit:of(handle)
|
|
2423
|
+
if unit.state == 1 then
|
|
2424
|
+
return unit, getIssuedOrderId()
|
|
2425
|
+
end
|
|
2159
2426
|
end
|
|
2160
2427
|
return IgnoreEvent
|
|
2161
2428
|
end
|
|
@@ -2177,7 +2444,6 @@ Unit.autoAttackStartEvent = __TS__New(
|
|
|
2177
2444
|
)
|
|
2178
2445
|
Unit.onDamaging = (function()
|
|
2179
2446
|
local event = __TS__New(Event)
|
|
2180
|
-
local invoke = Event.invoke
|
|
2181
2447
|
local trigger = CreateTrigger()
|
|
2182
2448
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2183
2449
|
TriggerAddCondition(
|
|
@@ -2187,13 +2453,19 @@ Unit.onDamaging = (function()
|
|
|
2187
2453
|
if source and source.typeId == dummyUnitId then
|
|
2188
2454
|
source = nil
|
|
2189
2455
|
end
|
|
2190
|
-
local target = BlzGetEventDamageTarget()
|
|
2456
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2457
|
+
local metadata = damageMetadataByTarget[target]
|
|
2458
|
+
damageMetadataByTarget[target] = nil
|
|
2191
2459
|
local data = {
|
|
2192
2460
|
amount = GetEventDamage(),
|
|
2193
|
-
attackType = BlzGetEventAttackType(),
|
|
2461
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2194
2462
|
damageType = BlzGetEventDamageType(),
|
|
2195
2463
|
weaponType = BlzGetEventWeaponType(),
|
|
2196
|
-
|
|
2464
|
+
metadata = metadata,
|
|
2465
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2466
|
+
originalAmount = GetEventDamage(),
|
|
2467
|
+
originalMetadata = metadata,
|
|
2468
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2197
2469
|
}
|
|
2198
2470
|
if data.isAttack and source then
|
|
2199
2471
|
local weapon = BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 1) and (BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 0) and -1 or 1) or 0
|
|
@@ -2207,18 +2479,36 @@ Unit.onDamaging = (function()
|
|
|
2207
2479
|
invoke(
|
|
2208
2480
|
event,
|
|
2209
2481
|
source,
|
|
2210
|
-
|
|
2482
|
+
target,
|
|
2211
2483
|
setmetatable(
|
|
2212
2484
|
{},
|
|
2213
2485
|
{
|
|
2214
2486
|
__index = data,
|
|
2215
2487
|
__newindex = function(self, key, value)
|
|
2216
|
-
damageSetters[key]
|
|
2488
|
+
local damageSetter = damageSetters[key]
|
|
2489
|
+
if damageSetter ~= nil then
|
|
2490
|
+
damageSetter(value)
|
|
2491
|
+
end
|
|
2217
2492
|
data[key] = value
|
|
2218
2493
|
end
|
|
2219
2494
|
}
|
|
2220
2495
|
)
|
|
2221
2496
|
)
|
|
2497
|
+
if data[0] and source then
|
|
2498
|
+
local sourceOwner = source.owner.handle
|
|
2499
|
+
data[1] = sourceOwner
|
|
2500
|
+
local targetOwner = target.owner.handle
|
|
2501
|
+
data[2] = targetOwner
|
|
2502
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2503
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2504
|
+
data[3] = true
|
|
2505
|
+
end
|
|
2506
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2507
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2508
|
+
data[4] = true
|
|
2509
|
+
end
|
|
2510
|
+
end
|
|
2511
|
+
damagingEventByTarget[target] = data
|
|
2222
2512
|
return
|
|
2223
2513
|
end
|
|
2224
2514
|
BlzSetEventDamage(0)
|
|
@@ -2226,7 +2516,7 @@ Unit.onDamaging = (function()
|
|
|
2226
2516
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2227
2517
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2228
2518
|
local sourceOwner = source.owner.handle
|
|
2229
|
-
local targetOwner =
|
|
2519
|
+
local targetOwner = target.owner.handle
|
|
2230
2520
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2231
2521
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2232
2522
|
Timer:run(function()
|
|
@@ -2242,23 +2532,19 @@ Unit.onDamaging = (function()
|
|
|
2242
2532
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2243
2533
|
local condition = ____value[1]
|
|
2244
2534
|
local action = ____value[2]
|
|
2245
|
-
if condition(
|
|
2246
|
-
source,
|
|
2247
|
-
____exports.Unit:of(target),
|
|
2248
|
-
data
|
|
2249
|
-
) then
|
|
2535
|
+
if condition(source, target, data) then
|
|
2250
2536
|
action(
|
|
2251
2537
|
source,
|
|
2252
|
-
|
|
2538
|
+
target,
|
|
2253
2539
|
setmetatable(
|
|
2254
2540
|
{fire = function()
|
|
2255
2541
|
UnitDamageTarget(
|
|
2256
2542
|
source.handle,
|
|
2257
|
-
target,
|
|
2543
|
+
target.handle,
|
|
2258
2544
|
data.amount,
|
|
2259
2545
|
true,
|
|
2260
2546
|
true,
|
|
2261
|
-
data.attackType,
|
|
2547
|
+
attackTypeToNative(data.attackType),
|
|
2262
2548
|
data.damageType,
|
|
2263
2549
|
data.weaponType
|
|
2264
2550
|
)
|
|
@@ -2276,7 +2562,6 @@ end)()
|
|
|
2276
2562
|
Unit.onDamage = __TS__New(
|
|
2277
2563
|
InitializingEvent,
|
|
2278
2564
|
function(event)
|
|
2279
|
-
local invoke = Event.invoke
|
|
2280
2565
|
local trigger = CreateTrigger()
|
|
2281
2566
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2282
2567
|
TriggerAddCondition(
|
|
@@ -2286,29 +2571,54 @@ Unit.onDamage = __TS__New(
|
|
|
2286
2571
|
if source and source.typeId == dummyUnitId then
|
|
2287
2572
|
source = nil
|
|
2288
2573
|
end
|
|
2574
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2575
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2576
|
+
damagingEventByTarget[target] = nil
|
|
2289
2577
|
local data = {
|
|
2290
2578
|
amount = GetEventDamage(),
|
|
2291
|
-
attackType = BlzGetEventAttackType(),
|
|
2579
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2292
2580
|
damageType = BlzGetEventDamageType(),
|
|
2293
2581
|
weaponType = BlzGetEventWeaponType(),
|
|
2582
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2294
2583
|
isAttack = BlzGetEventIsAttack(),
|
|
2584
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2585
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2295
2586
|
preventDeath = damageEventPreventDeath
|
|
2296
2587
|
}
|
|
2588
|
+
if damagingEvent then
|
|
2589
|
+
for key, value in pairs(damagingEvent) do
|
|
2590
|
+
if isAttribute(key) then
|
|
2591
|
+
data[key] = value
|
|
2592
|
+
end
|
|
2593
|
+
end
|
|
2594
|
+
local sourceOwner = damagingEvent[1]
|
|
2595
|
+
if sourceOwner then
|
|
2596
|
+
local targetOwner = damagingEvent[2]
|
|
2597
|
+
if damagingEvent[3] then
|
|
2598
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2599
|
+
end
|
|
2600
|
+
if damagingEvent[4] then
|
|
2601
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2602
|
+
end
|
|
2603
|
+
end
|
|
2604
|
+
end
|
|
2297
2605
|
local evData = setmetatable(
|
|
2298
2606
|
{},
|
|
2299
2607
|
{
|
|
2300
2608
|
__index = data,
|
|
2301
2609
|
__newindex = function(self, key, value)
|
|
2302
|
-
damageSetters[key]
|
|
2610
|
+
local damageSetter = damageSetters[key]
|
|
2611
|
+
if damageSetter ~= nil then
|
|
2612
|
+
damageSetter(value)
|
|
2613
|
+
end
|
|
2303
2614
|
data[key] = value
|
|
2304
2615
|
end
|
|
2305
2616
|
}
|
|
2306
2617
|
)
|
|
2307
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2308
2618
|
invoke(event, source, target, evData)
|
|
2309
2619
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2310
2620
|
local bonusHealth = math.ceil(evData.amount)
|
|
2311
|
-
target[
|
|
2621
|
+
target[105] = (target[105] or 0) + bonusHealth
|
|
2312
2622
|
BlzSetUnitMaxHP(
|
|
2313
2623
|
target.handle,
|
|
2314
2624
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2322,7 +2632,7 @@ Unit.onDamage = __TS__New(
|
|
|
2322
2632
|
evData[0],
|
|
2323
2633
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2324
2634
|
)
|
|
2325
|
-
target[
|
|
2635
|
+
target[105] = (target[105] or 0) - bonusHealth
|
|
2326
2636
|
SetWidgetLife(
|
|
2327
2637
|
target.handle,
|
|
2328
2638
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2342,32 +2652,110 @@ Unit.onDamage = __TS__New(
|
|
|
2342
2652
|
DestroyTrigger(trigger)
|
|
2343
2653
|
end
|
|
2344
2654
|
)
|
|
2345
|
-
Unit.
|
|
2655
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2346
2656
|
____exports.UnitTriggerEvent,
|
|
2347
2657
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2348
2658
|
function()
|
|
2349
2659
|
local unit = getTriggerUnit()
|
|
2350
|
-
|
|
2351
|
-
|
|
2660
|
+
local item = getManipulatedItem()
|
|
2661
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2662
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2352
2663
|
end
|
|
2353
2664
|
return IgnoreEvent
|
|
2354
2665
|
end
|
|
2355
2666
|
)
|
|
2356
|
-
Unit.
|
|
2667
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2357
2668
|
____exports.UnitTriggerEvent,
|
|
2358
2669
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2359
2670
|
function()
|
|
2360
|
-
local
|
|
2361
|
-
|
|
2362
|
-
|
|
2671
|
+
local unitHandle = getTriggerUnit()
|
|
2672
|
+
local itemHandle = getManipulatedItem()
|
|
2673
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
|
|
2674
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2675
|
+
local item = Item:of(itemHandle)
|
|
2676
|
+
if item.owner ~= unit then
|
|
2677
|
+
return unit, item
|
|
2678
|
+
end
|
|
2363
2679
|
end
|
|
2364
2680
|
return IgnoreEvent
|
|
2365
2681
|
end
|
|
2366
2682
|
)
|
|
2367
|
-
Unit.
|
|
2683
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2368
2684
|
____exports.UnitTriggerEvent,
|
|
2369
2685
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2370
|
-
function()
|
|
2686
|
+
function()
|
|
2687
|
+
local unit = getTriggerUnit()
|
|
2688
|
+
local item = getManipulatedItem()
|
|
2689
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2690
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2691
|
+
end
|
|
2692
|
+
return IgnoreEvent
|
|
2693
|
+
end
|
|
2694
|
+
)
|
|
2695
|
+
Unit.itemStackedEvent = __TS__New(
|
|
2696
|
+
____exports.UnitTriggerEvent,
|
|
2697
|
+
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2698
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2699
|
+
)
|
|
2700
|
+
__TS__ObjectDefineProperty(
|
|
2701
|
+
Unit,
|
|
2702
|
+
"itemChargesChangedEvent",
|
|
2703
|
+
{get = function(self)
|
|
2704
|
+
local event = __TS__New(Event)
|
|
2705
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2706
|
+
local unit = item.owner
|
|
2707
|
+
if unit ~= nil then
|
|
2708
|
+
invoke(event, unit, item)
|
|
2709
|
+
end
|
|
2710
|
+
end)
|
|
2711
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2712
|
+
return event
|
|
2713
|
+
end}
|
|
2714
|
+
)
|
|
2715
|
+
__TS__ObjectDefineProperty(
|
|
2716
|
+
Unit,
|
|
2717
|
+
"itemUseOrderEvent",
|
|
2718
|
+
{get = function(self)
|
|
2719
|
+
local event = __TS__New(Event)
|
|
2720
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2721
|
+
local slot = order - orderId("useslot0")
|
|
2722
|
+
local function listener(unit)
|
|
2723
|
+
local item = unit.items[slot + 1]
|
|
2724
|
+
if item ~= nil then
|
|
2725
|
+
invoke(event, unit, item)
|
|
2726
|
+
end
|
|
2727
|
+
end
|
|
2728
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2729
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2730
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2731
|
+
end
|
|
2732
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2733
|
+
return event
|
|
2734
|
+
end}
|
|
2735
|
+
)
|
|
2736
|
+
__TS__ObjectDefineProperty(
|
|
2737
|
+
Unit,
|
|
2738
|
+
"itemMoveOrderEvent",
|
|
2739
|
+
{get = function(self)
|
|
2740
|
+
local event = __TS__New(Event)
|
|
2741
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2742
|
+
local slotTo = order - orderId("moveslot0")
|
|
2743
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2744
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2745
|
+
if slotFrom ~= nil then
|
|
2746
|
+
invoke(
|
|
2747
|
+
event,
|
|
2748
|
+
unit,
|
|
2749
|
+
item,
|
|
2750
|
+
slotFrom,
|
|
2751
|
+
slotTo
|
|
2752
|
+
)
|
|
2753
|
+
end
|
|
2754
|
+
end)
|
|
2755
|
+
end
|
|
2756
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2757
|
+
return event
|
|
2758
|
+
end}
|
|
2371
2759
|
)
|
|
2372
2760
|
__TS__ObjectDefineProperty(
|
|
2373
2761
|
Unit,
|