warscript 0.0.1-dev.6fe4470 → 0.0.1-dev.702d52d
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 +4 -0
- package/core/types/frame.lua +95 -21
- package/core/types/player.d.ts +16 -0
- package/core/types/player.lua +60 -15
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/native.d.ts +846 -790
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +16 -3
- package/engine/behavior.lua +233 -73
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +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 +9 -3
- package/engine/behaviour/ability/damage.lua +26 -38
- 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 +22 -5
- package/engine/behaviour/ability.lua +113 -48
- 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 +45 -2
- package/engine/behaviour/unit.lua +289 -6
- package/engine/buff.d.ts +83 -47
- package/engine/buff.lua +431 -272
- package/engine/internal/ability.d.ts +23 -14
- package/engine/internal/ability.lua +129 -85
- package/engine/internal/item/ability.lua +162 -4
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +20 -19
- package/engine/internal/item.lua +191 -74
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +128 -17
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +8 -2
- package/engine/internal/unit/bonus.lua +33 -1
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/item.d.ts +24 -0
- package/engine/internal/unit/item.lua +78 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +36 -0
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +12 -3
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +70 -13
- package/engine/internal/unit.d.ts +62 -29
- package/engine/internal/unit.lua +483 -258
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +9 -2
- package/engine/local-client.lua +112 -0
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -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/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/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +19 -17
- package/engine/object-data/entry/ability-type.lua +93 -36
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- 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 +15 -1
- package/engine/object-data/entry/item-type.lua +93 -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 +9 -5
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +25 -6
- package/engine/object-field.lua +359 -116
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/ability.d.ts +4 -2
- package/engine/standard/fields/ability.lua +4 -2
- package/engine/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +8 -0
- package/engine/unit.lua +8 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- 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/buff.lua +12 -11
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +25 -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 +26 -0
- package/utility/linked-map.lua +66 -0
- package/utility/linked-set.d.ts +2 -0
- package/utility/linked-set.lua +26 -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/unit.lua
CHANGED
|
@@ -51,33 +51,42 @@ local ____arrays = require("utility.arrays")
|
|
|
51
51
|
local forEach = ____arrays.forEach
|
|
52
52
|
local ____math = require("math")
|
|
53
53
|
local min = ____math.min
|
|
54
|
+
local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
|
|
55
|
+
local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
|
|
56
|
+
local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
|
|
57
|
+
local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
|
|
58
|
+
local nativeToAttackType = ____attack_2Dtype.nativeToAttackType
|
|
59
|
+
local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
|
|
60
|
+
local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
|
|
61
|
+
local ____attributes = require("attributes")
|
|
62
|
+
local isAttribute = ____attributes.isAttribute
|
|
63
|
+
local ____ability = require("engine.internal.item.ability")
|
|
64
|
+
local doUnitAbilityAction = ____ability.doUnitAbilityAction
|
|
65
|
+
local ____synchronization = require("engine.synchronization")
|
|
66
|
+
local synchronizer = ____synchronization.synchronizer
|
|
67
|
+
local ____linked_2Dmap = require("utility.linked-map")
|
|
68
|
+
local LinkedMap = ____linked_2Dmap.LinkedMap
|
|
54
69
|
local match = string.match
|
|
55
70
|
local ____tostring = _G.tostring
|
|
56
71
|
local setUnitAnimation = SetUnitAnimation
|
|
57
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
58
72
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
59
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
60
73
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
61
74
|
local getUnitRealField = BlzGetUnitRealField
|
|
62
75
|
local getHeroStr = GetHeroStr
|
|
63
76
|
local getHeroAgi = GetHeroAgi
|
|
64
77
|
local getHeroInt = GetHeroInt
|
|
65
|
-
local setHeroStr = SetHeroStr
|
|
66
|
-
local setHeroAgi = SetHeroAgi
|
|
67
|
-
local setHeroInt = SetHeroInt
|
|
68
78
|
local getUnitBooleanField = BlzGetUnitBooleanField
|
|
69
79
|
local getUnitStringField = BlzGetUnitStringField
|
|
70
80
|
local setUnitIntegerField = BlzSetUnitIntegerField
|
|
71
81
|
local setUnitRealField = BlzSetUnitRealField
|
|
72
82
|
local setUnitBooleanField = BlzSetUnitBooleanField
|
|
73
83
|
local setUnitStringField = BlzSetUnitStringField
|
|
74
|
-
local setUnitScale = SetUnitScale
|
|
75
84
|
local setUnitPosition = SetUnitPosition
|
|
76
85
|
local setUnitTimeScale = SetUnitTimeScale
|
|
77
86
|
local getHandleId = GetHandleId
|
|
87
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
78
88
|
local createUnit = CreateUnit
|
|
79
89
|
local killUnit = KillUnit
|
|
80
|
-
local setUnitExploded = SetUnitExploded
|
|
81
90
|
local removeUnit = RemoveUnit
|
|
82
91
|
local getUnitTypeId = GetUnitTypeId
|
|
83
92
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -93,15 +102,12 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
93
102
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
94
103
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
95
104
|
local isUnitInRange = IsUnitInRange
|
|
96
|
-
local setResourceAmount = SetResourceAmount
|
|
97
|
-
local getResourceAmount = GetResourceAmount
|
|
98
105
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
99
106
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
100
107
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
101
108
|
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
102
109
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
103
110
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
104
|
-
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
105
111
|
local isUnitInvisible = IsUnitInvisible
|
|
106
112
|
local isUnitVisible = IsUnitVisible
|
|
107
113
|
local getUnitX = GetUnitX
|
|
@@ -118,15 +124,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
118
124
|
local getIssuedOrderId = GetIssuedOrderId
|
|
119
125
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
120
126
|
local unitAlive = UnitAlive
|
|
121
|
-
local unitAddType = UnitAddType
|
|
122
|
-
local unitRemoveType = UnitRemoveType
|
|
123
|
-
local isUnitIllusion = IsUnitIllusion
|
|
124
|
-
local isUnitType = IsUnitType
|
|
125
127
|
local isUnitAlly = IsUnitAlly
|
|
126
128
|
local isUnitEnemy = IsUnitEnemy
|
|
127
129
|
local getOwningPlayer = GetOwningPlayer
|
|
128
|
-
local setUnitColor = SetUnitColor
|
|
129
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
130
130
|
____exports.UnitClassification = {}
|
|
131
131
|
local UnitClassification = ____exports.UnitClassification
|
|
132
132
|
do
|
|
@@ -136,6 +136,7 @@ do
|
|
|
136
136
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
137
137
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
138
138
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
139
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
139
140
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
140
141
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
141
142
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -343,6 +344,9 @@ local function dispatchAbility(event)
|
|
|
343
344
|
}
|
|
344
345
|
)
|
|
345
346
|
end
|
|
347
|
+
local function damagingEventPreventRetaliation(self)
|
|
348
|
+
self[0] = true
|
|
349
|
+
end
|
|
346
350
|
local function damageEventPreventDeath(self, callback, ...)
|
|
347
351
|
if self[0] ~= nil then
|
|
348
352
|
return
|
|
@@ -354,7 +358,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
354
358
|
rawset(self, 1 + i, (select(i, ...)))
|
|
355
359
|
end
|
|
356
360
|
end
|
|
357
|
-
local damageSetters = {
|
|
361
|
+
local damageSetters = {
|
|
362
|
+
amount = BlzSetEventDamage,
|
|
363
|
+
attackType = function(attackType)
|
|
364
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
365
|
+
end,
|
|
366
|
+
damageType = BlzSetEventDamageType,
|
|
367
|
+
weaponType = BlzSetEventWeaponType
|
|
368
|
+
}
|
|
358
369
|
local jlimitopByOperator = {
|
|
359
370
|
[0] = LESS_THAN_OR_EQUAL,
|
|
360
371
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -372,15 +383,27 @@ local modifiers = {
|
|
|
372
383
|
end,
|
|
373
384
|
armor = function(unit, value)
|
|
374
385
|
if UnitAddAbility(unit, armorBonusAbilityId) then
|
|
375
|
-
assert(
|
|
386
|
+
assert(
|
|
387
|
+
UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
|
|
388
|
+
"armor bonus ability must be made permanent",
|
|
389
|
+
unit
|
|
390
|
+
)
|
|
376
391
|
end
|
|
377
|
-
local ability = assert(
|
|
378
|
-
|
|
379
|
-
ability,
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
392
|
+
local ability = assert(
|
|
393
|
+
BlzGetUnitAbility(unit, armorBonusAbilityId),
|
|
394
|
+
"armor bonus ability must be existing",
|
|
395
|
+
unit
|
|
396
|
+
)
|
|
397
|
+
assert(
|
|
398
|
+
BlzSetAbilityRealLevelField(
|
|
399
|
+
ability,
|
|
400
|
+
armorBonusField,
|
|
401
|
+
0,
|
|
402
|
+
BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
|
|
403
|
+
),
|
|
404
|
+
"armor bonus ability field must be set",
|
|
405
|
+
unit
|
|
406
|
+
)
|
|
384
407
|
end
|
|
385
408
|
}
|
|
386
409
|
local getters = {
|
|
@@ -398,6 +421,19 @@ function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
|
398
421
|
self.unit = unit
|
|
399
422
|
self.index = index
|
|
400
423
|
end
|
|
424
|
+
__TS__SetDescriptor(
|
|
425
|
+
UnitWeapon.prototype,
|
|
426
|
+
"isEnabled",
|
|
427
|
+
{
|
|
428
|
+
get = function(self)
|
|
429
|
+
return BlzGetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index)
|
|
430
|
+
end,
|
|
431
|
+
set = function(self, isEnabled)
|
|
432
|
+
BlzSetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index, isEnabled)
|
|
433
|
+
end
|
|
434
|
+
},
|
|
435
|
+
true
|
|
436
|
+
)
|
|
401
437
|
__TS__SetDescriptor(
|
|
402
438
|
UnitWeapon.prototype,
|
|
403
439
|
"cooldown",
|
|
@@ -432,6 +468,19 @@ __TS__SetDescriptor(
|
|
|
432
468
|
},
|
|
433
469
|
true
|
|
434
470
|
)
|
|
471
|
+
__TS__SetDescriptor(
|
|
472
|
+
UnitWeapon.prototype,
|
|
473
|
+
"allowedTargetCombatClassifications",
|
|
474
|
+
{
|
|
475
|
+
get = function(self)
|
|
476
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
477
|
+
end,
|
|
478
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
479
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
480
|
+
end
|
|
481
|
+
},
|
|
482
|
+
true
|
|
483
|
+
)
|
|
435
484
|
__TS__SetDescriptor(
|
|
436
485
|
UnitWeapon.prototype,
|
|
437
486
|
"damageBase",
|
|
@@ -562,17 +611,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
562
611
|
____exports.Unit:of(unit)
|
|
563
612
|
)
|
|
564
613
|
end
|
|
565
|
-
if not unitAddAbility(unit, abilityId) then
|
|
566
|
-
if getUnitAbility(unit, abilityId) == ability then
|
|
567
|
-
return UnitAbility:of(
|
|
568
|
-
ability,
|
|
569
|
-
abilityId,
|
|
570
|
-
____exports.Unit:of(unit)
|
|
571
|
-
)
|
|
572
|
-
end
|
|
573
|
-
else
|
|
574
|
-
unitRemoveAbility(unit, abilityId)
|
|
575
|
-
end
|
|
576
614
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
577
615
|
local item = unitItemInSlot(unit, i)
|
|
578
616
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -619,26 +657,30 @@ local fieldSetters = {
|
|
|
619
657
|
}
|
|
620
658
|
local dummies = {}
|
|
621
659
|
for ____, player in ipairs(Player.all) do
|
|
622
|
-
local dummy = assert(
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
660
|
+
local dummy = assert(
|
|
661
|
+
createUnit(
|
|
662
|
+
player.handle,
|
|
663
|
+
dummyUnitId,
|
|
664
|
+
0,
|
|
665
|
+
0,
|
|
666
|
+
270
|
|
667
|
+
),
|
|
668
|
+
"dummy must be created",
|
|
669
|
+
player
|
|
670
|
+
)
|
|
629
671
|
ShowUnit(dummy, false)
|
|
630
672
|
dummies[player] = dummy
|
|
631
673
|
end
|
|
632
674
|
local function delayHealthChecksCallback(unit)
|
|
633
|
-
local counter = (unit[
|
|
675
|
+
local counter = (unit[104] or 0) - 1
|
|
634
676
|
if counter ~= 0 then
|
|
635
|
-
unit[
|
|
677
|
+
unit[104] = counter
|
|
636
678
|
return
|
|
637
679
|
end
|
|
638
|
-
unit[
|
|
639
|
-
local healthBonus = unit[
|
|
680
|
+
unit[104] = nil
|
|
681
|
+
local healthBonus = unit[105]
|
|
640
682
|
if healthBonus ~= nil then
|
|
641
|
-
unit[
|
|
683
|
+
unit[105] = nil
|
|
642
684
|
local handle = unit.handle
|
|
643
685
|
BlzSetUnitMaxHP(
|
|
644
686
|
handle,
|
|
@@ -646,42 +688,74 @@ local function delayHealthChecksCallback(unit)
|
|
|
646
688
|
)
|
|
647
689
|
end
|
|
648
690
|
end
|
|
691
|
+
local nextSyncId = 1
|
|
692
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
693
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
694
|
+
local function addAbility(unit, abilityTypeId)
|
|
695
|
+
local ____unitAddAbility_result_0
|
|
696
|
+
if unitAddAbility(unit, abilityTypeId) then
|
|
697
|
+
____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
|
|
698
|
+
else
|
|
699
|
+
____unitAddAbility_result_0 = nil
|
|
700
|
+
end
|
|
701
|
+
return ____unitAddAbility_result_0
|
|
702
|
+
end
|
|
649
703
|
____exports.Unit = __TS__Class()
|
|
650
704
|
local Unit = ____exports.Unit
|
|
651
705
|
Unit.name = "Unit"
|
|
652
706
|
__TS__ClassExtends(Unit, Handle)
|
|
653
707
|
function Unit.prototype.____constructor(self, handle)
|
|
654
708
|
Handle.prototype.____constructor(self, handle)
|
|
709
|
+
local ____nextSyncId_1 = nextSyncId
|
|
710
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
711
|
+
self.syncId = ____nextSyncId_1
|
|
655
712
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
656
|
-
assert(
|
|
657
|
-
|
|
713
|
+
assert(
|
|
714
|
+
unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId),
|
|
715
|
+
"leave detection ability must be added",
|
|
716
|
+
self
|
|
717
|
+
)
|
|
718
|
+
assert(
|
|
719
|
+
unitAddAbility(handle, morphDetectAbilityId),
|
|
720
|
+
"morph detection ability must be added",
|
|
721
|
+
self
|
|
722
|
+
)
|
|
658
723
|
if unitAddAbility(
|
|
659
724
|
handle,
|
|
660
725
|
fourCC("Amrf")
|
|
661
726
|
) then
|
|
662
|
-
assert(
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
727
|
+
assert(
|
|
728
|
+
unitRemoveAbility(
|
|
729
|
+
handle,
|
|
730
|
+
fourCC("Amrf")
|
|
731
|
+
),
|
|
732
|
+
"fly ability must be removed after addition",
|
|
733
|
+
self
|
|
734
|
+
)
|
|
666
735
|
end
|
|
736
|
+
unitBySyncId[self.syncId] = self
|
|
667
737
|
local ____ = self.abilities
|
|
668
738
|
end
|
|
669
|
-
function Unit.prototype.getEvent(self,
|
|
670
|
-
self.events = self.events or (
|
|
671
|
-
local eventId = GetHandleId(
|
|
672
|
-
|
|
673
|
-
|
|
739
|
+
function Unit.prototype.getEvent(self, jevent, collector)
|
|
740
|
+
self.events = self.events or __TS__New(LinkedMap)
|
|
741
|
+
local eventId = GetHandleId(jevent)
|
|
742
|
+
local event = self.events:get(eventId)
|
|
743
|
+
if event == nil then
|
|
744
|
+
event = __TS__New(
|
|
674
745
|
TriggerEvent,
|
|
675
746
|
function(trigger)
|
|
676
|
-
TriggerRegisterUnitEvent(trigger, self.handle,
|
|
747
|
+
TriggerRegisterUnitEvent(trigger, self.handle, jevent)
|
|
677
748
|
end,
|
|
678
749
|
collector or (function() return {} end)
|
|
679
750
|
)
|
|
751
|
+
self.events:put(eventId, event)
|
|
680
752
|
end
|
|
681
|
-
return
|
|
753
|
+
return event
|
|
682
754
|
end
|
|
683
755
|
function Unit.prototype.onDestroy(self)
|
|
684
756
|
local handle = self.handle
|
|
757
|
+
self[108] = getUnitX(handle)
|
|
758
|
+
self[109] = getUnitY(handle)
|
|
685
759
|
if not self._owner then
|
|
686
760
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
687
761
|
end
|
|
@@ -720,7 +794,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
|
|
|
720
794
|
self._attackHandlers = handlers
|
|
721
795
|
if #handlers == 1 then
|
|
722
796
|
local handle = self.handle
|
|
723
|
-
assert(
|
|
797
|
+
assert(
|
|
798
|
+
unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
|
|
799
|
+
"attack handler ability must be added",
|
|
800
|
+
self
|
|
801
|
+
)
|
|
724
802
|
end
|
|
725
803
|
return handler
|
|
726
804
|
end
|
|
@@ -749,17 +827,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
749
827
|
end}
|
|
750
828
|
end
|
|
751
829
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
752
|
-
local
|
|
753
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
830
|
+
local ____combatClassification_2 = combatClassification
|
|
831
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
754
832
|
end
|
|
755
833
|
function Unit.prototype.addClassification(self, classification)
|
|
756
|
-
return
|
|
834
|
+
return UnitAddType(self.handle, classification)
|
|
757
835
|
end
|
|
758
836
|
function Unit.prototype.removeClassification(self, classification)
|
|
759
|
-
return
|
|
837
|
+
return UnitRemoveType(self.handle, classification)
|
|
760
838
|
end
|
|
761
839
|
function Unit.prototype.hasClassification(self, classification)
|
|
762
|
-
return
|
|
840
|
+
return IsUnitType(self.handle, classification)
|
|
763
841
|
end
|
|
764
842
|
function Unit.prototype.isVisibleTo(self, player)
|
|
765
843
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -768,13 +846,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
768
846
|
return isUnitInvisible(self.handle, player.handle)
|
|
769
847
|
end
|
|
770
848
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
771
|
-
local
|
|
849
|
+
local ____temp_3
|
|
772
850
|
if type(x) == "number" then
|
|
773
|
-
|
|
851
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
774
852
|
else
|
|
775
|
-
|
|
853
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
776
854
|
end
|
|
777
|
-
return
|
|
855
|
+
return ____temp_3
|
|
778
856
|
end
|
|
779
857
|
function Unit.prototype.isAllyOf(self, unit)
|
|
780
858
|
return isUnitAlly(
|
|
@@ -792,16 +870,30 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
792
870
|
if type(animation) == "number" then
|
|
793
871
|
setUnitAnimationByIndex(self.handle, animation)
|
|
794
872
|
elseif rarity then
|
|
795
|
-
|
|
873
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
796
874
|
else
|
|
797
875
|
setUnitAnimation(self.handle, animation)
|
|
798
876
|
end
|
|
799
877
|
end
|
|
878
|
+
function Unit.prototype.resetAnimation(self)
|
|
879
|
+
ResetUnitAnimation(self.handle)
|
|
880
|
+
end
|
|
800
881
|
function Unit.prototype.queueAnimation(self, animation)
|
|
801
|
-
|
|
882
|
+
QueueUnitAnimation(self.handle, animation)
|
|
883
|
+
end
|
|
884
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
885
|
+
local firstWeapon = self.firstWeapon
|
|
886
|
+
if firstWeapon.isEnabled and target:isAllowedTarget(self, firstWeapon.allowedTargetCombatClassifications) then
|
|
887
|
+
return firstWeapon
|
|
888
|
+
end
|
|
889
|
+
local secondWeapon = self.secondWeapon
|
|
890
|
+
if secondWeapon.isEnabled and target:isAllowedTarget(target, secondWeapon.allowedTargetCombatClassifications) then
|
|
891
|
+
return secondWeapon
|
|
892
|
+
end
|
|
893
|
+
return nil
|
|
802
894
|
end
|
|
803
895
|
function Unit.prototype.delayHealthChecks(self)
|
|
804
|
-
self[
|
|
896
|
+
self[104] = (self[104] or 0) + 1
|
|
805
897
|
Timer:run(delayHealthChecksCallback, self)
|
|
806
898
|
end
|
|
807
899
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -811,21 +903,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
811
903
|
return IsUnitSelected(self.handle, player.handle)
|
|
812
904
|
end
|
|
813
905
|
function Unit.prototype.explode(self)
|
|
814
|
-
|
|
906
|
+
SetUnitExploded(self.handle, true)
|
|
815
907
|
killUnit(self.handle)
|
|
816
908
|
end
|
|
817
909
|
function Unit.prototype.kill(self)
|
|
818
910
|
killUnit(self.handle)
|
|
819
911
|
end
|
|
820
912
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
821
|
-
local
|
|
822
|
-
local
|
|
823
|
-
local
|
|
824
|
-
if
|
|
825
|
-
|
|
913
|
+
local ____ReviveHero_6 = ReviveHero
|
|
914
|
+
local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
|
|
915
|
+
local ____doEffect_4 = doEffect
|
|
916
|
+
if ____doEffect_4 == nil then
|
|
917
|
+
____doEffect_4 = false
|
|
826
918
|
end
|
|
827
|
-
__TS__SparseArrayPush(
|
|
828
|
-
|
|
919
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
920
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
829
921
|
end
|
|
830
922
|
function Unit.prototype.healTarget(self, target, amount)
|
|
831
923
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -865,20 +957,19 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
865
957
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
866
958
|
end
|
|
867
959
|
function Unit.prototype.itemInSlot(self, slot)
|
|
868
|
-
return Item:of(
|
|
960
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
869
961
|
end
|
|
870
962
|
function Unit.prototype.addAbility(self, abilityId)
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
963
|
+
local ability = UnitAbility:of(
|
|
964
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
965
|
+
abilityId,
|
|
966
|
+
self
|
|
967
|
+
)
|
|
968
|
+
if ability ~= nil then
|
|
877
969
|
local abilities = self.abilities
|
|
878
970
|
abilities[#abilities + 1] = ability
|
|
879
|
-
return ability
|
|
880
971
|
end
|
|
881
|
-
return
|
|
972
|
+
return ability
|
|
882
973
|
end
|
|
883
974
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
884
975
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -892,31 +983,21 @@ end
|
|
|
892
983
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
893
984
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
894
985
|
end
|
|
895
|
-
function Unit.prototype.
|
|
896
|
-
local
|
|
897
|
-
|
|
898
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
899
|
-
return nil
|
|
900
|
-
end
|
|
901
|
-
return UnitAbility:of(
|
|
902
|
-
getUnitAbility(self.handle, abilityId),
|
|
903
|
-
abilityId,
|
|
904
|
-
self
|
|
905
|
-
)
|
|
986
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
987
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
988
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
906
989
|
end
|
|
907
|
-
function Unit.prototype.removeAbility(self,
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
end
|
|
990
|
+
function Unit.prototype.removeAbility(self, abilityTypeId)
|
|
991
|
+
local abilities = self.abilities
|
|
992
|
+
for i = 1, #abilities do
|
|
993
|
+
if abilities[i].typeId == abilityTypeId then
|
|
994
|
+
local ability = abilities[i]
|
|
995
|
+
tremove(abilities, i)
|
|
996
|
+
ability:destroy()
|
|
997
|
+
return true
|
|
916
998
|
end
|
|
917
|
-
return true
|
|
918
999
|
end
|
|
919
|
-
return
|
|
1000
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
920
1001
|
end
|
|
921
1002
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
922
1003
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -930,12 +1011,16 @@ end
|
|
|
930
1011
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
931
1012
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
932
1013
|
end
|
|
933
|
-
function Unit.prototype.interruptAttack(self)
|
|
934
|
-
unitInterruptAttack(self.handle)
|
|
935
|
-
end
|
|
936
1014
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
937
|
-
|
|
938
|
-
unitDisableAbility(
|
|
1015
|
+
local handle = self.handle
|
|
1016
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
1017
|
+
Timer:run(
|
|
1018
|
+
unitDisableAbility,
|
|
1019
|
+
handle,
|
|
1020
|
+
abilityId,
|
|
1021
|
+
false,
|
|
1022
|
+
false
|
|
1023
|
+
)
|
|
939
1024
|
end
|
|
940
1025
|
function Unit.prototype.getDistanceTo(self, target)
|
|
941
1026
|
local handle = self.handle
|
|
@@ -995,18 +1080,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
995
1080
|
self:decrementStunCounter()
|
|
996
1081
|
end
|
|
997
1082
|
function Unit.prototype.incrementStunCounter(self)
|
|
998
|
-
local stunCounter = self[
|
|
999
|
-
if not self[
|
|
1083
|
+
local stunCounter = self[102] or 0
|
|
1084
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
1000
1085
|
BlzPauseUnitEx(self.handle, true)
|
|
1001
1086
|
end
|
|
1002
|
-
self[
|
|
1087
|
+
self[102] = stunCounter + 1
|
|
1003
1088
|
end
|
|
1004
1089
|
function Unit.prototype.decrementStunCounter(self)
|
|
1005
|
-
local stunCounter = self[
|
|
1006
|
-
if not self[
|
|
1090
|
+
local stunCounter = self[102] or 0
|
|
1091
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
1007
1092
|
BlzPauseUnitEx(self.handle, false)
|
|
1008
1093
|
end
|
|
1009
|
-
self[
|
|
1094
|
+
self[102] = stunCounter - 1
|
|
1095
|
+
end
|
|
1096
|
+
function Unit.prototype.incrementForceStunCounter(self)
|
|
1097
|
+
local forceStunCounter = self[103] or 0
|
|
1098
|
+
if forceStunCounter == 0 then
|
|
1099
|
+
local handle = self.handle
|
|
1100
|
+
if not self[101] then
|
|
1101
|
+
for _ = self[102] or 0, -1 do
|
|
1102
|
+
BlzPauseUnitEx(handle, true)
|
|
1103
|
+
end
|
|
1104
|
+
end
|
|
1105
|
+
BlzPauseUnitEx(handle, true)
|
|
1106
|
+
end
|
|
1107
|
+
self[103] = forceStunCounter + 1
|
|
1108
|
+
end
|
|
1109
|
+
function Unit.prototype.decrementForceStunCounter(self)
|
|
1110
|
+
local forceStunCounter = self[103] or 0
|
|
1111
|
+
if forceStunCounter == 1 then
|
|
1112
|
+
local handle = self.handle
|
|
1113
|
+
if not self[101] then
|
|
1114
|
+
for _ = self[102] or 0, -1 do
|
|
1115
|
+
BlzPauseUnitEx(handle, false)
|
|
1116
|
+
end
|
|
1117
|
+
end
|
|
1118
|
+
BlzPauseUnitEx(handle, false)
|
|
1119
|
+
end
|
|
1120
|
+
self[103] = forceStunCounter - 1
|
|
1010
1121
|
end
|
|
1011
1122
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1012
1123
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1108,8 +1219,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1108
1219
|
)
|
|
1109
1220
|
return targetCollection
|
|
1110
1221
|
end
|
|
1111
|
-
function Unit.getSelectionOf(self, player)
|
|
1112
|
-
|
|
1222
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1223
|
+
if target == nil then
|
|
1224
|
+
target = {}
|
|
1225
|
+
end
|
|
1226
|
+
targetCollection = target
|
|
1113
1227
|
targetCollectionNextIndex = 1
|
|
1114
1228
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1115
1229
|
return targetCollection
|
|
@@ -1131,6 +1245,9 @@ end
|
|
|
1131
1245
|
function Unit.prototype.__tostring(self)
|
|
1132
1246
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1133
1247
|
end
|
|
1248
|
+
function Unit.getBySyncId(self, syncId)
|
|
1249
|
+
return unitBySyncId[syncId]
|
|
1250
|
+
end
|
|
1134
1251
|
__TS__SetDescriptor(
|
|
1135
1252
|
Unit.prototype,
|
|
1136
1253
|
"_deltas",
|
|
@@ -1190,7 +1307,15 @@ __TS__SetDescriptor(
|
|
|
1190
1307
|
Unit.prototype,
|
|
1191
1308
|
"isIllusion",
|
|
1192
1309
|
{get = function(self)
|
|
1193
|
-
return
|
|
1310
|
+
return IsUnitIllusion(self.handle)
|
|
1311
|
+
end},
|
|
1312
|
+
true
|
|
1313
|
+
)
|
|
1314
|
+
__TS__SetDescriptor(
|
|
1315
|
+
Unit.prototype,
|
|
1316
|
+
"isStunned",
|
|
1317
|
+
{get = function(self)
|
|
1318
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1194
1319
|
end},
|
|
1195
1320
|
true
|
|
1196
1321
|
)
|
|
@@ -1269,13 +1394,13 @@ __TS__SetDescriptor(
|
|
|
1269
1394
|
)
|
|
1270
1395
|
__TS__SetDescriptor(
|
|
1271
1396
|
Unit.prototype,
|
|
1272
|
-
"
|
|
1397
|
+
"primaryAttribute",
|
|
1273
1398
|
{
|
|
1274
1399
|
get = function(self)
|
|
1275
|
-
return
|
|
1400
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1276
1401
|
end,
|
|
1277
|
-
set = function(self,
|
|
1278
|
-
|
|
1402
|
+
set = function(self, primaryAttribute)
|
|
1403
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1279
1404
|
end
|
|
1280
1405
|
},
|
|
1281
1406
|
true
|
|
@@ -1297,19 +1422,6 @@ __TS__SetDescriptor(
|
|
|
1297
1422
|
end},
|
|
1298
1423
|
true
|
|
1299
1424
|
)
|
|
1300
|
-
__TS__SetDescriptor(
|
|
1301
|
-
Unit.prototype,
|
|
1302
|
-
"agilityBase",
|
|
1303
|
-
{
|
|
1304
|
-
get = function(self)
|
|
1305
|
-
return getHeroAgi(self.handle, false)
|
|
1306
|
-
end,
|
|
1307
|
-
set = function(self, agilityBase)
|
|
1308
|
-
setHeroAgi(self.handle, agilityBase, true)
|
|
1309
|
-
end
|
|
1310
|
-
},
|
|
1311
|
-
true
|
|
1312
|
-
)
|
|
1313
1425
|
__TS__SetDescriptor(
|
|
1314
1426
|
Unit.prototype,
|
|
1315
1427
|
"agilityBonus",
|
|
@@ -1327,19 +1439,6 @@ __TS__SetDescriptor(
|
|
|
1327
1439
|
end},
|
|
1328
1440
|
true
|
|
1329
1441
|
)
|
|
1330
|
-
__TS__SetDescriptor(
|
|
1331
|
-
Unit.prototype,
|
|
1332
|
-
"intelligenceBase",
|
|
1333
|
-
{
|
|
1334
|
-
get = function(self)
|
|
1335
|
-
return getHeroInt(self.handle, false)
|
|
1336
|
-
end,
|
|
1337
|
-
set = function(self, intelligenceBase)
|
|
1338
|
-
setHeroInt(self.handle, intelligenceBase, true)
|
|
1339
|
-
end
|
|
1340
|
-
},
|
|
1341
|
-
true
|
|
1342
|
-
)
|
|
1343
1442
|
__TS__SetDescriptor(
|
|
1344
1443
|
Unit.prototype,
|
|
1345
1444
|
"intelligenceBonus",
|
|
@@ -1388,17 +1487,17 @@ __TS__SetDescriptor(
|
|
|
1388
1487
|
"isTeamGlowVisible",
|
|
1389
1488
|
{
|
|
1390
1489
|
get = function(self)
|
|
1391
|
-
return not self[
|
|
1490
|
+
return not self[107]
|
|
1392
1491
|
end,
|
|
1393
1492
|
set = function(self, isTeamGlowVisible)
|
|
1394
|
-
|
|
1395
|
-
local
|
|
1493
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1494
|
+
local ____temp_7
|
|
1396
1495
|
if not isTeamGlowVisible then
|
|
1397
|
-
|
|
1496
|
+
____temp_7 = true
|
|
1398
1497
|
else
|
|
1399
|
-
|
|
1498
|
+
____temp_7 = nil
|
|
1400
1499
|
end
|
|
1401
|
-
self[
|
|
1500
|
+
self[107] = ____temp_7
|
|
1402
1501
|
end
|
|
1403
1502
|
},
|
|
1404
1503
|
true
|
|
@@ -1407,9 +1506,9 @@ __TS__SetDescriptor(
|
|
|
1407
1506
|
Unit.prototype,
|
|
1408
1507
|
"color",
|
|
1409
1508
|
{set = function(self, color)
|
|
1410
|
-
|
|
1411
|
-
if self[
|
|
1412
|
-
|
|
1509
|
+
SetUnitColor(self.handle, color.handle)
|
|
1510
|
+
if self[107] then
|
|
1511
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1413
1512
|
end
|
|
1414
1513
|
end},
|
|
1415
1514
|
true
|
|
@@ -1432,14 +1531,14 @@ __TS__SetDescriptor(
|
|
|
1432
1531
|
"maxHealth",
|
|
1433
1532
|
{
|
|
1434
1533
|
get = function(self)
|
|
1435
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1534
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1436
1535
|
end,
|
|
1437
1536
|
set = function(self, maxHealth)
|
|
1438
|
-
if maxHealth < 1 and self[
|
|
1439
|
-
self[
|
|
1537
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1538
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1440
1539
|
maxHealth = 1
|
|
1441
1540
|
end
|
|
1442
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1541
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1443
1542
|
end
|
|
1444
1543
|
},
|
|
1445
1544
|
true
|
|
@@ -1481,10 +1580,10 @@ __TS__SetDescriptor(
|
|
|
1481
1580
|
"health",
|
|
1482
1581
|
{
|
|
1483
1582
|
get = function(self)
|
|
1484
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1583
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1485
1584
|
end,
|
|
1486
1585
|
set = function(self, health)
|
|
1487
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1586
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1488
1587
|
end
|
|
1489
1588
|
},
|
|
1490
1589
|
true
|
|
@@ -1560,25 +1659,12 @@ __TS__SetDescriptor(
|
|
|
1560
1659
|
},
|
|
1561
1660
|
true
|
|
1562
1661
|
)
|
|
1563
|
-
__TS__SetDescriptor(
|
|
1564
|
-
Unit.prototype,
|
|
1565
|
-
"flyHeight",
|
|
1566
|
-
{
|
|
1567
|
-
get = function(self)
|
|
1568
|
-
return getUnitFlyHeight(self.handle)
|
|
1569
|
-
end,
|
|
1570
|
-
set = function(self, v)
|
|
1571
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1572
|
-
end
|
|
1573
|
-
},
|
|
1574
|
-
true
|
|
1575
|
-
)
|
|
1576
1662
|
__TS__SetDescriptor(
|
|
1577
1663
|
Unit.prototype,
|
|
1578
1664
|
"x",
|
|
1579
1665
|
{
|
|
1580
1666
|
get = function(self)
|
|
1581
|
-
return getUnitX(self.handle)
|
|
1667
|
+
return self[108] or getUnitX(self.handle)
|
|
1582
1668
|
end,
|
|
1583
1669
|
set = function(self, v)
|
|
1584
1670
|
SetUnitX(self.handle, v)
|
|
@@ -1591,7 +1677,7 @@ __TS__SetDescriptor(
|
|
|
1591
1677
|
"y",
|
|
1592
1678
|
{
|
|
1593
1679
|
get = function(self)
|
|
1594
|
-
return getUnitY(self.handle)
|
|
1680
|
+
return self[109] or getUnitY(self.handle)
|
|
1595
1681
|
end,
|
|
1596
1682
|
set = function(self, v)
|
|
1597
1683
|
SetUnitY(self.handle, v)
|
|
@@ -1677,10 +1763,10 @@ __TS__SetDescriptor(
|
|
|
1677
1763
|
"gold",
|
|
1678
1764
|
{
|
|
1679
1765
|
get = function(self)
|
|
1680
|
-
return
|
|
1766
|
+
return GetResourceAmount(self.handle)
|
|
1681
1767
|
end,
|
|
1682
1768
|
set = function(self, gold)
|
|
1683
|
-
|
|
1769
|
+
SetResourceAmount(self.handle, gold)
|
|
1684
1770
|
end
|
|
1685
1771
|
},
|
|
1686
1772
|
true
|
|
@@ -1695,17 +1781,21 @@ __TS__SetDescriptor(
|
|
|
1695
1781
|
set = function(self, isPaused)
|
|
1696
1782
|
local handle = self.handle
|
|
1697
1783
|
if isPaused and not IsUnitPaused(handle) then
|
|
1698
|
-
self[
|
|
1699
|
-
|
|
1700
|
-
|
|
1784
|
+
self[101] = true
|
|
1785
|
+
if (self[103] or 0) <= 0 then
|
|
1786
|
+
for _ = self[102] or 0, -1 do
|
|
1787
|
+
BlzPauseUnitEx(handle, true)
|
|
1788
|
+
end
|
|
1701
1789
|
end
|
|
1702
1790
|
PauseUnit(handle, true)
|
|
1703
1791
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1704
1792
|
PauseUnit(handle, false)
|
|
1705
|
-
|
|
1706
|
-
|
|
1793
|
+
if (self[103] or 0) <= 0 then
|
|
1794
|
+
for _ = self[102] or 0, -1 do
|
|
1795
|
+
BlzPauseUnitEx(handle, false)
|
|
1796
|
+
end
|
|
1707
1797
|
end
|
|
1708
|
-
self[
|
|
1798
|
+
self[101] = nil
|
|
1709
1799
|
end
|
|
1710
1800
|
end
|
|
1711
1801
|
},
|
|
@@ -1761,20 +1851,6 @@ __TS__SetDescriptor(
|
|
|
1761
1851
|
},
|
|
1762
1852
|
true
|
|
1763
1853
|
)
|
|
1764
|
-
__TS__SetDescriptor(
|
|
1765
|
-
Unit.prototype,
|
|
1766
|
-
"scale",
|
|
1767
|
-
{
|
|
1768
|
-
get = function(self)
|
|
1769
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1770
|
-
end,
|
|
1771
|
-
set = function(self, v)
|
|
1772
|
-
setUnitScale(self.handle, v, v, v)
|
|
1773
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1774
|
-
end
|
|
1775
|
-
},
|
|
1776
|
-
true
|
|
1777
|
-
)
|
|
1778
1854
|
__TS__SetDescriptor(
|
|
1779
1855
|
Unit.prototype,
|
|
1780
1856
|
"timeScale",
|
|
@@ -1808,6 +1884,19 @@ __TS__SetDescriptor(
|
|
|
1808
1884
|
end},
|
|
1809
1885
|
true
|
|
1810
1886
|
)
|
|
1887
|
+
__TS__SetDescriptor(
|
|
1888
|
+
Unit.prototype,
|
|
1889
|
+
"movementType",
|
|
1890
|
+
{
|
|
1891
|
+
get = function(self)
|
|
1892
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1893
|
+
end,
|
|
1894
|
+
set = function(self, movementType)
|
|
1895
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1896
|
+
end
|
|
1897
|
+
},
|
|
1898
|
+
true
|
|
1899
|
+
)
|
|
1811
1900
|
__TS__SetDescriptor(
|
|
1812
1901
|
Unit.prototype,
|
|
1813
1902
|
"pathing",
|
|
@@ -1989,6 +2078,14 @@ __TS__SetDescriptor(
|
|
|
1989
2078
|
end},
|
|
1990
2079
|
true
|
|
1991
2080
|
)
|
|
2081
|
+
__TS__SetDescriptor(
|
|
2082
|
+
Unit.prototype,
|
|
2083
|
+
"targetAcquiredEvent",
|
|
2084
|
+
{get = function(self)
|
|
2085
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2086
|
+
end},
|
|
2087
|
+
true
|
|
2088
|
+
)
|
|
1992
2089
|
__TS__SetDescriptor(
|
|
1993
2090
|
Unit.prototype,
|
|
1994
2091
|
"onSelect",
|
|
@@ -2049,6 +2146,11 @@ __TS__SetDescriptor(
|
|
|
2049
2146
|
end},
|
|
2050
2147
|
true
|
|
2051
2148
|
)
|
|
2149
|
+
Unit.levelChangedEvent = __TS__New(
|
|
2150
|
+
____exports.UnitTriggerEvent,
|
|
2151
|
+
EVENT_PLAYER_HERO_LEVEL,
|
|
2152
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
2153
|
+
)
|
|
2052
2154
|
Unit.deathEvent = __TS__New(
|
|
2053
2155
|
____exports.UnitTriggerEvent,
|
|
2054
2156
|
EVENT_PLAYER_UNIT_DEATH,
|
|
@@ -2124,25 +2226,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2124
2226
|
InitializingEvent,
|
|
2125
2227
|
function(event)
|
|
2126
2228
|
local function listener(unit, id)
|
|
2127
|
-
local
|
|
2229
|
+
local ____GetSpellTargetUnit_result_10
|
|
2128
2230
|
if GetSpellTargetUnit() then
|
|
2129
|
-
|
|
2231
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2130
2232
|
else
|
|
2131
|
-
local
|
|
2233
|
+
local ____GetSpellTargetItem_result_9
|
|
2132
2234
|
if GetSpellTargetItem() then
|
|
2133
|
-
|
|
2235
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2134
2236
|
else
|
|
2135
|
-
local
|
|
2237
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2136
2238
|
if GetSpellTargetDestructable() then
|
|
2137
|
-
|
|
2239
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2138
2240
|
else
|
|
2139
|
-
|
|
2241
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2140
2242
|
end
|
|
2141
|
-
|
|
2243
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2142
2244
|
end
|
|
2143
|
-
|
|
2245
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2144
2246
|
end
|
|
2145
|
-
local target =
|
|
2247
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2146
2248
|
if target then
|
|
2147
2249
|
invoke(event, unit, id, target)
|
|
2148
2250
|
end
|
|
@@ -2314,10 +2416,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2314
2416
|
____exports.UnitTriggerEvent,
|
|
2315
2417
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2316
2418
|
function()
|
|
2317
|
-
local
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2419
|
+
local handle = getOrderedUnit()
|
|
2420
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2421
|
+
local unit = ____exports.Unit:of(handle)
|
|
2422
|
+
if unit.state == 1 then
|
|
2423
|
+
return unit, getIssuedOrderId()
|
|
2424
|
+
end
|
|
2321
2425
|
end
|
|
2322
2426
|
return IgnoreEvent
|
|
2323
2427
|
end
|
|
@@ -2348,38 +2452,57 @@ Unit.onDamaging = (function()
|
|
|
2348
2452
|
if source and source.typeId == dummyUnitId then
|
|
2349
2453
|
source = nil
|
|
2350
2454
|
end
|
|
2351
|
-
local target = BlzGetEventDamageTarget()
|
|
2455
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2456
|
+
local metadata = damageMetadataByTarget[target]
|
|
2457
|
+
damageMetadataByTarget[target] = nil
|
|
2352
2458
|
local data = {
|
|
2353
2459
|
amount = GetEventDamage(),
|
|
2354
|
-
attackType = BlzGetEventAttackType(),
|
|
2460
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2355
2461
|
damageType = BlzGetEventDamageType(),
|
|
2356
2462
|
weaponType = BlzGetEventWeaponType(),
|
|
2357
|
-
|
|
2463
|
+
metadata = metadata,
|
|
2464
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2465
|
+
originalAmount = GetEventDamage(),
|
|
2466
|
+
originalMetadata = metadata,
|
|
2467
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2358
2468
|
}
|
|
2359
2469
|
if data.isAttack and source then
|
|
2360
|
-
|
|
2361
|
-
if weapon == -1 then
|
|
2362
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2363
|
-
weapon = 0
|
|
2364
|
-
end
|
|
2365
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2470
|
+
data.weapon = source:chooseWeapon(target)
|
|
2366
2471
|
end
|
|
2367
2472
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2368
2473
|
invoke(
|
|
2369
2474
|
event,
|
|
2370
2475
|
source,
|
|
2371
|
-
|
|
2476
|
+
target,
|
|
2372
2477
|
setmetatable(
|
|
2373
2478
|
{},
|
|
2374
2479
|
{
|
|
2375
2480
|
__index = data,
|
|
2376
2481
|
__newindex = function(self, key, value)
|
|
2377
|
-
damageSetters[key]
|
|
2482
|
+
local damageSetter = damageSetters[key]
|
|
2483
|
+
if damageSetter ~= nil then
|
|
2484
|
+
damageSetter(value)
|
|
2485
|
+
end
|
|
2378
2486
|
data[key] = value
|
|
2379
2487
|
end
|
|
2380
2488
|
}
|
|
2381
2489
|
)
|
|
2382
2490
|
)
|
|
2491
|
+
if data[0] and source then
|
|
2492
|
+
local sourceOwner = source.owner.handle
|
|
2493
|
+
data[1] = sourceOwner
|
|
2494
|
+
local targetOwner = target.owner.handle
|
|
2495
|
+
data[2] = targetOwner
|
|
2496
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2497
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2498
|
+
data[3] = true
|
|
2499
|
+
end
|
|
2500
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2501
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2502
|
+
data[4] = true
|
|
2503
|
+
end
|
|
2504
|
+
end
|
|
2505
|
+
damagingEventByTarget[target] = data
|
|
2383
2506
|
return
|
|
2384
2507
|
end
|
|
2385
2508
|
BlzSetEventDamage(0)
|
|
@@ -2387,7 +2510,7 @@ Unit.onDamaging = (function()
|
|
|
2387
2510
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2388
2511
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2389
2512
|
local sourceOwner = source.owner.handle
|
|
2390
|
-
local targetOwner =
|
|
2513
|
+
local targetOwner = target.owner.handle
|
|
2391
2514
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2392
2515
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2393
2516
|
Timer:run(function()
|
|
@@ -2403,23 +2526,19 @@ Unit.onDamaging = (function()
|
|
|
2403
2526
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2404
2527
|
local condition = ____value[1]
|
|
2405
2528
|
local action = ____value[2]
|
|
2406
|
-
if condition(
|
|
2407
|
-
source,
|
|
2408
|
-
____exports.Unit:of(target),
|
|
2409
|
-
data
|
|
2410
|
-
) then
|
|
2529
|
+
if condition(source, target, data) then
|
|
2411
2530
|
action(
|
|
2412
2531
|
source,
|
|
2413
|
-
|
|
2532
|
+
target,
|
|
2414
2533
|
setmetatable(
|
|
2415
2534
|
{fire = function()
|
|
2416
2535
|
UnitDamageTarget(
|
|
2417
2536
|
source.handle,
|
|
2418
|
-
target,
|
|
2537
|
+
target.handle,
|
|
2419
2538
|
data.amount,
|
|
2420
2539
|
true,
|
|
2421
2540
|
true,
|
|
2422
|
-
data.attackType,
|
|
2541
|
+
attackTypeToNative(data.attackType),
|
|
2423
2542
|
data.damageType,
|
|
2424
2543
|
data.weaponType
|
|
2425
2544
|
)
|
|
@@ -2446,30 +2565,54 @@ Unit.onDamage = __TS__New(
|
|
|
2446
2565
|
if source and source.typeId == dummyUnitId then
|
|
2447
2566
|
source = nil
|
|
2448
2567
|
end
|
|
2568
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2569
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2570
|
+
damagingEventByTarget[target] = nil
|
|
2449
2571
|
local data = {
|
|
2450
2572
|
amount = GetEventDamage(),
|
|
2451
|
-
attackType = BlzGetEventAttackType(),
|
|
2573
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2452
2574
|
damageType = BlzGetEventDamageType(),
|
|
2453
2575
|
weaponType = BlzGetEventWeaponType(),
|
|
2576
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2454
2577
|
isAttack = BlzGetEventIsAttack(),
|
|
2455
|
-
originalAmount = GetEventDamage(),
|
|
2578
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2579
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2456
2580
|
preventDeath = damageEventPreventDeath
|
|
2457
2581
|
}
|
|
2582
|
+
if damagingEvent then
|
|
2583
|
+
for key, value in pairs(damagingEvent) do
|
|
2584
|
+
if isAttribute(key) then
|
|
2585
|
+
data[key] = value
|
|
2586
|
+
end
|
|
2587
|
+
end
|
|
2588
|
+
local sourceOwner = damagingEvent[1]
|
|
2589
|
+
if sourceOwner then
|
|
2590
|
+
local targetOwner = damagingEvent[2]
|
|
2591
|
+
if damagingEvent[3] then
|
|
2592
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2593
|
+
end
|
|
2594
|
+
if damagingEvent[4] then
|
|
2595
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2596
|
+
end
|
|
2597
|
+
end
|
|
2598
|
+
end
|
|
2458
2599
|
local evData = setmetatable(
|
|
2459
2600
|
{},
|
|
2460
2601
|
{
|
|
2461
2602
|
__index = data,
|
|
2462
2603
|
__newindex = function(self, key, value)
|
|
2463
|
-
damageSetters[key]
|
|
2604
|
+
local damageSetter = damageSetters[key]
|
|
2605
|
+
if damageSetter ~= nil then
|
|
2606
|
+
damageSetter(value)
|
|
2607
|
+
end
|
|
2464
2608
|
data[key] = value
|
|
2465
2609
|
end
|
|
2466
2610
|
}
|
|
2467
2611
|
)
|
|
2468
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2469
2612
|
invoke(event, source, target, evData)
|
|
2470
2613
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2471
2614
|
local bonusHealth = math.ceil(evData.amount)
|
|
2472
|
-
target[
|
|
2615
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2473
2616
|
BlzSetUnitMaxHP(
|
|
2474
2617
|
target.handle,
|
|
2475
2618
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2483,7 +2626,7 @@ Unit.onDamage = __TS__New(
|
|
|
2483
2626
|
evData[0],
|
|
2484
2627
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2485
2628
|
)
|
|
2486
|
-
target[
|
|
2629
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2487
2630
|
SetWidgetLife(
|
|
2488
2631
|
target.handle,
|
|
2489
2632
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2503,32 +2646,110 @@ Unit.onDamage = __TS__New(
|
|
|
2503
2646
|
DestroyTrigger(trigger)
|
|
2504
2647
|
end
|
|
2505
2648
|
)
|
|
2506
|
-
Unit.
|
|
2649
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2507
2650
|
____exports.UnitTriggerEvent,
|
|
2508
2651
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2509
2652
|
function()
|
|
2510
2653
|
local unit = getTriggerUnit()
|
|
2511
|
-
|
|
2512
|
-
|
|
2654
|
+
local item = getManipulatedItem()
|
|
2655
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2656
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2513
2657
|
end
|
|
2514
2658
|
return IgnoreEvent
|
|
2515
2659
|
end
|
|
2516
2660
|
)
|
|
2517
|
-
Unit.
|
|
2661
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2518
2662
|
____exports.UnitTriggerEvent,
|
|
2519
2663
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2520
2664
|
function()
|
|
2521
|
-
local
|
|
2522
|
-
|
|
2523
|
-
|
|
2665
|
+
local unitHandle = getTriggerUnit()
|
|
2666
|
+
local itemHandle = getManipulatedItem()
|
|
2667
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
|
|
2668
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2669
|
+
local item = Item:of(itemHandle)
|
|
2670
|
+
if item.owner ~= unit then
|
|
2671
|
+
return unit, item
|
|
2672
|
+
end
|
|
2524
2673
|
end
|
|
2525
2674
|
return IgnoreEvent
|
|
2526
2675
|
end
|
|
2527
2676
|
)
|
|
2528
|
-
Unit.
|
|
2677
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2529
2678
|
____exports.UnitTriggerEvent,
|
|
2530
2679
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2531
|
-
function()
|
|
2680
|
+
function()
|
|
2681
|
+
local unit = getTriggerUnit()
|
|
2682
|
+
local item = getManipulatedItem()
|
|
2683
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2684
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2685
|
+
end
|
|
2686
|
+
return IgnoreEvent
|
|
2687
|
+
end
|
|
2688
|
+
)
|
|
2689
|
+
Unit.itemStackedEvent = __TS__New(
|
|
2690
|
+
____exports.UnitTriggerEvent,
|
|
2691
|
+
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2692
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2693
|
+
)
|
|
2694
|
+
__TS__ObjectDefineProperty(
|
|
2695
|
+
Unit,
|
|
2696
|
+
"itemChargesChangedEvent",
|
|
2697
|
+
{get = function(self)
|
|
2698
|
+
local event = __TS__New(Event)
|
|
2699
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2700
|
+
local unit = item.owner
|
|
2701
|
+
if unit ~= nil then
|
|
2702
|
+
invoke(event, unit, item)
|
|
2703
|
+
end
|
|
2704
|
+
end)
|
|
2705
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2706
|
+
return event
|
|
2707
|
+
end}
|
|
2708
|
+
)
|
|
2709
|
+
__TS__ObjectDefineProperty(
|
|
2710
|
+
Unit,
|
|
2711
|
+
"itemUseOrderEvent",
|
|
2712
|
+
{get = function(self)
|
|
2713
|
+
local event = __TS__New(Event)
|
|
2714
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2715
|
+
local slot = order - orderId("useslot0")
|
|
2716
|
+
local function listener(unit)
|
|
2717
|
+
local item = unit.items[slot + 1]
|
|
2718
|
+
if item ~= nil then
|
|
2719
|
+
invoke(event, unit, item)
|
|
2720
|
+
end
|
|
2721
|
+
end
|
|
2722
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2723
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2724
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2725
|
+
end
|
|
2726
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2727
|
+
return event
|
|
2728
|
+
end}
|
|
2729
|
+
)
|
|
2730
|
+
__TS__ObjectDefineProperty(
|
|
2731
|
+
Unit,
|
|
2732
|
+
"itemMoveOrderEvent",
|
|
2733
|
+
{get = function(self)
|
|
2734
|
+
local event = __TS__New(Event)
|
|
2735
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2736
|
+
local slotTo = order - orderId("moveslot0")
|
|
2737
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2738
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2739
|
+
if slotFrom ~= nil then
|
|
2740
|
+
invoke(
|
|
2741
|
+
event,
|
|
2742
|
+
unit,
|
|
2743
|
+
item,
|
|
2744
|
+
slotFrom,
|
|
2745
|
+
slotTo
|
|
2746
|
+
)
|
|
2747
|
+
end
|
|
2748
|
+
end)
|
|
2749
|
+
end
|
|
2750
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2751
|
+
return event
|
|
2752
|
+
end}
|
|
2532
2753
|
)
|
|
2533
2754
|
__TS__ObjectDefineProperty(
|
|
2534
2755
|
Unit,
|
|
@@ -2555,6 +2776,10 @@ __TS__ObjectDefineProperty(
|
|
|
2555
2776
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2556
2777
|
return destroyEvent
|
|
2557
2778
|
end}
|
|
2779
|
+
)
|
|
2780
|
+
Unit.synchronize = synchronizer(
|
|
2781
|
+
function(unit) return unit.syncId end,
|
|
2782
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2558
2783
|
);
|
|
2559
2784
|
(function(self)
|
|
2560
2785
|
local leaveAbilityIds = postcompile(function()
|